diff --git a/ABOUT-NLS b/ABOUT-NLS index 7e6b3809..5fde45a0 100644 --- a/ABOUT-NLS +++ b/ABOUT-NLS @@ -164,102 +164,128 @@ Available Packages ================== Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of May 2001. -The matrix shows, in regard of each package, for which languages PO -files have been submitted to translation coordination, with a +matrix shows the current state of internationalization, as of September +2001. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a translation percentage of at least 50%. - Ready PO files bg cs da de el en eo es et fi fr gl hr id it - +----------------------------------------------+ - a2ps | [] [] | - bash | [] [] [] [] | - bison | [] [] [] [] | - clisp | [] [] [] [] | - cpio | [] [] [] [] | - diffutils | [] [] [] [] [] [] [] | - enscript | [] [] | - error | [] | - fileutils | [] [] [] [] [] [] [] | - findutils | [] [] [] [] [] [] [] [] | - flex | [] [] [] | - gawk | | - gcal | | - gcc | [] | - gettext | [] [] [] [] [] [] [] [] [] | - gnupg | [] [] [] [] [] | - grep | [] [] [] | - hello | [] [] [] [] [] [] [] [] [] | - id-utils | [] [] | - indent | [] [] [] [] [] | - libc | [] [] [] [] [] [] [] [] | - lilypond | | - lynx | [] [] [] | - m4 | [] [] [] [] [] [] [] | - make | [] [] [] [] | - parted | [] [] | - ptx | [] [] [] [] [] [] [] | - python | | - recode | [] [] [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] [] [] [] | - sharutils | [] [] [] [] [] [] [] | - soundtracker | | - sp | | - tar | [] [] [] [] [] [] [] [] | - texinfo | [] [] [] [] | - textutils | [] [] [] [] [] [] [] | - util-linux | [] | - wdiff | [] [] [] [] [] [] [] | - wget | [] [] [] [] [] [] [] [] [] | - +----------------------------------------------+ - bg cs da de el en eo es et fi fr gl hr id it - 0 14 21 27 10 1 8 20 13 1 28 17 0 9 11 + Ready PO files bg cs da de el en eo es et fi fr gl he hr id it ja + +----------------------------------------------------+ + a2ps | [] [] [] | + bash | [] [] [] [] | + bfd | | + binutils | [] | + bison | [] [] [] [] [] | + clisp | [] [] [] [] | + cpio | [] [] [] [] [] | + diffutils | [] [] [] [] [] [] [] | + enscript | [] [] | + error | [] [] | + fetchmail | | + fileutils | [] [] [] [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] | + flex | [] [] [] | + freetype | | + gas | | + gawk | [] [] | + gcal | | + gcc | | + gettext | [] [] [] [] [] [] [] [] [] [] | + gnupg | [] [] [] [] [] [] [] | + gprof | | + grep | [] [] [] [] [] [] [] [] | + hello | [] [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] [] [] | + jpilot | [] | + kbd | | + ld | [] | + libc | [] [] [] [] [] [] [] [] | + lilypond | [] | + lynx | [] [] [] [] | + m4 | [] [] [] [] [] [] [] [] | + make | [] [] [] [] [] [] | + mysecretdiary | [] | + nano | [] [] [] | + opcodes | | + parted | [] [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + recode | [] [] [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] [] | + sketch | | + soundtracker | [] [] [] | + sp | | + tar | [] [] [] [] [] [] [] [] | + texinfo | [] [] [] [] [] [] | + textutils | [] [] [] [] [] [] [] [] | + util-linux | [] [] | + wdiff | [] [] [] | + wget | [] [] [] [] [] [] [] [] [] [] | + +----------------------------------------------------+ + bg cs da de el en eo es et fi fr gl he hr id it ja + 0 14 24 32 11 1 8 23 13 1 33 22 4 0 7 9 18 - ja ko lv nl no pl pt pt_BR ru sk sl sv tr zh - +----------------------------------------------+ - a2ps | [] [] [] | 5 - bash | | 4 - bison | [] [] [] | 7 - clisp | [] | 5 - cpio | [] [] [] [] [] | 9 - diffutils | [] [] [] | 10 - enscript | [] [] [] | 5 - error | | 1 - fileutils | [] [] [] [] [] [] [] [] [] | 16 - findutils | [] [] [] [] [] [] | 14 - flex | [] [] [] | 6 - gawk | | 0 - gcal | | 0 - gcc | [] | 2 - gettext | [] [] [] [] [] [] [] [] [] [] | 19 - gnupg | [] [] [] | 8 - grep | | 3 - hello | [] [] [] [] [] [] [] [] | 17 - id-utils | [] [] [] | 5 - indent | [] [] [] [] [] [] [] | 12 - libc | [] [] [] [] [] [] [] | 15 - lilypond | [] | 1 - lynx | [] [] [] [] [] | 8 - m4 | [] [] [] [] [] | 12 - make | [] [] [] [] [] | 9 - parted | [] [] [] | 5 - ptx | [] [] [] [] [] [] | 13 - python | | 0 - recode | [] [] [] | 11 - sed | [] [] [] [] [] [] [] | 16 - sh-utils | [] [] [] [] [] [] [] [] [] [] | 19 - sharutils | [] [] [] [] | 11 - soundtracker | | 0 - sp | | 0 - tar | [] [] [] [] [] [] [] [] | 16 - texinfo | [] [] | 6 - textutils | [] [] [] [] [] [] [] [] | 15 - util-linux | [] | 2 - wdiff | [] [] [] [] [] | 12 - wget | [] [] [] [] [] [] [] [] | 17 - +----------------------------------------------+ - 29 teams ja ko lv nl no pl pt pt_BR ru sk sl sv tr zh - 40 domains 18 8 0 23 6 16 1 15 26 9 9 20 2 3 336 + ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh + +----------------------------------------------------+ + a2ps | [] [] [] | 6 + bash | | 4 + bfd | | 0 + binutils | | 1 + bison | [] | 6 + clisp | [] | 5 + cpio | [] [] [] [] [] | 10 + diffutils | [] [] [] [] | 11 + enscript | [] [] [] | 5 + error | [] [] | 4 + fetchmail | | 0 + fileutils | [] [] [] [] [] [] [] [] [] | 17 + findutils | [] [] [] [] [] [] [] [] | 16 + flex | [] [] [] | 6 + freetype | | 0 + gas | | 0 + gawk | [] | 3 + gcal | | 0 + gcc | | 0 + gettext | [] [] [] [] [] [] [] [] | 18 + gnupg | [] [] [] | 10 + gprof | | 0 + grep | [] [] [] [] | 12 + hello | [] [] [] [] [] [] [] [] [] [] [] | 22 + id-utils | [] [] [] | 6 + indent | [] [] [] [] [] [] [] | 12 + jpilot | | 1 + kbd | [] | 1 + ld | | 1 + libc | [] [] [] [] [] [] [] [] | 16 + lilypond | [] [] | 3 + lynx | [] [] [] [] | 8 + m4 | [] [] [] [] | 12 + make | [] [] [] [] [] [] | 12 + mysecretdiary | | 1 + nano | [] | 4 + opcodes | [] | 1 + parted | [] [] | 5 + ptx | [] [] [] [] [] [] [] [] | 15 + python | | 0 + recode | [] [] [] [] | 13 + sed | [] [] [] [] [] [] [] | 19 + sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 21 + sharutils | [] [] [] | 11 + sketch | | 0 + soundtracker | | 3 + sp | | 0 + tar | [] [] [] [] [] [] [] | 15 + texinfo | [] | 7 + textutils | [] [] [] [] [] [] [] [] | 16 + util-linux | [] [] | 4 + wdiff | [] [] [] [] | 7 + wget | [] [] [] [] [] [] [] | 17 + +----------------------------------------------------+ + 33 teams ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh + 53 domains 9 1 6 20 0 6 17 1 13 25 10 11 23 21 2 2 387 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are @@ -272,9 +298,9 @@ distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. - If May 2001 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at + If September 2001 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. The most +up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages @@ -282,13 +308,15 @@ Using `gettext' in new packages If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your -package. Of course the GNU Public License applies to your sources from -then if you include `gettext' directly in your distribution on but -since you are writing free software anyway this is no restriction. +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. - Once the sources are change appropriately and the setup can handle to -use of `gettext' the only thing missing are the translations. The Free -Translation Project is also available for packages which are not + Once the sources are changed appropriately and the setup can handle +to use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to diff --git a/ChangeLog b/ChangeLog index d3dbdf4b..d7a55dbc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,229 @@ +2002-01-06 Tomasz Kłoczko + + * configure.in: It is good time to release 4.0.1. + + * TODO: some things goes out other in. + + * src/newgrp.c, NEWS: + added ability to log session closes in newgrp (look at long nice comments + inside source code :_) by Joseph Parmelee . + + * src/groupadd.c, src/useradd.c: + next part fixes for handle long UID/GID (by Thorsten Kukuk ). + + * lib/getdef.c, lib/getdef.h: + adeded getdef_unum(): get unsigned numerical value from table of + definitions (Thorsten Kukuk ). + + * NEWS: updated. + + * libmisc/isexpired.c: + remove "#if defined(SHADOWPWD)" (not removed during remove AGING). + + * etc/Makefile.am: useradd config file added to EXTRA_DIST. + +2002-01-05 Tomasz Kłoczko + + * po/sv.po, po/uk.po, po/cs.po, po/el.po, po/fr.po, po/ja.po, po/ko.po, po/pl.po: + update. + + * src/pwck.c, src/pwconv.c, src/pwunconv.c, src/su.c, src/sulogin.c, src/useradd.c, src/userdel.c, src/usermod.c, src/vipw.c, src/chage.c, src/chfn.c, src/chpasswd.c, src/chsh.c, src/dpasswd.c, src/expiry.c, src/faillog.c, src/gpasswd.c, src/groupadd.c, src/groupmems.c, src/groupmod.c, src/groups.c, src/grpck.c, src/grpconv.c, src/grpunconv.c, src/id.c, src/lastlog.c, src/login.c, src/logoutd.c, src/mkpasswd.c, src/newgrp.c, src/newusers.c, src/passwd.c: + Add -pcs to .indent.pro file and reindent all code. + Remove "\n" from all SYSLOG() messages. + + * NEWS: s/SuSe/SuSE/ + +2001-12-22 Tomasz Kłoczko + + * man/pl/useradd.8, man/useradd.8: documment -o option. + + * man/pl/usermod.8, man/pl/chfn.1, man/pl/chsh.1, man/pl/groupadd.8, man/pl/groupdel.8, man/pl/groupmod.8, man/pl/groups.1, man/pl/id.1, man/pl/login.1, man/pl/newgrp.1, man/pl/passwd.1, man/pl/su.1, man/pl/useradd.8, man/pl/userdel.8: + correct package name (s/shadow-password/shadow/). + + * src/chage.c, src/expiry.c, src/login.c, src/passwd.c, src/su.c, libmisc/age.c, libmisc/isexpired.c, NEWS, configure.in: + Finish integrate AGING code into SHADOWPW. + Remove handle old HAVE_USERSEC_H code. + + * po/uk.po: typo. + + * man/pl/passwd.1, man/ja/passwd.1, man/chpasswd.8, man/dpasswd.8, man/newgrp.1, man/newusers.8, man/passwd.1: + cleanups. + + * src/dpasswd.c, src/expiry.c, src/grpck.c, src/id.c, src/mkpasswd.c, src/newgrp.c, src/newusers.c, src/passwd.c, src/pwck.c, src/chfn.c, src/chsh.c, po/ja.po, po/ko.po, po/pl.po, po/sv.po, po/uk.po, po/cs.po, po/el.po, po/fr.po, man/useradd.8: + standarize usage messages syntax. + + * man/pl/useradd.8, man/pl/usermod.8, man/pl/vipw.8, man/pl/userdel.8: + removed duplicated man page text. + + * src/chage.c, po/ja.po, po/ko.po, po/pl.po, po/sv.po, po/uk.po, po/cs.po, po/el.po, po/fr.po: + standarize usage meissages syntax. + + * src/chage.c, NEWS (main): + merge part Solar shadow-4.0.0-owl-pam-auth.diff patch with reorder + nitialize PAM and checkin is chage is runed by root or not - now chage can be + runed from non-root account for checking by user own accout information. + + * src/pwck.c: indent source. + + * src/pwck.c (main): remove old work around for Slackware bug. + +2001-12-20 Andrzej Krzysztofowicz + + * man/ja/Makefile.am, man/ja/adduser.8, man/ja/limits.5, man/ja/pwconv.8: + - updated to man-pages-ja-20011215 + +2001-11-19 Tomasz Kłoczko + + * src/grpck.c: + remove check for a Slackware bug (make sure GID is not -1; it was special + meaning for some syscalls). + + * src/newgrp.c, src/pwck.c, src/su.c, src/useradd.c, src/usermod.c, src/groupadd.c, src/groupmod.c, src/id.c, NEWS: + fixes for handle/print correctly 32bit uid/gid (Thorsten Kukuk ). + + * src/chage.c: - break ussage vomment line. + + * lib/defines.h: + removed bunch spaces on end line in conditionale #include + which in some cases dissallow compile correctly shadow (thanks for + Silvan Minghetti ). + +2001-11-17 Michał Moskal + + * NEWS: + - mention fix for SEGV when using pwck -s on /etc/passwd file with + empty lines in it + + * lib/commonio.c: + - installed fix for SEGV when using pwck -s on /etc/passwd file with + empty lines in it + +2001-11-17 Tomasz Kłoczko + + * libmisc/chkname.c, NEWS: + next merge from Solar patches (shadow-4.0.0-owl-check_names.diff) but only + part this patch with checking login name matching; checking is login + string isn't longer than possible probably it will be good prepare using + _POSIX_LOGIN_NAME_MAX from + +2001-11-16 Tomasz Kłoczko + + * NEWS: typos. + + * NEWS: added info about new hu man pages. + + * NEWS: updated. + +2001-11-16 Andrzej Krzysztofowicz + + * man/ja/passwd.5, man/ja/porttime.5, man/ja/pw_auth.3, man/ja/pwauth.8, man/ja/pwck.8, man/ja/shadow.3, man/ja/shadow.5, man/ja/su.1, man/ja/suauth.5, man/ja/sulogin.8, man/ja/userdel.8, man/ja/usermod.8, man/ja/Makefile.am, man/ja/chage.1, man/ja/chfn.1, man/ja/chpasswd.8, man/ja/chsh.1, man/ja/dpasswd.8, man/ja/faillog.5, man/ja/faillog.8, man/ja/gpasswd.1, man/ja/groupadd.8, man/ja/groupdel.8, man/ja/groupmod.8, man/ja/grpck.8, man/ja/lastlog.8, man/ja/login.1, man/ja/login.access.5, man/ja/login.defs.5, man/ja/logoutd.8, man/ja/mkpasswd.8, man/ja/newgrp.1, man/ja/passwd.1: + - updated to man-pages-ja-20011115.tar.gz + + * man/ja/groups.1: 3c26de91cfd359c0b7c36ca3cd3e170d groups.1 + + * man/ja/grpconv.8: 402190c04b8df45e20afd01e3acd0da4 grpconv.8 + + * man/ja/grpunconv.8: 402190c04b8df45e20afd01e3acd0da4 grpunconv.8 + + * man/ja/id.1: 3edc687b1c09bbdd170553f326a71711 id.1 + + * man/ja/newusers.8: c2ecaa6ddffe07de2c39be3aefb5bcae newusers.8 + + * man/ja/pwunconv.8: 402190c04b8df45e20afd01e3acd0da4 pwunconv.8 + + * man/ja/shadowconfig.8: + f79300c0db64fd961443177c88605087 shadowconfig.8 + + * man/ja/useradd.8: 3333b9a2e5a388a472fb05106d65a596 useradd.8 + + * man/ja/vigr.8: 42825938683e54e391897ea100001af1 vigr.8 + + * man/ja/vipw.8: 0cb8db0f1f19de7690f0ef9baeceb919 vipw.8 + +2001-11-16 Tomasz Kłoczko + + * lib/getpass.c: + one fix warning from Solar shadow-4.0.0-owl-warnings.diff. + + * src/chage.c, lib/defines.h: + move "#include " to /lib/defines.h. + + * configure.in: added AC_CHECK_HEADERS(errno.h) + + * src/chage.c: apply shadow-4.0.0-owl-chage-drop-priv.diff and + shadow-4.0.0-owl-chage-ro-no-lock.diff by Solar Designer . + Added locks which are needed when doing r/w accesses, not when running as root. + If root does read-only, there's no lock needed. Added missing + "#include " for above. + +2001-11-14 Andrzej Krzysztofowicz + + * configure.in: - added hu directory antry + + * man/Makefile.am: - groups.1 moved to EXTRA_DIST + - added hu directory entry + + * man/ja/Makefile.am: - sorted + - shadow.3 moved to EXTRA_DIST + + * man/pl/Makefile.am: - sorted + - added entries for new pages + - EXTRA_DIST synced with man/Makefile.am + + * man/hu/Makefile.am, man/hu/chsh.1, man/hu/gpasswd.1, man/hu/groups.1, man/hu/newgrp.1, man/hu/passwd.1, man/hu/sg.1: + - man pages from Debian + + * man/groupmems.8: - typo + + * man/pl/expiry.1, man/pl/groupmems.8: - translated pages + +2001-11-07 Tomasz Kłoczko + + * libmisc/Makefile.am: + fix building with cracklib enabled: $(LIBCRACK) added to libmisc_la_LIBADD. + + * src/useradd.c: typo. + +2001-11-06 Tomasz Kłoczko + + * src/dpasswd.c, src/gpasswd.c, src/groupadd.c, src/groupmod.c, src/grpck.c, src/lastlog.c, src/login.c, src/passwd.c, src/pwck.c, src/userdel.c, src/usermod.c, src/chage.c, src/chfn.c, src/chsh.c, libmisc/utmp.c: + removed prototypes which are defined in libc header files + (Thorsten Kukuk ). + + * libmisc/Makefile.am, libmisc/nscd.c, lib/commonio.c: + implemetn better reloading the nscd cache (per NSS map) + by Thorsten Kukuk + + * src/login.c, libmisc/setupenv.c: + fixed warnings "not used but defined" on compile using gcc 3.0.x + by bulletpr00ph . + +2001-10-24 Tomasz Kłoczko + + * NEWS: New entries for 4.0.1. + + * po/pl.po: few more pl translations. + + * po/cs.po, po/el.po, po/fr.po, po/ja.po, po/ko.po, po/pl.po, po/sv.po, po/uk.po: + "make update-po". + + * po/ja.po, po/ko.po, configure.in: + added ja, ko translations found in SuSe. + +2001-10-17 Tomasz Kłoczko + + * src/useradd.c: sort alphabetically *flg variables. + + * debian/Attic/tar.c, debian/Makefile.am: removed. + +2001-10-10 Tomasz Kłoczko + + * man/ja/Makefile.am, man/ja/sg.1, man/pl/Makefile.am, man/pl/sg.1, man/pl/vigr.8, man/sg.1, man/vigr.8, man/Makefile.am: + added vigr(1) man page as roff .so link to vipw(1), - added sg(1) man page as roff .so link to newgrp(1). + + * src/Makefile.am: + added install symlinks newgrp -> sg, vipw -> vigr in install-exec-hook target. + 2001-10-06 Tomasz Kłoczko * lib/Makefile.am (libshadow_la_SOURCES): @@ -523,7 +749,7 @@ 1999-03-07 Marek Michałkiewicz - * po/pl.po, po/el.po, doc/LSM, src/useradd.c, src/su.c, src/pwconv.c, src/pwck.c, src/passwd.c, src/newusers.c, src/newgrp.c, src/logoutd.c, src/login.c, src/grpconv.c, src/grpck.c, src/groupadd.c, src/gpasswd.c, src/dpasswd.c, src/chfn.c, src/chage.c, man/usermod.8, man/useradd.8, man/limits.5, man/chage.1, libmisc/valid.c, libmisc/sub.c, libmisc/strtoday.c, libmisc/setupenv.c, libmisc/obscure.c, libmisc/limits.c, libmisc/env.c, lib/snprintf.h, lib/getdef.c, lib/encrypt.c, lib/defines.h, etc/login.defs.linux, doc/WISHLIST, doc/README.nls, doc/README.pam, doc/README.platforms, doc/README.mirrors, doc/README.linux, doc/Makefile.am, doc/Attic/CHANGES, debian/tar.c, debian/rules, debian/Attic/logoutd, debian/control, debian/changelog, configure.in: + * po/pl.po, po/el.po, doc/LSM, src/useradd.c, src/su.c, src/pwconv.c, src/pwck.c, src/passwd.c, src/newusers.c, src/newgrp.c, src/logoutd.c, src/login.c, src/grpconv.c, src/grpck.c, src/groupadd.c, src/gpasswd.c, src/dpasswd.c, src/chfn.c, src/chage.c, man/usermod.8, man/useradd.8, man/limits.5, man/chage.1, libmisc/valid.c, libmisc/sub.c, libmisc/strtoday.c, libmisc/setupenv.c, libmisc/obscure.c, libmisc/limits.c, libmisc/env.c, lib/snprintf.h, lib/getdef.c, lib/encrypt.c, lib/defines.h, etc/login.defs.linux, doc/WISHLIST, doc/README.nls, doc/README.pam, doc/README.platforms, doc/README.mirrors, doc/README.linux, doc/Makefile.am, doc/Attic/CHANGES, debian/Attic/tar.c, debian/rules, debian/Attic/logoutd, debian/control, debian/changelog, configure.in: *** empty log message *** 1998-12-28 Marek Michałkiewicz @@ -548,7 +774,7 @@ 1998-04-16 Marek Michałkiewicz - * src/useradd.c, src/userdel.c, src/usermod.c, src/passwd.c, src/sulogin.c, src/groupdel.c, src/login.c, src/logoutd.c, src/newgrp.c, src/chage.c, src/dpasswd.c, src/faillog.c, src/gpasswd.c, src/groupadd.c, redhat/Attic/shadow-970616-rh.patch, redhat/Attic/shadow-970616-utuser.patch, redhat/Attic/shadow-970616.login.defs, redhat/Attic/shadow-970616.useradd, redhat/Attic/shadow-utils-970616.spec, src/Makefile.am, libmisc/utmp.c, redhat/Attic/Makefile.am, redhat/Attic/README, redhat/Attic/shadow-970616-fix.patch, redhat/Attic/shadow-970616-glibc.patch, libmisc/limits.c, libmisc/log.c, libmisc/login_desrpc.c, libmisc/loginprompt.c, libmisc/obscure.c, libmisc/strtoday.c, libmisc/chkname.c, libmisc/chowndir.c, libmisc/copydir.c, libmisc/failure.c, lib/defines.h, lib/dialchk.c, lib/pwauth.c, lib/pwpack.c, doc/Attic/CHANGES, doc/README.linux, doc/WISHLIST, doc/cracklib26.diff, lib/commonio.c, acconfig.h, configure.in, debian/tar.c: + * src/useradd.c, src/userdel.c, src/usermod.c, src/passwd.c, src/sulogin.c, src/groupdel.c, src/login.c, src/logoutd.c, src/newgrp.c, src/chage.c, src/dpasswd.c, src/faillog.c, src/gpasswd.c, src/groupadd.c, redhat/Attic/shadow-970616-rh.patch, redhat/Attic/shadow-970616-utuser.patch, redhat/Attic/shadow-970616.login.defs, redhat/Attic/shadow-970616.useradd, redhat/Attic/shadow-utils-970616.spec, src/Makefile.am, libmisc/utmp.c, redhat/Attic/Makefile.am, redhat/Attic/README, redhat/Attic/shadow-970616-fix.patch, redhat/Attic/shadow-970616-glibc.patch, libmisc/limits.c, libmisc/log.c, libmisc/login_desrpc.c, libmisc/loginprompt.c, libmisc/obscure.c, libmisc/strtoday.c, libmisc/chkname.c, libmisc/chowndir.c, libmisc/copydir.c, libmisc/failure.c, lib/defines.h, lib/dialchk.c, lib/pwauth.c, lib/pwpack.c, doc/Attic/CHANGES, doc/README.linux, doc/WISHLIST, doc/cracklib26.diff, lib/commonio.c, acconfig.h, configure.in, debian/Attic/tar.c: *** empty log message *** 1998-04-02 Marek Michałkiewicz diff --git a/NEWS b/NEWS index ccab76f6..67fdb9b4 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,44 @@ -$Id: NEWS,v 1.12 2001/09/07 15:35:54 kloczek Exp $ +$Id: NEWS,v 1.24 2002/01/06 15:00:05 kloczek Exp $ +shadow-4.0.0 => shadow-4.0.1 + +- added ability to log session closes in newgrp + (Joseph Parmelee ), +- add -pcs to .indent.pro file and reindent all code in src/, +- remove "\n" from all SYSLOG() messages, +- finish integrate AGING code into SHADOWPW, +- remove handle old HAVE_USERSEC_H code, +- updated ja and added hu man pages, +- applied patches by Solar Designer : + shadow-4.0.0-owl-chage-drop-priv.diffd + shadow-4.0.0-owl-chage-ro-no-lock.diff: + Added locks which are needed when doing r/w accesses, not when running + as root. If root does read-only, there's no lock needed. Added missing + "#include " for above (me). + shadow-4.0.0-owl-warnings.diff + Olny one fix from this patch was aplayd because other was fixed few days + before :) + shadow-4.0.0-owl-check_names.diff + Merge only prat this patch with checking login name matching; checking + is login string isn't longer than possible it will be good prepare using + probably _POSIX_LOGIN_NAME_MAX from , + shadow-4.0.0-owl-chage-drop-priv.diff + shadow-4.0.0-owl-pam-auth.diff + Merge part with reorder initialize PAM and checkin is chage is runed by + root or not - now chage can be runed from non-root account for checking + by user own accout information (if PAM enabled). +- 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 + (bulletpr00ph ), +- added ja, ko translations found in SuSE, +- added symlinks: newgrp -> sg, vipw -> vigr, +- added vigr(1) man page as roff .so link to vipw(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 - fix bug discovered and fixed by Marcel Ritter @@ -7,8 +46,7 @@ shadow-20001016 => shadow-4.0.0 Due to a big buffer size in lib/commonio.c this error does only appear if a line gets longer than 4096 bytes (there are probably very few people stumbling across this). - Ths bug can be exposed by trashing /etc/groups file with using useradd - with script: + Ths bug can be exposed by trashing /etc/groups file using useradd with script: #!/bin/sh typeset -i NUM NUM=0 diff --git a/TODO b/TODO index c0d62483..e612f120 100644 --- a/TODO +++ b/TODO @@ -31,8 +31,8 @@ Documentation: look at http://refentry2man.pld.org.pl/ for fast refentry xml/docbook to roff converter, -- document {pw,grp}ck -s option in pt_BR, ja man pages, - - documment in pt_BR, ja man pages -s {pw,grp}ck option, +- document -o option in ja man page, + - pl man page for login(1) - documment -f -h -p -r options. diff --git a/aclocal.m4 b/aclocal.m4 index f4444f1f..60e41060 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -4183,11 +4183,15 @@ esac # Ulrich Drepper , 1995. # # This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. +# be used in projects which are not available under the GNU General Public +# License or the GNU Library General Public License but which still want +# to provide support for the GNU gettext functionality. +# Please note that the actual code of the GNU gettext library is covered +# by the GNU Library General Public License, and the rest of the GNU +# gettext package package is covered by the GNU General Public License. +# They are *not* in the public domain. -# serial 9 +# serial 10 dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library @@ -4298,14 +4302,14 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "" AC_CHECK_FUNCS(dcgettext) LIBS="$gt_save_LIBS" + dnl Search for GNU msgfmt in the PATH. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - fi + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + dnl Search for GNU xgettext in the PATH. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) CATOBJEXT=.gmo fi @@ -4322,10 +4326,10 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "" dnl Mark actions used to generate GNU NLS library. INTLOBJS="\$(GETTOBJS)" AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) AC_SUBST(MSGFMT) BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes @@ -4334,11 +4338,26 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then : ; else AC_MSG_RESULT( @@ -4362,16 +4381,19 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "" ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - case "$srcdir" in + # 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="$srcdir" ;; - *) top_srcdir="$ac_dots$srcdir" ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac - if test -f "$srcdir/$ac_dir/POTFILES.in"; then + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" - echo creating "$ac_dir/POTFILES" - sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" - echo creating "$ac_dir/Makefile" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" fi ;; @@ -4402,7 +4424,7 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "" dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) @@ -4532,11 +4554,15 @@ strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) # Ulrich Drepper , 1996. # # This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. +# be used in projects which are not available under the GNU General Public +# License or the GNU Library General Public License but which still want +# to provide support for the GNU gettext functionality. +# Please note that the actual code of the GNU gettext library is covered +# by the GNU Library General Public License, and the rest of the GNU +# gettext package package is covered by the GNU General Public License. +# They are *not* in the public domain. -# serial 1 +# serial 2 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) @@ -4568,7 +4594,7 @@ ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ;; esac])dnl $1="$ac_cv_path_$1" -if test -n "[$]$1"; then +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) @@ -4695,9 +4721,13 @@ AC_DEFUN([AM_LANGINFO_CODESET], # Ulrich Drepper , 1995. # # This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. +# be used in projects which are not available under the GNU General Public +# License or the GNU Library General Public License but which still want +# to provide support for the GNU gettext functionality. +# Please note that the actual code of the GNU gettext library is covered +# by the GNU Library General Public License, and the rest of the GNU +# gettext package package is covered by the GNU General Public License. +# They are *not* in the public domain. # serial 2 diff --git a/config.h.in b/config.h.in index feccf639..1a831ac5 100644 --- a/config.h.in +++ b/config.h.in @@ -187,6 +187,9 @@ /* Define if you have the header file. */ #undef HAVE_DLFCN_H +/* Define if you have the header file. */ +#undef HAVE_ERRNO_H + /* Define if you have the `fchmod' function. */ #undef HAVE_FCHMOD @@ -473,9 +476,6 @@ /* Define if you have the `updwtmpx' function. */ #undef HAVE_UPDWTMPX -/* Define if you have the header file. */ -#undef HAVE_USERSEC_H - /* Define if you have the header file. */ #undef HAVE_UTIME_H diff --git a/configure b/configure index 204389ca..4fb6590a 100755 --- a/configure +++ b/configure @@ -1421,7 +1421,7 @@ fi # Define the identity of the package. PACKAGE=shadow -VERSION=4.0.0 +VERSION=4.0.1 cat >>confdefs.h <>confdefs.h <<\EOF #define USG 1 EOF -cat >>confdefs.h <<\EOF -#define AGING 1 -EOF - cat >>confdefs.h <<\EOF #define USE_SYSLOG 1 EOF @@ -9250,13 +9246,13 @@ if test "${with_libtcfs+set}" = set; then fi; -echo "$as_me:9253: checking for inet_ntoa" >&5 +echo "$as_me:9249: checking for inet_ntoa" >&5 echo $ECHO_N "checking for inet_ntoa... $ECHO_C" >&6 if test "${ac_cv_func_inet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 9259 "configure" +#line 9255 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char inet_ntoa (); below. */ @@ -9287,16 +9283,16 @@ f = inet_ntoa; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9290: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9286: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9293: \$? = $ac_status" >&5 + echo "$as_me:9289: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9296: \"$ac_try\"") >&5 + { (eval echo "$as_me:9292: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9299: \$? = $ac_status" >&5 + echo "$as_me:9295: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_inet_ntoa=yes else @@ -9306,13 +9302,13 @@ ac_cv_func_inet_ntoa=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:9309: result: $ac_cv_func_inet_ntoa" >&5 +echo "$as_me:9305: result: $ac_cv_func_inet_ntoa" >&5 echo "${ECHO_T}$ac_cv_func_inet_ntoa" >&6 if test $ac_cv_func_inet_ntoa = yes; then : else -echo "$as_me:9315: checking for inet_ntoa in -linet" >&5 +echo "$as_me:9311: checking for inet_ntoa in -linet" >&5 echo $ECHO_N "checking for inet_ntoa in -linet... $ECHO_C" >&6 if test "${ac_cv_lib_inet_inet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9320,7 +9316,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9323 "configure" +#line 9319 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9339,16 +9335,16 @@ inet_ntoa (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9342: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9338: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9345: \$? = $ac_status" >&5 + echo "$as_me:9341: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9348: \"$ac_try\"") >&5 + { (eval echo "$as_me:9344: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9351: \$? = $ac_status" >&5 + echo "$as_me:9347: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_inet_inet_ntoa=yes else @@ -9359,7 +9355,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9362: result: $ac_cv_lib_inet_inet_ntoa" >&5 +echo "$as_me:9358: result: $ac_cv_lib_inet_inet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_inet_inet_ntoa" >&6 if test $ac_cv_lib_inet_inet_ntoa = yes; then cat >>confdefs.h <&5 +echo "$as_me:9371: checking for socket" >&5 echo $ECHO_N "checking for socket... $ECHO_C" >&6 if test "${ac_cv_func_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 9381 "configure" +#line 9377 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char socket (); below. */ @@ -9409,16 +9405,16 @@ f = socket; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9412: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9408: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9415: \$? = $ac_status" >&5 + echo "$as_me:9411: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9418: \"$ac_try\"") >&5 + { (eval echo "$as_me:9414: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9421: \$? = $ac_status" >&5 + echo "$as_me:9417: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_socket=yes else @@ -9428,13 +9424,13 @@ ac_cv_func_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:9431: result: $ac_cv_func_socket" >&5 +echo "$as_me:9427: result: $ac_cv_func_socket" >&5 echo "${ECHO_T}$ac_cv_func_socket" >&6 if test $ac_cv_func_socket = yes; then : else -echo "$as_me:9437: checking for socket in -lsocket" >&5 +echo "$as_me:9433: checking for socket in -lsocket" >&5 echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9442,7 +9438,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9445 "configure" +#line 9441 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9461,16 +9457,16 @@ socket (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9464: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9460: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9467: \$? = $ac_status" >&5 + echo "$as_me:9463: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9470: \"$ac_try\"") >&5 + { (eval echo "$as_me:9466: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9473: \$? = $ac_status" >&5 + echo "$as_me:9469: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_socket=yes else @@ -9481,7 +9477,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9484: result: $ac_cv_lib_socket_socket" >&5 +echo "$as_me:9480: result: $ac_cv_lib_socket_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 if test $ac_cv_lib_socket_socket = yes; then cat >>confdefs.h <&5 +echo "$as_me:9493: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 9503 "configure" +#line 9499 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. */ @@ -9531,16 +9527,16 @@ f = gethostbyname; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9534: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9530: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9537: \$? = $ac_status" >&5 + echo "$as_me:9533: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9540: \"$ac_try\"") >&5 + { (eval echo "$as_me:9536: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9543: \$? = $ac_status" >&5 + echo "$as_me:9539: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else @@ -9550,13 +9546,13 @@ ac_cv_func_gethostbyname=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:9553: result: $ac_cv_func_gethostbyname" >&5 +echo "$as_me:9549: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = yes; then : else -echo "$as_me:9559: checking for gethostbyname in -lnsl" >&5 +echo "$as_me:9555: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9564,7 +9560,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9567 "configure" +#line 9563 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9583,16 +9579,16 @@ gethostbyname (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9586: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9582: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9589: \$? = $ac_status" >&5 + echo "$as_me:9585: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9592: \"$ac_try\"") >&5 + { (eval echo "$as_me:9588: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9595: \$? = $ac_status" >&5 + echo "$as_me:9591: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else @@ -9603,7 +9599,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9606: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "$as_me:9602: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then cat >>confdefs.h <&5 + echo "$as_me:9616: checking for getsecretkey" >&5 echo $ECHO_N "checking for getsecretkey... $ECHO_C" >&6 if test "${ac_cv_func_getsecretkey+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 9626 "configure" +#line 9622 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getsecretkey (); below. */ @@ -9654,16 +9650,16 @@ f = getsecretkey; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9657: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9653: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9660: \$? = $ac_status" >&5 + echo "$as_me:9656: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9663: \"$ac_try\"") >&5 + { (eval echo "$as_me:9659: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9666: \$? = $ac_status" >&5 + echo "$as_me:9662: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_getsecretkey=yes else @@ -9673,7 +9669,7 @@ ac_cv_func_getsecretkey=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:9676: result: $ac_cv_func_getsecretkey" >&5 +echo "$as_me:9672: result: $ac_cv_func_getsecretkey" >&5 echo "${ECHO_T}$ac_cv_func_getsecretkey" >&6 if test $ac_cv_func_getsecretkey = yes; then cat >>confdefs.h <<\EOF @@ -9681,7 +9677,7 @@ if test $ac_cv_func_getsecretkey = yes; then EOF else - echo "$as_me:9684: checking for getsecretkey in -lrpcsvc" >&5 + echo "$as_me:9680: checking for getsecretkey in -lrpcsvc" >&5 echo $ECHO_N "checking for getsecretkey in -lrpcsvc... $ECHO_C" >&6 if test "${ac_cv_lib_rpcsvc_getsecretkey+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9689,7 +9685,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lrpcsvc $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9692 "configure" +#line 9688 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9708,16 +9704,16 @@ getsecretkey (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9711: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9707: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9714: \$? = $ac_status" >&5 + echo "$as_me:9710: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9717: \"$ac_try\"") >&5 + { (eval echo "$as_me:9713: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9720: \$? = $ac_status" >&5 + echo "$as_me:9716: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_rpcsvc_getsecretkey=yes else @@ -9728,7 +9724,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9731: result: $ac_cv_lib_rpcsvc_getsecretkey" >&5 +echo "$as_me:9727: result: $ac_cv_lib_rpcsvc_getsecretkey" >&5 echo "${ECHO_T}$ac_cv_lib_rpcsvc_getsecretkey" >&6 if test $ac_cv_lib_rpcsvc_getsecretkey = yes; then cat >>confdefs.h <<\EOF @@ -9749,7 +9745,7 @@ EOF fi if test "$with_libcrypt" != "no"; then - echo "$as_me:9752: checking for crypt in -lcrypt" >&5 + echo "$as_me:9748: checking for crypt in -lcrypt" >&5 echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 if test "${ac_cv_lib_crypt_crypt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9757,7 +9753,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypt $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9760 "configure" +#line 9756 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9776,16 +9772,16 @@ crypt (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9779: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9775: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9782: \$? = $ac_status" >&5 + echo "$as_me:9778: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9785: \"$ac_try\"") >&5 + { (eval echo "$as_me:9781: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9788: \$? = $ac_status" >&5 + echo "$as_me:9784: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_crypt_crypt=yes else @@ -9796,7 +9792,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9799: result: $ac_cv_lib_crypt_crypt" >&5 +echo "$as_me:9795: result: $ac_cv_lib_crypt_crypt" >&5 echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 if test $ac_cv_lib_crypt_crypt = yes; then cat >>confdefs.h <<\EOF @@ -9809,7 +9805,7 @@ fi if test "$with_libcrack" != "no"; then echo "checking cracklib flavour, don't be surprised by the results" - echo "$as_me:9812: checking for FascistCheck in -lcrack" >&5 + echo "$as_me:9808: checking for FascistCheck in -lcrack" >&5 echo $ECHO_N "checking for FascistCheck in -lcrack... $ECHO_C" >&6 if test "${ac_cv_lib_crack_FascistCheck+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9817,7 +9813,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrack $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9820 "configure" +#line 9816 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9836,16 +9832,16 @@ FascistCheck (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9839: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9835: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9842: \$? = $ac_status" >&5 + echo "$as_me:9838: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9845: \"$ac_try\"") >&5 + { (eval echo "$as_me:9841: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9848: \$? = $ac_status" >&5 + echo "$as_me:9844: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_crack_FascistCheck=yes else @@ -9856,7 +9852,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9859: result: $ac_cv_lib_crack_FascistCheck" >&5 +echo "$as_me:9855: result: $ac_cv_lib_crack_FascistCheck" >&5 echo "${ECHO_T}$ac_cv_lib_crack_FascistCheck" >&6 if test $ac_cv_lib_crack_FascistCheck = yes; then cat >>confdefs.h <<\EOF @@ -9865,7 +9861,7 @@ EOF LIBCRACK=-lcrack fi - echo "$as_me:9868: checking for FascistHistory in -lcrack" >&5 + echo "$as_me:9864: checking for FascistHistory in -lcrack" >&5 echo $ECHO_N "checking for FascistHistory in -lcrack... $ECHO_C" >&6 if test "${ac_cv_lib_crack_FascistHistory+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9873,7 +9869,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrack $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9876 "configure" +#line 9872 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9892,16 +9888,16 @@ FascistHistory (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9895: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9891: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9898: \$? = $ac_status" >&5 + echo "$as_me:9894: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9901: \"$ac_try\"") >&5 + { (eval echo "$as_me:9897: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9904: \$? = $ac_status" >&5 + echo "$as_me:9900: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_crack_FascistHistory=yes else @@ -9912,7 +9908,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9915: result: $ac_cv_lib_crack_FascistHistory" >&5 +echo "$as_me:9911: result: $ac_cv_lib_crack_FascistHistory" >&5 echo "${ECHO_T}$ac_cv_lib_crack_FascistHistory" >&6 if test $ac_cv_lib_crack_FascistHistory = yes; then cat >>confdefs.h <<\EOF @@ -9921,7 +9917,7 @@ EOF fi - echo "$as_me:9924: checking for FascistHistoryPw in -lcrack" >&5 + echo "$as_me:9920: checking for FascistHistoryPw in -lcrack" >&5 echo $ECHO_N "checking for FascistHistoryPw in -lcrack... $ECHO_C" >&6 if test "${ac_cv_lib_crack_FascistHistoryPw+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9929,7 +9925,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrack $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9932 "configure" +#line 9928 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -9948,16 +9944,16 @@ FascistHistoryPw (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9951: \"$ac_link\"") >&5 +if { (eval echo "$as_me:9947: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:9954: \$? = $ac_status" >&5 + echo "$as_me:9950: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9957: \"$ac_try\"") >&5 + { (eval echo "$as_me:9953: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:9960: \$? = $ac_status" >&5 + echo "$as_me:9956: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_crack_FascistHistoryPw=yes else @@ -9968,7 +9964,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:9971: result: $ac_cv_lib_crack_FascistHistoryPw" >&5 +echo "$as_me:9967: result: $ac_cv_lib_crack_FascistHistoryPw" >&5 echo "${ECHO_T}$ac_cv_lib_crack_FascistHistoryPw" >&6 if test $ac_cv_lib_crack_FascistHistoryPw = yes; then cat >>confdefs.h <<\EOF @@ -9980,7 +9976,7 @@ fi fi if test "$with_libskey" = "yes"; then - echo "$as_me:9983: checking for MD5Init in -lmd" >&5 + echo "$as_me:9979: checking for MD5Init in -lmd" >&5 echo $ECHO_N "checking for MD5Init in -lmd... $ECHO_C" >&6 if test "${ac_cv_lib_md_MD5Init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -9988,7 +9984,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lmd $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 9991 "configure" +#line 9987 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -10007,16 +10003,16 @@ MD5Init (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10010: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10006: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10013: \$? = $ac_status" >&5 + echo "$as_me:10009: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10016: \"$ac_try\"") >&5 + { (eval echo "$as_me:10012: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10019: \$? = $ac_status" >&5 + echo "$as_me:10015: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_md_MD5Init=yes else @@ -10027,13 +10023,13 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:10030: result: $ac_cv_lib_md_MD5Init" >&5 +echo "$as_me:10026: result: $ac_cv_lib_md_MD5Init" >&5 echo "${ECHO_T}$ac_cv_lib_md_MD5Init" >&6 if test $ac_cv_lib_md_MD5Init = yes; then LIBMD=-lmd fi - echo "$as_me:10036: checking for skeychallenge in -lskey" >&5 + echo "$as_me:10032: checking for skeychallenge in -lskey" >&5 echo $ECHO_N "checking for skeychallenge in -lskey... $ECHO_C" >&6 if test "${ac_cv_lib_skey_skeychallenge+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10041,7 +10037,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lskey $LIBMD $LIBCRYPT $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 10044 "configure" +#line 10040 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -10060,16 +10056,16 @@ skeychallenge (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10063: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10059: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10066: \$? = $ac_status" >&5 + echo "$as_me:10062: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10069: \"$ac_try\"") >&5 + { (eval echo "$as_me:10065: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10072: \$? = $ac_status" >&5 + echo "$as_me:10068: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_skey_skeychallenge=yes else @@ -10080,7 +10076,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:10083: result: $ac_cv_lib_skey_skeychallenge" >&5 +echo "$as_me:10079: result: $ac_cv_lib_skey_skeychallenge" >&5 echo "${ECHO_T}$ac_cv_lib_skey_skeychallenge" >&6 if test $ac_cv_lib_skey_skeychallenge = yes; then cat >>confdefs.h <<\EOF @@ -10090,7 +10086,7 @@ EOF fi elif test "$with_libopie" = "yes"; then - echo "$as_me:10093: checking for opiechallenge in -lopie" >&5 + echo "$as_me:10089: checking for opiechallenge in -lopie" >&5 echo $ECHO_N "checking for opiechallenge in -lopie... $ECHO_C" >&6 if test "${ac_cv_lib_opie_opiechallenge+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10098,7 +10094,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lopie $LIBCRYPT $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 10101 "configure" +#line 10097 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -10117,16 +10113,16 @@ opiechallenge (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10120: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10116: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10123: \$? = $ac_status" >&5 + echo "$as_me:10119: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10126: \"$ac_try\"") >&5 + { (eval echo "$as_me:10122: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10129: \$? = $ac_status" >&5 + echo "$as_me:10125: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_opie_opiechallenge=yes else @@ -10137,7 +10133,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:10140: result: $ac_cv_lib_opie_opiechallenge" >&5 +echo "$as_me:10136: result: $ac_cv_lib_opie_opiechallenge" >&5 echo "${ECHO_T}$ac_cv_lib_opie_opiechallenge" >&6 if test $ac_cv_lib_opie_opiechallenge = yes; then cat >>confdefs.h <<\EOF @@ -10149,7 +10145,7 @@ fi fi if test "$with_libtcfs" = "yes"; then - echo "$as_me:10152: checking for tcfs_encrypt_key in -ltcfs" >&5 + echo "$as_me:10148: checking for tcfs_encrypt_key in -ltcfs" >&5 echo $ECHO_N "checking for tcfs_encrypt_key in -ltcfs... $ECHO_C" >&6 if test "${ac_cv_lib_tcfs_tcfs_encrypt_key+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10157,7 +10153,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ltcfs -lgdbm $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 10160 "configure" +#line 10156 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -10176,16 +10172,16 @@ tcfs_encrypt_key (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10179: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10175: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10182: \$? = $ac_status" >&5 + echo "$as_me:10178: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10185: \"$ac_try\"") >&5 + { (eval echo "$as_me:10181: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10188: \$? = $ac_status" >&5 + echo "$as_me:10184: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_tcfs_tcfs_encrypt_key=yes else @@ -10196,7 +10192,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:10199: result: $ac_cv_lib_tcfs_tcfs_encrypt_key" >&5 +echo "$as_me:10195: result: $ac_cv_lib_tcfs_tcfs_encrypt_key" >&5 echo "${ECHO_T}$ac_cv_lib_tcfs_tcfs_encrypt_key" >&6 if test $ac_cv_lib_tcfs_tcfs_encrypt_key = yes; then cat >>confdefs.h <<\EOF @@ -10211,7 +10207,7 @@ fi fi if test "$with_libpam" = "yes"; then - echo "$as_me:10214: checking for pam_start in -lpam" >&5 + echo "$as_me:10210: checking for pam_start in -lpam" >&5 echo $ECHO_N "checking for pam_start in -lpam... $ECHO_C" >&6 if test "${ac_cv_lib_pam_pam_start+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10219,7 +10215,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lpam $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 10222 "configure" +#line 10218 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -10238,16 +10234,16 @@ pam_start (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10241: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10237: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10244: \$? = $ac_status" >&5 + echo "$as_me:10240: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10247: \"$ac_try\"") >&5 + { (eval echo "$as_me:10243: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10250: \$? = $ac_status" >&5 + echo "$as_me:10246: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pam_pam_start=yes else @@ -10258,7 +10254,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:10261: result: $ac_cv_lib_pam_pam_start" >&5 +echo "$as_me:10257: result: $ac_cv_lib_pam_pam_start" >&5 echo "${ECHO_T}$ac_cv_lib_pam_pam_start" >&6 if test $ac_cv_lib_pam_pam_start = yes; then cat >>confdefs.h <<\EOF @@ -10266,18 +10262,18 @@ if test $ac_cv_lib_pam_pam_start = yes; then EOF LIBPAM="-lpam" - echo "$as_me:10269: checking for main in -lpam_misc" >&5 + echo "$as_me:10265: checking for main in -lpam_misc" >&5 echo $ECHO_N "checking for main in -lpam_misc... $ECHO_C" >&6 if test "${ac_cv_lib_pam_misc_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam_misc { { echo "$as_me:10275: error: libpam_misc is missing" >&5 +LIBS="-lpam_misc { { echo "$as_me:10271: error: libpam_misc is missing" >&5 echo "$as_me: error: libpam_misc is missing" >&2;} { (exit 1); exit 1; }; } $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 10280 "configure" +#line 10276 "configure" #include "confdefs.h" int @@ -10289,16 +10285,16 @@ main (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10292: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10288: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10295: \$? = $ac_status" >&5 + echo "$as_me:10291: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10298: \"$ac_try\"") >&5 + { (eval echo "$as_me:10294: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10301: \$? = $ac_status" >&5 + echo "$as_me:10297: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pam_misc_main=yes else @@ -10309,29 +10305,29 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:10312: result: $ac_cv_lib_pam_misc_main" >&5 +echo "$as_me:10308: result: $ac_cv_lib_pam_misc_main" >&5 echo "${ECHO_T}$ac_cv_lib_pam_misc_main" >&6 if test $ac_cv_lib_pam_misc_main = yes; then LIBPAM="$LIBPAM -lpam_misc" fi - echo "$as_me:10318: checking use login access checking if PAM not used" >&5 + echo "$as_me:10314: checking use login access checking if PAM not used" >&5 echo $ECHO_N "checking use login access checking if PAM not used... $ECHO_C" >&6 cat >>confdefs.h <<\EOF #define LOGIN_ACCESS 1 EOF - echo "$as_me:10324: result: yes" >&5 + echo "$as_me:10320: result: yes" >&5 echo "${ECHO_T}yes" >&6 fi - echo "$as_me:10329: checking use login and su access checking if PAM not used" >&5 + echo "$as_me:10325: checking use login and su access checking if PAM not used" >&5 echo $ECHO_N "checking use login and su access checking if PAM not used... $ECHO_C" >&6 - echo "$as_me:10331: result: no" >&5 + echo "$as_me:10327: result: no" >&5 echo "${ECHO_T}no" >&6 else - echo "$as_me:10334: checking use login and su access checking if PAM not used" >&5 + echo "$as_me:10330: checking use login and su access checking if PAM not used" >&5 echo $ECHO_N "checking use login and su access checking if PAM not used... $ECHO_C" >&6 cat >>confdefs.h <<\EOF #define LOGIN_ACCESS 1 @@ -10341,15 +10337,15 @@ EOF #define SU_ACCESS 1 EOF - echo "$as_me:10344: result: yes" >&5 + echo "$as_me:10340: result: yes" >&5 echo "${ECHO_T}yes" >&6 fi -ALL_LINGUAS="cs el fr pl sv uk" +ALL_LINGUAS="cs el fr ja ko pl sv uk" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:10352: checking for $ac_word" >&5 +echo "$as_me:10348: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10364,7 +10360,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -echo "$as_me:10367: found $ac_dir/$ac_word" >&5 +echo "$as_me:10363: found $ac_dir/$ac_word" >&5 break done @@ -10372,10 +10368,10 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:10375: result: $RANLIB" >&5 + echo "$as_me:10371: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else - echo "$as_me:10378: result: no" >&5 + echo "$as_me:10374: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -10384,7 +10380,7 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo "$as_me:10387: checking for $ac_word" >&5 +echo "$as_me:10383: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10399,7 +10395,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_RANLIB="ranlib" -echo "$as_me:10402: found $ac_dir/$ac_word" >&5 +echo "$as_me:10398: found $ac_dir/$ac_word" >&5 break done @@ -10408,10 +10404,10 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:10411: result: $ac_ct_RANLIB" >&5 + echo "$as_me:10407: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else - echo "$as_me:10414: result: no" >&5 + echo "$as_me:10410: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -10420,7 +10416,7 @@ else RANLIB="$ac_cv_prog_RANLIB" fi -echo "$as_me:10423: checking for inline" >&5 +echo "$as_me:10419: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10428,7 +10424,7 @@ else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF -#line 10431 "configure" +#line 10427 "configure" #include "confdefs.h" #ifndef __cplusplus static $ac_kw int static_foo () {return 0; } @@ -10437,16 +10433,16 @@ $ac_kw int foo () {return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10440: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:10436: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10443: \$? = $ac_status" >&5 + echo "$as_me:10439: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10446: \"$ac_try\"") >&5 + { (eval echo "$as_me:10442: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10449: \$? = $ac_status" >&5 + echo "$as_me:10445: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else @@ -10457,7 +10453,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext done fi -echo "$as_me:10460: result: $ac_cv_c_inline" >&5 +echo "$as_me:10456: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; @@ -10472,13 +10468,13 @@ EOF ;; esac -echo "$as_me:10475: checking for size_t" >&5 +echo "$as_me:10471: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10481 "configure" +#line 10477 "configure" #include "confdefs.h" $ac_includes_default int @@ -10493,16 +10489,16 @@ if (sizeof (size_t)) } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:10496: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:10492: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:10499: \$? = $ac_status" >&5 + echo "$as_me:10495: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10502: \"$ac_try\"") >&5 + { (eval echo "$as_me:10498: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10505: \$? = $ac_status" >&5 + echo "$as_me:10501: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else @@ -10512,7 +10508,7 @@ ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:10515: result: $ac_cv_type_size_t" >&5 +echo "$as_me:10511: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : @@ -10526,13 +10522,13 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -echo "$as_me:10529: checking for working alloca.h" >&5 +echo "$as_me:10525: checking for working alloca.h" >&5 echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10535 "configure" +#line 10531 "configure" #include "confdefs.h" #include int @@ -10544,16 +10540,16 @@ char *p = (char *) alloca (2 * sizeof (int)); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10547: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10543: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10550: \$? = $ac_status" >&5 + echo "$as_me:10546: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10553: \"$ac_try\"") >&5 + { (eval echo "$as_me:10549: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10556: \$? = $ac_status" >&5 + echo "$as_me:10552: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_working_alloca_h=yes else @@ -10563,7 +10559,7 @@ ac_cv_working_alloca_h=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:10566: result: $ac_cv_working_alloca_h" >&5 +echo "$as_me:10562: result: $ac_cv_working_alloca_h" >&5 echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then @@ -10573,13 +10569,13 @@ EOF fi -echo "$as_me:10576: checking for alloca" >&5 +echo "$as_me:10572: checking for alloca" >&5 echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10582 "configure" +#line 10578 "configure" #include "confdefs.h" #ifdef __GNUC__ # define alloca __builtin_alloca @@ -10611,16 +10607,16 @@ char *p = (char *) alloca (1); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10614: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10610: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10617: \$? = $ac_status" >&5 + echo "$as_me:10613: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10620: \"$ac_try\"") >&5 + { (eval echo "$as_me:10616: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10623: \$? = $ac_status" >&5 + echo "$as_me:10619: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_alloca_works=yes else @@ -10630,7 +10626,7 @@ ac_cv_func_alloca_works=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:10633: result: $ac_cv_func_alloca_works" >&5 +echo "$as_me:10629: result: $ac_cv_func_alloca_works" >&5 echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then @@ -10651,13 +10647,13 @@ cat >>confdefs.h <<\EOF #define C_ALLOCA 1 EOF -echo "$as_me:10654: checking whether \`alloca.c' needs Cray hooks" >&5 +echo "$as_me:10650: checking whether \`alloca.c' needs Cray hooks" >&5 echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10660 "configure" +#line 10656 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -10675,18 +10671,18 @@ fi rm -f conftest* fi -echo "$as_me:10678: result: $ac_cv_os_cray" >&5 +echo "$as_me:10674: result: $ac_cv_os_cray" >&5 echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:10683: checking for $ac_func" >&5 +echo "$as_me:10679: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10689 "configure" +#line 10685 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ @@ -10717,16 +10713,16 @@ f = $ac_func; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10720: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10716: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10723: \$? = $ac_status" >&5 + echo "$as_me:10719: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10726: \"$ac_try\"") >&5 + { (eval echo "$as_me:10722: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10729: \$? = $ac_status" >&5 + echo "$as_me:10725: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else @@ -10736,7 +10732,7 @@ eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:10739: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "$as_me:10735: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then @@ -10750,7 +10746,7 @@ fi done fi -echo "$as_me:10753: checking stack direction for C alloca" >&5 +echo "$as_me:10749: checking stack direction for C alloca" >&5 echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10759,7 +10755,7 @@ else ac_cv_c_stack_direction=0 else cat >conftest.$ac_ext <<_ACEOF -#line 10762 "configure" +#line 10758 "configure" #include "confdefs.h" int find_stack_direction () @@ -10782,15 +10778,15 @@ main () } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:10785: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10781: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10788: \$? = $ac_status" >&5 + echo "$as_me:10784: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10790: \"$ac_try\"") >&5 + { (eval echo "$as_me:10786: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10793: \$? = $ac_status" >&5 + echo "$as_me:10789: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_stack_direction=1 else @@ -10802,7 +10798,7 @@ fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi -echo "$as_me:10805: result: $ac_cv_c_stack_direction" >&5 +echo "$as_me:10801: result: $ac_cv_c_stack_direction" >&5 echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <&5 +echo "$as_me:10813: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10823 "configure" +#line 10819 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:10827: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:10823: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:10833: \$? = $ac_status" >&5 + echo "$as_me:10829: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -10849,7 +10845,7 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:10852: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "$as_me:10848: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <&5 +echo "$as_me:10861: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 10871 "configure" +#line 10867 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ @@ -10899,16 +10895,16 @@ f = $ac_func; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10902: \"$ac_link\"") >&5 +if { (eval echo "$as_me:10898: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:10905: \$? = $ac_status" >&5 + echo "$as_me:10901: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10908: \"$ac_try\"") >&5 + { (eval echo "$as_me:10904: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:10911: \$? = $ac_status" >&5 + echo "$as_me:10907: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else @@ -10918,7 +10914,7 @@ eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:10921: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "$as_me:10917: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <&5 +echo "$as_me:10927: checking for working mmap" >&5 echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -10937,7 +10933,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat >conftest.$ac_ext <<_ACEOF -#line 10940 "configure" +#line 10936 "configure" #include "confdefs.h" $ac_includes_default /* Thanks to Mike Haertel and Jim Avera for this test. @@ -11064,15 +11060,15 @@ main () } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:11067: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11063: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11070: \$? = $ac_status" >&5 + echo "$as_me:11066: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:11072: \"$ac_try\"") >&5 + { (eval echo "$as_me:11068: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11075: \$? = $ac_status" >&5 + echo "$as_me:11071: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_mmap_fixed_mapped=yes else @@ -11084,7 +11080,7 @@ fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi -echo "$as_me:11087: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "$as_me:11083: result: $ac_cv_func_mmap_fixed_mapped" >&5 echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then @@ -11095,13 +11091,13 @@ EOF fi rm -f conftest.mmap - echo "$as_me:11098: checking whether we are using the GNU C Library 2.1 or newer" >&5 + echo "$as_me:11094: checking whether we are using the GNU C Library 2.1 or newer" >&5 echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 if test "${ac_cv_gnu_library_2_1+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11104 "configure" +#line 11100 "configure" #include "confdefs.h" #include @@ -11121,7 +11117,7 @@ fi rm -f conftest* fi -echo "$as_me:11124: result: $ac_cv_gnu_library_2_1" >&5 +echo "$as_me:11120: result: $ac_cv_gnu_library_2_1" >&5 echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 GLIBC21="$ac_cv_gnu_library_2_1" @@ -11130,23 +11126,23 @@ for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:11133: checking for $ac_header" >&5 +echo "$as_me:11129: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11139 "configure" +#line 11135 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF -if { (eval echo "$as_me:11143: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:11139: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:11149: \$? = $ac_status" >&5 + echo "$as_me:11145: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -11165,7 +11161,7 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:11168: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "$as_me:11164: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <&5 +echo "$as_me:11179: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11189 "configure" +#line 11185 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ @@ -11217,16 +11213,16 @@ f = $ac_func; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11220: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11216: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11223: \$? = $ac_status" >&5 + echo "$as_me:11219: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11226: \"$ac_try\"") >&5 + { (eval echo "$as_me:11222: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11229: \$? = $ac_status" >&5 + echo "$as_me:11225: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else @@ -11236,7 +11232,7 @@ eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:11239: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "$as_me:11235: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <&5 + echo "$as_me:11256: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11266,7 +11262,7 @@ else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF -#line 11269 "configure" +#line 11265 "configure" #include "confdefs.h" #include #include @@ -11281,16 +11277,16 @@ iconv_t cd = iconv_open("",""); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11284: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11280: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11287: \$? = $ac_status" >&5 + echo "$as_me:11283: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11290: \"$ac_try\"") >&5 + { (eval echo "$as_me:11286: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11293: \$? = $ac_status" >&5 + echo "$as_me:11289: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv=yes else @@ -11302,7 +11298,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext am_save_LIBS="$LIBS" LIBS="$LIBS -liconv" cat >conftest.$ac_ext <<_ACEOF -#line 11305 "configure" +#line 11301 "configure" #include "confdefs.h" #include #include @@ -11317,16 +11313,16 @@ iconv_t cd = iconv_open("",""); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11320: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11316: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11323: \$? = $ac_status" >&5 + echo "$as_me:11319: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11326: \"$ac_try\"") >&5 + { (eval echo "$as_me:11322: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11329: \$? = $ac_status" >&5 + echo "$as_me:11325: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes @@ -11339,7 +11335,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi fi -echo "$as_me:11342: result: $am_cv_func_iconv" >&5 +echo "$as_me:11338: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then @@ -11347,14 +11343,14 @@ cat >>confdefs.h <<\EOF #define HAVE_ICONV 1 EOF - echo "$as_me:11350: checking for iconv declaration" >&5 + echo "$as_me:11346: checking for iconv declaration" >&5 echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 if test "${am_cv_proto_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11357 "configure" +#line 11353 "configure" #include "confdefs.h" #include @@ -11378,16 +11374,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:11381: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:11377: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:11384: \$? = $ac_status" >&5 + echo "$as_me:11380: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11387: \"$ac_try\"") >&5 + { (eval echo "$as_me:11383: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11390: \$? = $ac_status" >&5 + echo "$as_me:11386: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_proto_iconv_arg1="" else @@ -11400,7 +11396,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - echo "$as_me:11403: result: ${ac_t:- + echo "$as_me:11399: result: ${ac_t:- }$am_cv_proto_iconv" >&5 echo "${ECHO_T}${ac_t:- }$am_cv_proto_iconv" >&6 @@ -11415,13 +11411,13 @@ EOF LIBICONV="-liconv" fi - echo "$as_me:11418: checking for nl_langinfo and CODESET" >&5 + echo "$as_me:11414: checking for nl_langinfo and CODESET" >&5 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${am_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11424 "configure" +#line 11420 "configure" #include "confdefs.h" #include int @@ -11433,16 +11429,16 @@ char* cs = nl_langinfo(CODESET); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11436: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11432: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11439: \$? = $ac_status" >&5 + echo "$as_me:11435: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11442: \"$ac_try\"") >&5 + { (eval echo "$as_me:11438: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11445: \$? = $ac_status" >&5 + echo "$as_me:11441: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_langinfo_codeset=yes else @@ -11453,7 +11449,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:11456: result: $am_cv_langinfo_codeset" >&5 +echo "$as_me:11452: result: $am_cv_langinfo_codeset" >&5 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 if test $am_cv_langinfo_codeset = yes; then @@ -11464,13 +11460,13 @@ EOF fi if test $ac_cv_header_locale_h = yes; then - echo "$as_me:11467: checking for LC_MESSAGES" >&5 + echo "$as_me:11463: checking for LC_MESSAGES" >&5 echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11473 "configure" +#line 11469 "configure" #include "confdefs.h" #include int @@ -11482,16 +11478,16 @@ return LC_MESSAGES } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11485: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11481: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11488: \$? = $ac_status" >&5 + echo "$as_me:11484: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11491: \"$ac_try\"") >&5 + { (eval echo "$as_me:11487: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11494: \$? = $ac_status" >&5 + echo "$as_me:11490: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_val_LC_MESSAGES=yes else @@ -11501,7 +11497,7 @@ am_cv_val_LC_MESSAGES=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:11504: result: $am_cv_val_LC_MESSAGES" >&5 +echo "$as_me:11500: result: $am_cv_val_LC_MESSAGES" >&5 echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 if test $am_cv_val_LC_MESSAGES = yes; then @@ -11511,7 +11507,7 @@ EOF fi fi - echo "$as_me:11514: checking whether NLS is requested" >&5 + echo "$as_me:11510: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then @@ -11520,7 +11516,7 @@ if test "${enable_nls+set}" = set; then else USE_NLS=yes fi; - echo "$as_me:11523: result: $USE_NLS" >&5 + echo "$as_me:11519: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 BUILD_INCLUDED_LIBINTL=no @@ -11533,7 +11529,7 @@ cat >>confdefs.h <<\EOF #define ENABLE_NLS 1 EOF - echo "$as_me:11536: checking whether included gettext is requested" >&5 + echo "$as_me:11532: checking whether included gettext is requested" >&5 echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 # Check whether --with-included-gettext or --without-included-gettext was given. @@ -11543,30 +11539,30 @@ if test "${with_included_gettext+set}" = set; then else nls_cv_force_use_gnu_gettext=no fi; - echo "$as_me:11546: result: $nls_cv_force_use_gnu_gettext" >&5 + echo "$as_me:11542: result: $nls_cv_force_use_gnu_gettext" >&5 echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then CATOBJEXT=NONE - echo "$as_me:11553: checking for libintl.h" >&5 + echo "$as_me:11549: checking for libintl.h" >&5 echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 if test "${ac_cv_header_libintl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11559 "configure" +#line 11555 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:11563: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:11559: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:11569: \$? = $ac_status" >&5 + echo "$as_me:11565: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -11585,16 +11581,16 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:11588: result: $ac_cv_header_libintl_h" >&5 +echo "$as_me:11584: result: $ac_cv_header_libintl_h" >&5 echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 if test $ac_cv_header_libintl_h = yes; then - echo "$as_me:11591: checking for GNU gettext in libc" >&5 + echo "$as_me:11587: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11597 "configure" +#line 11593 "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; @@ -11608,16 +11604,16 @@ return (int) gettext ("") + _nl_msg_cat_cntr } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11611: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11607: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11614: \$? = $ac_status" >&5 + echo "$as_me:11610: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11617: \"$ac_try\"") >&5 + { (eval echo "$as_me:11613: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11620: \$? = $ac_status" >&5 + echo "$as_me:11616: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libc=yes else @@ -11627,11 +11623,11 @@ gt_cv_func_gnugettext1_libc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:11630: result: $gt_cv_func_gnugettext1_libc" >&5 +echo "$as_me:11626: result: $gt_cv_func_gnugettext1_libc" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - echo "$as_me:11634: checking for GNU gettext in libintl" >&5 + echo "$as_me:11630: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11639,7 +11635,7 @@ else gt_save_LIBS="$LIBS" LIBS="$LIBS -lintl $LIBICONV" cat >conftest.$ac_ext <<_ACEOF -#line 11642 "configure" +#line 11638 "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; @@ -11653,16 +11649,16 @@ return (int) gettext ("") + _nl_msg_cat_cntr } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11656: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11652: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11659: \$? = $ac_status" >&5 + echo "$as_me:11655: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11662: \"$ac_try\"") >&5 + { (eval echo "$as_me:11658: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11665: \$? = $ac_status" >&5 + echo "$as_me:11661: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libintl=yes else @@ -11673,7 +11669,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -echo "$as_me:11676: result: $gt_cv_func_gnugettext1_libintl" >&5 +echo "$as_me:11672: result: $gt_cv_func_gnugettext1_libintl" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 fi @@ -11695,13 +11691,13 @@ EOF for ac_func in dcgettext do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:11698: checking for $ac_func" >&5 +echo "$as_me:11694: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 11704 "configure" +#line 11700 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ @@ -11732,16 +11728,16 @@ f = $ac_func; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11735: \"$ac_link\"") >&5 +if { (eval echo "$as_me:11731: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:11738: \$? = $ac_status" >&5 + echo "$as_me:11734: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11741: \"$ac_try\"") >&5 + { (eval echo "$as_me:11737: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:11744: \$? = $ac_status" >&5 + echo "$as_me:11740: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else @@ -11751,7 +11747,7 @@ eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:11754: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "$as_me:11750: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <&5 +echo "$as_me:11764: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11779,29 +11775,29 @@ else for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" -if test -n "$MSGFMT"; then - echo "$as_me:11795: result: $MSGFMT" >&5 +if test "$MSGFMT" != ":"; then + echo "$as_me:11791: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else - echo "$as_me:11798: result: no" >&5 + echo "$as_me:11794: result: no" >&5 echo "${ECHO_T}no" >&6 fi - if test "$MSGFMT" != "no"; then - # Extract the first word of "gmsgfmt", so it can be a program name with args. + + # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -echo "$as_me:11804: checking for $ac_word" >&5 +echo "$as_me:11800: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11818,7 +11814,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_GMSGFMT="$ac_dir/$ac_word" - echo "$as_me:11821: found $ac_dir/$ac_word" >&5 + echo "$as_me:11817: found $ac_dir/$ac_word" >&5 break fi done @@ -11830,18 +11826,16 @@ fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - echo "$as_me:11833: result: $GMSGFMT" >&5 + echo "$as_me:11829: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else - echo "$as_me:11836: result: no" >&5 + echo "$as_me:11832: result: no" >&5 echo "${ECHO_T}no" >&6 fi - fi - - # Extract the first word of "xgettext", so it can be a program name with args. + # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -echo "$as_me:11844: checking for $ac_word" >&5 +echo "$as_me:11838: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11855,7 +11849,7 @@ else for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi @@ -11867,11 +11861,11 @@ else esac fi XGETTEXT="$ac_cv_path_XGETTEXT" -if test -n "$XGETTEXT"; then - echo "$as_me:11871: result: $XGETTEXT" >&5 +if test "$XGETTEXT" != ":"; then + echo "$as_me:11865: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else - echo "$as_me:11874: result: no" >&5 + echo "$as_me:11868: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -11889,7 +11883,7 @@ fi INTLOBJS="\$(GETTOBJS)" # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 -echo "$as_me:11892: checking for $ac_word" >&5 +echo "$as_me:11886: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11903,29 +11897,29 @@ else for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" -if test -n "$MSGFMT"; then - echo "$as_me:11919: result: $MSGFMT" >&5 +if test "$MSGFMT" != ":"; then + echo "$as_me:11913: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else - echo "$as_me:11922: result: no" >&5 + echo "$as_me:11916: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -echo "$as_me:11928: checking for $ac_word" >&5 +echo "$as_me:11922: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11942,7 +11936,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_GMSGFMT="$ac_dir/$ac_word" - echo "$as_me:11945: found $ac_dir/$ac_word" >&5 + echo "$as_me:11939: found $ac_dir/$ac_word" >&5 break fi done @@ -11954,16 +11948,16 @@ fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - echo "$as_me:11957: result: $GMSGFMT" >&5 + echo "$as_me:11951: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else - echo "$as_me:11960: result: no" >&5 + echo "$as_me:11954: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -echo "$as_me:11966: checking for $ac_word" >&5 +echo "$as_me:11960: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -11977,7 +11971,7 @@ else for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi @@ -11989,11 +11983,11 @@ else esac fi XGETTEXT="$ac_cv_path_XGETTEXT" -if test -n "$XGETTEXT"; then - echo "$as_me:11993: result: $XGETTEXT" >&5 +if test "$XGETTEXT" != ":"; then + echo "$as_me:11987: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else - echo "$as_me:11996: result: no" >&5 + echo "$as_me:11990: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -12004,11 +11998,21 @@ fi LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then : ; else - echo "$as_me:12011: result: found xgettext program is not GNU xgettext; ignore it" >&5 + echo "$as_me:12005: result: found msgfmt program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found msgfmt program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + echo "$as_me:12015: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi @@ -12026,7 +12030,7 @@ echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:12029: checking for $ac_word" >&5 +echo "$as_me:12033: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INTLBISON+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -12041,7 +12045,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_INTLBISON="$ac_prog" -echo "$as_me:12044: found $ac_dir/$ac_word" >&5 +echo "$as_me:12048: found $ac_dir/$ac_word" >&5 break done @@ -12049,10 +12053,10 @@ fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then - echo "$as_me:12052: result: $INTLBISON" >&5 + echo "$as_me:12056: result: $INTLBISON" >&5 echo "${ECHO_T}$INTLBISON" >&6 else - echo "$as_me:12055: result: no" >&5 + echo "$as_me:12059: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -12062,16 +12066,16 @@ done if test -z "$INTLBISON"; then ac_verc_fail=yes else - echo "$as_me:12065: checking version of bison" >&5 + echo "$as_me:12069: checking version of bison" >&5 echo $ECHO_N "checking version of bison... $ECHO_C" >&6 - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac - echo "$as_me:12074: result: $ac_prog_version" >&5 + echo "$as_me:12078: result: $ac_prog_version" >&5 echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then @@ -12096,7 +12100,7 @@ echo "${ECHO_T}$ac_prog_version" >&6 if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else - echo "$as_me:12099: checking for catalogs to be installed" >&5 + echo "$as_me:12103: checking for catalogs to be installed" >&5 echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do @@ -12116,7 +12120,7 @@ echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 fi done LINGUAS=$NEW_LINGUAS - echo "$as_me:12119: result: $LINGUAS" >&5 + echo "$as_me:12123: result: $LINGUAS" >&5 echo "${ECHO_T}$LINGUAS" >&6 fi @@ -12135,7 +12139,7 @@ echo "${ECHO_T}$LINGUAS" >&6 INTL_LIBTOOL_SUFFIX_PREFIX= -ac_config_files="$ac_config_files Makefile intl/Makefile po/Makefile.in doc/Makefile man/Makefile man/ja/Makefile man/pl/Makefile man/pt_BR/Makefile libmisc/Makefile lib/Makefile src/Makefile contrib/Makefile debian/Makefile etc/Makefile etc/pam.d/Makefile shadow-utils.spec" +ac_config_files="$ac_config_files Makefile intl/Makefile po/Makefile.in doc/Makefile man/Makefile man/hu/Makefile man/ja/Makefile man/pl/Makefile man/pt_BR/Makefile libmisc/Makefile lib/Makefile src/Makefile contrib/Makefile debian/Makefile etc/Makefile etc/pam.d/Makefile shadow-utils.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -12215,7 +12219,7 @@ DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:12218: creating $CONFIG_STATUS" >&5 +{ echo "$as_me:12222: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL @@ -12391,7 +12395,7 @@ cat >>$CONFIG_STATUS <<\EOF echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header - { { echo "$as_me:12394: error: ambiguous option: $1 + { { echo "$as_me:12398: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} @@ -12410,7 +12414,7 @@ Try \`$0 --help' for more information." >&2;} ac_need_defaults=false;; # This is an error. - -*) { { echo "$as_me:12413: error: unrecognized option: $1 + -*) { { echo "$as_me:12417: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} @@ -12460,6 +12464,7 @@ do "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "man/hu/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/hu/Makefile" ;; "man/ja/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/ja/Makefile" ;; "man/pl/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/pl/Makefile" ;; "man/pt_BR/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/pt_BR/Makefile" ;; @@ -12474,7 +12479,7 @@ do "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:12477: error: invalid argument: $ac_config_target" >&5 + *) { { echo "$as_me:12482: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac @@ -12747,7 +12752,7 @@ done; } esac if test x"$ac_file" != x-; then - { echo "$as_me:12750: creating $ac_file" >&5 + { echo "$as_me:12755: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi @@ -12765,7 +12770,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:12768: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:12773: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -12778,7 +12783,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:12781: error: cannot find input file: $f" >&5 + { { echo "$as_me:12786: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -12839,7 +12844,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue * ) ac_file_in=$ac_file.in ;; esac - test x"$ac_file" != x- && { echo "$as_me:12842: creating $ac_file" >&5 + test x"$ac_file" != x- && { echo "$as_me:12847: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the @@ -12850,7 +12855,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:12853: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:12858: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -12863,7 +12868,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:12866: error: cannot find input file: $f" >&5 + { { echo "$as_me:12871: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -12980,7 +12985,7 @@ cat >>$CONFIG_STATUS <<\EOF rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:12983: $ac_file is unchanged" >&5 + { echo "$as_me:12988: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ @@ -13087,16 +13092,19 @@ done ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - case "$srcdir" in + # 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="$srcdir" ;; - *) top_srcdir="$ac_dots$srcdir" ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac - if test -f "$srcdir/$ac_dir/POTFILES.in"; then + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" - echo creating "$ac_dir/POTFILES" - sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" - echo creating "$ac_dir/Makefile" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" fi ;; diff --git a/configure.in b/configure.in index 0ea29826..eab9f269 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(lib/dialchk.c) -AM_INIT_AUTOMAKE(shadow, 4.0.0) +AM_INIT_AUTOMAKE(shadow, 4.0.1) AM_CONFIG_HEADER(config.h) dnl Some hacks... @@ -27,8 +27,8 @@ AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(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 usersec.h \ +AC_CHECK_HEADERS(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/resource.h gshadow.h shadow.h lastlog.h \ rpc/key_prot.h) @@ -193,7 +193,6 @@ AC_MSG_RESULT($passwd_dir) dnl XXX - quick hack, should disappear before anyone notices :). AC_DEFINE(SHADOWPWD) AC_DEFINE(USG) -AC_DEFINE(AGING) AC_DEFINE(USE_SYSLOG) AC_DEFINE(RLOGIN) AC_DEFINE(RUSEROK, 0) @@ -283,7 +282,7 @@ else AC_MSG_RESULT(yes) fi -ALL_LINGUAS="cs el fr pl sv uk" +ALL_LINGUAS="cs el fr ja ko pl sv uk" AM_GNU_GETTEXT AC_OUTPUT([ @@ -292,6 +291,7 @@ AC_OUTPUT([ po/Makefile.in doc/Makefile man/Makefile + man/hu/Makefile man/ja/Makefile man/pl/Makefile man/pt_BR/Makefile diff --git a/debian/Makefile.am b/debian/Makefile.am index 4450bc6e..bc78ef14 100644 --- a/debian/Makefile.am +++ b/debian/Makefile.am @@ -6,4 +6,4 @@ EXTRA_DIST = changelog checksums control control.gnu control.linux \ login.prerm logoutd.init passwd.conffiles passwd.copyright \ passwd.cron passwd.init passwd.postinst passwd.postrm porttime rules \ secure-su.README secure-su.conffiles secure-su.copyright secure-su.postrm \ - secure-su.preinst securetty shadowconfig.sh tar.c + secure-su.preinst securetty shadowconfig.sh diff --git a/debian/Makefile.in b/debian/Makefile.in index 90b78fad..95b6fbb5 100644 --- a/debian/Makefile.in +++ b/debian/Makefile.in @@ -115,7 +115,7 @@ EXTRA_DIST = changelog checksums control control.gnu control.linux \ login.prerm logoutd.init passwd.conffiles passwd.copyright \ passwd.cron passwd.init passwd.postinst passwd.postrm porttime rules \ secure-su.README secure-su.conffiles secure-su.copyright secure-su.postrm \ - secure-su.preinst securetty shadowconfig.sh tar.c + secure-su.preinst securetty shadowconfig.sh subdir = debian mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs diff --git a/debian/tar.c b/debian/tar.c deleted file mode 100644 index 1f45eaa0..00000000 --- a/debian/tar.c +++ /dev/null @@ -1,409 +0,0 @@ -/* - * $Id: tar.c,v 1.2 1999/03/07 19:14:24 marekm Exp $ - * - * This is a wrapper for tar to ensure that all files within the - * newly created tar archive have the owner and group set to - * root:root. This makes it possible to build Debian packages - * without root privileges (normally needed to chown files). - * - * Assumptions: - * - the directory containing this program is listed in $PATH - * before the directory containing the real tar program (/bin) - * - the options passed to tar cause it to output the archive - * (not compressed) on standard output - * - * Written by Marek Michalkiewicz , - * public domain, no warranty, etc. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef REAL_TAR -#define REAL_TAR "/bin/tar" -#endif - -#define RECORD_SIZE 512 - -union record { - char data[RECORD_SIZE]; - struct header { - char name[100]; /* NUL-terminated if NUL fits */ - char mode[8]; /* 0+ spaces, 1-6 octal digits, space, NUL */ - char uid[8]; /* format same as mode */ - char gid[8]; /* format same as mode */ - char size[12]; /* 0+ spaces, 1-11 octal digits, space */ - /* if '1' <= typeflag <= '6', ignore size */ - char mtime[12]; /* format same as size */ - char chksum[8]; /* 0+ spaces, 1-6 octal digits, NUL, space */ - char typeflag; - char linkname[100]; /* NUL-terminated if NUL fits */ -/* XXX - for GNU tar, magic is "ustar " (no NUL) and version is " \0" */ - char magic[6]; /* must be TMAGIC (NUL term.) */ - char version[2]; /* must be TVERSION */ - char uname[32]; /* NUL-terminated */ - char gname[32]; /* NUL-terminated */ - char devmajor[8]; - char devminor[8]; -#ifdef GNU_TAR_FORMAT - char atime[12]; - char ctime[12]; - char offset[12]; - char longnames[4]; - char pad; - struct sparse { - char offset[12]; - char numbytes[12]; - } sp[4]; - char isextended; - char realsize[12]; -#else -/* if prefix[0] != NUL then filename = prefix/name else filename = name */ - char prefix[155]; /* NUL-terminated if NUL fits */ -#endif - } h; -#ifdef GNU_TAR_FORMAT - struct exthdr { - struct sparse sp[21]; - char isextended; - } xh; -#endif -}; - -static union record tarbuf; -static int infd = -1, outfd = -1; - -int main(int, char **); -static ssize_t xread(int, char *, size_t); -static ssize_t xwrite(int, const char *, size_t); -static int block_is_eof(void); -static void block_read(void); -static void block_write(void); -static void verify_magic(void); -static void verify_checksum(void); -static void update_checksum(void); -static void set_owner(const char *); -static void set_group(const char *); -static void process_archive(void); - - -int -main(int argc, char **argv) -{ - int pipefd[2]; - pid_t pid; - const char *real_tar; - int status; - - real_tar = getenv("REAL_TAR"); - if (!real_tar) - real_tar = REAL_TAR; - if (pipe(pipefd)) { - perror("pipe"); - exit(1); - } - pid = fork(); - if (pid == 0) { /* child */ - /* redirect stdout to the pipe */ - if (dup2(pipefd[1], STDOUT_FILENO) != 1) { - perror("dup2"); - _exit(126); - } - close(pipefd[0]); - close(pipefd[1]); - /* run the real tar program */ - execv(real_tar, argv); - if (errno == ENOENT) { - perror("execve"); - _exit(127); - } else { - perror("execve"); - _exit(126); - } - } else if (pid < 0) { /* error */ - perror("fork"); - exit(1); - } - /* parent */ - close(pipefd[1]); - /* read from pipefd[0], modify tar headers, write to stdout ... */ - infd = pipefd[0]; - outfd = STDOUT_FILENO; - process_archive(); - /* wait for the tar subprocess to finish, and return its exit status */ - status = 1; - if (waitpid(pid, &status, 0) == -1) { - perror("waitpid"); - exit(1); - } - if (WIFSIGNALED(status)) { - kill(getpid(), WTERMSIG(status)); - exit(1); - } - exit(WEXITSTATUS(status)); -} - -/* EINTR-safe versions of read() and write() - they don't really help much - as GNU tar itself (version 1.11.8 at least) is not EINTR-safe, but it - doesn't hurt... Also, these functions never return errors - instead, - they print an error message to stderr, and exit(1). End of file is - indicated by returning the number of bytes actually read. */ - -static ssize_t -xread(int fd, char *buf, size_t count) -{ - ssize_t n; - size_t left; - - left = count; - do { - n = read(fd, buf, left); - if ((n < 0) && (errno == EINTR)) - continue; - if (n <= 0) - break; - left -= n; - buf += n; - } while (left > 0); - if (count > left) - return count - left; - if (n < 0) { - perror("read"); - exit(1); - } - return 0; -} - - -static ssize_t -xwrite(int fd, const char *buf, size_t count) -{ - ssize_t n; - size_t left; - - left = count; - do { - n = write(fd, buf, left); - if (n < 0) { - if (errno == EINTR) - continue; - /* any other write errors are fatal */ - perror("write"); - exit(1); - } - left -= n; - buf += n; - } while (left > 0); - return count; -} - - -static int -block_is_eof(void) -{ - unsigned int i; - - for (i = 0; i < sizeof(tarbuf.data); i++) { - if (tarbuf.data[i]) - return 0; - } - return 1; -} - - -static void -block_read(void) -{ - ssize_t nread; - - nread = xread(infd, tarbuf.data, RECORD_SIZE); - if (nread != RECORD_SIZE) { - fprintf(stderr, "unexpected end of file\n"); - exit(1); - } -} - - -static void -block_write(void) -{ - xwrite(outfd, tarbuf.data, RECORD_SIZE); -} - - -static void -verify_magic(void) -{ - /* only check that magic starts with "ustar" - works for - standard UNIX tar as well as GNU tar formats. */ - if (strncmp(tarbuf.h.magic, "ustar", 5) != 0) { - fprintf(stderr, "bad tar header magic\n"); - exit(1); - } -} - - -static void -verify_checksum(void) -{ - unsigned int i; - int csum; - - if (sscanf(tarbuf.h.chksum, "%o", &csum) != 1) { - fprintf(stderr, "bad tar checksum format\n"); - exit(1); - } - memset(tarbuf.h.chksum, ' ', sizeof(tarbuf.h.chksum)); - for (i = 0; i < sizeof(tarbuf.data); i++) - csum -= (unsigned char) tarbuf.data[i]; - if (csum) { - fprintf(stderr, "bad tar checksum value\n"); - exit(1); - } -} - - -static void -update_checksum(void) -{ - unsigned int i; - int csum; - - memset(tarbuf.h.chksum, ' ', sizeof(tarbuf.h.chksum)); - csum = 0; - for (i = 0; i < sizeof(tarbuf.data); i++) - csum += (unsigned char) tarbuf.data[i]; - snprintf(tarbuf.h.chksum, sizeof(tarbuf.h.chksum), "%6o", csum); -} - - -static void -set_owner(const char *username) -{ - const struct passwd *pw; - - pw = getpwnam(username); - memset(tarbuf.h.uname, 0, sizeof(tarbuf.h.uname)); - snprintf(tarbuf.h.uname, sizeof(tarbuf.h.uname), "%s", username); - snprintf(tarbuf.h.uid, sizeof(tarbuf.h.uid), "%6o ", (int) (pw ? pw->pw_uid : 0)); -} - - -static void -set_group(const char *groupname) -{ - const struct group *gr; - - gr = getgrnam(groupname); - memset(tarbuf.h.gname, 0, sizeof(tarbuf.h.gname)); - snprintf(tarbuf.h.gname, sizeof(tarbuf.h.gname), "%s", groupname); - snprintf(tarbuf.h.gid, sizeof(tarbuf.h.gid), "%6o ", (int) (gr ? gr->gr_gid : 0)); -} - - -static void -process_archive(void) -{ - ssize_t nread; - long size; - - size = 0; - for (;;) { - /* read the header or data block */ - block_read(); - /* copy data blocks, if any */ - if (size > 0) { - block_write(); - size -= RECORD_SIZE; - continue; - } - if (block_is_eof()) { - /* eof marker */ - block_write(); - break; - } - - verify_magic(); - verify_checksum(); - - /* process the header */ - switch (tarbuf.h.typeflag) { - case LNKTYPE: - case SYMTYPE: - case CHRTYPE: - case BLKTYPE: - case DIRTYPE: - case FIFOTYPE: - /* no data blocks - ignore size */ - break; - case REGTYPE: - case AREGTYPE: - case CONTTYPE: - default: - if (sscanf(tarbuf.h.size, "%lo", &size) != 1) { - fprintf(stderr, "bad size format\n"); - exit(1); - } - break; - } - - /* XXX - for now, just chown all files to root:root. */ - set_owner("root"); - set_group("root"); - - update_checksum(); - /* write the modified header */ - block_write(); - } - /* eof marker detected, copy anything beyond it */ - for (;;) { - nread = xread(infd, tarbuf.data, RECORD_SIZE); - if (nread == 0) - break; /* end of file */ - xwrite(outfd, tarbuf.data, (size_t) nread); - } -} - -#if 0 -/* permission specification file format, fixperms-1.00 compatible: - type filename owner group mode [linkname | major minor] [# comment] - - type: - - = regular file - l = link - d = directory - c = char dev - b = block dev - p = fifo - s = socket - - filename - absolute pathname, wildcards ok [not for fixperms] - linkname - only for type l - major, minor - only for type c or b - owner group - numeric, or names [not for fixperms] - - XXX not yet implemented -*/ - -struct permspec { - char *name; - uid_t uid; - gid_t gid; - mode_t mode; - char *uname; - char *gname; - char *linkname; - dev_t dev; - struct permspec *next; -}; -#endif diff --git a/etc/Makefile.am b/etc/Makefile.am index ebc91c99..2191f65f 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -6,7 +6,7 @@ EXTRA_DIST = \ login.access \ login.defs \ login.defs.hurd \ - login.defs.linux + login.defs.linux \ useradd SUBDIRS = pam.d diff --git a/etc/Makefile.in b/etc/Makefile.in index 3b41b458..76e10098 100644 --- a/etc/Makefile.in +++ b/etc/Makefile.in @@ -115,7 +115,8 @@ EXTRA_DIST = \ login.access \ login.defs \ login.defs.hurd \ - login.defs.linux + login.defs.linux \ + useradd SUBDIRS = pam.d @@ -361,7 +362,6 @@ uninstall-info: uninstall-info-recursive tags tags-recursive uninstall uninstall-am uninstall-info-am \ uninstall-info-recursive uninstall-recursive - useradd # 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/etc/useradd b/etc/useradd new file mode 100644 index 00000000..0a28b4e4 --- /dev/null +++ b/etc/useradd @@ -0,0 +1,7 @@ +# useradd defaults file +GROUP=1000 +HOME=/home/users +INACTIVE=-1 +EXPIRE= +SHELL=/bin/bash +SKEL=/etc/skel diff --git a/intl/ChangeLog b/intl/ChangeLog index df904de3..84e2b37e 100644 --- a/intl/ChangeLog +++ b/intl/ChangeLog @@ -1,4 +1,4 @@ -2001-05-23 GNU +2001-09-13 GNU - * Version 0.10.38 released. + * Version 0.10.40 released. diff --git a/intl/Makefile.in b/intl/Makefile.in index 889ba239..19ed4a7e 100644 --- a/intl/Makefile.in +++ b/intl/Makefile.in @@ -1,19 +1,20 @@ # Makefile for directory with message catalog handling in GNU NLS Utilities. # Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, 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. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ @@ -74,7 +75,7 @@ DISTFILES.common = Makefile.in \ config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) DISTFILES.generated = plural.c DISTFILES.normal = VERSION -DISTFILES.gettext = libintl.glibc +DISTFILES.gettext = COPYING.LIB-2 COPYING.LIB-2.1 libintl.glibc DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c # Libtool's library version information for libintl. @@ -184,7 +185,7 @@ install-data: all $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ - dists="$(DISTFILES.common)"; \ + dists="COPYING.LIB-2 COPYING.LIB-2.1 $(DISTFILES.common)"; \ for file in $$dists; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ @@ -243,7 +244,7 @@ uninstall: : ; \ fi if test "$(PACKAGE)" = "gettext"; then \ - for file in VERSION ChangeLog $(DISTFILES.common) $(DISTFILES.generated); do \ + for file in VERSION ChangeLog COPYING.LIB-2 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ diff --git a/intl/VERSION b/intl/VERSION index 268da64a..cb8a01a7 100644 --- a/intl/VERSION +++ b/intl/VERSION @@ -1 +1 @@ -GNU gettext library from gettext-0.10.38 +GNU gettext library from gettext-0.10.40 diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c index 7e5a74a4..c6a9bd16 100644 --- a/intl/bindtextdom.c +++ b/intl/bindtextdom.c @@ -1,19 +1,20 @@ /* Implementation of the bindtextdomain(3) function Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/config.charset b/intl/config.charset index d6f36955..f4f2611c 100644 --- a/intl/config.charset +++ b/intl/config.charset @@ -80,10 +80,10 @@ # EUC-KR glibc aix hpux irix osf solaris freebsd yes # EUC-TW glibc aix hpux irix osf solaris # BIG5 glibc aix hpux osf solaris freebsd yes -# BIG5HKSCS glibc +# BIG5-HKSCS glibc # GBK aix osf win32 dos # GB18030 glibc -# SJIS hpux osf solaris freebsd +# SHIFT_JIS hpux osf solaris freebsd yes # JOHAB glibc win32 # TIS-620 glibc aix hpux osf solaris # VISCII glibc yes @@ -174,7 +174,7 @@ case "$os" in echo "eucTW EUC-TW" echo "hp15CN GB2312" #echo "ccdc ?" # what is this? - echo "SJIS SJIS" + echo "SJIS SHIFT_JIS" echo "utf8 UTF-8" ;; irix*) @@ -209,7 +209,7 @@ case "$os" in echo "GBK GBK" echo "KSC5601 CP949" echo "sdeckanji EUC-JP" - echo "SJIS SJIS" + echo "SJIS SHIFT_JIS" echo "TACTIS TIS-620" echo "UTF-8 UTF-8" ;; @@ -230,7 +230,7 @@ case "$os" in echo "cns11643 EUC-TW" echo "5601 EUC-KR" echo "eucJP EUC-JP" - echo "PCK SJIS" + echo "PCK SHIFT_JIS" echo "TIS620.2533 TIS-620" #echo "sun_eu_greek ?" # what is this? echo "UTF-8 UTF-8" @@ -266,8 +266,8 @@ case "$os" in echo "zh_TW.Big5 BIG5" echo "zh_CN.EUC GB2312" echo "ja_JP.EUC EUC-JP" - echo "ja_JP.SJIS SJIS" - echo "ja_JP.Shift_JIS SJIS" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" echo "ko_KR.EUC EUC-KR" ;; beos*) diff --git a/intl/dcgettext.c b/intl/dcgettext.c index 469e78de..b7c96523 100644 --- a/intl/dcgettext.c +++ b/intl/dcgettext.c @@ -1,19 +1,20 @@ /* Implementation of the dcgettext(3) function. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/dcigettext.c b/intl/dcigettext.c index 8456550d..6acde195 100644 --- a/intl/dcigettext.c +++ b/intl/dcigettext.c @@ -1,19 +1,20 @@ /* Implementation of the internal dcigettext function. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* Tell glibc's to provide a prototype for mempcpy(). This must come before because may include @@ -517,6 +518,7 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) /* We cannot get the current working directory. Don't signal an error but simply return the default string. */ FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); __set_errno (saved_errno); return (plural == 0 ? (char *) msgid1 diff --git a/intl/dcngettext.c b/intl/dcngettext.c index e5da2577..c16af212 100644 --- a/intl/dcngettext.c +++ b/intl/dcngettext.c @@ -1,19 +1,20 @@ /* Implementation of the dcngettext(3) function. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/dgettext.c b/intl/dgettext.c index c5130411..3651207a 100644 --- a/intl/dgettext.c +++ b/intl/dgettext.c @@ -1,19 +1,20 @@ /* Implementation of the dgettext(3) function. Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/dngettext.c b/intl/dngettext.c index 79aaa9ae..f214e95b 100644 --- a/intl/dngettext.c +++ b/intl/dngettext.c @@ -1,19 +1,20 @@ /* Implementation of the dngettext(3) function. Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/explodename.c b/intl/explodename.c index c4ddcc41..2985064c 100644 --- a/intl/explodename.c +++ b/intl/explodename.c @@ -1,19 +1,20 @@ /* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/finddomain.c b/intl/finddomain.c index 4882554f..2f103d55 100644 --- a/intl/finddomain.c +++ b/intl/finddomain.c @@ -2,19 +2,20 @@ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/gettext.c b/intl/gettext.c index a6402055..22a6c245 100644 --- a/intl/gettext.c +++ b/intl/gettext.c @@ -1,19 +1,20 @@ /* Implementation of gettext(3) function. Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/gettext.h b/intl/gettext.h index eb588907..6f5d7605 100644 --- a/intl/gettext.h +++ b/intl/gettext.h @@ -1,19 +1,20 @@ /* Description of GNU message catalog format: general file layout. Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifndef _GETTEXT_H #define _GETTEXT_H 1 diff --git a/intl/gettextP.h b/intl/gettextP.h index ee8ca48e..43de1cd4 100644 --- a/intl/gettextP.h +++ b/intl/gettextP.h @@ -2,19 +2,20 @@ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifndef _GETTEXTP_H #define _GETTEXTP_H diff --git a/intl/hash-string.h b/intl/hash-string.h index 37d4ce1a..ccb7acca 100644 --- a/intl/hash-string.h +++ b/intl/hash-string.h @@ -1,19 +1,20 @@ /* Description of GNU message catalog format: string hashing function. Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* @@ end of prolog @@ */ diff --git a/intl/intl-compat.c b/intl/intl-compat.c index b8edaa17..0a06ce94 100644 --- a/intl/intl-compat.c +++ b/intl/intl-compat.c @@ -2,19 +2,20 @@ Library. Copyright (C) 1995, 2000, 2001 Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + 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 + Library 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/l10nflist.c b/intl/l10nflist.c index 557253eb..533e94be 100644 --- a/intl/l10nflist.c +++ b/intl/l10nflist.c @@ -1,19 +1,20 @@ /* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* Tell glibc's to provide a prototype for stpcpy(). This must come before because may include diff --git a/intl/libgettext.h b/intl/libgettext.h index 553382ca..c5be54a8 100644 --- a/intl/libgettext.h +++ b/intl/libgettext.h @@ -1,19 +1,20 @@ /* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 diff --git a/intl/libgnuintl.h b/intl/libgnuintl.h index 577001a4..f891deb9 100644 --- a/intl/libgnuintl.h +++ b/intl/libgnuintl.h @@ -1,19 +1,20 @@ /* Message catalogs for internationalization. Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifndef _LIBINTL_H #define _LIBINTL_H 1 diff --git a/intl/loadinfo.h b/intl/loadinfo.h index 5171a8f6..b8612607 100644 --- a/intl/loadinfo.h +++ b/intl/loadinfo.h @@ -2,19 +2,20 @@ This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifndef _LOADINFO_H #define _LOADINFO_H 1 diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c index d589243b..f99ebee3 100644 --- a/intl/loadmsgcat.c +++ b/intl/loadmsgcat.c @@ -1,19 +1,20 @@ /* Load needed message catalogs. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* Tell glibc's to provide a prototype for mempcpy(). This must come before because may include diff --git a/intl/localcharset.c b/intl/localcharset.c index 22e09e41..61f8f3e8 100644 --- a/intl/localcharset.c +++ b/intl/localcharset.c @@ -75,13 +75,13 @@ /* Pointer to the contents of the charset.alias file, if it has already been read, else NULL. Its format is: ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ -static char * volatile charset_aliases; +static const char * volatile charset_aliases; /* Return a pointer to the contents of the charset.alias file. */ static const char * get_charset_aliases () { - char *cp; + const char *cp; cp = charset_aliases; if (cp == NULL) diff --git a/intl/locale.alias b/intl/locale.alias index 48940f74..bd7b9b31 100644 --- a/intl/locale.alias +++ b/intl/locale.alias @@ -1,19 +1,20 @@ # Locale name alias data base. # Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, 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. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. # The format of this file is the same as for the corresponding file of # the X Window System, which normally can be found in @@ -46,7 +47,7 @@ galego gl_ES.ISO-8859-1 galician gl_ES.ISO-8859-1 german de_DE.ISO-8859-1 greek el_GR.ISO-8859-7 -hebrew iw_IL.ISO-8859-8 +hebrew he_IL.ISO-8859-8 hrvatski hr_HR.ISO-8859-2 hungarian hu_HU.ISO-8859-2 icelandic is_IS.ISO-8859-1 diff --git a/intl/localealias.c b/intl/localealias.c index 76f19a9a..91e7acc9 100644 --- a/intl/localealias.c +++ b/intl/localealias.c @@ -1,19 +1,20 @@ /* Handle aliases for locale names. Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* Tell glibc's to provide a prototype for mempcpy(). This must come before because may include diff --git a/intl/ngettext.c b/intl/ngettext.c index 8b1fa02f..fb3ec5a9 100644 --- a/intl/ngettext.c +++ b/intl/ngettext.c @@ -1,19 +1,20 @@ /* Implementation of ngettext(3) function. Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/intl/plural.c b/intl/plural.c index 81913356..640d43cc 100644 --- a/intl/plural.c +++ b/intl/plural.c @@ -23,19 +23,20 @@ Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* The bison generated parser uses alloca. AIX 3 forces us to put this declaration at the beginning of the file. The declaration in bison's @@ -66,13 +67,13 @@ #define YYLEX_PARAM &((struct parse_args *) arg)->cp #define YYPARSE_PARAM arg -#line 52 "plural.y" +#line 53 "plural.y" typedef union { unsigned long int num; enum operator op; struct expression *exp; } YYSTYPE; -#line 58 "plural.y" +#line 59 "plural.y" /* Prototypes for local functions. */ static struct expression *new_exp PARAMS ((int nargs, enum operator op, @@ -234,8 +235,8 @@ static const short yyrhs[] = { 17, #if YYDEBUG != 0 static const short yyrline[] = { 0, - 177, 185, 189, 193, 197, 201, 205, 209, 213, 217, - 221, 226 + 178, 186, 190, 194, 198, 202, 206, 210, 214, 218, + 222, 227 }; #endif @@ -845,7 +846,7 @@ yyreduce: switch (yyn) { case 1: -#line 178 "plural.y" +#line 179 "plural.y" { if (yyvsp[0].exp == NULL) YYABORT; @@ -853,68 +854,68 @@ case 1: ; break;} case 2: -#line 186 "plural.y" +#line 187 "plural.y" { yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 3: -#line 190 "plural.y" +#line 191 "plural.y" { yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 4: -#line 194 "plural.y" +#line 195 "plural.y" { yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 5: -#line 198 "plural.y" +#line 199 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 6: -#line 202 "plural.y" +#line 203 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 7: -#line 206 "plural.y" +#line 207 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 8: -#line 210 "plural.y" +#line 211 "plural.y" { yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); ; break;} case 9: -#line 214 "plural.y" +#line 215 "plural.y" { yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); ; break;} case 10: -#line 218 "plural.y" +#line 219 "plural.y" { yyval.exp = new_exp_0 (var); ; break;} case 11: -#line 222 "plural.y" +#line 223 "plural.y" { if ((yyval.exp = new_exp_0 (num)) != NULL) yyval.exp->val.num = yyvsp[0].num; ; break;} case 12: -#line 227 "plural.y" +#line 228 "plural.y" { yyval.exp = yyvsp[-1].exp; ; @@ -1141,7 +1142,7 @@ yyerrhandle: } return 1; } -#line 232 "plural.y" +#line 233 "plural.y" void diff --git a/intl/plural.y b/intl/plural.y index 42ffa0eb..be049a6d 100644 --- a/intl/plural.y +++ b/intl/plural.y @@ -3,19 +3,20 @@ Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ /* The bison generated parser uses alloca. AIX 3 forces us to put this declaration at the beginning of the file. The declaration in bison's diff --git a/intl/textdomain.c b/intl/textdomain.c index 05c2fd76..2e420ad7 100644 --- a/intl/textdomain.c +++ b/intl/textdomain.c @@ -1,19 +1,20 @@ /* Implementation of the textdomain(3) function. Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, 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. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ #ifdef HAVE_CONFIG_H # include diff --git a/lib/.indent.pro b/lib/.indent.pro index 73c40225..149066b8 100644 --- a/lib/.indent.pro +++ b/lib/.indent.pro @@ -1,3 +1,4 @@ -kr -i8 -bad +-pcs diff --git a/lib/commonio.c b/lib/commonio.c index 961ff481..66618a7d 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -2,7 +2,7 @@ #include #include "rcsid.h" -RCSID("$Id: commonio.c,v 1.20 2001/09/07 15:35:57 kloczek Exp $") +RCSID("$Id: commonio.c,v 1.22 2001/11/17 13:15:52 malekith Exp $") #include "defines.h" #include @@ -292,35 +292,6 @@ commonio_lock(struct commonio_db *db) #endif } -#ifndef NSCD_PID_FILE -#define NSCD_PID_FILE "/var/run/nscd.pid" -#endif - -/* - reload_nscd() is called after updating all of the password files, - to tell the "nscd" caching daemon to clear its cache. - Very loosely based on a shadow-utils patch from Red Hat. - */ - -static void -reload_nscd(void) -{ -#ifdef ENABLE_NSCD_SIGHUP /* not every version of nscd can handle it */ - FILE *pidfile; - int pid; - - pidfile = fopen(NSCD_PID_FILE, "r"); - if (pidfile) { - pid = 0; - fscanf(pidfile, "%d", &pid); - if (pid > 0) - kill(pid, SIGHUP); - fclose(pidfile); - } -#endif -} - - static void dec_lock_count(void) { @@ -330,7 +301,8 @@ dec_lock_count(void) /* Tell nscd when lock count goes to zero, if any of the files were changed. */ if (nscd_need_reload) { - reload_nscd(); + nscd_flush_cache("passwd"); + nscd_flush_cache("group"); nscd_need_reload = 0; } #ifdef HAVE_LCKPWDF @@ -578,6 +550,8 @@ commonio_sort_wrt(struct commonio_db *shadow, struct commonio_db *passwd) const char *name; for (pw_ptr = passwd->head; pw_ptr; pw_ptr = pw_ptr->next) { + if (pw_ptr->eptr == NULL) + continue; name = passwd->ops->getname(pw_ptr->eptr); for (spw_ptr = shadow->head; spw_ptr; spw_ptr = spw_ptr->next) if (strcmp(name, shadow->ops->getname(spw_ptr->eptr)) == 0) diff --git a/lib/defines.h b/lib/defines.h index af91c1f9..5114e0b2 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -1,4 +1,4 @@ -/* $Id: defines.h,v 1.18 2001/06/28 20:47:05 kloczek Exp $ */ +/* $Id: defines.h,v 1.20 2001/11/19 09:23:52 kloczek Exp $ */ /* some useful defines */ #ifndef _DEFINES_H_ @@ -43,6 +43,10 @@ char *strchr(), *strrchr(), *strtok(); # endif #endif /* not STDC_HEADERS */ +#if HAVE_ERRNO_H +# include +#endif + /* Solaris 2.4 defines __SVR4, but not SVR4 -j. */ #ifdef __SVR4 diff --git a/lib/getdef.c b/lib/getdef.c index 12ce99e8..10125562 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -30,7 +30,7 @@ #include #include "rcsid.h" -RCSID("$Id: getdef.c,v 1.14 2000/08/26 18:27:17 marekm Exp $") +RCSID("$Id: getdef.c,v 1.15 2002/01/06 14:08:00 kloczek Exp $") #include "prototypes.h" #include "defines.h" @@ -201,6 +201,29 @@ getdef_num(const char *item, int dflt) } +/* + * getdef_unum - get unsigned numerical value from table of definitions + * + * Returns numeric value of specified item, else the "dflt" value if + * the item is not defined. Octal (leading "0") and hex (leading "0x") + * values are handled. + */ + +unsigned int +getdef_unum(const char *item, unsigned int dflt) +{ + struct itemdef *d; + + if (!def_loaded) + def_load(); + + if ((d = def_find(item)) == NULL || d->value == NULL) + return dflt; + + return (unsigned int) strtoul(d->value, (char **)NULL, 0); +} + + /* * getdef_long - get long integer value from table of definitions * diff --git a/lib/getdef.h b/lib/getdef.h index 304e1096..04c7d110 100644 --- a/lib/getdef.h +++ b/lib/getdef.h @@ -5,6 +5,7 @@ extern int getdef_bool(const char *); extern long getdef_long(const char *, long); extern int getdef_num(const char *, int); +extern unsigned int getdef_unum(const char *, unsigned int); extern char *getdef_str(const char *); extern int putdef_str(const char *, const char *); diff --git a/lib/getpass.c b/lib/getpass.c index cc4b4585..d311f92a 100644 --- a/lib/getpass.c +++ b/lib/getpass.c @@ -31,7 +31,7 @@ #include #include "rcsid.h" -RCSID("$Id: getpass.c,v 1.10 1999/08/27 19:02:51 marekm Exp $") +RCSID("$Id: getpass.c,v 1.11 2001/11/16 14:53:48 kloczek Exp $") #include "defines.h" @@ -267,7 +267,9 @@ out: #else (void) signal (SIGINT, old_signal); #endif +#if 0 out2: +#endif if (tty_opened) (void) fclose(ifp); diff --git a/libmisc/Makefile.am b/libmisc/Makefile.am index bd2b3ce9..8fdf0cab 100644 --- a/libmisc/Makefile.am +++ b/libmisc/Makefile.am @@ -36,6 +36,7 @@ libmisc_la_SOURCES = \ mail.c \ motd.c \ myname.c \ + nscd.c \ obscure.c \ pam_pass.c \ pwd2spwd.c \ @@ -57,3 +58,5 @@ libmisc_la_SOURCES = \ utmp.c \ valid.c \ xmalloc.c + +libmisc_la_LIBADD = $(LIBCRACK) diff --git a/libmisc/Makefile.in b/libmisc/Makefile.in index fb14b21c..892d5eb8 100644 --- a/libmisc/Makefile.in +++ b/libmisc/Makefile.in @@ -144,6 +144,7 @@ libmisc_la_SOURCES = \ mail.c \ motd.c \ myname.c \ + nscd.c \ obscure.c \ pam_pass.c \ pwd2spwd.c \ @@ -166,6 +167,8 @@ libmisc_la_SOURCES = \ valid.c \ xmalloc.c + +libmisc_la_LIBADD = $(LIBCRACK) subdir = libmisc mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h @@ -173,16 +176,16 @@ CONFIG_CLEAN_FILES = LTLIBRARIES = $(lib_LTLIBRARIES) libmisc_la_LDFLAGS = -libmisc_la_LIBADD = +libmisc_la_DEPENDENCIES = am_libmisc_la_OBJECTS = addgrps.lo age.lo basename.lo chkname.lo \ chkshell.lo chowndir.lo chowntty.lo console.lo copydir.lo \ entry.lo env.lo failure.lo fields.lo getdate.lo hushed.lo \ isexpired.lo limits.lo list.lo log.lo login_access.lo \ login_desrpc.lo login_krb.lo loginprompt.lo mail.lo motd.lo \ - myname.lo obscure.lo pam_pass.lo pwd2spwd.lo pwdcheck.lo \ - pwd_init.lo rlogin.lo salt.lo setugid.lo setup.lo setupenv.lo \ - shell.lo strtoday.lo suauth.lo sub.lo sulog.lo ttytype.lo tz.lo \ - ulimit.lo utmp.lo valid.lo xmalloc.lo + myname.lo nscd.lo obscure.lo pam_pass.lo pwd2spwd.lo \ + pwdcheck.lo pwd_init.lo rlogin.lo salt.lo setugid.lo setup.lo \ + setupenv.lo shell.lo strtoday.lo suauth.lo sub.lo sulog.lo \ + ttytype.lo tz.lo ulimit.lo utmp.lo valid.lo xmalloc.lo libmisc_la_OBJECTS = $(am_libmisc_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) CPPFLAGS = @CPPFLAGS@ @@ -202,17 +205,17 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp @AMDEP_TRUE@ $(DEPDIR)/login_desrpc.Plo $(DEPDIR)/login_krb.Plo \ @AMDEP_TRUE@ $(DEPDIR)/loginprompt.Plo $(DEPDIR)/mail.Plo \ @AMDEP_TRUE@ $(DEPDIR)/motd.Plo $(DEPDIR)/myname.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/obscure.Plo $(DEPDIR)/pam_pass.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/pwd2spwd.Plo $(DEPDIR)/pwd_init.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/pwdcheck.Plo $(DEPDIR)/rlogin.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/salt.Plo $(DEPDIR)/setugid.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/setup.Plo $(DEPDIR)/setupenv.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/shell.Plo $(DEPDIR)/strtoday.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/suauth.Plo $(DEPDIR)/sub.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/sulog.Plo $(DEPDIR)/ttytype.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/tz.Plo $(DEPDIR)/ulimit.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/utmp.Plo $(DEPDIR)/valid.Plo \ -@AMDEP_TRUE@ $(DEPDIR)/xmalloc.Plo +@AMDEP_TRUE@ $(DEPDIR)/nscd.Plo $(DEPDIR)/obscure.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/pam_pass.Plo $(DEPDIR)/pwd2spwd.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/pwd_init.Plo $(DEPDIR)/pwdcheck.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/rlogin.Plo $(DEPDIR)/salt.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/setugid.Plo $(DEPDIR)/setup.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/setupenv.Plo $(DEPDIR)/shell.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/strtoday.Plo $(DEPDIR)/suauth.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/sub.Plo $(DEPDIR)/sulog.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/ttytype.Plo $(DEPDIR)/tz.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/ulimit.Plo $(DEPDIR)/utmp.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/valid.Plo $(DEPDIR)/xmalloc.Plo COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ @@ -301,6 +304,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mail.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/motd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/myname.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/nscd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obscure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pam_pass.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pwd2spwd.Plo@am__quote@ diff --git a/libmisc/age.c b/libmisc/age.c index 7d3b355f..01846066 100644 --- a/libmisc/age.c +++ b/libmisc/age.c @@ -37,26 +37,11 @@ #include "defines.h" #include #include -#ifdef HAVE_USERSEC_H -#include -#include -#include -#endif -#ifndef AGING -#if defined(SHADOWPWD) || defined(HAVE_USERSEC_H) -#define AGING 1 -#endif -#else -#if !defined(SHADOWPWD) && !defined(HAVE_USERSEC_H) && !defined(ATT_AGE) -#undef AGING -#endif -#endif - -#if defined(SHADOWPWD) || defined(AGING) /*{*/ +#if defined(SHADOWPWD) #include "rcsid.h" -RCSID("$Id: age.c,v 1.6 1998/12/28 20:34:42 marekm Exp $") +RCSID("$Id: age.c,v 1.7 2001/12/22 06:59:30 kloczek Exp $") #ifndef PASSWD_PROGRAM #define PASSWD_PROGRAM "/bin/passwd" @@ -69,34 +54,22 @@ RCSID("$Id: age.c,v 1.6 1998/12/28 20:34:42 marekm Exp $") * if it has expired. */ -#ifdef SHADOWPWD int expire(const struct passwd *pw, const struct spwd *sp) { -#else -int -expire(const struct passwd *pw) -{ -#endif int status; int child; int pid; -#ifdef SHADOWPWD if (! sp) sp = pwd_to_spwd (pw); -#endif /* * See if the user's password has expired, and if so * force them to change their password. */ -#ifdef SHADOWPWD switch (status = isexpired (pw, sp)) -#else - switch (status = isexpired (pw)) -#endif { case 0: return 0; @@ -118,11 +91,7 @@ expire(const struct passwd *pw) * change that password. */ -#ifdef SHADOWPWD if (status > 1 || sp->sp_max < sp->sp_min) -#else - if (status > 1 || c64i (pw->pw_age[0]) < c64i (pw->pw_age[1])) -#endif { puts(_(" Contact the system administrator.\n")); exit(1); @@ -136,13 +105,9 @@ expire(const struct passwd *pw) * might become stale after "passwd" is executed. */ -#ifdef SHADOWPWD endspent (); -#endif endpwent (); -#ifdef SHADOWGRP endsgent (); -#endif endgrent (); /* @@ -188,19 +153,12 @@ expire(const struct passwd *pw) * to expire and warns the user of the pending password expiration. */ -#ifdef SHADOWPWD void agecheck(const struct passwd *pw, const struct spwd *sp) { -#else -void -agecheck(const struct passwd *pw) -{ -#endif long now = time ((long *) 0) / SCALE; long remain; -#ifdef SHADOWPWD if (! sp) sp = pwd_to_spwd (pw); @@ -211,17 +169,7 @@ agecheck(const struct passwd *pw) if (sp->sp_lstchg == -1 || sp->sp_max == -1 || sp->sp_warn == -1) return; -#else - if (pw->pw_age[0] == '\0') - return; -#endif - -#ifdef SHADOWPWD if ((remain = (sp->sp_lstchg + sp->sp_max) - now) <= sp->sp_warn) -#else - if ((remain = (a64l (pw->pw_age + 2) + c64i (pw->pw_age[0])) * 7 - - now) <= getdef_num ("PASS_WARN_AGE", 7)) -#endif { remain /= DAY/SCALE; if (remain > 1) @@ -232,4 +180,4 @@ agecheck(const struct passwd *pw) printf(_("Your password will expire today.\n")); } } -#endif /*}*/ +#endif /* SHADOWPWD */ diff --git a/libmisc/chkname.c b/libmisc/chkname.c index 8e71d69a..95d6583e 100644 --- a/libmisc/chkname.c +++ b/libmisc/chkname.c @@ -6,7 +6,7 @@ #include #include "rcsid.h" -RCSID("$Id: chkname.c,v 1.4 1998/04/16 19:57:43 marekm Exp $") +RCSID("$Id: chkname.c,v 1.5 2001/11/17 01:24:57 kloczek Exp $") #include #include "defines.h" @@ -22,19 +22,16 @@ static int good_name(const char *name) { /* - * User/group names must start with a letter, and may not - * contain colons, commas, newlines (used in passwd/group - * files...) or any non-printable characters. + * User/group names must match [a-z_][a-z0-9_-]* */ - if (!*name || !isalpha(*name)) + if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_')) return 0; - while (*name) { - if (*name == ':' || *name == ',' || - *name == '\n' || !isprint(*name)) + while (*++name) { + if (!((*name >= 'a' && *name <= 'z') || + (*name >= '0' && *name <= '9') || + *name == '_' || *name == '-')) return 0; - - name++; } return 1; diff --git a/libmisc/isexpired.c b/libmisc/isexpired.c index d70b2a79..4894dc8a 100644 --- a/libmisc/isexpired.c +++ b/libmisc/isexpired.c @@ -39,27 +39,9 @@ #include "defines.h" #include #include - -#ifdef HAVE_USERSEC_H -#include -#include -#include -#endif - -#ifndef AGING -#if defined(SHADOWPWD) || defined(HAVE_USERSEC_H) -#define AGING 1 -#endif -#else -#if !defined(SHADOWPWD) && !defined(HAVE_USERSEC_H) && !defined(ATT_AGE) -#undef AGING -#endif -#endif - -#if defined(SHADOWPWD) || defined(AGING) /*{*/ - #include "rcsid.h" -RCSID("$Id: isexpired.c,v 1.7 1997/12/07 23:27:05 marekm Exp $") + +RCSID("$Id: isexpired.c,v 1.9 2002/01/06 14:02:39 kloczek Exp $") /* * isexpired - determine if account is expired yet @@ -74,23 +56,9 @@ RCSID("$Id: isexpired.c,v 1.7 1997/12/07 23:27:05 marekm Exp $") int isexpired(const struct passwd *pw, const struct spwd *sp) { -#else -int -isexpired(const struct passwd *pw) -{ -#endif long now; -#ifdef HAVE_USERSEC_H - int minage = 0; - int maxage = 10000; - int curage = 0; - struct userpw *pu; -#endif - now = time ((time_t *) 0) / SCALE; -#ifdef SHADOWPWD - if (!sp) sp = pwd_to_spwd(pw); @@ -117,25 +85,6 @@ isexpired(const struct passwd *pw) if (sp->sp_lstchg > 0 && sp->sp_max >= 0 && sp->sp_inact >= 0 && now >= sp->sp_lstchg + sp->sp_max + sp->sp_inact) return 2; -#endif -#ifdef HAVE_USERSEC_H /*{*/ - /* - * The aging information lives someplace else. Get it from the - * login.cfg file - */ - - if (getconfattr (SC_SYS_PASSWD, SC_MINAGE, &minage, SEC_INT)) - minage = -1; - - if (getconfattr (SC_SYS_PASSWD, SC_MAXAGE, &maxage, SEC_INT)) - maxage = -1; - - pu = getuserpw (pw->pw_name); - curage = (time (0) - pu->upw_lastupdate) / (7*86400L); - - if (maxage != -1 && curage > maxage) - return 1; -#else /*} !HAVE_USERSEC_H */ /* * The last and max fields must be present for an account @@ -143,11 +92,9 @@ isexpired(const struct passwd *pw) * is considered to be infinite. */ -#ifdef SHADOWPWD if (sp->sp_lstchg == -1 || sp->sp_max == -1 || sp->sp_max >= (10000L*DAY/SCALE)) return 0; -#endif #ifdef ATT_AGE if (pw->pw_age[0] == '\0' || pw->pw_age[0] == '/') return 0; @@ -159,15 +106,12 @@ isexpired(const struct passwd *pw) * the password has expired. */ -#ifdef SHADOWPWD if (now >= sp->sp_lstchg + sp->sp_max) return 1; -#endif #ifdef ATT_AGE if (a64l (pw->pw_age + 2) + c64i (pw->pw_age[1]) < now / 7) return 1; #endif -#endif /*} HAVE_USERSEC_H */ return 0; } -#endif /*}*/ +#endif /* SHADOWPWD */ diff --git a/libmisc/nscd.c b/libmisc/nscd.c new file mode 100644 index 00000000..c6862726 --- /dev/null +++ b/libmisc/nscd.c @@ -0,0 +1,95 @@ +/* Copyright (c) 1999 SuSE GmbH Nuerenberg, Germany + Author: Thorsten Kukuk */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* Version number of the daemon interface */ +#define NSCD_VERSION 2 +/* Path for the Unix domain socket. */ +#define _PATH_NSCDSOCKET "/var/run/.nscd_socket" + +/* Available services. */ +typedef enum +{ + GETPWBYNAME, + GETPWBYUID, + GETGRBYNAME, + GETGRBYGID, + GETHOSTBYNAME, + GETHOSTBYNAMEv6, + GETHOSTBYADDR, + GETHOSTBYADDRv6, + LASTDBREQ = GETHOSTBYADDRv6, + SHUTDOWN, /* Shut the server down. */ + GETSTAT, /* Get the server statistic. */ + INVALIDATE, /* Invalidate one special cache. */ + LASTREQ +} request_type; + +/* Header common to all requests */ +typedef struct +{ + int version; /* Version number of the daemon interface. */ + request_type type; /* Service requested. */ +#if defined(__alpha__) + int64_t key_len; /* Key length is 64bit on Alpha. */ +#else + int32_t key_len; /* Key length, 32bit on most plattforms. */ +#endif +} request_header; + +/* Create a socket connected to a name. */ +static int +nscd_open_socket (void) +{ + struct sockaddr_un addr; + int sock; + + sock = socket (PF_UNIX, SOCK_STREAM, 0); + if (sock < 0) + return -1; + + addr.sun_family = AF_UNIX; + assert (sizeof (addr.sun_path) >= sizeof (_PATH_NSCDSOCKET)); + strcpy (addr.sun_path, _PATH_NSCDSOCKET); + if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0) + { + close (sock); + return -1; + } + + return sock; +} + +int +nscd_flush_cache (char *service) +{ + int sock = nscd_open_socket (); + request_header req; + ssize_t nbytes; + + if (sock == -1) + return -1; + + req.version = NSCD_VERSION; + req.type = INVALIDATE; + req.key_len = strlen (service) + 1; + nbytes = write (sock, &req, sizeof (request_header)); + if (nbytes != sizeof (request_header)) + { + close (sock); + return -1; + } + + nbytes = write (sock, (void *)service, req.key_len); + + close (sock); + return (nbytes != req.key_len ? (-1) : 0); +} diff --git a/libmisc/setupenv.c b/libmisc/setupenv.c index 1e428ba7..35ffb21e 100644 --- a/libmisc/setupenv.c +++ b/libmisc/setupenv.c @@ -34,7 +34,7 @@ #include #include "rcsid.h" -RCSID("$Id: setupenv.c,v 1.10 2000/08/26 18:27:17 marekm Exp $") +RCSID("$Id: setupenv.c,v 1.11 2001/11/06 15:50:25 kloczek Exp $") #include #include @@ -59,6 +59,7 @@ addenv_path(const char *varname, const char *dirname, const char *filename) } +#ifndef USE_PAM static void read_env_file(const char *filename) { @@ -176,6 +177,8 @@ finished: } fclose(fp); } +#endif /* USE_PAM */ + /* * change to the user's home directory @@ -186,7 +189,10 @@ finished: void setup_env(struct passwd *info) { - char *cp, *envf; +#ifndef USE_PAM + char *envf; +#endif + char *cp; /* * Change the current working directory to be the home directory diff --git a/libmisc/utmp.c b/libmisc/utmp.c index bc020a2a..ebcc8ba6 100644 --- a/libmisc/utmp.c +++ b/libmisc/utmp.c @@ -41,7 +41,7 @@ #include #include "rcsid.h" -RCSID("$Id: utmp.c,v 1.8 1999/06/07 16:40:44 marekm Exp $") +RCSID("$Id: utmp.c,v 1.9 2001/11/06 16:18:08 kloczek Exp $") #if HAVE_UTMPX_H extern struct utmpx utxent; @@ -52,9 +52,6 @@ extern struct utmp *getutent(); extern struct utmp *getutline(); extern void setutent(); extern void endutent(); -extern time_t time(); -extern char *ttyname(); -extern long lseek(); #define NO_UTENT \ "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" diff --git a/man/Makefile.am b/man/Makefile.am index 1e3df7fb..1695db8f 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -30,12 +30,14 @@ man_MANS = \ pwck.8 \ pwconv.8 \ pwunconv.8 \ + sg.1 \ shadow.5 \ su.1 \ suauth.5 \ useradd.8 \ userdel.8 \ usermod.8 \ + vigr.8 \ vipw.8 EXTRA_DIST = $(man_MANS) \ @@ -49,4 +51,4 @@ EXTRA_DIST = $(man_MANS) \ sulogin.8 # subdirectories for translated manual pages -SUBDIRS = ja pl pt_BR +SUBDIRS = hu ja pl pt_BR diff --git a/man/Makefile.in b/man/Makefile.in index 42303ae0..ce151473 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -138,12 +138,14 @@ man_MANS = \ pwck.8 \ pwconv.8 \ pwunconv.8 \ + sg.1 \ shadow.5 \ su.1 \ suauth.5 \ useradd.8 \ userdel.8 \ usermod.8 \ + vigr.8 \ vipw.8 @@ -159,7 +161,7 @@ EXTRA_DIST = $(man_MANS) \ # subdirectories for translated manual pages -SUBDIRS = ja pl pt_BR +SUBDIRS = hu ja pl pt_BR subdir = man mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h diff --git a/man/chpasswd.8 b/man/chpasswd.8 index a7778718..7dcd2b44 100644 --- a/man/chpasswd.8 +++ b/man/chpasswd.8 @@ -1,4 +1,4 @@ -.\"$Id: chpasswd.8,v 1.8 2001/01/25 10:43:50 kloczek Exp $ +.\"$Id: chpasswd.8,v 1.9 2001/12/22 05:40:01 kloczek Exp $ .\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" @@ -29,7 +29,7 @@ .SH NAME \fBchpasswd\fR - update password file in batch .SH SYNOPSIS -\fBchpasswd [-e]\fR +\fBchpasswd\fR [\fB-e\fR] .SH DESCRIPTION \fBchpasswd\fR reads a file of user name and password pairs from standard input and uses this information diff --git a/man/dpasswd.8 b/man/dpasswd.8 index cf0d863b..b44a516b 100644 --- a/man/dpasswd.8 +++ b/man/dpasswd.8 @@ -1,4 +1,4 @@ -.\"$Id: dpasswd.8,v 1.8 2001/01/27 02:55:52 kloczek Exp $ +.\"$Id: dpasswd.8,v 1.9 2001/12/22 05:40:01 kloczek Exp $ .\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" @@ -29,7 +29,7 @@ .SH NAME \fBdpasswd\fR - change dialup password .SH SYNOPSIS -\fBdpasswd\fR [(\fI-af\fR|\fB-d\fR)] \fIshell\fR +\fBdpasswd\fR [(\fB-af\fR|\fB-d\fR)] \fIshell\fR .SH DESCRIPTION \fBdpasswd\fR adds, deletes, and updates dialup passwords for user login shells. diff --git a/man/hu/Makefile.am b/man/hu/Makefile.am new file mode 100644 index 00000000..98f8c2c8 --- /dev/null +++ b/man/hu/Makefile.am @@ -0,0 +1,12 @@ + +mandir = @mandir@/hu + +man_MANS = \ + chsh.1 \ + gpasswd.1 \ + newgrp.1 \ + passwd.1 \ + sg.1 + +EXTRA_DIST = $(man_MANS) \ + groups.1 diff --git a/man/hu/Makefile.in b/man/hu/Makefile.in new file mode 100644 index 00000000..d29ecf9d --- /dev/null +++ b/man/hu/Makefile.in @@ -0,0 +1,295 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# 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@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIBCRACK = @LIBCRACK@ +LIBCRYPT = @LIBCRYPT@ +LIBICONV = @LIBICONV@ +LIBMD = @LIBMD@ +LIBPAM = @LIBPAM@ +LIBSKEY = @LIBSKEY@ +LIBTCFS = @LIBTCFS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +mandir = @mandir@/hu + +man_MANS = \ + chsh.1 \ + gpasswd.1 \ + newgrp.1 \ + passwd.1 \ + sg.1 + + +EXTRA_DIST = $(man_MANS) \ + groups.1 + +subdir = man/hu +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu man/hu/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || 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 $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + +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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man1 install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool uninstall uninstall-am uninstall-info-am \ + uninstall-man uninstall-man1 + +# 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/man/hu/chsh.1 b/man/hu/chsh.1 new file mode 100644 index 00000000..b35da016 --- /dev/null +++ b/man/hu/chsh.1 @@ -0,0 +1,65 @@ +.\" 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. +.\" +.\" $Id: chsh.1,v 1.1 2001/11/13 23:28:50 ankry Exp $ +.\" +.TH CHSH 1 +.SH NÉV +chsh \- bejelentkezési parancsértelmező (héjj) állítása +.SH ÁTTEKINTÉS +.TP 5 +\fBchsh\fR +[\fB-s \fIhéjjprogram\fR] [\fIfelhasználó\fR] +.SH LEÍRÁS +A \fBchsh\fR parancs a felhasználó bejelentkezési parancsértelmezőjét változtatja meg. +Normál felhasználó csak a saját parancsértelmezőjét állíthatja, a +rendszergazda bárkiét. +.PP +A héjjprogrammal (shell) szemben támasztott követelmény, hogy szerepeljen +a \fI/etc/shells\fR fájlban, kivéve ha a rendszergazdáé mert +neki minden beállítás elfogadott. +Korlátozott parancsértelmezőt nem lehet másikra átállítani. +Ezért nem tanácsos a \fB/bin/rsh\fR-nak a \fI/etc/shells\fR-ben +való felsorolása, mert ha a felhasználó átvált erre a héjj-ra +nem válthat másikra. +.PP +A \fB-s\fR opció nélkül a \fBchsh\fR interaktív módon +működik. Be kell írni az új értéket, vagy üresen hagyni a sort, hogy +az éppen aktuális beállítás maradjon, ami \fB[ ]\fR jelek között látható. +.SH FÁJLOK +/etc/passwd \- felhaszálói nyilvántartás +.br +/etc/shells \- engedélyezett parancsértelmezők listája +.SH LÁSD MÉG +.BR chfn (1), +.BR passwd (5) +.SH MAGYAR FORDÍTÁS +Szekely Krisztian diff --git a/man/hu/gpasswd.1 b/man/hu/gpasswd.1 new file mode 100644 index 00000000..7972d86e --- /dev/null +++ b/man/hu/gpasswd.1 @@ -0,0 +1,81 @@ +.\" Copyright 1996, Rafal Maszkowski, rzm@pdi.net +.\" All rights reserved. You can redistribute this man page 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. +.\" +.\" $Id: gpasswd.1,v 1.1 2001/11/13 23:28:50 ankry Exp $ +.\" +.TH GPASSWD 1 +.SH NÉV +gpasswd \- az /etc/group fájlt adminisztrálja +.br +.SH ÁTTEKINTÉS +.B gpasswd \fIcsoport\fR +.br +.B gpasswd +.B -a +\fIfelhasználó\fR \fIcsoport\fR +.br +.B gpasswd +.B -d +\fIfelhasználó\fR \fIcsoport\fR +.br +.B gpasswd +.B -R +\fIcsoport\fR +.br +.B gpasswd +.B -r +\fIcsoport\fR +.br +.B gpasswd +.RB [ -A +\fIfelhasználó\fR,...] +.RB [ -M +\fIfelhasználó\fR,...] +\fIcsoport\fR +.br +.SH LEÍRÁS +A +.B gpasswd +program segítségével adminisztrálhatjuk az /etc/group fájlt +illetve az /etc/gshadow fájlt amennyiben a SHADOWGPR definiálva +volt a fordítás alatt. Minden csoportban lehetnek adminisztrátorok, +tagok és egy jelszó. A rendszeradminisztrátor a \fB-A\fR opció +segítségével definiálhat csoportadminisztrátor(oka)t és a \fB-M\fR +opcióval tagokat. A rendszeradminisztátor minden joggal rendelkezik, +amellyel a csoportadminisztrátor és a csoport tagjai. +.PP +A csoportadminisztrátor a \fB-a\fR kapcsolóval hozhat létre +felhasználókat, és a \fB-d\fR opcióval törölheti őket. Az +adminisztrátorok a \fB-r\fR opcióval törölhetik a csoport +jelszavát. Ha nincs jelszó beállítva, akkor csak a csoport +tagjai használhatják a +.BR newgrp (1) +parancsot a csatlakozáshoz. A \fB-R\fR opció +meggátolja a csoport elérését a +.BR newgrp (1) +parancson keresztül. +.PP +Ha +.B gpasswd +parancsot a csoportadminisztrátor adja ki a csoport nevével, +akkor csak a jelszót kell beírnia. Ha van jelszó, akkor a tagok +be tudnak lépni a +.BR newgrp (1) +paranccsal jelszó nélkül is, csak a csoporton kívüli felhasználóknak +kell megadniuk a jelszót. + +.SH FÁJLOK +/etc/group \- információ a csoportról +.br +/etc/gshadow \- információ a shadow csoportról +.SH LÁSD MÉG +.BR newgrp (1), +.BR groupadd (8), +.BR groupdel (8), +.BR groupmod (8), +.BR grpck (8) +.SH MAGYAR FORDÍTÁS +Tímár András diff --git a/man/hu/groups.1 b/man/hu/groups.1 new file mode 100644 index 00000000..6e24a5fb --- /dev/null +++ b/man/hu/groups.1 @@ -0,0 +1,55 @@ +.\" 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. +.\" +.\" $Id: groups.1,v 1.1 2001/11/13 23:28:50 ankry Exp $ +.\" +.TH GROUPS 1 +.SH NÉV +groups \- kiírja a jelenlegi csoportazonosító neveket +.SH ÁTTEKINTÉS +.B groups +.RI [ felhasználó ] +.SH LEÍRÁS +A +.B groups +parancs kiírja a jelenlegi csoportazonosító neveket vagy számértékeket. +Ha nincs az értéknek megfelelő bejegyzés a \fI/etc/group\fR fájlban, akkor a csoport azonosító számát írja ki. +Az opcionális \fIfelhasználó\fR paraméter esetén azokat a csoportokat írja ki, amelyekbe a megadott \fIfelhasználó\fR tartozik. +.SH MEGJEGYZÉS +Azok a rendszerek, amelyek nem támogatják a konkurrens csoportbeállításokat, a kiírt információkat a \fI/etc/group\fR fájlból gyűjtik. +A felhasználónak muszáj a \fBnewgrp\fR vagy a \fBsg\fR parancsot használniuk, hogy megváltoztassák a jelenlegi valódi és effektív csoportazonosítójukat. +.SH FÁJLOK +/etc/group \- információ a csoportokról +.SH LÁSD MÉG +.BR newgrp (1), +.BR getuid (2), +.BR getgid (2), +.BR getgroups (2) +.SH AUTHOR +Julianne Frances Haugh (jfh@tab.com) +.SH MAGYAR FORDÍTÁS +ifj. Dyekiss Emil diff --git a/man/hu/newgrp.1 b/man/hu/newgrp.1 new file mode 100644 index 00000000..5e40185e --- /dev/null +++ b/man/hu/newgrp.1 @@ -0,0 +1,89 @@ +.\" Copyright 1991, Julianne Frances Haugh +.\" 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: newgrp.1,v 1.1 2001/11/13 23:28:50 ankry Exp $ +.\" +.TH NEWGRP 1 +.SH NÉV +newgrp \- Csoportazonosító módosítása +.br +sg \- Parancs végrehajtása más csoportazonoító alatt +.SH ÁTTEKINTÉS +.BR newgrp " [" - ] +[\fIgroup\fR] +.br +.BR sg " [" - ] +[\fIgroup\fR [\fB-c\fR \fIcommand\fR]] +.SH LEÍRÁS +A +.B newgrp +parancs a jelenlegi bejelentkezéshez tartozó csoportazonosító +módosítására használható. Ha a parancsot az elhagyható \fB\-\fR +kapcsolóval hívtuk meg, akkor a rendszer úgy inicializálja újra +a felhasználói környezetet, ahogy az a bejelelentkezés során +megtörténik, ellenkező esetben a jelenlegi környezet - beleértve +az aktuális munkakönyvtárat is - változatlan marad. +.PP +A +.B newgrp +parancs lecseréli az aktuális csoportazonosítót a megnevezett +vagy - ha nincs megadva - az \fI/etc/passwd\fR fájlban megadott +alapértelmezett csoportra. Ha a felhasználó nem rendelkezik jelszóval, +de a csoport igen, vagy a felhasználó nem tagja a csoportnak, +de a csoport rendelkezik jelszóval, akkor a rendszer bekéri a csoport +jelszavát. +Amennyiben a csoportnak nincs jelszava, és a felhasználó nem tagja a +csoportnak, akkor a hozzáférés nem lehetséges. +.PP +Az +.B sg +parancs működése hasonló a \fBnewgrp\fR parancs működéséhez, +de ez nem cseréli le a felhasználó parancsértelmezőjét, így +amikor kilépünk az \fBsg\fR parancsból, visszakapjuk az +eredeti csoportazonosítót. +Az +.B sg +parancsnak egy másik, aposztrófok közé zárt parancsot is meg lehet +adni, amely a Bourne parancsértelmezővel kerül végrehajtásra. +.SH HIBÁK +A \fBnewgrp\fR többféle fordítási beállítással rendelkezik, +amelyeknek egy adott felhasználási környezetben csak egy részére +lehet szükség. +.SH FÁJLOK +/etc/passwd \- felhasználói információk +.br +/etc/group \- csoportinfomációk +.SH LÁSD MÉG +.BR login (1), +.BR id (1), +.BR su (1) +.SH SZERZÔ +Julianne Frances Haugh (jfh@bga.com) +.br +.SH MAGYAR FORDÍTÁS +Mamuzsics Péter diff --git a/man/hu/passwd.1 b/man/hu/passwd.1 new file mode 100644 index 00000000..403d673b --- /dev/null +++ b/man/hu/passwd.1 @@ -0,0 +1,165 @@ +.\" 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. +.\" +.\" $Id: passwd.1,v 1.1 2001/11/13 23:28:50 ankry Exp $ +.\" +.TH PASSWD 1 "" \" -*- nroff -*- +.SH NÉV +passwd \- Felhasználói jelszó megváltoztatása +.SH ÁTTEKINTÉS +\fBpasswd\fR [\fB-f\fR|\fB-s\fR] [\fInév\fR] +.br +\fBpasswd\fR [\fB-g\fR] [\fB-r\fR|\fBR\fR] \fIcsoport\fR +.br +\fBpasswd\fR [\fB-x\fR \fImax\fR] [\fB-n\fR \fImin\fR] +[\fB-w\fR \fIfigy\fR] [\fB-i\fR \fIinakt\fR] \fInév\fR +.br +\fBpasswd\fR {\fB-l\fR|\fB-u\fR|\fB-d\fR|\fB-S\fR} \fInév\fR +.SH LEÍRÁS +A \fBpasswd\fR a felhasználók és a csoportok megváltoztatását végzi. +A felhasználók csak a saját jelszavukat változtathatják meg, a rendszergazda +bárkiét. A csoportok jelszavát az adott csoport adminisztrátora +változtathatja meg. +A \fBpasswd\fR ezen kívül használható a felhasználói adatok, mint pl. az +igazi név, a login shell, vagy a jelszavak "szavatossági idejének" +megváltoztatására is. +.SS Jelszóváltozások +A felhasználónak először a régi jelszavát kell beírnia, ha már volt neki. +Ezután ennek a jelszónak a kódolt változatát összehasonlítja a tárolt +jelszóval. A megfelelő jelszó beírására a felhasználónak csak egy lehetősége +van. +A rendszergazda átugorhatja ezt a lépést, így az elfelejtett jelszavak is +megváltoztathatóak. +.PP +Miután a felhasználó beírta a jelszavát, a \fBpasswd\fR megvizsgálja, hogyan +rendelkezett a rendszergazda a jelszavak "szavatossági idejéről". Amennyiben +az idő nem alkalmas a jelszó megváltoztatására, \fBpasswd\fR kilép minden +változtatás nélkül. +.PP +Ezekután a program bekéri a felhasználótól az új jelszót, majd +megvizsgálja hogy elég bonyolult-e. +Általános szabályként elmondható, hogy a jelszavak jók, ha 6-8 karakterből +állnak, és a következő jelkészletekből tartalmaz elemeket: +.IP "" .5i +Az ABC kis betűi +.IP "" .5i +Az ABC nagy betűi +.IP "" .5i +Számok 0 és 9 között +.IP "" .5i +Írásjelek +.PP +Fontos odafigyelni, hogy ne tartalmazzon az adott rendszeren használt +"erase" és "kill" kódű karaktereket. +A \fBpasswd\fR nem fogad el nem eléggé bonyolult jelszót. +.PP +Ha a jelszó elfogadható, +a \fBpasswd\fR a biztonság kedvéért még egyszer bekéri az új jelszót, és +csak akkor hajtja végre a változtatást, ha a két bevitt jelszó megegyezik. +.SS Csoportok jelszavai +A \fB-g\fR kapcsoló használata esetén a megadott nevű csoport jelszava +változik meg. Ezt csak a rendszergazda vagy a csoport adminisztrátora teheti +meg. +A jelenlegi csoportjelszavat nem kéri változtatás előtt. +Az \fB-r\fR kapcsolót a \fB-g\fR kapcsolóval használva lehet a csoport jelszavát kikapcsolni, ezáltal minden tag használhatja a csoportot. +Az \fB-R\fR kapcsoló a \fB-g\fR kapcsolóval használva a csoport minden felhasználó előtt lezárul. + +.SS A jelszavak "szavatossági ideje" +A jelszavak elévülési idejét a rendszergazda a \fB-x\fR, \fB-n\fR, \fB-w\fR, és \fB-i\fR kapcsolókkal szabályozhatja. +A \fB-x\fR kapcsoló a jelszócserék közti maximális időt állítja be. +A jelszót legkésőbb \fImax\fR naponként meg kell változtatni. +Az \fB-n\fR kapcsoló a két jelszócsere közötti minimális időt szabályozza: a felhasználó addig nem változtathatja meg jelszavát, amíg legalább +\fImin\fR nap el nem telt az előző változtatás óta. +A \fB-w\fR kapcsolóval azt állíthatod be, hogy hány nappal a jelszó lejárta előtt kezdje el a rendszer a felhasználót figyelmeztetni. Az első figyelmeztetés \fIfigy\fR nappal a lejárat előtt jelenik meg, és utána naponta tájékoztatja a felhasználót a még hátralévő napok számáról. +Az \fB-i\fR kapcsoló \fIinakt\fR nappal a jelszó lejárta után lezárja a felhasználó belépési lehetőségét. + +.SS Jogosultság-kezelés +A felhasználók lezárhatóak és újra beengedhetőek a \fB-l\fR és a \fB-u\fR kapcsolókkal. +Az \fB-l\fR kapcsoló a jelszót kicseréli egy olyan értékre, ami semmilyen lehetséges jelszó kódolt értékével nem egyezik. +Az \fB-u\fR kapcsoló visszaállítja a jelszót a régire, és így újra engedélyezi a belépést. +.PP +A jogosultságok az \fB-S\fR kapcsolóval állíthatóak be. Ez 6 részből áll: +Az első azt jelzi, hogy a felhaszáló le van zárva (L), nincs jelszava (NP), vagy van érvényes jelszava (P). +A második rész az utolsó jelszóváltoztatás dátuma. +A következő négy rész a jelszavak minimális és maximális ideje, az első figyelmeztetés a jelszó lejárta előtt és hogy mennyi ideig él a jelszó lejárta után. + +.SS Tippek a felhasználói jelszavakhoz +Egy jelszavas rendszer biztonsága a kódolási algoritmus erősségétől és a lehetséges kulcsok számától függ. +A \fB\s-2UNIX\s+2\fR rendszerek kódolási módja az NBS DES algoritmuson alapul, és nagyon biztonságos. A lehetséges kulcsok száma a választott jelszó véletlenszerűségén múlik. +.PP +A jelszavas rendszerek feltörése legtöbbször a gondatlanul megválasztott jelszóválasztásnak vagy a jelszavak cserélgetésének eredménye. +Ezen okok miatt célszerű olyan jelszót választanod, ami nem szerepel a szótárban és nem szükséges leírnod. Tipikusan rossz választás még, ha valamilyen nevet, valamilyen azonosítószámodat, születésnapodat, vagy címedet használod jelszóként. +Ezeket legtöbbször minden más lehetőség vizsgálata előtt kipróbálja a potenciális cracker. +.PP +Igyekezz olyan jelszót választani, amit könnyen megjegyzel és így nem vagy +arra szorulva, hogy le kelljen írnod. +Ezt például úgy érheted el, hogy két rövidebb szót elválasztasz egy számmal +vagy valamilyen karakterrel, például jel@szo +.PP +A másik módszer, hogy egy könnyen megjegyezhető mondat vagy idézet minden +szavának első vagy utolsó betűjét írod egymás után. +Így például a +.IP "" .5i +Morzsa kutyám hegyezd füled +.PP +-ből +.IP "" .5i +Maqmhdfd +.PP +lesz. +Feltehetőleg kevés cracker szótárában fog szerepelni ez a szó. +Ennek ellenére a még nagyobb biztonság kedvéért érdemes valamilyen saját +módszert kitalálnod jelszavak készítésére. + +.SS Megjegyzés a csoportok jelszavairól +A csoportok jelszavai állandó biztonsági problémát jelenthetnek, mivel +nemcsak egy ember ismerheti a jelszavat. A csoport-kezelés azonban +hasznos abban az esetben, ha több felhasználó együttműködését kell +megoldani. + +.SH FIGYELMEZTETÉS +Nem biztos, hogy minden kapcsoló felhasználható. +Az, hogy hogyan vizsgálja a jelszavak bonyolultságát, rendszerről rendszerre +változhat. +Minden felhasználónak célszerű a lehető legbonyolultabb, de még használható +jelszót használnia. +Ha NIS-t használ a felhasználók azonosítására a rendszer és a felhasználó nem +lépett be a NIS kiszolgálóra, nem változtathatja meg jelszavát. +.SH FÁJLOK +/etc/passwd \- felhasználói információk +.br +/etc/shadow \- kódolt felhasználói jelszavak +.SH LÁSD MÉG +.BR passwd (3), +.BR shadow (3), +.BR group (5), +.BR passwd (5) +.SH MAGYAR FORDÍTÁS +Érdi "Cactus" Gergő diff --git a/man/hu/sg.1 b/man/hu/sg.1 new file mode 100644 index 00000000..31be7449 --- /dev/null +++ b/man/hu/sg.1 @@ -0,0 +1 @@ +.so newgrp.1 diff --git a/man/ja/Makefile.am b/man/ja/Makefile.am index f3cdf69a..4195e30b 100644 --- a/man/ja/Makefile.am +++ b/man/ja/Makefile.am @@ -2,35 +2,51 @@ mandir = @mandir@/ja man_MANS = \ + adduser.8 \ chage.1 \ chfn.1 \ + chpasswd.8 \ chsh.1 \ - gpasswd.1 \ - login.1 \ - newgrp.1 \ - passwd.1 \ - su.1 \ - shadow.3 \ faillog.5 \ - login.access.5 \ - login.defs.5 \ - passwd.5 \ - porttime.5 \ - shadow.5 \ - suauth.5 \ - chpasswd.8 \ faillog.8 \ + gpasswd.1 \ groupadd.8 \ groupdel.8 \ groupmod.8 \ grpck.8 \ + grpconv.8 \ + grpunconv.8 \ lastlog.8 \ + limits.5 \ + login.1 \ + login.access.5 \ + login.defs.5 \ logoutd.8 \ mkpasswd.8 \ + newgrp.1 \ + newusers.8 \ + passwd.1 \ + passwd.5 \ + porttime.5 \ pwck.8 \ pwconv.8 \ + pwunconv.8 \ + sg.1 \ + shadow.5 \ + su.1 \ + suauth.5 \ + useradd.8 \ userdel.8 \ - usermod.8 + usermod.8 \ + vigr.8 \ + vipw.8 EXTRA_DIST = $(man_MANS) \ - pw_auth.3 pwauth.8 sulogin.8 dpasswd.8 + dpasswd.8 \ + groups.1 \ + id.1 \ + pw_auth.3 \ + pwauth.8 \ + shadow.3 \ + shadowconfig.8 \ + sulogin.8 diff --git a/man/ja/Makefile.in b/man/ja/Makefile.in index a509dd2a..86d66065 100644 --- a/man/ja/Makefile.in +++ b/man/ja/Makefile.in @@ -109,39 +109,55 @@ install_sh = @install_sh@ mandir = @mandir@/ja man_MANS = \ + adduser.8 \ chage.1 \ chfn.1 \ + chpasswd.8 \ chsh.1 \ - gpasswd.1 \ - login.1 \ - newgrp.1 \ - passwd.1 \ - su.1 \ - shadow.3 \ faillog.5 \ - login.access.5 \ - login.defs.5 \ - passwd.5 \ - porttime.5 \ - shadow.5 \ - suauth.5 \ - chpasswd.8 \ faillog.8 \ + gpasswd.1 \ groupadd.8 \ groupdel.8 \ groupmod.8 \ grpck.8 \ + grpconv.8 \ + grpunconv.8 \ lastlog.8 \ + limits.5 \ + login.1 \ + login.access.5 \ + login.defs.5 \ logoutd.8 \ mkpasswd.8 \ + newgrp.1 \ + newusers.8 \ + passwd.1 \ + passwd.5 \ + porttime.5 \ pwck.8 \ pwconv.8 \ + pwunconv.8 \ + sg.1 \ + shadow.5 \ + su.1 \ + suauth.5 \ + useradd.8 \ userdel.8 \ - usermod.8 + usermod.8 \ + vigr.8 \ + vipw.8 EXTRA_DIST = $(man_MANS) \ - pw_auth.3 pwauth.8 sulogin.8 dpasswd.8 + dpasswd.8 \ + groups.1 \ + id.1 \ + pw_auth.3 \ + pwauth.8 \ + shadow.3 \ + shadowconfig.8 \ + sulogin.8 subdir = man/ja mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -212,45 +228,6 @@ uninstall-man1: rm -f $(DESTDIR)$(man1dir)/$$inst; \ done -man3dir = $(mandir)/man3 -install-man3: $(man3_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man3dir) - @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.3*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst; \ - done -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.3*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man3dir)/$$inst"; \ - rm -f $(DESTDIR)$(man3dir)/$$inst; \ - done - man5dir = $(mandir)/man5 install-man5: $(man5_MANS) $(man_MANS) @$(NORMAL_INSTALL) @@ -358,7 +335,7 @@ check: check-am all-am: Makefile $(MANS) installdirs: - $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man3dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir) + $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir) install: install-am install-exec: install-exec-am @@ -405,7 +382,7 @@ install-exec-am: install-info: install-info-am -install-man: install-man1 install-man3 install-man5 install-man8 +install-man: install-man1 install-man5 install-man8 installcheck-am: @@ -419,20 +396,18 @@ mostlyclean-am: mostlyclean-generic mostlyclean-libtool uninstall-am: uninstall-info-am uninstall-man -uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ - uninstall-man8 +uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-man1 install-man3 \ - install-man5 install-man8 install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool uninstall uninstall-am uninstall-info-am \ - uninstall-man uninstall-man1 uninstall-man3 uninstall-man5 \ - uninstall-man8 + install-info-am install-man install-man1 install-man5 \ + install-man8 install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool uninstall \ + uninstall-am uninstall-info-am uninstall-man uninstall-man1 \ + uninstall-man5 uninstall-man8 # 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. diff --git a/man/ja/adduser.8 b/man/ja/adduser.8 new file mode 100644 index 00000000..5c58edfb --- /dev/null +++ b/man/ja/adduser.8 @@ -0,0 +1 @@ +.so useradd.8 diff --git a/man/ja/chage.1 b/man/ja/chage.1 index c2621491..a56f33a5 100644 --- a/man/ja/chage.1 +++ b/man/ja/chage.1 @@ -1,4 +1,4 @@ -.\" Copyright 1990 - 1994 John F. Haugh II +.\" Copyright 1990 - 1994 Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chage.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: chage.1,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,16 +36,20 @@ .SH ĚľÁ° chage \- ĄćˇĽĄ¶ĄŃĄąĄďˇĽĄÉ¤ÎÍ­¸ú´ü¸Â¤ÎľđĘó¤ňĘŃąą¤ą¤ëˇŁ .SH ˝ńĽ° -\fBchage\fR [ \fB-m \fImindays\fR ] [ \fB-M \fImaxdays\fR ] -[ \fB-d \fIlastday\fR ] [ \fB-I \fIinactive\fR ] -[ \fB-E \fIexpiredate\fR ] [ \fB-W \fIwarndays\fR ] \fIuser\fR -.sp 1 -\fBchage\fR -l \fIuser\fR +.TP 6 +\fBchage\fR +[\fB-m \fImindays\fR] [\fB-M \fImaxdays\fR] +[\fB-d \fIlastday\fR] [\fB-I \fIinactive\fR] +.br +[\fB-E \fIexpiredate\fR] [\fB-W \fIwarndays\fR] \fIuser\fR +.TP 6 +\fBchage\fR +\fB-l\fR \fIuser\fR .SH ŔâĚŔ -\fIchage\fR¤Ďˇ˘ +\fBchage\fR¤Ďˇ˘ ĄŃĄąĄďˇĽĄÉ¤ÎşÇ˝Şąąż·Ćü¤«¤éĽˇ¤ËĘŃąą¤ą¤Ů¤­´üĆü¤Ţ¤Ç¤ÎĆüżô¤ňĘŃąą¤ą¤ëˇŁ Ą·ĄąĄĆĄŕ¤Ďˇ˘¤ł¤ÎľđĘó¤ňÍѤ¤¤Ćˇ˘ĄćˇĽĄ¶¤¬¤¤¤ÄĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤Ů¤­¤«¤ň·čÄꤹ¤ëˇŁ -\fIchage\fRĄłĄŢĄóĄÉ¤Î»ČÍѤϡ˘\fB-l\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ëľěąç°Ęł°¤Ď +\fBchage\fRĄłĄŢĄóĄÉ¤Î»ČÍѤϡ˘\fB-l\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ëľěąç°Ęł°¤Ď rootĄćˇĽĄ¶¤Î¤ß¤ËŔ©¸Â¤µ¤ě¤Ć¤¤¤ëˇŁ \fB-l\fRĄŞĄ×Ą·ĄçĄó¤Ďˇ˘°ěČ̥桼Ą¶¤¬Ľ«Ę¬¤ÎĄŃĄąĄďˇĽĄÉËô¤ĎĄ˘Ą«Ą¦ĄóĄČ ¤Î´ü¸Â¤¬ŔÚ¤ě¤ëĆü¤¬¤¤¤Ä¤«¤ňĂΤ뤿¤á¤Ë»Č¤¦¤ł¤Č¤¬˝ĐÍč¤ëˇŁ @@ -68,14 +68,14 @@ root .PP \fB-d\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ëľěąçˇ˘ \fIlastday\fR¤ÎĂͤĎ1970ÇŻ1·î1Ćü¤«¤éĄŃĄąĄďˇĽĄÉşÇ˝Şąąż·ĆüËř¤ÎĆüżô¤Ë¤Ę¤ëˇŁ -Ćüżô¤Ď·î·î/ĆüĆü/ÇŻÇŻ¤Č¤¤¤¦˝ńĽ° (Ľă¤·¤Ż¤Ď¤˘¤Ę¤ż¤ÎĂĎ°č¤Ç¤â¤Ă¤Č¤č¤ŻÍѤ¤¤é¤ě¤Ć +Ćüżô¤ĎÇŻÇŻÇŻÇŻ/·î·î/ĆüĆü¤Č¤¤¤¦˝ńĽ° (Ľă¤·¤Ż¤Ď¤˘¤Ę¤ż¤ÎĂĎ°č¤Ç¤â¤Ă¤Č¤č¤ŻÍѤ¤¤é¤ě¤Ć ¤¤¤ë˝ńĽ°)¤Ç»ŘÄꤹ¤ë»ö¤â¤Ç¤­¤ëˇŁ .PP \fB-E\fRĄŞĄ×Ą·ĄçĄó¤ĎĄćˇĽĄ¶¤¬Ą˘Ą«Ą¦ĄóĄČ¤ËşÇÁᥢĄŻĄ»Ąą¤Ç¤­¤Ę¤Ż¤Ę¤ë ĆüÉŐ¤ňŔßÄꤹ¤ë¤Î¤ËÍѤ¤¤é¤ě¤ëˇŁ \fIexpiredate\fRĄŞĄ×Ą·ĄçĄó¤Ď1970ÇŻ1·î1Ćü¤«¤éĄ˘Ą«Ą¦ĄóĄČ¤¬ĄíĄĂĄŻ ¤µ¤ě¤ëĆüËř¤ÎĆüżô¤Ç¤˘¤ëˇŁ -Ćüżô¤Ď·î·î/ĆüĆü/ÇŻÇŻ¤Č¤¤¤¦˝ńĽ°(Ľă¤·¤Ż¤Ď¤˘¤Ę¤ż¤ÎĂĎ°č¤Ç¤â¤Ă¤Č¤č¤Ż +Ćüżô¤ĎÇŻÇŻÇŻÇŻ/·î·î/ĆüĆü¤Č¤¤¤¦˝ńĽ°(Ľă¤·¤Ż¤Ď¤˘¤Ę¤ż¤ÎĂĎ°č¤Ç¤â¤Ă¤Č¤č¤Ż ÍѤ¤¤é¤ě¤Ć¤¤¤ë¤â¤Î)¤Ç»ŘÄꤹ¤ë¤ł¤Č¤â˝ĐÍč¤ëˇŁ Ą˘Ą«Ą¦ĄóĄČ¤¬ĄíĄĂĄŻ¤µ¤ě¤żĄćˇĽĄ¶¤¬şĆ¤Ó¤˝¤ÎĄ·ĄąĄĆĄŕ¤ň»Č¤¦¤ż¤á¤Ë¤Ďˇ˘ Ą·ĄąĄĆĄŕ´ÉÍýĽÔ¤ËĄłĄóĄżĄŻĄČ¤ňĽč¤é¤Í¤Đ¤Ę¤é¤Ę¤¤ˇŁ @@ -98,7 +98,7 @@ root ¤ł¤ÎĘŃ´ą¤¬ąÔ¤ď¤ě¤ë¤ż¤áˇ˘´Ý¤á¤Î¸íşą¤¬Ŕ¸¤¸¤ë¤ł¤Č¤â¤˘¤ëˇŁ .PP ľĺ¤Ëµó¤˛¤ż¤¤¤ş¤ě¤ÎĄŞĄ×Ą·ĄçĄó¤â»ŘÄꤷ¤Ę¤«¤Ă¤żľěąç¤Ďˇ˘ -\fIchage\fR¤ĎÂĐĎĂĹŞ¤ËĆ°şî¤·ˇ˘Á´¤Ć¤ÎÍó¤ËÂФ·¤Ćˇ˘łĆˇą¸˝şß¤ÎŔßÄęĂͤňÉ˝Ľ¨¤·ˇ˘ +\fBchage\fR¤ĎÂĐĎĂĹŞ¤ËĆ°şî¤·ˇ˘Á´¤Ć¤ÎÍó¤ËÂФ·¤Ćˇ˘łĆˇą¸˝şß¤ÎŔßÄęĂͤňÉ˝Ľ¨¤·ˇ˘ ż·¤·¤¤ĂͤÎĆţÎϤňÂĄ¤ąˇŁ ż·¤·¤¤ĂͤňŔßÄꤹ¤ëľěąç¤Ď¤˝¤ě¤ňĆţÎϤ·ˇ˘¸˝şß¤ÎĂͤň»Č¤¦¤Ę¤é¶őąÔ¤Î¤Ţ¤Ţ ĄęĄżˇĽĄóĄ­ˇĽ¤ň˛ˇ¤»¤Đ¤č¤¤ˇŁ @@ -108,8 +108,7 @@ root .br /etc/shadow \- ĄćˇĽĄ¶¤Î shadow Ą˘Ą«Ą¦ĄóĄČľđĘó .SH ´ŘϢąŕĚÜ -passwd(4), -shadow(4) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR passwd (5), +.BR shadow (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/chfn.1 b/man/ja/chfn.1 index b3d7628f..049ec320 100644 --- a/man/ja/chfn.1 +++ b/man/ja/chfn.1 @@ -1,4 +1,4 @@ -.\" Copyright 1990 - 1994 John F. Haugh II +.\" Copyright 1990 - 1994 Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chfn.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: chfn.1,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -37,39 +33,39 @@ .\" by Kazuyoshi Furutaka .\" .TH CHFN 1 -.SH NAME +.SH ĚľÁ° chfn \- ĄćˇĽĄ¶¤ÎĚľÁ°Ĺů¤ÎľđĘó¤ňĘŃąą¤ą¤ëˇŁ .SH ˝ńĽ° -\fBchfn\fR [ \fB-f \fIfull_name\fR ] [ \fB-r \fIroom_no\fR ] +.TP 5 +\fBchfn\fR +[\fB-f \fIfull_name\fR] [\fB-r \fIroom_no\fR] .br -[ \fB-w \fIwork_ph\fR ] [ \fB-h \fIhome_ph\fR ] [ \fB-o \fIother\fR ] -[ \fIuser\fR ] +[\fB-w \fIwork_ph\fR] [\fB-h \fIhome_ph\fR] [\fB-o \fIother\fR] +[\fIuser\fR] .SH ŔâĚŔ -\fIchfn\fR -¤Ďˇ˘ĄćˇĽĄ¶¤ÎĄŐĄëĄÍˇĽĄŕˇ˘ĄŞĄŐĄŁĄą¤ÎÉô˛°ČÖąćµÚ¤ÓĆâŔţČֹ桢 +\fBchfn\fR ¤Ďˇ˘ĄćˇĽĄ¶¤ÎĄŐĄëĄÍˇĽĄŕˇ˘ĄŞĄŐĄŁĄą¤ÎÉô˛°ČÖąćµÚ¤ÓĆâŔţČֹ桢 Ľ«Âđ¤ÎĹĹĎĂČÖąć¤Č¤¤¤Ă¤żĄ˘Ą«Ą¦ĄóĄČľđĘó¤ňĘŃąą¤ą¤ëˇŁ -¤ł¤ÎľđĘó¤Ď\fIfinger(1)\fR¤ä¤˝¤ě¤ČÎŕ»÷¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ë¤č¤Ă¤ĆÉ˝Ľ¨¤µ¤ě¤ëˇŁ +¤ł¤ÎľđĘó¤Ď \fBfinger\fR(1) ¤ä¤˝¤ě¤ČÎŕ»÷¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ë¤č¤Ă¤ĆÉ˝Ľ¨¤µ¤ě¤ëˇŁ °ěČ̥桼Ą¶¤ĎĽ«Ę¬Ľ«żČ¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ÎľđĘó¤ÎĘŃąą¤Î¤ßąÔ¤¦¤ł¤Č¤¬˝ĐÍč¤ëˇŁ ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤ĎÁ´¤Ć¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ËÂФ·¤ĆľđĘó¤ÎĘŃąą¤¬˝ĐÍč¤ëˇŁ -¤Ţ¤żˇ˘\fB-o\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ĆGCOSÍó¤Î̤ÄęµÁÉôʬ¤ÎĘŃąą¤ňąÔ¤¨¤ë¤Î¤â +¤Ţ¤żˇ˘\fB-o\fR ĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤Ć GCOS Íó¤Î̤ÄęµÁÉôʬ¤ÎĘŃąą¤ňąÔ¤¨¤ë¤Î¤â ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Ŕ¤±¤Ç¤˘¤ëˇŁ .PP łĆÍó¤Ë¤Ďˇ˘ĄłĄóĄČĄíˇĽĄëʸ»úµÚ¤Óˇ˘ĄłĄóĄŢˇ˘ĄłĄíĄóˇ˘Ĺůąć°Ęł°¤ÎÁ´¤Ć¤Îʸ»ú¤ň ˝ń¤Ż¤ł¤Č¤¬˝ĐÍč¤ëˇŁ -\fIother\fRÍó¤ËÂФ·¤Ć¤Ď¤ł¤ÎŔ©¸Â¤Ď¤Ę¤¤¤Î¤Çˇ˘Âľ¤ÎĄ˘Ą×ĄęĄ±ˇĽĄ·ĄçĄó¤¬ÍѤ¤¤ë +\fIother\fR Íó¤ËÂФ·¤Ć¤Ď¤ł¤ÎŔ©¸Â¤Ď¤Ę¤¤¤Î¤Çˇ˘Âľ¤ÎĄ˘Ą×ĄęĄ±ˇĽĄ·ĄçĄó¤¬ÍѤ¤¤ë Ą˘Ą«Ą¦ĄóĄĆĄŁĄóĄ°ľđĘó¤ňµ­Ďż¤·¤Ć¤Ş¤Ż»ö¤¬˝ĐÍč¤ëˇŁ .PP -¤¤¤ş¤ě¤ÎĄŞĄ×Ą·ĄçĄó¤âÁŞÂň¤µ¤ě¤Ę¤«¤Ă¤żľěąç¤Ďˇ˘\fIchfn\fR¤ĎÂĐĎĂĹŞ¤ËĆ°şî¤·ˇ˘ +¤¤¤ş¤ě¤ÎĄŞĄ×Ą·ĄçĄó¤âÁŞÂň¤µ¤ě¤Ę¤«¤Ă¤żľěąç¤Ďˇ˘\fBchfn\fR ¤ĎÂĐĎĂĹŞ¤ËĆ°şî¤·ˇ˘ Á´¤Ć¤ÎÍó¤ËÂФ·¤Ćˇ˘łĆˇą¸˝şß¤ÎŔßÄęĂͤňÉ˝Ľ¨¤·ˇ˘ż·¤·¤¤ĂͤÎĆţÎϤňÂĄ¤ąˇŁ ż·¤·¤¤ĂͤňŔßÄꤹ¤ëľěąç¤Ď¤˝¤ě¤ňĆţÎϤ·ˇ˘¤Ţ¤ż¤Ď¸˝şß¤ÎĂͤň»Č¤¦¤Ę¤é¶őąÔ¤Î¤Ţ¤Ţ ĄęĄżˇĽĄóĄ­ˇĽ¤ň˛ˇ¤»¤Đ¤č¤¤ˇŁ ¸˝şß¤ÎĂͤϰěÂФΠ\fB[ ]\fR µ­ąć¤Î´Ö¤ËÉ˝Ľ¨¤µ¤ě¤ëˇŁ -ĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤Ę¤«¤Ă¤żľěąçˇ˘chfn¤Ď¤˝¤ě¤ňµŻĆ°¤·¤żĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČ¤Ë +ĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤Ę¤«¤Ă¤żľěąçˇ˘chfn ¤Ď¤˝¤ě¤ňµŻĆ°¤·¤żĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČ¤Ë ÂФ·¤ĆĆŻ¤ŻˇŁ .SH ĄŐĄˇĄ¤Ąë /etc/passwd \- ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČľđĘó -.SH ´ŘϢĄłĄŢĄóĄÉ -passwd(4) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.SH ´ŘϢąŕĚÜ +.BR passwd (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/chpasswd.8 b/man/ja/chpasswd.8 index 6fba8d2f..d147cc9f 100644 --- a/man/ja/chpasswd.8 +++ b/man/ja/chpasswd.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,40 +25,43 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chpasswd.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: chpasswd.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" 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 +.\" by Kentaro Shirakata .\" .TH CHPASSWD 8 .SH ĚľÁ° -\fBchpasswd\fR - ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňĄĐĄĂĄÁ˝čÍý¤Çąąż·¤ą¤ë +\fBchpasswd\fR \- ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňĄĐĄĂĄÁ˝čÍý¤Çąąż·¤ą¤ë .SH ˝ńĽ° -\fBchpasswd\fR +\fBchpasswd [-e]\fR .SH ŔâĚŔ -\fBchpasswd\fRĄłĄŢĄóĄÉ¤Ďɸ˝ŕĆţÎϤ«¤éĄćˇĽĄ¶Ěľ¤Č°Ĺąć˛˝¤µ¤ě¤Ć¤¤¤Ę¤¤ĄŃĄąĄďˇĽĄÉ -¤ÎÁȤߤ¬µ­¤µ¤ě¤Ć¤¤¤ëĄŐĄˇĄ¤Ąë¤ňĆɤ߹ţ¤ßˇ˘¤˝¤ÎľđĘó¤ňÍѤ¤¤Ć´ű¸¤ÎĄćˇĽĄ¶·˛¤Î +\fBchpasswd\fRĄłĄŢĄóĄÉ¤Ďɸ˝ŕĆţÎϤ«¤éĄćˇĽĄ¶Ěľ¤ČĄŃĄąĄďˇĽĄÉ +¤ÎÁȤ¬µ­¤µ¤ě¤Ć¤¤¤ëĄŐĄˇĄ¤Ąë¤ňĆɤ߹ţ¤ßˇ˘¤˝¤ÎľđĘó¤ňÍѤ¤¤Ć´ű¸¤ÎĄćˇĽĄ¶·˛¤Î ĄŃĄąĄďˇĽĄÉľđĘó¤ňąąż·¤ą¤ëˇŁ +-e ĄŞĄ×Ą·ĄçĄó¤¬¤Ę¤¤ľěąç¤Ďˇ˘ĄŃĄąĄďˇĽĄÉ¤Ďʿʸ¤Č¸«¤Ę¤µ¤ě¤ëˇŁ +-e ĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ëľěąç¤Ďˇ˘ĄŃĄąĄďˇĽĄÉ¤Ď°Ĺąć˛˝¤µ¤ě¤Ć¤¤¤ë¤Č¸«¤Ę¤µ¤ě¤ëˇŁ łĆąÔ¤Ď -.DS +.sp 1 \fIuser_name\fR:\fIpassword\fR -.DE +.sp 1 ¤Č¤¤¤¦˝ńĽ°¤Ç¤˘¤ëˇŁ »ŘÄꤷ¤żĄćˇĽĄ¶¤Ď´ű¤Ë¸şß¤·¤Ć¤¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -Íż¤¨¤é¤ě¤żĄŃĄąĄďˇĽĄÉ¤¬°Ĺąć˛˝¤µ¤ěˇ˘ĄŃĄąĄďˇĽĄÉ¤ÎÍ­¸ú´ü¸Â¤¬Â¸şß¤ą¤ë¤Ę¤é +Íż¤¨¤é¤ě¤żĄŃĄąĄďˇĽĄÉ¤ĎɬÍפ˱ţ¤¸¤Ć°Ĺąć˛˝¤µ¤ěˇ˘ĄŃĄąĄďˇĽĄÉ¤ÎÍ­¸ú´ü¸Â¤¬Â¸şß¤ą¤ë¤Ę¤é ¤˝¤ě¤âąąż·¤µ¤ě¤ëˇŁ .PP ¤ł¤ÎĄłĄŢĄóĄÉ¤Ďˇ˘Ć±»ţ¤ËÂçÎ̤Υ˘Ą«Ą¦ĄóĄČ¤ňşîŔ®¤ą¤ëÍͤĘÂ絬ĚϤʥ·ĄąĄĆĄŕ´Ä¶­ ¤Ç»ČÍѤą¤ë¤ł¤Č¤ň°ŐżŢ¤·¤Ć¤¤¤ëˇŁ .SH ·Ůąđ -¤ł¤ÎĄłĄŢĄóĄÉ¤Î»ČÍѸĺ¤Ďˇ˘DBMĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňąąż·¤ą¤ë°Ů¤Ëˇ˘\fImkpasswd\fR -ĄłĄŢĄóĄÉ¤ňĽÂąÔ¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -ĆţÎĎĄŐĄˇĄ¤Ąë¤Ďˇ˘°Ĺąć˛˝¤µ¤ě¤Ć¤¤¤Ę¤¤ĄŃĄąĄďˇĽĄÉ¤¬µ­¤µ¤ě¤Ć¤¤¤ë¤Î¤Çˇ˘Ą×ĄíĄĆĄŻĄČ -¤ň¤«¤±¤Ć¤Ş¤«¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -newusers(8)ĄłĄŢĄóĄÉ¤¬Â¸şß¤ą¤ë¤Î¤Çˇ˘¤ł¤ÎĄłĄŢĄóĄÉ¤ĎĽÎ¤Ć¤é¤ě¤ë¤«¤âĂΤě¤Ę¤¤ˇŁ +ĆţÎĎĄŐĄˇĄ¤Ąë¤Ë°Ĺąć˛˝¤µ¤ě¤Ć¤¤¤Ę¤¤ĄŃĄąĄďˇĽĄÉ¤¬µ­¤µ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ +Ą×ĄíĄĆĄŻĄČ¤ň¤«¤±¤Ć¤Ş¤«¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .SH ´ŘϢąŕĚÜ -mkpasswd(8), passwd(1), useradd(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR passwd (1), +.BR useradd (8), +.BR newusers (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/chsh.1 b/man/ja/chsh.1 index 7bd6f50d..79b066d2 100644 --- a/man/ja/chsh.1 +++ b/man/ja/chsh.1 @@ -1,4 +1,4 @@ -.\" Copyright 1990, John F. Haugh II +.\" Copyright 1990, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chsh.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: chsh.1,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,23 +36,25 @@ .SH ĚľÁ° chsh \- ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňĘŃąą¤ą¤ëˇŁ .SH ˝ńĽ° -\fBchsh\fR [ \fB-s \fIlogin_shell\fR ] [ \fIuser\fR ] +.TP 5 +\fBchsh\fR +[\fB-s \fIlogin_shell\fR] [\fIuser\fR] .SH ŔâĚŔ -\fIchsh\fR¤ĎĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňĘŃąą¤ą¤ëˇŁ +\fBchsh\fR¤ĎĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňĘŃąą¤ą¤ëˇŁ ¤ł¤ě¤Ë¤č¤Ă¤Ćˇ˘ĄćˇĽĄ¶¤¬ĄíĄ°Ą¤Ąó¤·¤ĆşÇ˝é¤ËĽÂąÔ¤µ¤ě¤ëĄłĄŢĄóĄÉ¤¬·č¤Ţ¤ëˇŁ °ěČ̥桼Ą¶¤ĎĽ«Ę¬¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤Î¤ß¤ňĘŃąą¤Ç¤­¤ëˇŁ ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤ĎÁ´¤Ć¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňĘŃąą¤ą¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ .PP -ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤Ďˇ˘ĄłĄŢĄóĄÉĚľ¤¬\fB/etc/shells\fR¤Ëµ­şÜ¤µ¤ě¤Ć¤¤¤ě¤Đ¤Ę¤ó¤Ç¤âÎɤ¤ˇŁ +ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤Ďˇ˘ĄłĄŢĄóĄÉĚľ¤¬\fI/etc/shells\fR¤Ëµ­şÜ¤µ¤ě¤Ć¤¤¤ě¤Đ¤Ę¤ó¤Ç¤âÎɤ¤ˇŁ ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Îľěąç¤Ď¤ł¤ÎŔ©¸Â¤Ď¤Ę¤Żˇ˘¤¤¤«¤Ę¤ëĂͤǤâ»ŘÄę¤Ç¤­¤ëˇŁ µˇÇ˝¤ňŔ©¸Â¤µ¤ě¤żĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňÍѤ¤¤Ć¤¤¤ëĄ˘Ą«Ą¦ĄóĄČ¤«¤é¤Ďˇ˘ ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňĘŃąą˝ĐÍč¤Ę¤¤ˇŁ -¤ł¤ÎÍýÍł¤«¤éˇ˘\fB/bin/rsh\fR¤ň\fB/etc/shells\fR¤Ë˝ń¤Ż¤ł¤Č¤Ď´«¤á¤é¤ě¤Ę¤¤ˇŁ +¤ł¤ÎÍýÍł¤«¤éˇ˘\fB/bin/rsh\fR¤ň\fI/etc/shells\fR¤Ë˝ń¤Ż¤ł¤Č¤Ď´«¤á¤é¤ě¤Ę¤¤ˇŁ µˇÇ˝¤¬Ŕ©¸Â¤µ¤ě¤żĄ·Ą§Ąë¤Ë¸í¤Ă¤ĆĘŃąą¤·¤Ć¤·¤Ţ¤Ă¤żľěąçˇ˘¤É¤¦¤ä¤Ă¤Ć¤â ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ň¸µ¤Î¤â¤Î¤ËĚ᤹¤ł¤Č¤¬˝ĐÍč¤Ę¤Ż¤Ę¤Ă¤Ć¤·¤Ţ¤¦¤«¤é¤Ç¤˘¤ëˇŁ .PP \fB-s\fRĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤Ę¤«¤Ă¤żľěąç¤Ďˇ˘ -\fIchsh\fR¤ĎÂĐĎĂĹŞ¤ËĆ°şî¤·ˇ˘łĆÍó¤ËÂФ·¤Ć¸˝şß¤ÎŔßÄęĂͤňÉ˝Ľ¨¤·ˇ˘ +\fBchsh\fR¤ĎÂĐĎĂĹŞ¤ËĆ°şî¤·ˇ˘łĆÍó¤ËÂФ·¤Ć¸˝şß¤ÎŔßÄęĂͤňÉ˝Ľ¨¤·ˇ˘ ż·¤·¤¤ĂͤÎĆţÎϤňÂĄ¤ąˇŁ ŔßÄęĂͤňĘŃąą¤ą¤ë¤Ę¤éż·¤·¤¤ĂͤňĆţÎϤ·ˇ˘ Ëô¤Ď¸˝şß¤ÎĂͤň»Č¤¦¤Ę¤é¶őąÔ¤Î¤Ţ¤ŢĄęĄżˇĽĄóĄ­ˇĽ¤ň˛ˇ¤»¤Đ¤č¤¤ˇŁ @@ -66,8 +64,7 @@ chsh \- .br /etc/shells \- »ŘÄę¤Ç¤­¤ëĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ÎĄęĄąĄČ .SH ´ŘϢąŕĚÜ -chfn(1), -passwd(5) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR chfn (1), +.BR passwd (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/dpasswd.8 b/man/ja/dpasswd.8 index 44d53c4d..260cc30f 100644 --- a/man/ja/dpasswd.8 +++ b/man/ja/dpasswd.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: dpasswd.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: dpasswd.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -38,10 +34,11 @@ .\" .TH DPASSWD 8 .SH ĚľÁ° -\fBdpasswd\fR - ĄŔĄ¤Ą˘ĄëĄ˘ĄĂĄ×ÍŃĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ë +\fBdpasswd\fR \- ĄŔĄ¤Ą˘ĄëĄ˘ĄĂĄ×ÍŃĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ë .SH ˝ńĽ° \fBdpasswd\fR -[ \fI-(a|d)\fR ] \fIshell\fR +.RB [ - ( a | d )] +\fIshell\fR .SH ŔâĚŔ \fBdpasswd\fR¤ĎĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ÎĄŔĄ¤Ą˘ĄëĄ˘ĄĂĄ×ÍŃĄŃĄąĄďˇĽĄÉ¤Î Äɲᢺď˝üµÚ¤Óąąż·¤ňąÔ¤Ę¤¦ˇŁ @@ -57,6 +54,6 @@ .br /etc/dialups .SH ´ŘϢąŕĚÜ -login(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/faillog.5 b/man/ja/faillog.5 index f5ea81a8..13763175 100644 --- a/man/ja/faillog.5 +++ b/man/ja/faillog.5 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1994, John F. Haugh II +.\" Copyright 1989 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: faillog.5,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: faillog.5,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -63,6 +59,6 @@ faillog \- .SH ĄŐĄˇĄ¤Ąë /var/log/faillog \- ĄíĄ°Ą¤ĄóĽşÇԤε­Ďż .SH ´ŘϢąŕĚÜ -faillog(8) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR faillog (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/faillog.8 b/man/ja/faillog.8 index a3651211..03ef95cc 100644 --- a/man/ja/faillog.8 +++ b/man/ja/faillog.8 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1994, John F. Haugh II +.\" Copyright 1989 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: faillog.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: faillog.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,17 +36,26 @@ .SH ĚľÁ° faillog \- faillog¤ňÄ´¤Ůˇ˘loginĽşÇÔ¤ÎŔ©¸Â¤ňŔßÄꤹ¤ë .SH ˝ńĽ° -/etc/faillog [ -u uid ] [ -a ] [ -t days ] [ -m max ] [ -pr ] +.TP 8 +.B faillog +.RB [ -u +.IR login-name ] +.RB [ -a ] +.RB [ -t +.IR days ] +.RB [ -m +.IR max ] +.RB [ -pr ] .SH ŔâĚŔ -\fIfaillog\fR¤ĎĄíĄ°Ą¤Ąó¤ÎĽşÇÔ¤ňµ­Ďż¤ą¤ëĄíĄ°ĄŐĄˇĄ¤Ąë\fI/usr/adm/faillog\fR +\fBfaillog\fR¤ĎĄíĄ°Ą¤Ąó¤ÎĽşÇÔ¤ňµ­Ďż¤ą¤ëĄíĄ°ĄŐĄˇĄ¤Ąë\fI/var/log/faillog\fR ¤ÎĆâÍƤňŔ°·Á¤·ˇ˘ĽşÇԤβóżôµÚ¤Ó¤˝¤ÎŔ©¸Â¤ÎĘÝĽé¤ňąÔ¤Ę¤¦ˇŁ -\fIfaillog\fR¤ËÍż¤¨¤ë°úżô¤Î˝ç˝ř¤Ë¤Ď°ŐĚŁ¤¬¤˘¤ëˇŁ +\fBfaillog\fR¤ËÍż¤¨¤ë°úżô¤Î˝ç˝ř¤Ë¤Ď°ŐĚŁ¤¬¤˘¤ëˇŁ łĆ°úżô¤ĎÍż¤¨¤é¤ě¤ż˝ç¤ËÄľ¤Á¤Ë˝čÍý¤µ¤ě¤ëˇŁ .PP \fB-p\fRĄŐĄéĄĂĄ°¤ĎĄíĄ°Ą¤ĄóĽşÇԤΥ¨ĄóĄČĄę¤ňUID˝ç¤ËÉ˝Ľ¨¤µ¤»¤ëˇŁ -\fB-u login-name\fR¤ČĆţÎϤ·¤żşÝ¤Ďˇ˘\fBlogin-name\fR¤Î +\fB-u \fIlogin-name\fR¤ČĆţÎϤ·¤żşÝ¤Ďˇ˘\fIlogin-name\fR¤Î ĄíĄ°Ą¤ĄóĽşÇÔµ­Ďż¤Î¤ß¤ňÉ˝Ľ¨¤ą¤ëˇŁ -\fB-t days\fR¤ČĆţÎϤą¤ë¤Čˇ˘şÇ¶á\fBdays\fRĆü°ĘĆâ¤ÎĄíĄ°Ą¤ĄóĽşÇÔ +\fB-t \fIdays\fR¤ČĆţÎϤą¤ë¤Čˇ˘şÇ¶á\fIdays\fRĆü°ĘĆâ¤ÎĄíĄ°Ą¤ĄóĽşÇÔ ¤Îµ­Ďż¤ňÉ˝Ľ¨¤ą¤ëˇŁ \fB-t\fRĄŐĄéĄĂĄ°¤ňÍѤ¤¤żşÝ¤Ď\fB-u\fRĄŐĄéĄĂĄ°¤ÎĆŻ¤­¤¬ÍŢŔ©¤µ¤ě¤ëˇŁ \fB-a\fRĄŐĄéĄĂĄ°¤ňÍѤ¤¤ë¤ČÁ´ĄćˇĽĄ¶¤ËÂФą¤ëµ­Ďż¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ @@ -59,20 +64,20 @@ faillog \- faillog \fB-r\fRĄŐĄéĄĂĄ°¤ČÍѤ¤¤Ć¤â°ŐĚŁ¤¬Ěµ¤¤ˇŁ .PP \fB-r\fRĄŐĄéĄĂĄ°¤ĎĄíĄ°Ą¤ĄóĽşÇԤβóżô¤ňĄęĄ»ĄĂĄČ¤ą¤ë°Ů¤Î¤â¤Î¤Ç¤˘¤ëˇŁ -¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ë¤Ë¤Ď\fI/usr/adm/faillog\fR¤Ř¤Î˝ń¤­ąţ¤ß¸˘¤¬ +¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ë¤Ë¤Ď\fI/var/log/faillog\fR¤Ř¤Î˝ń¤­ąţ¤ß¸˘¤¬ ɬÍפǤ˘¤ëˇŁ -\fB-u login-name\fR¤ČĆţÎϤ·¤żşÝ¤Ďˇ˘\fBlogin-name\fR¤Î +\fB-u \fIlogin-name\fR¤ČĆţÎϤ·¤żşÝ¤Ďˇ˘\fIlogin-name\fR¤Î ĄíĄ°Ą¤ĄóĽşÇÔ˛óżô¤Î¤ß¤ňĄęĄ»ĄĂĄČ¤ą¤ëˇŁ .PP \fB-m\fRĄŐĄéĄĂĄ°¤Ďˇ˘Ą˘Ą«Ą¦ĄóĄČ¤¬»ČÍŃÉÔÇ˝¤Ë¤Ę¤ëşÇÂç¤ÎĄíĄ°Ą¤Ąó ĽşÇÔ˛óżô¤ňŔßÄꤹ¤ë°Ů¤ËÍѤ¤¤ëˇŁ -¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ë¤Ë¤Ď\fI/usr/adm/faillog\fR¤Ř¤Î˝ń¤­ąţ¤ß¸˘¤¬ +¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ë¤Ë¤Ď\fI/var/log/faillog\fR¤Ř¤Î˝ń¤­ąţ¤ß¸˘¤¬ ɬÍפǤ˘¤ëˇŁ -\fB-m max\fR¤ČĆţÎϤ·¤żľěąçˇ˘ĄíĄ°Ą¤ĄóĽşÇÔ¤¬\fBmax\fR˛ó¤ËĂŁ¤·¤ż¸ĺ¤Ď +\fB-m \fImax\fR¤ČĆţÎϤ·¤żľěąçˇ˘ĄíĄ°Ą¤ĄóĽşÇÔ¤¬\fImax\fR˛ó¤ËĂŁ¤·¤ż¸ĺ¤Ď Á´¤Ć¤ÎĄ˘Ą«Ą¦ĄóĄČ¤¬»ČÍŃÉÔÇ˝¤Ë¤Ę¤ëˇŁ -\fB-u login-name\fR¤Č¤Č¤â¤ËÍѤ¤¤ě¤Đ¤ł¤ÎµˇÇ˝¤ň\fBlogin-name\fR¤Ë +\fB-u \fIlogin-name\fR¤Č¤Č¤â¤ËÍѤ¤¤ě¤Đ¤ł¤ÎµˇÇ˝¤ň\fIlogin-name\fR¤Ë ¤Î¤ßşîÍѤµ¤»¤ë»ö¤¬˝ĐÍč¤ëˇŁ -\fBmax\fR¤ÎĂͤň0¤Ë¤ą¤ë¤ČĄíĄ°Ą¤Ąó¤ÎĽşÇÔ˛óżô¤Ë¤ĎŔ©¸Â¤¬Ěµ¤Ż¤Ę¤ëˇŁ +\fImax\fR¤ÎĂͤň0¤Ë¤ą¤ë¤ČĄíĄ°Ą¤Ąó¤ÎĽşÇÔ˛óżô¤Ë¤ĎŔ©¸Â¤¬Ěµ¤Ż¤Ę¤ëˇŁ Ą˘ĄżĄĂĄŻ¤Ë¤č¤ę\fBroot\fR¤¬ĄíĄ°Ą¤ĄóÉÔÇ˝¤Č¤Ę¤ęĄ·ĄąĄĆĄŕ´ÉÍý¤¬ ˝ĐÍč¤Ę¤Ż¤Ę¤Ă¤Ć¤·¤Ţ¤¦»ö¤ňËɤ°°Ů¤Ëˇ˘\fBroot\fR¤ËÂФ·¤Ć¤Ď şÇÂçĄíĄ°Ą¤ĄóĽşÇÔ˛óżô¤Ď¤¤¤Ä¤Ç¤âɬ¤ş0¤Č¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ @@ -81,18 +86,18 @@ faillog \- faillog \fB-p\fRˇ˘\fB-r\fRµÚ¤Ó\fB-m\fR¤ÎłĆĄŞĄ×Ą·ĄçĄó¤Ď\fB-u\fRËô¤Ď\fB-t\fR ¤Î¤¤¤ş¤ě¤ČÁȤ߹ç¤ď¤»¤Ć¤âÄľ¤Á¤Ë˝čÍý¤µ¤ě¤ëˇŁ .SH ·Ůąđ -\fIfaillog\fR¤ĎşÇ¸ĺ¤ËĽşÇÔ¤·¤Ć°ĘÍčĄíĄ°Ą¤Ąó¤ËŔ®¸ů¤·¤Ć¤¤¤Ę¤¤ĄćˇĽĄ¶¤Î¤ß¤ň +\fBfaillog\fR¤ĎşÇ¸ĺ¤ËĽşÇÔ¤·¤Ć°ĘÍčĄíĄ°Ą¤Ąó¤ËŔ®¸ů¤·¤Ć¤¤¤Ę¤¤ĄćˇĽĄ¶¤Î¤ß¤ň É˝Ľ¨¤ą¤ëˇŁ ĄíĄ°Ą¤Ąó¤ËĽşÇÔ¤·¤ż¸ĺ¤ËŔµ¤·¤ŻĄíĄ°Ą¤Ąó˝ĐÍ褿ĄćˇĽĄ¶¤ňÉ˝Ľ¨¤µ¤»¤ë°Ů¤Ë¤Ďˇ˘ \fB-u\fRĄŐĄéĄĂĄ°¤ňÍѤ¤¤Ć¤˝¤ÎĄćˇĽĄ¶¤ňĚŔĽ¨Ĺޤ˻ŘÄꤹ¤ë¤«ˇ˘ \fB-a\fRĄŐĄéĄĂĄ°¤ňÍѤ¤¤ĆÁ´ĄćˇĽĄ¶¤ňÉ˝Ľ¨¤µ¤»¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .PP -Ą·ĄąĄĆĄŕ¤Ë¤č¤Ă¤Ć¤Ďˇ˘/usr/adm¤ÎÂĺ¤ď¤ę¤Ë/var/admËô¤Ď/var/log¤ňÍѤ¤¤Ć¤¤¤ë +Ą·ĄąĄĆĄŕ¤Ë¤č¤Ă¤Ć¤Ďˇ˘/var/log¤ÎÂĺ¤ď¤ę¤Ë/var/admËô¤Ď/usr/adm¤ňÍѤ¤¤Ć¤¤¤ë ¤ł¤Č¤â¤˘¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë -/usr/adm/faillog \- ĄíĄ°Ą¤ĄóĽşÇÔ¤ňµ­Ďż¤ą¤ëĄŐĄˇĄ¤Ąë +/var/log/faillog \- ĄíĄ°Ą¤ĄóĽşÇÔ¤ňµ­Ďż¤ą¤ëĄŐĄˇĄ¤Ąë .SH ´ŘϢąŕĚÜ -login(1), -faillog(4) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1), +.BR faillog (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/gpasswd.1 b/man/ja/gpasswd.1 index 61d7f4e7..cc5f56b7 100644 --- a/man/ja/gpasswd.1 +++ b/man/ja/gpasswd.1 @@ -4,7 +4,7 @@ .\" published by the Free Software Foundation; either version 2 of the .\" License, or (at your option) any later version. .\" -.\" $Id: gpasswd.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: gpasswd.1,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -19,24 +19,30 @@ gpasswd \- /etc/group .B gpasswd \fIgroup\fR .br .B gpasswd --a \fIuser\fR \fIgroup\fR +.B -a +\fIuser\fR \fIgroup\fR .br .B gpasswd --d \fIuser\fR \fIgroup\fR +.B -d +\fIuser\fR \fIgroup\fR .br .B gpasswd --R \fIgroup\fR +.B -R +\fIgroup\fR .br .B gpasswd --r \fIgroup\fR +.B -r +\fIgroup\fR .br .B gpasswd -[ -A \fIuser\fR,... ] -[ -M \fIuser\fR,... ] +.RB [ -A +\fIuser\fR,...] +.RB [ -M +\fIuser\fR,...] \fIgruop\fR .br .SH ŔâĚŔ -.I gpasswd +.B gpasswd ¤Ď/etc/groupĄŐĄˇĄ¤Ąë (µÚ¤Óˇ˘SHADOWGRP¤ňÄęµÁ¤·¤ĆĄłĄóĄŃĄ¤Ąë¤·¤ż»ţ¤Ď/etc/gshadowĄŐĄˇĄ¤Ąë) ¤ň´ÉÍý¤ą¤ë¤Î¤ËÍѤ¤¤é¤ě¤ëˇŁ @@ -51,19 +57,19 @@ gpasswd \- /etc/group ´ÉÍýĽÔ¤Ď\fB-r\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ĆĄ°ĄëˇĽĄ×ĄŃĄąĄďˇĽĄÉ¤ňşď˝ü¤ą¤ë»ö¤¬˝ĐÍč¤ëˇŁ ĄŃĄąĄďˇĽĄÉ¤¬ŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤»ţ¤Ďˇ˘ Ą°ĄëˇĽĄ×¤ÎĄáĄóĄĐˇĽ¤Î¤ß¤¬ -.I newgrp(1) +.B newgrp(1) ¤ňÍѤ¤¤ĆĄ°ĄëˇĽĄ×¤Î°ě°÷¤Č¤Ę¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ ĄŞĄ×Ą·ĄçĄó\fB-R\fR¤ň»ŘÄꤷ¤żľěąç¤Ďˇ˘ .I newgrp(1) ĄłĄŢĄóĄÉ¤ňÍѤ¤¤żĄ°ĄëˇĽĄ×¤Ř¤ÎĄ˘ĄŻĄ»Ąą¤ň˝ĐÍč¤Ę¤Ż¤ą¤ëˇŁ .PP Ą°ĄëˇĽĄ×¤Î´ÉÍýĽÔ¤¬Ą°ĄëˇĽĄ×Ěľ¤Î¤ß¤ň»ŘÄꤷ¤Ć -.I gpasswd +.B gpasswd ĄłĄŢĄóĄÉ¤ňĽÂąÔ¤·¤żľěąç¤Ď ĄŃĄąĄďˇĽĄÉ¤ÎĆţÎϤňµá¤á¤é¤ě¤ëˇŁ ĄŃĄąĄďˇĽĄÉ¤¬ŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ç¤âˇ˘ ĄáĄóĄĐˇĽ¤ĎĄŃĄąĄďˇĽĄÉ¤Ę¤·¤Ç -.I newgrp(1) +.B newgrp(1) ĄłĄŢĄóĄÉ¤ňÍѤ¤¤ë¤ł¤Č¤¬˝ĐÍč¤ë¤¬ˇ˘ ĄáĄóĄĐˇĽ¤Ç¤Ę¤¤żÍ¤ĎĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤ·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ @@ -72,11 +78,8 @@ gpasswd \- /etc/group .br /etc/gshadow \- shadow¤·¤żĄ°ĄëˇĽĄ×ľđĘó .SH ´ŘϢąŕĚÜ -newgrp(1), -groupadd(1), -groupdel(1), -groupmod(1), -grpck(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR newgrp (1), +.BR groupadd (8), +.BR groupdel (8), +.BR groupmod (8), +.BR grpck (8) diff --git a/man/ja/groupadd.8 b/man/ja/groupadd.8 index a96fc4f2..c2344ac8 100644 --- a/man/ja/groupadd.8 +++ b/man/ja/groupadd.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groupadd.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: groupadd.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -41,16 +37,16 @@ groupadd \- ż·¤·¤¤Ą°ĄëˇĽĄ×¤ňşîŔ®¤ą¤ë .SH ˝ńĽ° .B groupadd -[ \fB-g\fI gid \fR[ \fB-o\fR ] ] +[\fB-g\fI gid \fR[\fB-o\fR]] .I group .SH ŔâĚŔ -\fIgroupadd\fRĄłĄŢĄóĄÉ¤ĎĄłĄŢĄóĄÉĄéĄ¤Ąóľĺ¤Ç»ŘÄꤵ¤ě¤żĂÍµÚ¤Ó +\fBgroupadd\fRĄłĄŢĄóĄÉ¤ĎĄłĄŢĄóĄÉĄéĄ¤Ąóľĺ¤Ç»ŘÄꤵ¤ě¤żĂÍµÚ¤Ó Ą·ĄąĄĆĄŕ¤ÎĄÇĄŁĄŐĄ©ĄëĄČĂͤňÍѤ¤¤Ćż·¤·¤¤Ą°ĄëˇĽĄ×¤ňşîŔ®¤ą¤ëˇŁ ż·¤·¤¤Ą°ĄëˇĽĄ×¤ĎɬÍפȤʤ俺ݤ˥·ĄąĄĆĄŕĄŐĄˇĄ¤Ąë¤Ëµ­Ćţ¤µ¤ě¤ëˇŁ -\fIgroupadd\fRĄłĄŢĄóĄÉ¤Ë»ŘÄę¤Ç¤­¤ëĄŞĄ×Ą·ĄçĄó¤ĎĽˇ¤Î¤â¤Î¤Ç¤˘¤ë +\fBgroupadd\fRĄłĄŢĄóĄÉ¤Ë»ŘÄę¤Ç¤­¤ëĄŞĄ×Ą·ĄçĄó¤ĎĽˇ¤Î¤â¤Î¤Ç¤˘¤ë .IP "\fB-g \fIgid\fR" ż·µ¬Ą°ĄëˇĽĄ×¤ÎIDČֹ档 -¤ł¤ÎĂͤϡ˘\fI-o\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤Ę¤¤¸Â¤ę¤Ďˇ˘Âľ¤Č˝ĹĘŁ¤·¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +¤ł¤ÎĂͤϡ˘\fB-o\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤Ę¤¤¸Â¤ę¤Ďˇ˘Âľ¤Č˝ĹĘŁ¤·¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ ¤Ţ¤żˇ˘ČóÉéĂͤǤʤŻ¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ ĄÇĄŁĄŐĄ©ĄëĄČ¤Ďˇ˘99¤č¤ęÂ礭¤Żłî¤ÄÂľ¤ÎÁ´¤Ć¤Î´ű¸Ą°ĄëˇĽĄ×¤ÎID¤č¤ę¤â Â礭¤Ę¤â¤Î¤ÎĂć¤ÇşÇľ®¤Î¤â¤Î¤Ç¤˘¤ëˇŁ @@ -60,8 +56,13 @@ groupadd \- .br /etc/gshadow \- Ą°ĄëˇĽĄ×¤Î°ÂÁ´¤ĘĄ˘Ą«Ą¦ĄóĄČľđĘó .SH ´ŘϢąŕĚÜ -\fBchfn(1), chsh(1), useradd(1M), userdel(1M), usermod(1M), -passwd(1), groupdel(1M), groupmod(1M) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR chfn (1), +.BR chsh (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), +.BR passwd (1), +.BR groupdel (8), +.BR groupmod (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/groupdel.8 b/man/ja/groupdel.8 index 93831b3f..2882483e 100644 --- a/man/ja/groupdel.8 +++ b/man/ja/groupdel.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991 - 1993, John F. Haugh II +.\" Copyright 1991 - 1993, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groupdel.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: groupdel.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -43,7 +39,7 @@ groupdel \- .B groupdel .I group .SH ŔâĚŔ -\fIgroupdel\fRĄłĄŢĄóĄÉ¤Ďˇ˘Ą·ĄąĄĆĄŕ¤ÎĄ˘Ą«Ą¦ĄóĄČĄŐĄˇĄ¤Ąë¤ňĘŃąą¤·ˇ˘ +\fBgroupdel\fRĄłĄŢĄóĄÉ¤Ďˇ˘Ą·ĄąĄĆĄŕ¤ÎĄ˘Ą«Ą¦ĄóĄČĄŐĄˇĄ¤Ąë¤ňĘŃąą¤·ˇ˘ \fIgroup\fR¤Ë°¤ą¤ëÁ´¤Ć¤ÎĄ¨ĄóĄČĄęˇĽ¤ňşď˝ü¤ą¤ëˇŁ »ŘÄꤵ¤ě¤żĄ°ĄëˇĽĄ×¤Ď¸şß¤·¤Ć¤¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .PP @@ -57,8 +53,13 @@ groupdel \- .br /etc/gshadow \- Ą°ĄëˇĽĄ×¤Î°ÂÁ´¤ĘľđĘó .SH ´ŘϢąŕĚÜ -\fBchfn(1), chsh(1), useradd(1M), userdel(1M), usermod(1M), -passwd(1), groupadd(1M), groupmod(1M) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR chfn (1), +.BR chsh (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), +.BR passwd (1), +.BR groupadd (8), +.BR groupmod (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/groupmod.8 b/man/ja/groupmod.8 index c7c980f1..6738ff42 100644 --- a/man/ja/groupmod.8 +++ b/man/ja/groupmod.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,28 +25,28 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groupmod.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: groupmod.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" -.TH GROUPMOD 1M +.TH GROUPMOD 8 .SH ĚľÁ° groupmod \- Ą°ĄëˇĽĄ×¤ËĘŃąą¤ň˛Ă¤¨¤ë .SH ˝ńĽ° .B groupmod -[ \fB-g\fI gid \fR[ \fB-o\fR ] ] -[ \fB-n\fI group_name \fR ] +[\fB-g\fI gid \fR[\fB-o\fR]] +[\fB-n\fI group_name \fR] .I group .SH ŔâĚŔ -\fIgroupmod\fRĄłĄŢĄóĄÉ¤Ďˇ˘ĄłĄŢĄóĄÉĄéĄ¤Ąóľĺ¤Ç»ŘÄꤷ¤żĘŃąą»öąŕ¤Ë¨¤·¤Ć +\fBgroupmod\fRĄłĄŢĄóĄÉ¤Ďˇ˘ĄłĄŢĄóĄÉĄéĄ¤Ąóľĺ¤Ç»ŘÄꤷ¤żĘŃąą»öąŕ¤Ë¨¤·¤Ć Ą·ĄąĄĆĄŕ¤ÎĄ˘Ą«Ą¦ĄóĄČĄŐĄˇĄ¤Ąë¤ň˛ţĘѤą¤ëˇŁ \fIgroupmod\fRĄłĄŢĄóĄÉ¤Ë»ŘÄę¤Ç¤­¤ëĄŞĄ×Ą·ĄçĄó¤ĎĽˇ¤ÎÄ̤ę .IP "\fB-g \fIgid\fR" ĘŃąą¤ňĽő¤±¤ëĄ°ĄëˇĽĄ×¤ÎIDČֹ档 -¤ł¤ÎĂͤϡ˘\fI-o\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ëľěąç°Ęł°¤Ďˇ˘Âľ¤Č˝ĹĘŁ¤·¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +¤ł¤ÎĂͤϡ˘\fB-o\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ëľěąç°Ęł°¤Ďˇ˘Âľ¤Č˝ĹĘŁ¤·¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ ¤Ţ¤żˇ˘ČóÉéĂͤǤʤŻ¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘99¤č¤ęÂ礭¤Żłî¤ÄÂľ¤ÎÁ´¤Ć¤Î´ű¸Ą°ĄëˇĽĄ×¤ÎID¤č¤ę¤â Â礭¤Ę¤â¤Î¤ÎĂć¤ÇşÇľ®¤Î¤â¤Î¤Ç¤˘¤ëˇŁ @@ -63,8 +59,13 @@ groupmod \- .br /etc/gshadow \- Ą°ĄëˇĽĄ×¤Î°ÂÁ´¤ĘľđĘó .SH ´ŘϢąŕĚÜ -\fBchfn(1), chsh(1), useradd(1M), userdel(1M), usermod(1M), -passwd(1), groupadd(1M), groupdel(1M) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR chfn (1), +.BR chsh (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), +.BR passwd (1), +.BR groupadd (8), +.BR groupdel (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/groups.1 b/man/ja/groups.1 new file mode 100644 index 00000000..0bcc22cc --- /dev/null +++ b/man/ja/groups.1 @@ -0,0 +1,60 @@ +.\" 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. +.\" +.\" $Id: groups.1,v 1.1 2001/11/16 17:00:58 ankry Exp $ +.\" +.\" Japanese Version Copyright (c) 2001 Maki KURODA +.\" all right reserved, +.\" Translated Tue Oct 30 11:58:18 JST 2001 +.\" by Maki KURODA +.\" +.TH GROUPS 1 +.SH ĚľÁ° +groups \- ¸˝şß¤ÎĄ°ĄëˇĽĄ× ID Ěľ¤ÎÉ˝Ľ¨ +.SH ˝ńĽ° +.B groups +.RI [ user ] +.SH ŔâĚŔ +.B groups +¤Ď¸˝şß¤ÎĄ°ĄëˇĽĄ× ID Ěľ¤Ţ¤ż¤ĎĂͤňÉ˝Ľ¨¤ą¤ëˇŁ +¤˝¤ÎĂͤ¬ \fI/etc/group\fR ¤ËĹĐĎż¤µ¤ě¤Ć¤¤¤Ę¤±¤ě¤Đˇ˘ +¤˝¤ÎĂͤϿôĂÍĄ°ĄëˇĽĄ× ID ¤Č¤·¤ĆÉ˝Ľ¨¤µ¤ě¤ëˇŁ +\fIuser\fR ĄŞĄ×Ą·ĄçĄóĄŃĄéĄáĄż¤Ď \fIuser\fR ¤¬˝ę°¤ą¤ëĄ°ĄëˇĽĄ×Ěľ¤ňÉ˝Ľ¨¤ą¤ëˇŁ +.SH Ăí°Ő +¶¦Ć±Ą°ĄëˇĽĄ×¤¬ĄµĄÝˇĽĄČ¤µ¤ě¤Ć¤¤¤Ę¤¤Ą·ĄąĄĆĄŕ¤Ď \fI/etc/group\fR ¤Ë +Ęóąđ¤µ¤ě¤Ć¤¤¤ëľđĘó¤ňŔßÄꤹ¤ëˇŁ +ĄćˇĽĄ¶¤Ď¸˝şß¤Î real ¤ä effective Ą°ĄëˇĽĄ× ID ¤ňĘŃąą¤ą¤ë¤ż¤á¤Ë \fBnewgrp\fR ¤Ţ¤ż¤Ď \fBsg\fR ¤ň +»ČÍѤ·¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +.SH ĄŐĄˇĄ¤Ąë +/etc/group \- Ą°ĄëˇĽĄ×ľđĘó +.SH ´ŘϢąŕĚÜ +.BR newgrp (1), +.BR getuid (2), +.BR getgid (2), +.BR getgroups (2) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/grpck.8 b/man/ja/grpck.8 index 5d3f5b32..2eafff55 100644 --- a/man/ja/grpck.8 +++ b/man/ja/grpck.8 @@ -1,4 +1,4 @@ -.\" Copyright 1992 - 1993, John F. Haugh II +.\" Copyright 1992 - 1993, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,21 +25,21 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: grpck.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: grpck.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" -.TH GRPCK 8 +.TH GRPCK 1 .SH ĚľÁ° grpck \- Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤Î´°Á´Ŕ­¤ň¸ˇľÚ¤ą¤ë .SH ˝ńĽ° -\fBgrpck\fR [ \fB-r\fR ] [ \fIgroup\fR \fIshadow\fR ] -.SH DESCRIPTION +\fBgrpck\fR [\fB-r\fR] [\fIgroup\fR \fIshadow\fR] +.SH ŔâĚŔ \fBgrpck\fRĄłĄŢĄóĄÉ¤ĎĄ·ĄąĄĆĄŕ¤ÎǧľÚľđĘ󤬴°Á´¤Ę¤â¤Î¤«¤É¤¦¤«¤Î¸ˇľÚ¤ňąÔ¤¦ˇŁ -\fB/etc/group\fRµÚ¤Ó\fB/etc/gshadow\fRĄŐĄˇĄ¤ĄëĂć¤ÎÁ´¤Ć¤ÎĄ¨ĄóĄČĄęˇĽ¤ËÂФ·¤Ćˇ˘ +\fI/etc/group\fRµÚ¤Ó\fI/etc/gshadow\fRĄŐĄˇĄ¤ĄëĂć¤ÎÁ´¤Ć¤ÎĄ¨ĄóĄČĄęˇĽ¤ËÂФ·¤Ćˇ˘ ˝ńĽ°¤¬Ŕµ¤·¤¤¤«ˇ˘µÚ¤ÓłĆÍó¤Ëµ­¤µ¤ě¤Ć¤¤¤ëĄÇˇĽĄż¤ĎÍ­¸ú¤Ę¤â¤Î¤«¤É¤¦¤«¤Î¸ˇľÚ¤¬ ąÔ¤Ę¤ď¤ě¤ëˇŁ ˝ńĽ°¤¬Ŕµ¤·¤Ż¤Ę¤«¤Ă¤ż¤ęÄűŔµÉÔÇ˝¤Ę¸í¤ę¤ň´Ţ¤ŕĄ¨ĄóĄČĄęˇĽ¤Ďşď˝ü¤ňÂĄ¤µ¤ě¤ëˇŁ @@ -68,13 +64,13 @@ grpck \- Âľ¤ÎÁ´¤Ć¤ÎĄ¨ĄéˇĽ¤ËÂФ·¤Ć¤Ď·Ůąđ¤¬¤Ę¤µ¤ě¤ë¤Î¤ß¤Ç¤˘¤ęˇ˘¤˝¤Îľěąç¤Ď ¸í¤ę¤ňÄűŔµ¤ą¤ë¤ż¤á¤Ë\fBgroupmod\fRĄłĄŢĄóĄÉ¤ňĽÂąÔ¤ą¤ë¤č¤¦´«¤á¤é¤ě¤ëˇŁ .P -\fB/etc/group\fRĄŐĄˇĄ¤Ąë¤ËşîÍѤą¤ëĄłĄŢĄóĄÉ¤Ďˇ˘˛ő¤ě¤ż¤â¤·¤Ż¤Ď +\fI/etc/group\fRĄŐĄˇĄ¤Ąë¤ËşîÍѤą¤ëĄłĄŢĄóĄÉ¤Ďˇ˘˛ő¤ě¤ż¤â¤·¤Ż¤Ď ˝ĹĘŁ¤·¤żĄ¨ĄóĄČĄęˇĽ¤ňĘŃąą¤ą¤ë¤ł¤Č¤Ď˝ĐÍč¤Ę¤¤ˇŁ ¤˝¤Î¤č¤¦¤ĘşÝ¤Ë¸í¤ę¤Î¤˘¤ëĄ¨ĄóĄČĄęˇĽ¤ňşď˝ü¤ą¤ë¤ż¤á¤Ë¤Ď \fBgrpck\fR¤ňÍѤ¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .SH ĄŞĄ×Ą·ĄçĄó -ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘\fBgrpck\fR¤Ď\fB/etc/group\fRĄŐĄˇĄ¤ĄëµÚ¤Ó -\fB/etc/gshadow\fR¤ËşîÍѤą¤ëˇŁ +ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘\fBgrpck\fR¤Ď\fI/etc/group\fRĄŐĄˇĄ¤ĄëµÚ¤Ó +\fI/etc/gshadow\fR¤ËşîÍѤą¤ëˇŁ \fIgroup\fRµÚ¤Ó\fIshadow\fRĄŃĄéĄáˇĽĄż¤ňÍѤ¤¤ĆĘ̤ΥեˇĄ¤Ąë¤ňÁŞÂň¤ą¤ë »ö¤â¤Ç¤­¤ëˇŁ ˛Ă¤¨¤Ćˇ˘\fB-r\fRĄŐĄéĄĂĄ°¤ň»ŘÄꤹ¤ë¤ł¤Č¤Ë¤č¤ęˇ˘ @@ -88,9 +84,12 @@ grpck \- .br /etc/passwd \- ĄćˇĽĄ¶¤Ë´Ř¤ą¤ëľđĘó .SH ´ŘϢąŕĚÜ -groupmod(1), group(4), passwd(4), shadow(4) +.BR groupmod (8), +.BR group (5), +.BR passwd (5), +.BR shadow (5) .SH ĘÖ¤ęĂÍ -\fIgrpck\fRĄłĄŢĄóĄÉ¤Ď°Ę˛Ľ¤ÎĚá¤ęĂͤňĘÖ¤·¤Ć˝ŞÎ»¤ą¤ë: +\fBgrpck\fRĄłĄŢĄóĄÉ¤Ď°Ę˛Ľ¤ÎĚá¤ęĂͤňĘÖ¤·¤Ć˝ŞÎ»¤ą¤ë: .IP 0 5 Ŕ®¸ů .IP 1 5 @@ -103,6 +102,5 @@ groupmod(1), group(4), passwd(4), shadow(4) Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ę¤¤ .IP 5 5 Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ę¤¤ -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/grpconv.8 b/man/ja/grpconv.8 new file mode 100644 index 00000000..e0a2ab16 --- /dev/null +++ b/man/ja/grpconv.8 @@ -0,0 +1 @@ +.so pwconv.8 diff --git a/man/ja/grpunconv.8 b/man/ja/grpunconv.8 new file mode 100644 index 00000000..e0a2ab16 --- /dev/null +++ b/man/ja/grpunconv.8 @@ -0,0 +1 @@ +.so pwconv.8 diff --git a/man/ja/id.1 b/man/ja/id.1 new file mode 100644 index 00000000..7761abbe --- /dev/null +++ b/man/ja/id.1 @@ -0,0 +1,57 @@ +.\" 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. +.\" +.\" $Id: id.1,v 1.1 2001/11/16 17:00:53 ankry Exp $ +.\" +.\" Japanese Version Copyright (c) 2000 ISHIKAWA Keisuke +.\" all rights reserved. +.\" Translated Thu Nov 9 23:17:10 JST 2000 +.\" by ISHIKAWA Keisuke +.\" +.TH ID 1 +.SH ĚľÁ° +id \- ¸˝şß¤ÎĄćˇĽĄ¶ ID Ěľ¤ČĄ°ĄëˇĽĄ× ID Ěľ¤ňÉ˝Ľ¨¤ą¤ë +.SH ˝ńĽ° +.B id +.RB [ -a ] +.SH ŔâĚŔ +.B id +¤Ďˇ˘¸˝şß¤ÎĽÂĄćˇĽĄ¶ IDˇ˘ĽÂ¸úĄćˇĽĄ¶ IDˇ˘ĽÂĄ°ĄëˇĽĄ× IDˇ˘ĽÂ¸úĄ°ĄëˇĽĄ× ID ¤ÎĚľÁ°¤Ţ¤ż¤ĎĂͤňÉ˝Ľ¨¤ą¤ëˇŁ +\fI/etc/passwd\fR ¤Ëˇ˘¤˝¤ÎĂͤËÂбţ¤ą¤ëĄ¨ĄóĄČĄę¤¬Â¸şß¤·¤Ę¤¤ľěąç¤Ďˇ˘Âбţ¤ą¤ëĚľÁ°¤ĎÉ˝Ľ¨¤µ¤ě¤ş¤ËĂͤŔ¤±¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ +\fB-a\fR ĄŐĄéĄ° (ĄŞĄ×Ą·ĄçĄó) ¤ň»ŘÄꤹ¤ë¤Čˇ˘ĄćˇĽĄ¶¤ňĘŁżô¤ÎĄ°ĄëˇĽĄ×¤ÎĄáĄóĄĐˇĽ¤Ë¤Ç¤­¤ëĄ·ĄąĄĆĄŕ¤Ç¤ÎĄ°ĄëˇĽĄ×ˇ¦Ą»ĄĂĄČ¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ +.SH ĄŐĄˇĄ¤Ąë +/etc/passwd \- ĄćˇĽĄ¶ˇĽĄ˘Ą«Ą¦ĄóĄČľđĘó +.br +/etc/group \- Ą°ĄëˇĽĄ×ľđĘó +.SH ´ŘϢąŕĚÜ +.BR getuid (2), +.BR getgid (2), +.BR getgroups (2) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + + diff --git a/man/ja/lastlog.8 b/man/ja/lastlog.8 index ac01d0ef..46d31a31 100644 --- a/man/ja/lastlog.8 +++ b/man/ja/lastlog.8 @@ -26,13 +26,14 @@ .\" SUCH DAMAGE. .\" .\" @(#)lastlog.8 3.3 08:24:58 29 Sep 1993 (National Guard Release) -.\" $Id: lastlog.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: lastlog.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" 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 +.\" Updated Fri Jan 12 2001 by Kentaro Shirakata .\" .TH LASTLOG 8 .SH ĚľÁ° @@ -40,15 +41,15 @@ lastlog \- lastlog .SH ˝ńĽ° .B lastlog .RB [ \-u -.IR uid ] +.IR login-name ] .RB [ \-t .IR days ] .SH ŔâĚŔ \fBlastlog\fR ¤ĎşÇ˝ŞĄíĄ°Ą¤Ąó¤Îµ­ĎżĄŐĄˇĄ¤Ąë -\fI/usr/adm/lastlog\fR ¤ÎĆâÍƤňŔ°·Á¤·¤ĆÉ˝Ľ¨¤ą¤ëˇŁ +\fI/var/log/lastlog\fR ¤ÎĆâÍƤňŔ°·Á¤·¤ĆÉ˝Ľ¨¤ą¤ëˇŁ \fBlogin-name\fR, \fBport\fR, \fBlast login time\fR ¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ď (ĄŐĄéĄ°¤ň»ŘÄꤷ¤Ę¤«¤Ă¤żľěąç¤Ď) lastlog Ą¨ĄóĄČĄę¤ň -UID ˝ç¤ËÉ˝Ľ¨¤ą¤ëˇŁ +UID ¤ÎżôĂͤǥ˝ˇĽĄČ¤·¤ĆÉ˝Ľ¨¤ą¤ëˇŁ \fB\-u \fIlogin-name\fR ĄŐĄéĄ°¤ň»ŘÄꤹ¤ë¤Č \fIlogin-name\fR ¤Îµ­Ďż¤Ŕ¤±¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ \fB\-t \fIdays\fR ¤ČĆţÎϤą¤ë¤ČşÇ¶á @@ -60,15 +61,16 @@ UID \fB"**Never logged in**"\fR ¤Č¤¤¤¦ĄáĄĂĄ»ˇĽĄ¸¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë -/usr/adm/lastlog \- lastlog µ­ĎżĄŐĄˇĄ¤Ąë +/var/log/lastlog \- lastlog µ­ĎżĄŐĄˇĄ¤Ąë .SH ·Ůąđ -uid ČÖąć¤ËÂ礭¤Ę¤Č¤Ó¤¬¤˘¤ë¤Čˇ˘ +uid ČÖąć¤ËÂ礭¤ĘČô¤Ó¤¬¤˘¤ë¤Čˇ˘ lastlog Ą×ĄíĄ°ĄéĄŕ¤ĎÄą»ţ´ÖĄąĄŻĄęˇĽĄó¤Ë˛ż¤â˝ĐÎϤ·¤Ę¤¤¤Ţ¤Ţ ĽÂąÔ¤ňÂł¤±¤ë (¤Ä¤Ţ¤ę mmdf=800 ¤ÇşÇ¸ĺ¤Î uid=170¤Îľěąçˇ˘ uid 171-799 ¤Î´ÖĄ×ĄíĄ°ĄéĄŕ¤Ď˛ż¤â˝ĐÎϤ·¤Ę¤¤¤Î¤Çˇ˘ ĄĎĄóĄ°¤·¤ż¤č¤¦¤Ë¸«¤¨¤ë)ˇŁ .SH ĂřĽÔ -Julianne Frances Haugh (jfh@tab.com) +Julianne Frances Haugh (jockgrrl@ix.netcom.com) .br Phillip Street + diff --git a/man/ja/limits.5 b/man/ja/limits.5 new file mode 100644 index 00000000..06342315 --- /dev/null +++ b/man/ja/limits.5 @@ -0,0 +1,80 @@ +.\" +.\" Japanese Version Copyright (c) 2001 Maki KURODA +.\" all right reserved, +.\" Translated Mon Nov 5 18:12:16 JST 2001 +.\" by Maki KURODA +.\" +.TH LIMITS 5 +.SH ĚľÁ° +limits \- »ń¸»Ŕ©¸Â¤ÎÄęµÁ +.SH ŔâĚŔ +.I limits +ĄŐĄˇĄ¤Ąë (ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ď /etc/limits ˇ˘config.h ¤ËÄęµÁ¤µ¤ě¤Ć¤¤¤ë LIMITS_FILE) ¤Ď +¶ŻŔ©¤·¤ż¤¤»ń¸»¤ÎŔ©¸Â¤ňµ­˝Ň¤ą¤ëˇŁ +¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ď root ¤¬˝ęÍ­¤·ˇ˘ root Ą˘Ą«Ą¦ĄóĄČ¤Î¤ßĆɤ߹ţ¤ß˛ÄÇ˝¤Ç¤˘¤ë¤Ů¤­¤Ç¤˘¤ëˇĄ +.PP +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ď root ¤ËÂФą¤ëłä¤ęĹö¤Ć¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁĽÂşÝˇ˘root ¤ČƱĹů¤ÎĄ˘Ą«Ą¦ĄóĄČ ( UID 0 ¤ňČ÷¤¨¤żĄ˘Ą«Ą¦ĄóĄČ) +¤Ř¤Î¤ł¤ÎĽęÂł¤­¤Ë¤č¤Ă¤ĆŔ©¸Â¤ą¤ëĘýˡ¤Ď¤Ę¤¤ˇŁ +.PP +łĆąÔ¤Ë¤Ď°Ę˛Ľ¤Î·ÁĽ°¤ÇĄćˇĽĄ¶¤ËÂФą¤ëŔ©¸Â¤ňµ­˝Ň¤ą¤ëˇ§ +.sp +.I user LIMITS_STRING +.PP +\fBLIMITS_STRING\fP ¤Ď»ń¸»Ŕ©¸Â¤ÎÄęµÁ¤ň¤Ä¤Ę¤˛¤żĘ¸»úÎó¤Ç¤˘¤ëˇŁ +łĆŔ©¸Â¤ÎÄęµÁ¤Ďˇ˘1 ʸ»ú¤ÎĽ±Ę̻Ҥȡ˘¤˝¤ě¤ËÂł¤Żżô»ú¤ÇÉ˝¤·¤żŔ©¸ÂĂͤǹ˝Ŕ®¤µ¤ě¤ëˇŁ +.PP +Í­¸ú¤ĘĽ±Ę̻ҤϰʲĽ¤Ç¤˘¤ëˇ§ +A: şÇÂ祢ĄÉĄěĄąĄąĄÚˇĽĄą (KB) +.br +C: şÇÂ祳Ą˘ĄŐĄˇĄ¤ĄëĄµĄ¤Ąş (KB) +.br +D: şÇÂçĄÇˇĽĄżĄµĄ¤Ąş (KB) +.br +F: şÇÂçĄŐĄˇĄ¤ĄëĄµĄ¤Ąş (KB) +.br +M: ĄáĄâĄęľĺ¤ËłÎĘݤµ¤ě¤ëşÇÂ祢ĄÉĄěĄąĄąĄÚˇĽĄą (KB) +.br +N: şÇÂ祪ˇĽĄ×ĄóĄŐĄˇĄ¤Ąëżô +.br +R: şÇÂçĄěĄ¸ĄÇĄóĄČŔßÄꥵĄ¤Ąş (KB) +.br +S: şÇÂ祹ĄżĄĂĄŻĄµĄ¤Ąş (KB) +.br +T: şÇÂç CPU »ţ´Ö (MIN) +.br +U: şÇÂçĄ×ĄíĄ»Ąążô +.br +K: \fBumask\fR(2) ¤Ë¤č¤ëŔßÄꤵ¤ě¤ëˇ˘ĄŐĄˇĄ¤ĄëşîŔ®»ţ¤Î mask +.br +L: ĄćˇĽĄ¶¤ÎşÇÂçĄíĄ°Ą¤Ąóżô +.br +P: \fBsetpriority\fR(2) ¤Ë¤č¤Ă¤ĆŔßÄꤵ¤ě¤ëĄ×ĄíĄ»ĄąÍĄŔčĹŮ +.PP +Î㤨¤Đˇ˘\fIL2D2048N5\fP ¤ĎÍ­¸ú¤Ę \fBLIMITS_STRING\fP ¤Ç¤˘¤ëˇŁĆɤߤ䤹¤µ¤ňąÍ¤¨¤Ćˇ˘ +2 ČÖĚܤÎÎă¤Î¤č¤¦¤Ę˝ń¤­Ęý¤ň¤ą¤ë¤ł¤Č¤â¤Ç¤­¤ëˇ§ +.sp +username L2D2048N5 +.br +username L2 D2048 N5 +.PP +\fIusername\fP ¤Î¸ĺ¤ÎąÔ¤Î»Ä¤ę¤¬Ŕ©¸Â¤µ¤ě¤żĘ¸»úÎó¤Č¤·¤Ć°·¤ď¤ě¤ë¤Î¤Çˇ˘ +ĄłĄáĄóĄČ¤¬µö˛Ä¤µ¤ě¤Ę¤¤¤ł¤Č¤ËĂí°Ő¤ą¤ë¤ł¤ČˇŁ +̵¸ú¤ĘŔ©¸Âʸ»úÎó¤Ďˇ˘login Ą×ĄíĄ°ĄéĄŕ¤Ë¤č¤Ă¤ĆµńŔ䤵¤ě¤ë(̵»ë¤µ¤ě¤ë)¤Ŕ¤í¤¦ˇŁ +.PP +ĄÇĄŐĄ©ĄëĄČ¤Î»ŘÄę¤ĎĄćˇĽĄ¶Ěľ "\fB*\fP" ¤Ë¤č¤Ă¤ĆÉ˝Ľ¨¤µ¤ě¤ëˇŁ +\fBLIMITS_FILE\fP ¤ËÂżżô¤Î \fIdefault\fP ¤ňĹĐĎż¤·¤Ć¤¤¤ëľěąçˇ˘ +şÇ¸ĺ¤Î¤â¤Î¤¬ĄÇĄŐĄ©ĄëĄČ»ŘÄę¤Č¤·¤Ć»ČÍѤµ¤ě¤ëˇŁ +.PP +¤˘¤ëĄćˇĽĄ¶¤Ř¤ÎŔ©¸Â¤ň´°Á´¤Ë̵¸ú¤Ë¤ą¤ë¤Ë¤Ďˇ˘Ą·ĄóĄ°ĄëĄŔĄĂĄ·Ąĺ "\fB-\fP" ¤ň»ČÍѤą¤ëˇŁ +.PP +¤µ¤é¤Ëˇ˘Á´¤Ć¤ÎŔ©¸Â¤ÎŔßÄę¤ĎˇÖĄíĄ°Ą¤ĄóËčˇ×¤ÇŔßÄꤵ¤ě¤Ć¤¤¤ë¤ł¤Č¤ËĂí°Ő¤ą¤ë¤ł¤ČˇŁ +¤˝¤ě¤é¤ĎĄ°ĄíˇĽĄĐĄë¤Ç¤Ď¤Ę¤Ż¤Ţ¤żˇ˘±Ęµ×¤Ç¤Ď¤Ę¤¤ˇŁĄ°ĄíˇĽĄĐĄë¤ĘŔ©¸Â¤¬˛ÄÇ˝¤Ë¤Ę¤ë¤Č¤­¤¬ +Íč¤ë¤Ŕ¤í¤¦¤¬ˇ˘şŁ¤Î¤Č¤ł¤í¤ĎˇÖ¤·¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤¤ł¤Čˇ×¤Ç¤˘¤ëˇŁ;) +.SH ĄŐĄˇĄ¤Ąë +/etc/limits +.SH ´ŘϢąŕĚÜ +.BR login (1), +.BR setpriority (2), +.BR setrlimit (2) +.SH ĂřĽÔ +Cristian Gafton (gafton@sorosis.ro) diff --git a/man/ja/login.1 b/man/ja/login.1 index 0e7f1202..58db9804 100644 --- a/man/ja/login.1 +++ b/man/ja/login.1 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1994, John F. Haugh II +.\" Copyright 1989 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,67 +25,72 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: login.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: login.1,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka +.\" Updated Fri Jan 12 04:05:44 JST 2001 +.\" by Kentaro Shirakata .\" .TH LOGIN 1 .SH ĚľÁ° login \- Ą·ĄąĄĆĄŕľĺ¤ËĄ»ĄĂĄ·ĄçĄó¤ňł«¤Ż .SH ˝ńĽ° -.B login -[ username [ environmental-variables ] ] +\fBlogin\fR [\fB-p\fR] [\fIusername\fR] [\fIENV=VAR ...\fR] +.br +\fBlogin\fR [\fB-p\fR] [\fB-h\fR \fIhost\fR] [\fB-f\fR \fIusername\fR] +.br +\fBlogin\fR [\fB-p\fR] \fB-r\fR \fIhost\fR .SH ŔâĚŔ -.I login +.B login ¤ĎĄ·ĄąĄĆĄŕ¤Ëż·¤ż¤ËĄ»ĄĂĄ·ĄçĄó¤ňł«¤Ż¤ż¤á¤ËÍѤ¤¤é¤ě¤ëˇŁ ÄĚľď¤Ďˇ˘ĄćˇĽĄ¶¤ÎĂĽËö¤ËÉ˝Ľ¨¤µ¤ě¤ë -.B login: -¤Č¤¤¤¦Ą×ĄíĄóĄ×ĄČ¤Ë±ţ¤¨¤ë»ö¤Ë¤č¤Ă¤ĆĽ«Ć°Ĺޤ˵ŻĆ°¤µ¤ě¤ëˇŁ -.I login +.I login: +¤Č¤¤¤¦Ą×ĄíĄóĄ×ĄČ¤Ë±ţ¤¸¤ë»ö¤Ë¤č¤Ă¤ĆĽ«Ć°Ĺޤ˵ŻĆ°¤µ¤ě¤ëˇŁ +.B login ¤ĎĄ·Ą§Ąë¤Ë¤Î¤ß¸ÂÄꤵ¤ě¤Ć¤Ş¤ęˇ˘ĄµĄÖĄ×ĄíĄ»Ąą¤Č¤·¤ĆµŻĆ°¤ą¤ë¤ł¤Č¤Ď˝ĐÍč¤Ę¤¤ˇŁ ŵ·żĹŞ¤Ë¤Ďˇ˘Ą·Ą§Ąë¤Ď -.I login +.B login ¤ň \fBexec login\fR¤Č¸«Đö¤ą¤Î¤Çˇ˘ĄćˇĽĄ¶¤Ď¸˝şß¤ÎĄ·Ą§Ąë¤«¤éČ´¤±¤ë¤ł¤Č¤Ë¤Ę¤ëˇŁ -ĄíĄ°Ą¤ĄóĄ·Ą§Ąë°Ęł°¤«¤é\fIlogin\fR¤ňµŻĆ°¤·¤č¤¦¤Č¤ą¤ë¤Čˇ˘Ą¨ĄéˇĽĄáĄĂĄ»ˇĽĄ¸¤¬ +ĄíĄ°Ą¤ĄóĄ·Ą§Ąë°Ęł°¤«¤é\fBlogin\fR¤ňµŻĆ°¤·¤č¤¦¤Č¤ą¤ë¤Čˇ˘Ą¨ĄéˇĽĄáĄĂĄ»ˇĽĄ¸¤¬ É˝Ľ¨¤µ¤ě¤ëˇŁ .PP -\fBlogin:\fRĄ×ĄíĄóĄ×ĄČ¤«¤éµŻĆ°¤·¤żşÝ¤Ďˇ˘ĄćˇĽĄ¶Ěľ¤ËÂł¤¤¤Ć´Ä¶­ĘŃżô¤ňĆţÎĎ +\fIlogin:\fRĄ×ĄíĄóĄ×ĄČ¤«¤éµŻĆ°¤·¤żşÝ¤Ďˇ˘ĄćˇĽĄ¶Ěľ¤ËÂł¤¤¤Ć´Ä¶­ĘŃżô¤ňĆţÎĎ ¤ą¤ë»ö¤â¤Ç¤­¤ëˇŁ ¤˝¤ě¤é¤ňĆţÎϤą¤ëľěąç¤Ď\fBNAME=VALUE\fR¤Č¤¤¤¦˝ńĽ°¤ÇąÔ¤¦ˇŁ ¤ł¤ÎĘýˡ¤ÇÁ´¤Ć¤ÎĘŃżô¤ňŔßÄę¤Ç¤­¤ë¤ď¤±¤Ç¤Ď¤Ę¤¤ˇŁ -ŔßÄę¤Ç¤­¤Ę¤¤¤â¤Î¤ÎÂĺÉ˝Îă¤Č¤·¤Ćˇ˘\fBPATH\fRˇ˘\fBHOME\fRµÚ¤Ó\fBSHELL\fR¤¬ +ŔßÄę¤Ç¤­¤Ę¤¤¤â¤Î¤ÎÂĺÉ˝Îă¤Č¤·¤Ćˇ˘\fBPATH\fR, \fBHOME\fR, \fBSHELL\fR¤¬ ¤˘¤ëˇŁ ˛Ă¤¨¤Ćˇ˘ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤¬\fB/bin/sh\fR¤Îľěąç¤Ď\fBIFS\fR¤ÎŔßÄę¤â ąÔ¤¦»ö¤¬˝ĐÍč¤Ę¤¤ˇŁ .PP Ľˇ¤¤¤Çˇ˘É¬Íפʤé¤Đˇ˘ĄŃĄąĄďˇĽĄÉ¤ÎĆţÎϤňÂĄ¤µ¤ě¤ëˇŁ ĄŃĄąĄďˇĽĄÉ¤ňĚŔ¤«¤·¤Ć¤·¤Ţ¤ď¤Ę¤¤¤ż¤á¤Ëˇ˘Ą¨ĄłˇĽ¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁ -żô˛ó°ĘľĺĄŃĄąĄďˇĽĄÉĆţÎϤ˼şÇÔ¤ą¤ë¤Č\fIlogin\fR¤Ď˝ŞÎ»¤·ÄĚż®¤ÎŔÜÂł¤Ď +żô˛ó°ĘľĺĄŃĄąĄďˇĽĄÉĆţÎϤ˼şÇÔ¤ą¤ë¤Č\fBlogin\fR¤Ď˝ŞÎ»¤·ÄĚż®¤ÎŔÜÂł¤Ď ŔÚĂǤµ¤ě¤Ć¤·¤Ţ¤¦ˇŁ .PP Ą˘Ą«Ą¦ĄóĄČ¤ËÂФ·¤ĆĄŃĄąĄďˇĽĄÉ¤ÎÍ­¸ú´ü¸Â¤¬ŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ Ŕč¤ËżĘ¤ŕÁ°¤Ëż·¤·¤¤ĄŃĄąĄďˇĽĄÉ¤ÎŔßÄę¤ňÂĄ¤µ¤ě¤ë¤ł¤Č¤â¤˘¤ëˇŁ Ą»ĄĂĄ·ĄçĄó¤ňÂł¤±¤ë¤ż¤á¤Ë¤Ď¸Ĺ¤¤ĄŃĄąĄďˇĽĄÉµÚ¤Óż·¤·¤¤ĄŃĄąĄďˇĽĄÉ¤ňĆţÎĎ ¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -ľÜ¤·¤¤ľđĘó¤Ď\fIpasswd(1)\fR¤ň»˛ľČ¤»¤čˇŁ +ľÜ¤·¤¤ľđĘó¤Ď\fBpasswd\fR (1)¤ň»˛ľČ¤»¤čˇŁ .PP ĄíĄ°Ą¤Ąó¤ËŔ®¸ů¤ą¤ë¤Čˇ˘Ą·ĄąĄĆĄŕ¤Ë´Ř¤ą¤ëľđĘó¤äĄáĄ¤Ąë¤Î̵ͭ¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ -ĄíĄ°Ą¤ĄóĄÇĄŁĄěĄŻĄČĄę¤ËÄą¤µ0¤ÎĄŐĄˇĄ¤Ąë\fI.hushlogin\fR¤ňşî¤Ă¤Ć¤Ş¤Ż¤ł¤Č¤Çˇ˘ +ĄíĄ°Ą¤ĄóĄÇĄŁĄěĄŻĄČĄę¤ËÄą¤µ 0 ¤ÎĄŐĄˇĄ¤Ąë\fI.hushlogin\fR¤ňşî¤Ă¤Ć¤Ş¤Ż¤ł¤Č¤Çˇ˘ Ą·ĄąĄĆĄŕ¤ÎĄáĄĂĄ»ˇĽĄ¸ĄŐĄˇĄ¤Ąëˇ˘Â¨¤Á\fI/etc/motd\fR¤¬É˝Ľ¨¤µ¤ě¤Ę¤Ż¤ą¤ë¤ł¤Č ¤â˝ĐÍč¤ëˇŁ ĄáĄ¤Ąë¤Ë´Ř¤ą¤ëĄáĄĂĄ»ˇĽĄ¸¤Č¤·¤Ć¤Ďˇ˘ĄáĄ¤ĄëĄÜĄĂĄŻĄą¤ÎľőÂ֤ˤč¤Ă¤Ć -"\fIYou have new mail.\fR"ˇ˘ -"\fIYou have mail.\fR"ˇ˘¤â¤·¤Ż¤Ď "\fINo Mail.\fR"¤Î¤¤¤ş¤ě¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ +"\fBYou have new mail.\fR", +"\fBYou have mail.\fR", "\fBNo Mail.\fR"¤Î¤¤¤ş¤ě¤¬É˝Ľ¨¤µ¤ě¤ëˇŁ .PP ĄćˇĽĄ¶µÚ¤ÓĄ°ĄëˇĽĄ×¤ÎID¤Ď\fI/etc/passwd\fRĄŐĄˇĄ¤ĄëĂć¤Ëµ­şÜ¤µ¤ě¤Ć¤¤¤ëĂÍ ¤Ë¤č¤Ă¤ĆŔßÄꤵ¤ě¤ëˇŁ -\fB$HOME\fRˇ˘\fB$SHELL\fRˇ˘\fB$PATH\fRˇ˘\fB$LOGNAME\fRµÚ¤Ó\fB$MAIL\fR¤ÎĂÍ +\fB$HOME\fR, \fB$SHELL\fR, \fB$PATH\fR, \fB$LOGNAME\fR, \fB$MAIL\fR¤ÎĂÍ ¤ĎĄŃĄąĄďˇĽĄÉĄ¨ĄóĄČĄęˇĽĂć¤ÎÂбţ¤ą¤ëÍó¤Ëµ­¤µ¤ě¤żĂͤˤč¤Ă¤ĆŔßÄꤵ¤ě¤ëˇŁ -ulimitˇ˘umaskµÚ¤ÓniceĂͤňGECOSÍó¤ÎĄ¨ĄóĄČĄęˇĽ¤Ë¤č¤Ă¤ĆŔßÄꤹ¤ë¤ł¤Č¤â¤Ç¤­¤ëˇŁ +ulimit, umask, niceĂͤň GECOS Íó¤ÎĄ¨ĄóĄČĄęˇĽ¤Ë¤č¤Ă¤ĆŔßÄꤹ¤ë¤ł¤Č¤â¤Ç¤­¤ëˇŁ .PP Ą¤ĄóĄąĄČĄěˇĽĄ·ĄçĄó¤Ë¤č¤Ă¤Ć¤Ďˇ˘ ttyĄÇĄĐĄ¤Ąą¤ÎĂĽËö¤ÎĽďÎŕ¤Ë¤˘¤ď¤»¤Ćˇ˘ @@ -98,19 +99,40 @@ tty .PP ĄłĄŢĄóĄÉĄ¤ĄóĄżĄ×ĄęĄż¤Î˝é´ü˛˝ĄąĄŻĄęĄ×ĄČ¤¬ĽÂąÔ¤µ¤ě¤ë¤ł¤Č¤â¤˘¤ëˇŁ ¤ł¤ÎµˇÇ˝¤Ë¤Ä¤¤¤Ć¤ÎľÜ¤·¤¤ľđĘó¤ĎŬĹö¤ĘĄŢĄËĄĺĄ˘ĄëĄ»ĄŻĄ·ĄçĄó¤ň»˛ľČ¤Î¤ł¤ČˇŁ +.PP +ĄµĄÖĄ·ĄąĄĆĄŕĄíĄ°Ą¤Ąó¤ĎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ÎşÇ˝é¤Îʸ»ú¤Č¤·¤Ć +"*" ¤ňĂÖ¤Ż¤ł¤Č¤Ç»ŘÄꤹ¤ëˇŁ +Íż¤¨¤é¤ě¤żĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤ĎĄćˇĽĄ¶¤¬ĽÂşÝ¤ËĄíĄ°Ą¤Ąó¤ą¤ë +ż·¤·¤¤ĄŐĄˇĄ¤ĄëĄ·ĄąĄĆĄŕ¤ÎĄëˇĽĄČ¤Č¤·¤Ć°·¤ď¤ě¤ëˇŁ +.SH ĄŞĄ×Ą·ĄçĄó +.TP +.B -p +´Ä¶­¤ňĘݸ¤ą¤ëˇŁ +.TP +.B -f +ĄćˇĽĄ¶¤Ď»öÁ°Ç§ľÚ¤µ¤ě¤Ć¤¤¤ë¤â¤Î¤Č¤·¤Ćˇ˘Ç§ľÚĆ°şî¤ňąÔ¤Ę¤ď¤Ę¤¤ˇŁ +.TP +.B -h +¤ł¤ÎĄíĄ°Ą¤Ąó¤Î¤ż¤á¤ÎĄęĄâˇĽĄČĄŰĄąĄČ¤ÎĚľÁ°ˇŁ +.TP +.B -r +rlogin ¤Î¤ż¤á¤ÎĽ«Ć°ĄíĄ°Ą¤ĄóĄ×ĄíĄČĄłĄë¤ňĽÂąÔ¤ą¤ëˇŁ +.PP +\fB-r\fP, \fB-h\fP, \fB-f\fP ĄŞĄ×Ą·ĄçĄó¤Ď \fBlogin\fP ¤¬ root ¤Č¤·¤ĆµŻĆ°¤µ¤ě¤ż +ľěąç¤Ë¤Î¤ßÍѤ¤¤é¤ě¤ëˇŁ .SH ·Ůąđ .PP -¤ł¤ÎČǤÎ\fIlogin\fR¤Ë¤ĎÂż¤Ż¤ÎĄłĄóĄŃĄ¤Ąë»ţĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ë¤¬ˇ˘ +¤ł¤ÎČǤÎ\fBlogin\fR¤Ë¤ĎÂż¤Ż¤ÎĄłĄóĄŃĄ¤Ąë»ţĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ë¤¬ˇ˘ ĄµĄ¤ĄČ¤Ë¤č¤Ă¤Ć¤Ďˇ˘¤˝¤Î¤¦¤Á¤Î¤¤¤Ż¤Ä¤«¤·¤«»Č¤ď¤ě¤Ć¤¤¤Ę¤¤¤ł¤Č¤â¤˘¤ëˇŁ .PP Ą·ĄąĄĆĄŕ¤ÎŔßÄę¤Î°ă¤¤¤Ë¤č¤Ă¤Ćľĺµ­ĄŐĄˇĄ¤Ąë¤Îşß˝č¤Ď¤«¤ď¤ëˇŁ -.SH shadowĄíĄ°Ą¤ĄóĄ×ĄíĄ°ĄéĄŕ¤Ç¤ÎĄćˇĽĄ¶Ŕ©¸Â¤ÎŔßÄęĘýˡ +.SH shadow ĄíĄ°Ą¤ĄóĄ×ĄíĄ°ĄéĄŕ¤Ç¤ÎĄćˇĽĄ¶Ŕ©¸Â¤ÎŔßÄęĘýˡ .PP -¤Ţ¤şˇ˘ĄęĄ˝ˇĽĄą¤ËÂФ·¤Ć˛Ý¤·¤ż¤¤Ŕ©¸Â¤ňµ­¤·¤żˇ˘root¤Î¤ß¤¬Ćɤळ¤Č¤Î˝ĐÍč¤ë -ĄŐĄˇĄ¤Ąë(ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ď\fB/etc/limits\fRˇ˘ -Ľă¤·¤Ż¤Ďconfig.hĂć¤ÇÄęµÁ¤µ¤ě¤Ć¤¤¤ëLIMITS_FILE¤Ç»ŘÄꤷ¤ż¤â¤Î)¤ňşî¤ëˇŁ -ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘'root'¤Ë¤Ďquota¤ÎŔ©¸Â¤Ď˛Ý¤µ¤ě¤Ę¤¤ˇŁ -ĽÂşÝ¤Î¤Č¤ł¤íˇ˘¤ł¤ÎĽęˡ¤Ë¤č¤Ă¤Ćroot¤ČƱ¸˘¤ÎĄ˘Ą«Ą¦ĄóĄČ(UID¤¬0¤ÎĄ˘Ą«Ą¦ĄóĄČ) +¤Ţ¤şˇ˘ĄęĄ˝ˇĽĄą¤ËÂФ·¤Ć˛Ý¤·¤ż¤¤Ŕ©¸Â¤ňµ­¤·¤żˇ˘root ¤Î¤ß¤¬Ćɤळ¤Č¤Î˝ĐÍč¤ë +ĄŐĄˇĄ¤Ąë(ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ď\fB/etc/limits\fRˇ˘ +¤Ţ¤ż¤Ď config.h Ăć¤ÇÄęµÁ¤µ¤ě¤Ć¤¤¤ë LIMITS_FILE ¤Ç»ŘÄꤷ¤ż¤â¤Î)¤ňşî¤ëˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘'root'¤Ë¤Ď quota ¤ÎŔ©¸Â¤Ď˛Ý¤µ¤ě¤Ę¤¤ˇŁ +ĽÂşÝ¤Î¤Č¤ł¤íˇ˘¤ł¤ÎĽęˡ¤Ë¤č¤Ă¤Ć root ¤ČƱ¸˘¤ÎĄ˘Ą«Ą¦ĄóĄČ(UID ¤¬ 0 ¤ÎĄ˘Ą«Ą¦ĄóĄČ) ¤ËŔ©¸Â¤ň˛Ý¤ąĽęΩ¤Ć¤Ď¸şß¤·¤Ę¤¤ˇŁ .PP łĆąÔ¤Ë¤Ď°Ę˛Ľ¤Î˝ńĽ°¤ÇĄćˇĽĄ¶¤Ř¤ÎŔ©¸Â¤ň˝ń¤¤¤Ć¤Ş¤ŻˇŁ @@ -122,7 +144,7 @@ tty łĆŔ©¸Â¤ĎĽ±Ę̻Ұěʸ»ú¤Č¤˝¤ě¤ËÂł¤ŻŔ©¸ÂżôĂͤˤč¤Ă¤Ć»ŘÄꤹ¤ëˇŁ Ľ±Ę̻ҤȤ·¤ĆÍ­¸ú¤Ę¤â¤Î¤Ď: .br -\fBC\fR: coreĄŐĄˇĄ¤ĄëĄµĄ¤Ąş¤ÎşÇÂçĂÍ (KB) +\fBC\fR: core ĄŐĄˇĄ¤ĄëĄµĄ¤Ąş¤ÎşÇÂçĂÍ (KB) .br \fBD\fR: şÇÂç¤ÎĄÇˇĽĄżĄµĄ¤Ąş (KB) .br @@ -136,7 +158,7 @@ tty .br \fBS\fR: şÇÂç¤ÎĄąĄżĄĂĄŻĄµĄ¤Ąş (KB) .br -\fBT\fR: şÇÂçCPUĄżĄ¤Ąŕ (ʬ) +\fBT\fR: şÇÂç CPU ĄżĄ¤Ąŕ (ʬ) .br \fBU\fR: şÇÂçĄ×ĄíĄ»Ąążô .br @@ -144,9 +166,9 @@ tty .PP Î㤨¤Đˇ˘\fBL2D2048N5\fR¤ĎŔµ¤·¤¤\fBLIMITS_STRING\fR¤Ç¤˘¤ëˇŁ .PP -ĄÇĄŁĄŐĄ©ĄëĄČ¤ÎĄ¨ĄóĄČĄęˇĽ¤Ď'\fB*\fR'¤Č¤¤¤¦ĄćˇĽĄ¶Ěľ¤ÇÉ˝¤µ¤ě¤ëˇŁ -LIMITS_FILEĂć¤ËĘŁżô¤Î'ĄÇĄŁĄŐĄ©ĄëĄČ'Ą¨ĄóĄČĄęˇĽ¤¬ŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ -şÇ¸ĺ¤Î¤â¤Î¤¬ĄÇĄŁĄŐĄ©ĄëĄČĄ¨ĄóĄČĄęˇĽ¤Č¤·¤ĆÍѤ¤¤é¤ě¤ëˇŁ +ĄÇĄŐĄ©ĄëĄČ¤ÎĄ¨ĄóĄČĄęˇĽ¤Ď'\fB*\fR'¤Č¤¤¤¦ĄćˇĽĄ¶Ěľ¤ÇÉ˝¤µ¤ě¤ëˇŁ +LIMITS_FILE Ăć¤ËĘŁżô¤Î'ĄÇĄŐĄ©ĄëĄČ'Ą¨ĄóĄČĄęˇĽ¤¬ŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ +şÇ¸ĺ¤Î¤â¤Î¤¬ĄÇĄŐĄ©ĄëĄČĄ¨ĄóĄČĄęˇĽ¤Č¤·¤ĆÍѤ¤¤é¤ě¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë /etc/utmp \- ¸˝şß¤ÎĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄó¤ÎĄęĄąĄČ .br @@ -154,27 +176,32 @@ LIMITS_FILE .br /etc/passwd \- ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ÎľđĘó .br -/etc/shadow \- shadow¤µ¤ě¤żĄŃĄąĄďˇĽĄÉµÚ¤Óˇ˘´ü¸Â¤ÎľđĘó +/etc/shadow \- shadow ¤µ¤ě¤żĄŃĄąĄďˇĽĄÉµÚ¤Óˇ˘´ü¸Â¤ÎľđĘó .br /etc/motd \- Ą·ĄąĄĆĄŕĄáĄĂĄ»ˇĽĄ¸ĄŐĄˇĄ¤Ąë .br +/etc/nologin \- root °Ęł°¤ÎĄćˇĽĄ¶¤ÎĄíĄ°Ą¤Ąó¤ňÍŢŔ©¤ą¤ë +.br /etc/ttytype \- ĂĽËö¤ÎĽďÎŕ¤ÎĄęĄąĄČ .br /etc/limits \- ĄćˇĽĄ¶¤Ë˛Ý¤ąĄ·ĄąĄĆĄŕĄęĄ˝ˇĽĄą¤Ř¤ÎŔ©¸Â .br -$HOME/.profile \- ĄÇĄŁĄŐĄ©ĄëĄČĄ·Ą§Ąë¤Î˝é´ü˛˝ĄąĄŻĄęĄ×ĄČ +$HOME/.profile \- ĄÇĄŐĄ©ĄëĄČĄ·Ą§Ąë¤Î˝é´ü˛˝ĄąĄŻĄęĄ×ĄČ .br $HOME/.hushlogin \- Ą·ĄąĄĆĄŕĄáĄĂĄ»ˇĽĄ¸¤ÎÉ˝Ľ¨¤ň¤Č¤á¤ë .br -.SH ´ŘϢĄłĄŢĄóĄÉ +.SH ´ŘϢąŕĚÜ .PP -getty(1M), -mail(1), -passwd(1), -sh(1), -su(1), -d_passwd(4), -passwd(4) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR getty (8), +.BR mail (1), +.BR passwd (1), +.BR sh (1), +.BR su (1), +.BR login.defs (5), +.\" .BR d_passwd (5), +.BR passwd (5), +.BR nologin (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + diff --git a/man/ja/login.access.5 b/man/ja/login.access.5 index e03c169b..6c4ef81c 100644 --- a/man/ja/login.access.5 +++ b/man/ja/login.access.5 @@ -1,54 +1,55 @@ +.\" This page is originally in the shadow package. +.\" +.\" Translated Fri 14 Feb 1997 by Kazuyoshi Furutaka +.\" .\" this is comment -.Dd April 30, 1994 -.Dt LOGIN.ACCESS 5 +.TH LOGIN.ACCESS 5 .\" .Dt SKEY.ACCESS 5 .\" .Os FreeBSD 1.2 -.Sh ĚľÁ° -.Nm login.access -.Nd ĄíĄ°Ą¤ĄóĄ˘ĄŻĄ»Ąą¤ňĄłĄóĄČĄíˇĽĄë¤ą¤ëĄĆˇĽĄÖĄë +.SH ĚľÁ° +login.access \- ĄíĄ°Ą¤ĄóĄ˘ĄŻĄ»Ąą¤ňĄłĄóĄČĄíˇĽĄë¤ą¤ëĄĆˇĽĄÖĄë .SH ŔâĚŔ -.Nm login.access +.I login.access ĄŐĄˇĄ¤Ąë¤Ë¤Ďˇ˘ĄíĄ°Ą¤Ąó¤ňµö˛ÄËô¤ĎµńŔ䤹¤ë(ĄćˇĽĄ¶, ĄŰĄąĄČ)¤ÎÁȵڤÓ/Ëô¤Ď (ĄćˇĽĄ¶, tty)¤ÎÁȤߤ˘¤ď¤»¤ň»ŘÄꤹ¤ëˇŁ -.Pp +.PP ĂŻ¤«¤¬ĄíĄ°Ą¤Ąó¤·¤żşÝ¤Ďˇ˘ -.Nm login.access +.I login.access ĄŐĄˇĄ¤Ąë¤¬ĄąĄ­ĄăĄó¤µ¤ěˇ˘şÇ˝é¤ËÉäąç¤ą¤ë(ĄćˇĽĄ¶,ĄŰĄąĄČ)¤ÎÁȹ礻ˇ˘¤â¤·¤Ż¤Ď ĄÍĄĂĄČĄďˇĽĄŻ·ĐÍł¤ÎĄíĄ°Ą¤Ąó¤Ç¤Ę¤¤ľěąç¤ĎşÇ˝é¤ËÉäąç¤ą¤ë(ĄćˇĽĄ¶, tty)¤ÎÁČ¤ß ąç¤ď¤»¤ňõ¤ąˇŁ ¤ł¤ÎĄĆˇĽĄÖĄë¤Îµö˛ÄÍó¤Ë¤č¤Ă¤ĆĄíĄ°Ą¤Ąó¤¬µö˛Ä¤µ¤ě¤ë¤«µńŔ䤵¤ě¤ë¤«¤¬·č¤Ţ¤ëˇŁ -.Pp +.PP ĄíĄ°Ą¤ĄóĄ˘ĄŻĄ»ĄąŔ©¸ćÉ˝¤ÎłĆąÔ¤Ë¤Ď3¤Ä¤ÎÍ󤬤˘¤ęˇ˘Ę¸»ú":"¤Çʬłä¤µ¤ě¤Ć¤¤¤ë: -µö˛Ä:ĄćˇĽĄ¶:ŔÜÂł¸µ - -şÇ˝é¤ÎÍó¤Ď"+"(Ą˘ĄŻĄ»Ąą¤ňµö˛Ä¤ą¤ë)¤â¤·¤Ż¤Ď"-"(Ą˘ĄŻĄ»Ąą¤ňµńČݤą¤ë)¤Ç¤Ę¤Ż¤Ć¤Ď +.sp 1 +.IR µö˛Ä : ĄćˇĽĄ¶ : ŔÜÂł¸µ +.sp 1 +şÇ˝é¤ÎÍó¤Ď"\fB+\fR"(Ą˘ĄŻĄ»Ąą¤ňµö˛Ä¤ą¤ë)¤â¤·¤Ż¤Ď"\fB-\fR"(Ą˘ĄŻĄ»Ąą¤ňµńČݤą¤ë)¤Ç¤Ę¤Ż¤Ć¤Ď ¤Ę¤é¤Ę¤¤ˇŁ -ĆóČÖĚܤÎÍó¤Ď°ě¤Ä°Ęľĺ¤ÎĄíĄ°Ą¤ĄóĚľ¤Ţ¤ż¤ĎĄ°ĄëˇĽĄ×Ěľˇ˘¤â¤·¤Ż¤ĎALL(ɬ¤şÉäąç¤ą¤ë) +ĆóČÖĚܤÎÍó¤Ď°ě¤Ä°Ęľĺ¤ÎĄíĄ°Ą¤ĄóĚľ¤Ţ¤ż¤ĎĄ°ĄëˇĽĄ×Ěľˇ˘¤â¤·¤Ż¤Ď +.B ALL +(ɬ¤şÉäąç¤ą¤ë) ¤Ç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ »°ČÖĚܤÎÍó¤Ďˇ˘°ě¤Ä°Ęľĺ¤ÎttyĚľ(ĄÍĄĂĄČĄďˇĽĄŻ·ĐÍł¤Ç¤Ę¤¤ĄíĄ°Ą¤Ąó¤Îľěąç)ˇ˘ -ĄŰĄąĄČĚľˇ˘("."¤Ç»Ď¤Ţ¤ë)ĄÉĄáĄ¤ĄóĚľˇ˘ĄŰĄąĄČĄ˘ĄÉĄěĄąˇ˘¤Ţ¤ż¤Ď("."¤Ç˝Ş¤ď¤ë) -Ą¤ĄóĄżˇĽĄÍĄĂĄČ¤ÎĄÍĄĂĄČĄďˇĽĄŻČֹ椫¤é¤Ę¤ëĄęĄąĄČˇ˘ALL(ɬ¤şÉäąç¤ą¤ë)Ëô¤Ď -LOCAL("."¤ňÁ´¤Ż´Ţ¤Ţ¤Ę¤¤Ę¸»úÎóÁ´¤Ć¤ËÉäąç¤ą¤ë)¤Ç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +ĄŰĄąĄČĚľˇ˘("\fB.\fR"¤Ç»Ď¤Ţ¤ë)ĄÉĄáĄ¤ĄóĚľˇ˘ĄŰĄąĄČĄ˘ĄÉĄěĄąˇ˘¤Ţ¤ż¤Ď("\fB.\fR"¤Ç˝Ş¤ď¤ë) +Ą¤ĄóĄżˇĽĄÍĄĂĄČ¤ÎĄÍĄĂĄČĄďˇĽĄŻČֹ椫¤é¤Ę¤ëĄęĄąĄČˇ˘ +.B ALL +(ɬ¤şÉäąç¤ą¤ë)Ëô¤Ď +.B LOCAL +("\fB.\fR"¤ňÁ´¤Ż´Ţ¤Ţ¤Ę¤¤Ę¸»úÎóÁ´¤Ć¤ËÉäąç¤ą¤ë)¤Ç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ NIS¤ň±żÍѤ·¤Ć¤¤¤ëľěąç¤Ďˇ˘ĄŰĄąĄČËô¤ĎĄćˇĽĄ¶¤ÎĄŃĄżˇĽĄóĂć¤Ë@netgroupname ¤ň»ŘÄꤹ¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ - -EXCEPTĄŞĄÚĄěˇĽĄż¤ňÍѤ¤¤ë¤ł¤Č¤Ë¤č¤ęˇ˘¤Č¤Ć¤â´Ęά¤ËĄëˇĽĄë¤ň»ŘÄꤹ¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ - +.PP +.B EXCEPT +ĄŞĄÚĄěˇĽĄż¤ňÍѤ¤¤ë¤ł¤Č¤Ë¤č¤ęˇ˘¤Č¤Ć¤â´Ęά¤ËĄëˇĽĄë¤ň»ŘÄꤹ¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ +.PP ĄíĄ°Ą¤Ąó¤ą¤ëĄćˇĽĄ¶Ěľ¤¬¤¤¤ş¤ě¤ÎĚľÁ°¤Č¤âÉäąç¤·¤Ę¤¤ľěąç¤Î¤ßˇ˘groupĄŐĄˇĄ¤Ąë ¤ň¸ˇş÷¤ą¤ëˇŁ ĄćˇĽĄ¶Ěľ¤¬Íۤ˵­¤µ¤ě¤Ć¤¤¤ëĄ°ĄëˇĽĄ×¤Ë¤Î¤ßÉäąç¤ą¤ë: Ą×ĄíĄ°ĄéĄŕ¤ĎĄćˇĽĄ¶¤Î ĽçĄ°ĄëˇĽĄ×¤ÎidČÖąćËř¤Ď¸«¤Ę¤¤ˇŁ -.Sh ĄŐĄˇĄ¤Ąë -.Bl -tag -width /etc/login.access -compact -.It Pa /etc/login.access -.Nm login.access -ĄŐĄˇĄ¤Ąë¤Ď -.Pa /etc -¤ËĂÖ¤«¤ě¤Ć¤¤¤ëˇŁ -.El +.SH ĄŐĄˇĄ¤Ąë +/etc/login.access .SH ´ŘϢąŕĚÜ -.Xr login 1 +.BR login (1) .SH ĂřĽÔ Guido van Rooij -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ diff --git a/man/ja/login.defs.5 b/man/ja/login.defs.5 index e5f00dc9..77a0adb3 100644 --- a/man/ja/login.defs.5 +++ b/man/ja/login.defs.5 @@ -1,4 +1,4 @@ -.\" Copyright 1991 - 1993, John F. Haugh II and Chip Rosenthal +.\" Copyright 1991 - 1993, Julianne Frances Haugh and Chip Rosenthal .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,28 +25,33 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: login.defs.5,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: login.defs.5,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" 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 +.\" by Kentaro Shirakata +.\" Updated Sat Jan 13 09:24:04 JST 2001 +.\" by Kentaro Shirakata .\" +.\" WORD: shadow login suite shadow ĄíĄ°Ą¤ĄóµˇÇ˝ .TH LOGIN 5 .SH ĚľÁ° -/etc/login.defs \- Login¤ÎŔßÄę +/etc/login.defs \- login¤ÎŔßÄę .SH ŔâĚŔ .I /etc/login.defs -ĄŐĄˇĄ¤Ąë¤Ďshadow login suite¤ËÂФą¤ëĄµĄ¤ĄČ¸ÇÍ­¤ÎŔßÄę¤ňąÔ¤¦¤ż¤á¤Î¤â¤Î¤Ç¤˘¤ëˇŁ +ĄŐĄˇĄ¤Ąë¤Ď shadow ĄíĄ°Ą¤ĄóµˇÇ˝¤ËÂФą¤ëĄµĄ¤ĄČ¸ÇÍ­¤ÎŔßÄę¤ňąÔ¤¦¤ż¤á¤Î¤â¤Î¤Ç¤˘¤ëˇŁ ¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ďɬ¤şÂ¸şß¤·¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ ¤ł¤ÎĄŐĄˇĄ¤Ąë¤¬Ěµ¤Ż¤Č¤âĄ·ĄąĄĆĄŕ±żÍѤϲÄÇ˝¤Ç¤˘¤ë¤¬ˇ˘¤Ş¤˝¤é¤ŻËľ¤Ţ¤Ę¤¤ ·ë˛Ě¤Č¤Ę¤ë¤Ŕ¤í¤¦ˇŁ .PP ¤ł¤ÎĄŐĄˇĄ¤Ąë¤ĎĆɤ߼č¤ę˛ÄÇ˝¤ĘĄĆĄ­ĄąĄČĄŐĄˇĄ¤Ąë¤Çˇ˘ĄŐĄˇĄ¤ĄëĂć¤Î°ěąÔ¤Ë¤Ä¤­ -°ě¤Ä¤ÎĄŃĄéĄáĄż¤ňŔßÄꤷ¤Ć¤¤¤ëˇŁ +°ě¤Ä¤ÎĄŃĄéĄáˇĽĄż¤ňŔßÄꤷ¤Ć¤¤¤ëˇŁ łĆąÔ¤ĎŔßÄęĄŃĄéĄáˇĽĄż¤ÎĚľÁ°µÚ¤Ó¤˝¤ÎĂͤ¬¶őÇň¤Ç¶čŔÚ¤é¤ě¤ż¤â¤Î¤«¤é¤Ę¤ëˇŁ ¶őąÔµÚ¤ÓĄłĄáĄóĄČąÔ¤Ď̵»ë¤µ¤ě¤ëˇŁ -ĄłĄáĄóĄČąÔ¤Ď'#'µ­ąć¤Ç»Ď¤Ţ¤ëˇŁµ­ąć'#'¤Ď¤˝¤ÎąÔ¤ÎşÇ˝é¤Î¶őÇň°Ęł°¤Îʸ»ú +ĄłĄáĄóĄČąÔ¤Ď`#'µ­ąć¤Ç»Ď¤Ţ¤ëˇŁµ­ąć`#'¤Ď¤˝¤ÎąÔ¤Ç¤Î¶őÇň°Ęł°¤ÎşÇ˝é¤Îʸ»ú ¤Ç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .PP ĄŃĄéĄáˇĽĄżĂͤϻͤĤηż¤ňĽč¤ë¤ł¤Č¤¬˝ĐÍč¤ë: ʸ»úÎ󡢥֡ĽĄë·żˇ˘żôˇ˘ÇÜŔşĹŮżô @@ -64,6 +65,42 @@ .PP °Ę˛Ľ¤ËĽ¨¤ą¤č¤¦¤ĘŔßÄęąŕĚܤ¬¤˘¤ë: .\" +.IP "CHFN_AUTH (ĄÖˇĽĄëĂÍ)" +¤â¤· +.I yes +¤Ę¤éˇ˘ +.B chfn +¤Č +.B chsh +Ą×ĄíĄ°ĄéĄŕ¤ĎĄąˇĽĄŃˇĽĄćˇĽĄ¶¤¬µŻĆ°¤·¤ż¤Î¤Ç¤Ę¤¤¸Â¤ę +˛ż¤é¤«¤ÎĘŃąą¤ňąÔ¤Ę¤¦Á°¤ËĄŃĄąĄďˇĽĄÉ¤ňżÖ¤Í¤ëˇŁ +.\" +.IP "CHFN_RESTRICT (ʸ»úÎó)" +¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ď +.I passwd +ĄŐĄˇĄ¤Ąë¤Î +.I gecos +ĄŐĄŁˇĽĄëĄÉ¤Î¤¦¤Áˇ˘ +°ěČ̥桼Ą¶¤¬ +.B chfn +¤ň»Č¤Ă¤ĆĘŃąą˝ĐÍč¤ëĄŐĄŁˇĽĄëĄÉ¤ň»ŘÄꤹ¤ëˇŁ +»ŘÄꤹ¤ëʸ»úÎó¤Ď +.IR f , +.IR r , +.IR w , +.I h +¤Îʸ»ú¤ÎǤ°Ő¤ÎÁȤ߹ç¤ď¤»¤Çˇ˘¤˝¤ě¤ľ¤ěĄŐĄëĄÍˇĽĄŕˇ˘Éô˛°Čֹ桢 +ż¦ľěĹĹĎĂČֹ桢Ľ«ÂđĹĹĎĂČÖąć¤ň°ŐĚŁ¤ą¤ëˇŁ +»ŘÄꤵ¤ě¤Ę¤«¤Ă¤żľěąç¤Ďˇ˘ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Ŕ¤±¤¬Á´¤Ć¤ÎąŕĚܤňĘŃąą˝ĐÍč¤ëˇŁ +.\" +.IP "CLOSE_SESSIONS (ĄÖˇĽĄëĂÍ)" +pam_close_session() ¸Ć¤Ó˝Đ¤·¤ňÍ­¸ú¤Ë¤ą¤ëˇŁ +ÄĚľď¤Î(pam_unix.so)Ą»ĄĂĄ·ĄçĄó´ÉÍýĄâĄ¸ĄĺˇĽĄë¤ň»Č¤¦ľěąç¤Ďˇ˘¤ł¤ě¤ĎÉÔÍפǤ˘¤ëˇŁ +¤·¤«¤· kerberos ¤ä¤˝¤ÎÂľ¤Î±Ę³ŪĄ»ĄĂĄ·ĄçĄóĄâĄÇĄë¤ňÍѤ¤¤ëĄâĄ¸ĄĺˇĽĄë¤Ç¤Ďˇ˘ +.B login +¤Ď fork ¤·¤ĆĄ·Ą§Ąë¤¬˝ŞÎ»¤ą¤ë¤Î¤ňÂÔ¤ÄɬÍפ¬¤˘¤ęˇ˘ +¤˝¤ě¤ÇĄ»ĄĂĄ·ĄçĄó¤ňĄŻĄęˇĽĄóĄ˘ĄĂĄ×˝ĐÍč¤ëˇŁ +.\" .IP "CONSOLE (ʸ»úÎó)" ¤ł¤ÎąŕĚܤň»ŘÄꤹ¤ë¤Čˇ˘root¤¬ĄíĄ°Ą¤Ąó¤Ç¤­¤ëĄłĄóĄ˝ˇĽĄëĄÇĄĐĄ¤Ąą¤ňŔ©¸Â¤ą¤ë ¤ł¤Č¤¬˝ĐÍč¤ëˇŁ @@ -71,16 +108,16 @@ ¤·¤č¤¦¤Č¤·¤Ć¤âµńČݤµ¤ě¤ëˇŁ¤ł¤ÎąŕĚܤÎŔßÄę¤ĎĆó¤Ä¤Î·ÁĽ°¤ňÍѤ¤¤ë¤ł¤Č¤¬˝ĐÍ衢 ¤Ň¤Č¤Ä¤Ď .sp -.ft CW +.ft I CONSOLE /etc/consoles -.ft P +.ft R .sp ¤ÎÍͤĘŔäÂĐĄŃĄą¤ňÍѤ¤¤ż»ŘÄęˡˇ˘ şŁ°ě¤Ä¤Ď .sp -.ft CW +.ft I CONSOLE console:tty01:tty02:tty03:tty04 -.ft P +.ft R .sp ¤ÎÍͤ˥łĄíĄó¤Ç¶čŔÚ¤é¤ě¤żĄęĄąĄČ¤ÇĂĽËöŔţ¤ň»ŘÄꤹ¤ëĘýˡ¤Ç¤˘¤ëˇŁ ĄŃĄąĚľ¤ň»ŘÄꤹ¤ëľěąç¤Ďˇ˘°ěąÔ¤Ç°ě¤Ä¤ÎĂĽËöŔÜÂłŔţ¤ň»ŘÄꤷ¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ @@ -92,6 +129,15 @@ root Ą»Ą­ĄĺĄęĄĆĄŁ¤¬Čóľď¤Ë˝ĹÍפǤ˘¤ëľěąç¤Ďˇ˘¤ł¤Î¤č¤¦¤ĘĄ˘ĄżĄĂĄŻ¤Î˛ÄÇ˝Ŕ­¤ň̵¤Ż¤ą ¤ż¤á¤Ëˇ˘ĄłĄíĄó¤Ç¶čŔڤäż·ÁĽ°¤ňÍѤ¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .\" +.IP "CONSOLE_GROUPS (ʸ»úÎó)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" +.IP "CRACKLIB_DICTPATH (ʸ»úÎó)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" +.IP "DEFAULT_HOME (ĄÖˇĽĄëĂÍ)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .IP "DIALUPS_CHECK_ENAB (ĄÖˇĽĄëĂÍ)" Ăͤ¬ .I yes @@ -103,21 +149,25 @@ root »ŘÄꤷ¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤: .nf .sp -.ft CW +.ft I ttyfm01 ttyfm02 \0\0. \0\0. \0\0. -.ft P +.ft R .sp .fi .\" +.IP "ENVIRON_FILE (ʸ»úÎó)" +ĄíĄ°Ą¤Ąó¤·¤ż¤ę su ¤·¤ż¤ę¤·¤ż»ţ¤ËĄ»ĄĂĄČ¤ą¤ë´Ä¶­ĘŃżô¤ÎĄęĄąĄČ (°ěąÔ¤Ë¤Ň¤Č¤Ä¤ş¤Ä) +¤¬˝ń¤«¤ě¤żĄŐĄˇĄ¤ĄëˇŁ +.\" .IP "ENV_HZ (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤ĎHZ´Ä¶­ĘŃżô¤ÎĆâÍƤň»ŘÄꤹ¤ëˇŁ »ČÍŃÎă¤Ď: .sp - \f(CWENV_HZ HZ=50\fP + \fIENV_HZ HZ=50\fR .sp ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ÄęµÁ¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘HZ¤ÎĂͤϽé´ü˛˝¤µ¤ě¤Ę¤¤ˇŁ .\" @@ -126,14 +176,14 @@ root UID¤¬ĄĽĄí°Ęł°¤ÎĄćˇĽĄ¶¤¬ĄíĄ°Ą¤Ąó¤·¤żľěąçˇ˘´Ä¶­ĘŃżôPATH¤ÎĆâÍƤϤł¤Î Ăͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ďɬ¤şÉ¬ÍפǤ˘¤ë; ÄęµÁ¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ď¸í¤Ă¤ż -ĄÇĄŁĄŐĄ©ĄëĄČĂͤËŔßÄꤵ¤ě¤Ć¤·¤Ţ¤¦¤Ŕ¤í¤¦ˇŁ +ĄÇĄŐĄ©ĄëĄČĂͤËŔßÄꤵ¤ě¤Ć¤·¤Ţ¤¦¤Ŕ¤í¤¦ˇŁ .\" .IP "ENV_SUPATH (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤ĎĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Î¸ˇş÷ĄŃĄą¤ËŔßÄꤷ¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ UID¤¬ĄĽĄí¤ÎĄćˇĽĄ¶¤¬ĄíĄ°Ą¤Ąó¤·¤żľěąçˇ˘´Ä¶­ĘŃżôPATH¤ÎĆâÍƤϤł¤Î Ăͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ďɬ¤şÉ¬ÍפǤ˘¤ë; ÄęµÁ¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ď¸í¤ę¤Î¤˘¤ęĆŔ¤ë -ĄÇĄŁĄŐĄ©ĄëĄČĂͤËŔßÄꤵ¤ě¤Ć¤·¤Ţ¤¦¤Ŕ¤í¤¦ˇŁ +ĄÇĄŐĄ©ĄëĄČĂͤËŔßÄꤵ¤ě¤Ć¤·¤Ţ¤¦¤Ŕ¤í¤¦ˇŁ .\" .IP "ENV_TZ (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤Ď´Ä¶­ĘŃżôTZ¤ňşî¤ę˝Đ¤ą¤ż¤á¤ÎľđĘó¤ň»ŘÄꤹ¤ëˇŁ @@ -141,13 +191,13 @@ UID ŔäÂĐĄŃĄąĚľ¤Ç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ »ČÍŃÎă¤Ď: .sp - \f(CWENV_TZ\0\0\0\0TZ=CST6CDT\fP + \fIENV_TZ\0\0\0\0TZ=CST6CDT\fP .sp Ëô¤Ď .sp - \f(CWENV_TZ\0\0\0\0/etc/tzname\fP + \fIENV_TZ\0\0\0\0/etc/tzname\fP .sp -¸şß¤·¤Ę¤¤ĄŐĄˇĄ¤Ąë¤ň»ŘÄꤷ¤żľěąçˇ˘TZ¤Ď¤˘¤ëĄÇĄŁĄŐĄ©ĄëĄČĂͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ +¸şß¤·¤Ę¤¤ĄŐĄˇĄ¤Ąë¤ň»ŘÄꤷ¤żľěąçˇ˘TZ¤Ď¤˘¤ëĄÇĄŐĄ©ĄëĄČĂͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬Ě¤ÄęµÁ¤Îľěąç¤ĎTZ¤ÎĂͤϽé´ü˛˝¤µ¤ě¤Ę¤¤ˇŁ .\" .IP "ERASECHAR (żô)" @@ -164,9 +214,18 @@ UID ¤ËŔßÄꤷ¤żľěąç¤Ďˇ˘ĄíĄ°Ą¤Ąó¤ÎĽşÇÔ¤¬ .I /var/log/faillog Ăć¤Ë -.I faillog(8) +.BR faillog (8) ¤Î˝ńĽ°¤Çµ­Ďż¤µ¤ě¤ëˇŁ .\" +.IP "FAIL_DELAY (żô)" +ĄíĄ°Ą¤Ąó¤¬ĽşÇÔ¤ą¤ëËč¤ËĂٱ䤵¤»¤ëÉĂżôˇŁ +.\" +.IP "FAKE_SHELL (ʸ»úÎó)" +ËÜĹö¤ÎĄćˇĽĄ¶ˇĽĄ·Ą§Ąë¤ÎÂĺ¤ď¤ę¤Ëˇ˘¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ç»ŘÄꤵ¤ě¤żĄ×ĄíĄ°ĄéĄŕ¤¬µŻĆ°¤µ¤ě¤ëˇŁ +¤·¤«¤·ˇ˘¤˝¤ÎĚܤ˸«¤¨¤ëĚľÁ° (argv[0]) ¤Ď¸µ¤ÎĄ·Ą§Ąë¤Č¤Ę¤ëˇŁ +µŻĆ°¤µ¤ě¤żĄ×ĄíĄ°ĄéĄŕ¤ĎĽÂşÝ¤ÎĄ·Ą§Ąë¤ÎµŻĆ°Á°¤ËɬÍפʺî¶Č +(ĄíĄ®ĄóĄ°ˇ˘ÄɲĂǧľÚˇ˘ĄĐĄĘˇĽˇ˘...)¤¬ąÔ¤Ę¤¨¤ëˇŁ +.\" .IP "FTMP_FILE (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤ĎĄíĄ°Ą¤ĄóĽşÇÔ¤ňµ­Ďż¤ą¤ëĄŐĄˇĄ¤Ąë¤ÎŔäÂĐĄŃĄąĚľ¤ň»ŘÄꤹ¤ëˇŁ ĄíĄ°Ą¤ĄóĽşÇÔ¤¬ČŻŔ¸¤·¤żľěąçˇ˘¤˝¤Îµ­Ďż¤¬¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ë @@ -181,6 +240,11 @@ UID ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬»ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤ĎĄíĄ®ĄóĄ°¤¬ÍŢŔ©¤µ¤ě¤ëˇŁ ´ŘϢľđĘó¤ĎFAILLOG_ENAB¤ČLOG_UNKFAIL_ENAB¤ň»˛ľČ¤»¤čˇŁ .\" +.IP "GID_MAX (żô)" +.IP "GID_MIN (żô)" +.B groupadd +Ą×ĄíĄ°ĄéĄŕ¤¬Ą°ĄëˇĽĄ×ID¤ňÁŞÂň¤ą¤ë»ţ¤ÎČϰϡŁ +.\" .IP "HUSHLOGIN_FILE (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ď``hushlogin''¤Îľň·ď¤ňŔßÄꤹ¤ë¤ż¤á¤ËÍѤ¤¤ëˇŁ ¤ł¤ÎŔßÄę¤ňąÔ¤¦Ęýˡ¤Ë¤ĎĆóÄ̤ꤢ¤ëˇŁ @@ -195,13 +259,13 @@ UID ¤ł¤Îľěąçˇ˘ĄŐĄˇĄ¤Ąë¤Ď°Ę˛Ľ¤ÎÍͤʽńĽ°¤Ç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤: .nf .sp -.ft CW +.ft I demo /usr/lib/uucp/uucico \0\0. \0\0. \0\0. -.ft P +.ft R .sp .fi ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬Ě¤ÄęµÁ¤Îľěąç¤Ďˇ˘``hushlogin''ľň·ď¤¬Ŕ®Î©¤ą¤ë¤ł¤Č¤Ď̵¤¤ˇŁ @@ -213,6 +277,9 @@ UID ´ŘϢ¤ą¤ëľđĘó¤ĎMOTD_FILE, FAILLOG_ENAB, LASTLOG_ENAB, µÚ¤ÓMAIL_CHECK_ENAB ¤ň»˛ľČ¤»¤čˇŁ .\" +.IP "ISSUE_FILE (ʸ»úÎó)" +ĄíĄ°Ą¤ĄóĄ×ĄíĄóĄ×ĄČ¤ň˝Đ¤ąÁ°¤ËÉ˝Ľ¨¤ą¤ëĄŐĄˇĄ¤Ąë¤ÎĄŐĄëĄŃĄąĚľˇŁ +.\" .IP "KILLCHAR (żô)" ĂĽËö¤Î .I kill @@ -224,7 +291,7 @@ UID .\" .IP "LASTLOG_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤ň -.IR yes , +.I yes ¤ËŔßÄꤷˇ˘łî¤ÄĄŐĄˇĄ¤Ąë .I /var/log/lastlog ¤¬Â¸şß¤ą¤ëľěąçˇ˘ĄćˇĽĄ¶¤¬ĄíĄ°Ą¤Ąó¤ËŔ®¸ů¤·¤żµ­Ďż¤¬¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ë»Ä¤µ¤ě¤ëˇŁ @@ -233,6 +300,16 @@ UID ĄíĄ°Ą¤ĄóĽşÇÔ¤ÎÉ˝Ľ¨¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁ ``hushlogin''ľň·ď¤¬Ŕ®¤ęΩ¤Ă¤Ć¤¤¤ëľěąç¤ĎĄíĄ°Ą¤ĄóŔ®¸ů¤âĽşÇÔ¤âÉ˝Ľ¨¤µ¤ě¤Ę¤¤ˇŁ .\" +.IP "LOGIN_RETRIES (żô)" +.B login +Ą×ĄíĄ°ĄéĄŕ¤¬˝ŞÎ»¤ą¤ë¤Ţ¤Ç¤Ë˛ÄÇ˝¤ĘĄíĄ°Ą¤Ąó¤ÎşĆ»îąÔ¤ÎżôˇŁ +.\" +.IP "LOGIN_STRING (ʸ»úÎó)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.IP "LOGIN_TIMEOUT (żô)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.IP "LOG_OK_LOGINS (ĄÖˇĽĄëĂÍ)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ .IP "LOG_UNKFAIL_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ .I yes @@ -245,7 +322,7 @@ UID .\" .IP "MAIL_CHECK_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤ň -.IR yes , +.I yes ¤ËŔßÄꤹ¤ë¤Čˇ˘ĄíĄ°Ą¤Ąó»ţ¤ËĄćˇĽĄ¶¤ËĄáĄ¤ĄëĄÜĄĂĄŻĄą¤ÎľőÂÖ¤ňÄĚĂΤą¤ëˇŁ ´ŘϢľđĘó¤ĎMAIL_DIR¤ň»˛ľČ¤»¤čˇŁ .\" @@ -254,8 +331,32 @@ UID ŔäÂĐĄŃĄą¤ň»ŘÄꤹ¤ëˇŁ ¤ł¤ÎĄŃĄą¤ËĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĚľ¤ňÉŐ¤±Â­¤·¤ĆMAIL´Ä¶­ĘŃżô \- ĄćˇĽĄ¶¤Î ĄáĄ¤ĄëĄÜĄĂĄŻĄą¤Ř¤ÎĄŃĄą \- ¤ňşî¤ę˝Đ¤ąˇŁ -¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ďɬ¤şÄęµÁ¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤; ̤ÄęµÁ¤Îľěąç¤ĎŔµ¤·¤Ż¤Ę¤¤˛ÄÇ˝Ŕ­ -¤Î¤˘¤ëĄÇĄŁĄŐĄ©ĄëĄČĂͤ¬»Č¤ď¤ě¤ëˇŁ´ŘϢľđĘó¤ĎMAIL_CHECK_ENAB¤ň»˛ľČ¤»¤čˇŁ +¤ł¤ÎĄŃĄéĄáˇĽĄż¤Č MAIL_FILE ¤Î¤É¤Á¤é¤«¤Ďɬ¤şÄęµÁ¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤; +̤ÄęµÁ¤Îľěąç¤ĎŔµ¤·¤Ż¤Ę¤¤˛ÄÇ˝Ŕ­¤Î¤˘¤ëĄÇĄŐĄ©ĄëĄČĂͤ¬»Č¤ď¤ě¤ëˇŁ +´ŘϢľđĘó¤ĎMAIL_CHECK_ENAB¤ň»˛ľČ¤»¤čˇŁ +.\" +.IP "MAIL_FILE (ʸ»úÎó)" +¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤ĎĄáĄ¤ĄëĄÜĄĂĄŻĄąĄŐĄˇĄ¤Ąë¤ÎĚľÁ°¤ň»ŘÄꤹ¤ëˇŁ +ĄćˇĽĄ¶¤ÎĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤Ë¤ł¤ÎĚľÁ°¤¬Äɲ䵤ě¤Ćˇ˘ +MAIL´Ä¶­ĘŃżô \- ĄćˇĽĄ¶¤ÎĄáĄ¤ĄëĄÜĄĂĄŻĄą¤Ř¤ÎĄŃĄą \- ¤ňşî¤ę˝Đ¤ąˇŁ +¤ł¤ÎĄŃĄéĄáˇĽĄż¤Č MAIL_DIR ¤Î¤É¤Á¤é¤«¤Ďɬ¤şÄęµÁ¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤; +̤ÄęµÁ¤Îľěąç¤ĎŔµ¤·¤Ż¤Ę¤¤˛ÄÇ˝Ŕ­¤Î¤˘¤ëĄÇĄŐĄ©ĄëĄČĂͤ¬»Č¤ď¤ě¤ëˇŁ +´ŘϢľđĘó¤ĎMAIL_CHECK_ENAB¤ň»˛ľČ¤»¤čˇŁ +.\" +.IP "MD5_CRYPT_ENAB (ĄÖˇĽĄëĂÍ)" +.I yes +¤Ę¤éˇ˘ +.B passwd +Ą×ĄíĄ°ĄéĄŕ¤Ďż·¤·¤ŻĘŃąą¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤ňż·¤·¤¤ MD5 ĄŮˇĽĄą¤Î +.BR crypt (3) +ĄŃĄąĄďˇĽĄÉĄĎĄĂĄ·ĄĺĄ˘ĄëĄ´ĄęĄşĄŕ¤ňÍѤ¤¤Ć°Ĺąć˛˝¤ą¤ëˇŁ +¤ł¤ě¤Ď FreeBSD ¤ÇşÇ˝é¤ËşÎÍѤµ¤ěˇ˘Linux ¤Ç¤Ď +libc-5.4.38 ¤Č glibc-2.0 (¤Ţ¤ż¤Ď¤˝¤ě°Ęľĺ) ¤ÇÂбţ¤·¤Ć¤¤¤ëˇŁ +¤ł¤ÎĄ˘ĄëĄ´ĄęĄşĄŕ¤Ď 8 ʸ»ú°Ęľĺ¤ÎĄŃĄąĄďˇĽĄÉ¤ËÂбţ¤·¤Ć¤¤¤ë ( +.BR getpass (3) +¤Ë¤č¤ę 127 ʸ»ú¤ËŔ©¸Â¤µ¤ě¤ë)¤¬ˇ˘˝ľÍč¤Î +.BR crypt (3) +ĽÂÁő¤Č¸ß´ąŔ­¤¬¤Ę¤¤ˇŁ .\" .IP "MOTD_FILE (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤Ď``¤˝¤ÎĆü¤ÎĄáĄĂĄ»ˇĽĄ¸''ĄŐĄˇĄ¤Ąë¤Ř¤ÎĄŃĄąĚľ¤ňĄłĄíĄó¤Ç¶čŔÚ¤Ă¤Ć @@ -266,27 +367,34 @@ UID ¤¬Ŕ®¤ęΩ¤Äľěąç¤Ë¤Ďˇ˘É˝Ľ¨¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁ .\" .IP "NOLOGINS_FILE (ʸ»úÎó)" -.\" the user will be disconnected. If this parameter is not specified -.\" then this feature will be inhibited. ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤Ďroot°Ęł°¤ÎĄíĄ°Ą¤Ąó¤ň¶Ř»ß¤ą¤ëĄŐĄˇĄ¤Ąë¤ÎŔäÂĐĄŃĄąĚľ¤ň»ŘÄę ¤ą¤ëˇŁ ¤ł¤ÎĄŐĄˇĄ¤Ąë¤¬Â¸şß¤ą¤ëľěąç¤Ë¤Ďˇ˘root°Ęł°¤ÎĄćˇĽĄ¶¤¬ĄíĄ°Ą¤Ąó¤·¤č¤¦¤Č¤·¤żşÝ ĄŐĄˇĄ¤Ąë¤ÎĂćżČ¤¬É˝Ľ¨¤µ¤ěˇ˘ĄíĄ°Ą¤Ąó¤ĎµńČݤµ¤ě¤ëˇŁ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬»ŘÄꤵ¤ě¤Ć ¤¤¤Ę¤¤ľěąç¤Ď¤ł¤ÎµˇÇ˝¤Ď»ČÍѤǤ­¤Ę¤¤ˇŁ .\" +.IP "NOLOGIN_STR (ʸ»úÎó)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .IP "OBSCURE_CHECKS_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ -.IR yes +.I yes ¤ËŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ĄŃĄąĄďˇĽĄÉĘŃąą¤ňĽő¤±ÉŐ¤±¤ëÁ°¤ËĄ×ĄíĄ°ĄéĄŕ -.I passwd +.B passwd ¤¬ÍľĘ¬¤ËĄÁĄ§ĄĂĄŻ¤ňąÔ¤¦ˇŁ ąÔ¤ď¤ě¤ëĄÁĄ§ĄĂĄŻ¤ĎČóľď¤Ëñ˝ă¤Ç¤˘¤ęˇ˘Ŕ§Čó¤Č¤âÍѤ¤¤ë¤Ů¤­¤Ç¤˘¤ëˇŁ -.I passwd +.B passwd Ą×ĄíĄ°ĄéĄŕ¤¬ -.IR root +.I root ¤Ë¤č¤Ă¤ĆĽÂąÔ¤µ¤ě¤żľěąç¤Ďˇ˘ĄŃĄąĄďˇĽĄÉ¤ÎĆń˛ňĹŮĄÁĄ§ĄĂĄŻ¤ĎĄĐĄ¤ĄŃĄą¤µ¤ě¤ëˇŁ ´ŘϢľđĘó¤ĎPASS_MIN_LEN¤ň»˛ľČ¤»¤čˇŁ .\" +.IP "PASS_ALWAYS_WARN (ĄÖˇĽĄëĂÍ)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" +.IP "PASS_CHANGE_TRIES (żô)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .IP "PASS_MIN_DAYS (żô)" ĄŃĄąĄďˇĽĄÉ¤¬ĘŃąą¤Ç¤­¤ë¤č¤¦¤Ë¤Ę¤ë¤Ţ¤Ç¤ÎşÇĂ»ĆüżôˇŁ ¤ł¤ÎĆüżô¤¬·Đ¤ż¤Ę¤¤¤¦¤Á¤ËĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤·¤č¤¦¤Č¤·¤Ć¤âµńČݤµ¤ě¤ëˇŁ @@ -302,10 +410,14 @@ UID °ě¤Ä¤ÎĄŃĄąĄďˇĽĄÉ¤ň»Č¤¨¤ëşÇÄąĆüżôˇŁĄŃĄąĄďˇĽĄÉ¤¬¤ł¤ÎĆüżô¤č¤ę¤â¸Ĺ¤¤ľěąç¤Ď Ą˘Ą«Ą¦ĄóĄČ¤¬ĄíĄĂĄŻ¤µ¤ě¤ëˇŁ»ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ď¤˘¤ëÂ礭¤Ężô¤¬ÍѤ¤¤é¤ě¤ëˇŁ .\" +.IP "PASS_MAX_LEN (żô)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .IP "PASS_WARN_AGE (żô)" ĄŃĄąĄďˇĽĄÉ¤ÎÍ­¸ú´ü¸Â¤¬Íč¤ëÁ°¤Ë·Ůąđ¤ňČŻ¤ą¤ëĆüżôˇŁĄĽĄí¤Ë¤·¤Ć¤Ş¤Ż¤Čˇ˘ĹöĆü¤Ë¤Î¤ß ·Ůąđ¤ňąÔ¤¤ˇ˘Ééżô¤ň»ŘÄꤷ¤żľěąç¤Ď·Ůąđ¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁ »ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ď·Ůąđ¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁ +.\" .IP "PORTTIME_CHECKS_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤ň .I yes @@ -313,50 +425,62 @@ UID .I /etc/porttime ĄŐĄˇĄ¤Ąë¤¬Â¸şß¤ą¤ëľěąç¤Ďˇ˘ĄćˇĽĄ¶¤¬¤˝¤Î»ţ´Ö»ŘÄꤷ¤żĂĽËö¤«¤éĄíĄ°Ą¤Ąó¤·¤ĆÎɤ¤¤« ¤ňłÎǧ¤ą¤ë¤Î¤Ë¤˝¤ÎĄŐĄˇĄ¤Ąë¤ň»˛ľČ¤ą¤ëˇŁ -c.f. porttime(4) +c.f. +.BR porttime (5) +.\" +.IP "QMAIL_DIR (ʸ»úÎó)" +¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤Ď Qmail ĄćˇĽĄ¶¤Î¤ż¤á¤Î Maildir ¤¬¤˘¤ëĄÇĄŁĄěĄŻĄČĄę¤ň»Ř +Äꤹ¤ëˇŁ´ŘϢľđĘó¤Ď MAIL_CHECK_ENAB ¤ň»˛ľČ¤»¤čˇŁ .\" .IP "QUOTAS_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ .I yes -¤ËŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ĄćˇĽĄ¶¤Î``ulimit,'' ``umask,`` µÚ¤Ó ``niceness'' +¤ËŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ĄćˇĽĄ¶¤Î``ulimit'', ``umask'', ``niceness'' ¤¬ .I passwd ĄŐĄˇĄ¤Ąë¤Î .I gecos Íó¤Ë»ŘÄꤵ¤ě¤Ć¤¤¤ëĂͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ -c.f. passwd(4). +c.f. +.BR passwd (5) .\" .IP "SU_NAME (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ď``su -''¤¬ĽÂąÔ¤µ¤ě¤żľěąç¤ÎĄłĄŢĄóĄÉĚľ¤ňŔßÄꤹ¤ëˇŁ Î㤨¤Đˇ˘¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬``su''¤ČÄęµÁ¤µ¤ě¤Ć¤¤¤żľěąçˇ˘ -.I ps(1) +.BR ps (1) ¤Ç¤ĎĽÂąÔĂć¤ÎĄłĄŢĄóĄÉ¤¬``-su''¤ČÉ˝Ľ¨¤µ¤ě¤ëˇŁ ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ÄęµÁ¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘ -.I ps(1) +.BR ps (1) ¤Ë¤ĎĽÂąÔĂć¤ÎĽÂşÝ¤ÎĄ·Ą§Ąë¤ÎĚľÁ°ˇ˘Î㤨¤Đ``-sh``¤Č¤¤¤Ă¤żÉ˝Ľ¨¤¬¤Ę¤µ¤ě¤ëˇŁ .\" .IP "SULOG_FILE (ʸ»úÎó)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤Ë¤Ď -.I su +.B su ĄłĄŢĄóĄÉ¤ÎĽÂąÔµ­Ďż¤ň˝ń¤­ąţ¤ŕĄŐĄˇĄ¤Ąë¤ÎŔäÂĐĄŃĄąĚľ¤ň»ŘÄꤹ¤ëˇŁ ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘µ­Ďż¤ĎąÔ¤ď¤ě¤Ę¤¤ˇŁ -.I su +.B su ĄłĄŢĄóĄÉ¤ĎĄŃĄąĄďˇĽĄÉ¤ňǧľÚ¤ą¤ëşÝ¤Ë»Č¤ď¤ě¤ë»ö¤â¤˘¤ë¤Î¤Çˇ˘¤ł¤ÎĄŞĄ×Ą·ĄçĄóËô¤Ď .I syslog ¤Î¤¤¤ş¤ě¤«¤ňÍѤ¤¤Ć -.I su +.B su ĽÂąÔ¤ňµ­Ďż¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ ´ŘϢľđĘó¤ĎSYSLOG_SU_ENABĄŞĄ×Ą·ĄçĄó¤ň»˛ľČ¤»¤čˇŁ .\" +.IP "SU_WHEEL_ONLY (ĄÖˇĽĄëĂÍ)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" +.IP "SYSLOG_SG_ENAB (ĄÖˇĽĄëĂÍ)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .IP "SYSLOG_SU_ENAB (ĄÖˇĽĄëĂÍ)" ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ .I yes ¤ËŔßÄꤵ¤ěˇ˘łî¤Ä -.I login +.B login ¤¬ .I syslog µˇÇ˝¤ňĆŻ¤«¤»¤ë¤č¤¦¤ËĄłĄóĄŃĄ¤Ąë¤µ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘Á´¤Ć¤Î -.I su +.B su ĽÂąÔ¤¬ .I syslog µˇÇ˝¤ňÍѤ¤¤ĆÄĚĂΤµ¤ě¤ëˇŁ @@ -368,24 +492,24 @@ c.f. passwd(4). ĄłĄóĄČĄíˇĽĄëĄ·ˇĽĄ±ĄóĄą¤ňÁ÷¤ëˇ˘¤Č¤¤¤¦¤â¤Î¤¬¤˘¤ëˇŁ ¤ł¤ÎĚäÂę¤Ďˇ˘Âľ¤ÎĄćˇĽĄ¶¤¬ĂĽËöŔţ¤ËĄ˘ĄŻĄ»Ąą¤Ç¤­¤Ę¤¤¤č¤¦¤Ëµö˛Ä°Ŕ­¤ňŔßÄꤹ¤ě¤Đ ˛óČň¤Ç¤­¤ë¤¬ˇ˘¤ł¤¦¤ą¤ë¤Č»ÄÇ°¤Ę¤¬¤é -.I write +.B write ¤Č¤¤¤Ă¤żĄ×ĄíĄ°ĄéĄŕ¤¬µˇÇ˝¤·¤Ę¤Ż¤Ę¤Ă¤Ć¤·¤Ţ¤¦ˇŁÂľ¤Î˛ň·čĘýˡ¤Č¤·¤Ć¤Ďˇ˘ ŔřşßĹŞ¤Ë´í¸±¤ňŐÔ¤ó¤Ŕʸ»úĄ·ˇĽĄ±ĄóĄą¤ňĄŐĄŁĄëĄżˇĽ¤·¤ĆĽč¤ę˝ü¤¤¤Ć¤·¤Ţ¤¦ÍÍ¤Ę -.I write +.B write Ą×ĄíĄ°ĄéĄŕ¤ň»Č¤¤ˇ˘¤ł¤ě¤ňĆĂĽě¤ĘĄ°ĄëˇĽĄ×¤Ë``setgid''¤µ¤»ˇ˘¤ł¤ÎĄ°ĄëˇĽĄ×¤Ë -ĂĽËöĄÇĄĐĄ¤Ąą¤ÎĄ°ĄëˇĽĄ×˝ęͭ°Ŕ­¤ňłä¤ęĹö¤Ćˇ˘ĂĽËöŔţ¤Îµö˛Ä°Ŕ­¤ň\f(CW0620\fP¤Ë +ĂĽËöĄÇĄĐĄ¤Ąą¤ÎĄ°ĄëˇĽĄ×˝ęͭ°Ŕ­¤ňłä¤ęĹö¤Ćˇ˘ĂĽËöŔţ¤Îµö˛Ä°Ŕ­¤ň\fI0620\fR¤Ë ŔßÄꤹ¤ëˇ˘¤Č¤¤¤¦¤â¤Î¤â¤˘¤ëˇŁ TTYGROUP¤Ď¤Ţ¤µ¤Ë¤ł¤ÎÍͤʾő¶·¤Î¤ż¤á¤ËŔßÄę¤Ç¤­¤ë¤č¤¦¤Ë¤·¤Ć¤˘¤ëˇŁ ¤ł¤ÎąŕĚܤ¬ÄęµÁ¤µ¤ě¤Ć¤¤¤Ę¤¤¤Č¤­¤Ďˇ˘ĂĽËö¤ÎĄ°ĄëˇĽĄ×˝ęͭ°Ŕ­¤ĎĄćˇĽĄ¶¤ÎĄ°ĄëˇĽĄ× ČÖąć¤Ë˝é´ü˛˝¤µ¤ě¤ëˇŁ -´ŘϢľđĘó¤ĎTTYPERMS¤ň»˛ľČ¤»¤čˇŁ +´ŘϢľđĘó¤Ď TTYPERM ¤ň»˛ľČ¤»¤čˇŁ .\" .IP "TTYPERM (żô)" ĄíĄ°Ą¤ĄóĂĽËö¤Îµö˛Ä°Ŕ­¤¬¤ł¤ÎĂͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ -ŵ·żĹޤĘŔßÄęĂͤȤ·¤Ć¤Ďˇ˘\f(CW0622\fP¤ËŔßÄꤷ¤ĆÂľ¤ÎĄćˇĽĄ¶¤¬¤˝¤ÎĂĽËö¤Ëwrite -Ą˘ĄŻĄ»Ąą˝ĐÍč¤ëÍͤˤą¤ë¤â¤Î¤äˇ˘\f(CW0600\fP¤ËŔßÄꤷ¤ĆÂľ¤ÎĄćˇĽĄ¶¤«¤éĂĽËö¤ň +ŵ·żĹޤĘŔßÄęĂͤȤ·¤Ć¤Ďˇ˘\fI0622\fR¤ËŔßÄꤷ¤ĆÂľ¤ÎĄćˇĽĄ¶¤¬¤˝¤ÎĂĽËö¤Ëwrite +Ą˘ĄŻĄ»Ąą˝ĐÍč¤ëÍͤˤą¤ë¤â¤Î¤äˇ˘\fI0600\fR¤ËŔßÄꤷ¤ĆÂľ¤ÎĄćˇĽĄ¶¤«¤éĂĽËö¤ň Ľé¤ë¤â¤Î¤Ę¤É¤¬¤˘¤ëˇŁ -»ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘ĂĽËö¤Îµö˛Ä°Ŕ­¤Ď\f(CW0622\fP¤Ë˝é´ü˛˝¤µ¤ě¤ëˇŁ +»ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘ĂĽËö¤Îµö˛Ä°Ŕ­¤Ď\fI0622\fR¤Ë˝é´ü˛˝¤µ¤ě¤ëˇŁ ´ŘϢľđĘó¤ĎTTYGROUP¤ň»˛ľČ¤»¤čˇŁ .\" .IP "TTYTYPE_FILE (ʸ»úÎó)" @@ -394,23 +518,29 @@ TTYGROUP Î㤨¤Đ: .nf .sp -.ft CW +.ft I vt100\0 tty01 wyse60 tty02 \0\0.\0\0\0 \0\0. \0\0.\0\0\0 \0\0. \0\0.\0\0\0 \0\0. -.ft P +.ft R .sp .fi -¤ł¤ÎľđĘó¤Ď´Ä¶­ĘŃżôTERM¤ň˝é´ü˛˝¤ą¤ë¤ż¤á¤ËÍѤ¤¤é¤ě¤ëˇŁ +¤ł¤ÎľđĘó¤Ď´Ä¶­ĘŃżô TERM ¤¬¤Ţ¤ŔŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤»ţ¤Ë +¤ł¤ě¤ň˝é´ü˛˝¤ą¤ë¤ż¤á¤Ŕ¤±¤ËÍѤ¤¤é¤ě¤ëˇŁ µ­ąć``#''¤Ç»Ď¤Ţ¤ëąÔ¤ĎĄłĄáĄóĄČ¤Č¤·¤Ć°·¤ď¤ě¤ëˇŁ ¤ł¤ÎĄŃĄéĄáˇĽĄż¤¬ŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąçˇ˘ĄŐĄˇĄ¤Ąë¤¬Â¸şß¤·¤Ę¤¤ľěąçˇ˘¤â¤·¤Ż¤Ď¤ł¤Î ĄŐĄˇĄ¤ĄëĂć¤ÇĂĽËöŔţ¤¬¸«¤Ä¤«¤é¤Ę¤¤ľěąç¤Ďˇ˘´Ä¶­ĘŃżôTERM¤ĎŔßÄꤵ¤ě¤Ę¤¤ˇŁ .\" +.IP "UID_MAX (żô)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.IP "UID_MIN (żô)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .IP "ULIMIT (ÇÜŔşĹŮżô)" ĄŐĄˇĄ¤ĄëĄµĄ¤Ąş¤Î¸ÂĹ٤ň¤ł¤ÎĂͤ˽é´ü˛˝¤ą¤ëˇŁ -.IR ulimit +.I ulimit ¤¬Č÷¤ď¤Ă¤Ć¤¤¤ëĄ·ĄąĄĆĄŕˇ˘Î㤨¤ĐSystem V¤Ç¤Î¤ßĄµĄÝˇĽĄČ¤µ¤ě¤Ć¤¤¤ëˇŁ »ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘ĄŐĄˇĄ¤ĄëĄµĄ¤Ąş¸ÂĹ٤Ϥ˘¤ëÂ礭¤ĘĂͤ˽é´ü˛˝¤µ¤ě¤ëˇŁ .\" @@ -418,11 +548,12 @@ TTYGROUP µö˛Ä°Ŕ­ĄŢĄąĄŻ¤ň¤ł¤ÎĂͤ˽é´ü˛˝¤ą¤ëˇŁ »ŘÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘µö˛Ä°Ŕ­ĄŢĄąĄŻ¤ĎĄĽĄí¤Ë˝é´ü˛˝¤µ¤ě¤ëˇŁ .\" +.IP "USERDEL_CMD (ʸ»úÎó)" +XXX ʸ˝ń˛˝¤ÎɬÍפ˘¤ęˇŁ +.\" .SH Áę¸ß»˛ľČ -.\" The following cross reference shows which programs in the shadow login -.\" suite use which parameters. -°Ę˛Ľ¤ÎÁę¸ß»˛ľČ¤Ďshadow login suiteĂć¤Î¤É¤ÎĄ×ĄíĄ°ĄéĄŕ¤¬ -¤É¤ÎĄŃĄéĄáˇĽĄż¤ň»ČÍѤą¤ë¤«¤ňĽ¨¤·¤ż¤â¤Î¤Ç¤˘¤ë +°Ę˛Ľ¤ÎÁę¸ß»˛ľČ¤Ď shadow ĄíĄ°Ą¤ĄóµˇÇ˝Ăć¤Î¤É¤ÎĄ×ĄíĄ°ĄéĄŕ¤¬ +¤É¤ÎĄŃĄéĄáˇĽĄż¤ň»ČÍѤą¤ë¤«¤ňĽ¨¤·¤ż¤â¤Î¤Ç¤˘¤ëˇŁ .na .IP login 12 CONSOLE DIALUPS_CHECK_ENAB ENV_HZ ENV_SUPATH ENV_TZ ERASECHAR FAILLOG_ENAB @@ -441,7 +572,17 @@ MOTD_FILE NOLOGIN_STR QUOTAS_ENAB SULOG_FILE SYSLOG_SU_ENAB .IP sulogin 12 ENV_HZ ENV_SUPATH ENV_TZ MAIL_DIR QUOTAS_ENAB TTYPERM .ad +.SH ĄĐĄ° +¤ł¤Î man ĄÚˇĽĄ¸¤Ë˝ń¤«¤ě¤Ć¤¤¤Ę¤¤ŔßÄęĄŃĄéĄáˇĽĄż¤â¤˘¤ëˇŁ .SH ´ŘϢąŕĚÜ -login(1), passwd(4), faillog(4), porttime(4), faillog(8) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1), +.BR passwd (5), +.BR faillog (5), +.BR porttime (5), +.BR faillog (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) +.br +Chip Rosenthal (chip@unicom.com) + + diff --git a/man/ja/logoutd.8 b/man/ja/logoutd.8 index 36ef82c7..04c8e4b8 100644 --- a/man/ja/logoutd.8 +++ b/man/ja/logoutd.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: logoutd.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: logoutd.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,21 +36,23 @@ .SH ĚľÁ° logoutd \- ĄíĄ°Ą¤Ąó»ţ´Ö¤ÎŔ©¸Â¤ň˛Ę¤ą .SH ˝ńĽ° -.B /etc/logoutd +.B logoutd .SH ŔâĚŔ -.I logoutd -¤Ď/etc/porttime¤Ëµ­¤µ¤ě¤Ć¤¤¤ëĄíĄ°Ą¤Ąó»ţ´ÖµÚ¤ÓĄÝˇĽĄČ¤ËÂФą¤ë +.B logoutd +¤Ď +.I /etc/porttime +¤Ëµ­¤µ¤ě¤Ć¤¤¤ëĄíĄ°Ą¤Ąó»ţ´ÖµÚ¤ÓĄÝˇĽĄČ¤ËÂФą¤ë Ŕ©¸Â»öąŕ¤ňĽÂ»Ü¤ą¤ëˇŁ -.I logoutd -¤Ď\fB/etc/rc\fR¤Ë¤č¤Ă¤ĆµŻĆ°¤µ¤ě¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +.B logoutd +¤Ď\fI/etc/rc\fR¤Ë¤č¤Ă¤ĆµŻĆ°¤µ¤ě¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .\" at the current time. -\fB/etc/utmp\fRĄŐĄˇĄ¤Ąë¤ňÄę´üĹŞ¤ËÁöşş¤·ˇ˘ĄíĄ°Ą¤Ąó¤·¤Ć¤¤¤ëłĆĄćˇĽĄ¶¤¬ -\fB/etc/porttime\fRĂć¤Ç»ŘÄꤵ¤ě¤żĄíĄ°Ą¤Ąó˛ÄÇ˝ĄćˇĽĄ¶Ěľˇ˘ĄÝˇĽĄČµÚ¤Ó»ţąď¤Ë +\fI/etc/utmp\fRĄŐĄˇĄ¤Ąë¤ňÄę´üĹŞ¤ËÁöşş¤·ˇ˘ĄíĄ°Ą¤Ąó¤·¤Ć¤¤¤ëłĆĄćˇĽĄ¶¤¬ +\fI/etc/porttime\fRĂć¤Ç»ŘÄꤵ¤ě¤żĄíĄ°Ą¤Ąó˛ÄÇ˝ĄćˇĽĄ¶Ěľˇ˘ĄÝˇĽĄČµÚ¤Ó»ţąď¤Ë Čż¤·¤Ć¤¤¤Ę¤¤¤«¤ň¸ˇşş¤ą¤ëˇŁ -\fB/etc/porttime\fR¤ÎŔ©¸Â¤ËČż¤ą¤ëĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄó¤Ď˝ŞÎ»¤µ¤»¤é¤ě¤ëˇŁ +\fI/etc/porttime\fR¤ÎŔ©¸Â¤ËČż¤ą¤ëĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄó¤Ď˝ŞÎ»¤µ¤»¤é¤ě¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë /etc/porttime \- ĄíĄ°Ą¤ĄóµÚ¤ÓĄÝˇĽĄČ¤ËÂФą¤ëµö˛Ä .br /etc/utmp \- ¸˝şß¤ÎĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄó -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/mkpasswd.8 b/man/ja/mkpasswd.8 index 738c8faa..fbf8309f 100644 --- a/man/ja/mkpasswd.8 +++ b/man/ja/mkpasswd.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: mkpasswd.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: mkpasswd.8,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -41,31 +37,31 @@ .SH ĚľÁ° mkpasswd \- passwdµÚ¤ÓgroupĄÇˇĽĄżĄŮˇĽĄąĄŐĄˇĄ¤Ąë¤ňąąż·¤ą¤ë .SH ˝ńĽ° -\fBmkpasswd\fR [ \fB-fvgps\fR ] \fIfile\fR +\fBmkpasswd\fR [\fB-fvgps\fR] \fIfile\fR .SH ŔâĚŔ -.I mkpasswd +.B mkpasswd ¤ĎĄŐĄéĄĂĄ°¤ÇÍż¤¨¤é¤ě¤ż˝ńĽ°¤Ë¤·¤ż¤¬¤Ă¤ĆĄŐĄˇĄ¤Ąë¤ňĆɤ߹ţ¤ßˇ˘ Âбţ¤ą¤ëĄÇˇĽĄżĄŮˇĽĄąĄŐĄˇĄ¤Ąë¤Î˝ńĽ°¤ËĘŃ´ą¤ą¤ëˇŁ şîŔ®¤µ¤ě¤żĄÇˇĽĄżĄŮˇĽĄąĄŐĄˇĄ¤Ąë¤Ďˇ˘Âż¤Ż¤ÎĄćˇĽĄ¶¤¬¤¤¤ëĄ·ĄąĄĆĄŕ¤Ç¤ÎĄ˘ĄŻĄ»Ąą ĄŃĄŐĄ©ˇĽĄŢĄóĄą¤ň˛ţÁ±¤ą¤ë°Ů¤ËÍѤ¤¤é¤ě¤ëˇŁ ˝ĐÎĎĄŐĄˇĄ¤Ąë¤Ď\fIfile\fR.dirµÚ¤Ó\fIfile\fR.pag¤Č¤ÎĚľÁ°¤¬ÉŐ¤±¤é¤ě¤ëˇŁ .PP -\fB-f\fRĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤹ¤ë¤Čˇ˘\fImkpasswd\fR¤Ď´ű¤Ë˝ĐÎĎĄŐĄˇĄ¤Ąë¤¬Â¸şß +\fB-f\fRĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤹ¤ë¤Čˇ˘\fBmkpasswd\fR¤Ď´ű¤Ë˝ĐÎĎĄŐĄˇĄ¤Ąë¤¬Â¸şß ¤·¤Ć¤¤¤Ć¤â̵»ë¤·¤Ćľĺ˝ń¤­¤ňąÔ¤Ę¤¦ˇŁ ÄĚľď¤Ďˇ˘˝ĐÎĎĄŐĄˇĄ¤Ąë¤¬´ű¤Ë¸şß¤ą¤ë¤Č¤Î·Ůąđ¤ňČŻ¤·¤ĆĂćĹÓ˝ŞÎ»¤ą¤ëˇŁ .PP -\fB-v\fRĄŞĄ×Ą·ĄçĄó¤ňÉŐ¤±¤żľěąçˇ˘\fImkpasswd\fR¤ĎĘŃ´ą¤ňąÔ¤Ę¤¦Ëč¤Ë +\fB-v\fRĄŞĄ×Ą·ĄçĄó¤ňÉŐ¤±¤żľěąçˇ˘\fBmkpasswd\fR¤ĎĘŃ´ą¤ňąÔ¤Ę¤¦Ëč¤Ë łĆĄěĄłˇĽĄÉ¤ÎľđĘó¤ň˝ĐÎϤą¤ë¤Č¤Č¤â¤Ëˇ˘şÇ¸ĺ¤Ë˝ŞÎ»ĄáĄĂĄ»ˇĽĄ¸¤ňÉ˝Ľ¨¤ą¤ëˇŁ .PP -\fB-g\fRĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤żľěąç¤Ďˇ˘ĆţÎĎĄŐĄˇĄ¤Ąë¤¬\fB/etc/group\fR +\fB-g\fRĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤żľěąç¤Ďˇ˘ĆţÎĎĄŐĄˇĄ¤Ąë¤¬\fI/etc/group\fR ĄŐĄˇĄ¤Ąë¤ČƱ¤¸˝ńĽ°¤Ç¤˘¤ë¤Č¤·¤Ć˝čÍý¤ňąÔ¤Ę¤¦ˇŁ -\fB-s\fRĄŞĄ×Ą·ĄçĄó¤ČÁȤ߹ç¤ď¤»¤ĆÍѤ¤¤żľěąç¤Ďˇ˘\fB/etc/gshadow\fRĄŐĄˇĄ¤Ąë +\fB-s\fRĄŞĄ×Ą·ĄçĄó¤ČÁȤ߹ç¤ď¤»¤ĆÍѤ¤¤żľěąç¤Ďˇ˘\fI/etc/gshadow\fRĄŐĄˇĄ¤Ąë ¤Î˝ńĽ°¤Č¤·¤Ć°·¤¦ˇŁ .PP \fB-p\fRĄŞĄ×Ą·ĄçĄó¤ňÉŐ¤±¤żľěąç¤Ďˇ˘ĆţÎĎĄŐĄˇĄ¤Ąë¤Î˝ńĽ°¤¬\fB/etc/passwd\fR ¤Î·ÁĽ°¤Ç¤˘¤ë¤Č¤·¤Ć˝čÍý¤ą¤ëˇŁ ĄÇĄŁĄŐĄ©ĄëĄČˇŁ -\fB-s\fRĄŞĄ×Ą·ĄçĄó¤ČÁȤ߹ç¤ď¤»¤żľěąç¤Ďˇ˘\fB/etc/shadow\fRĄŐĄˇĄ¤Ąë¤Î +\fB-s\fRĄŞĄ×Ą·ĄçĄó¤ČÁȤ߹ç¤ď¤»¤żľěąç¤Ďˇ˘\fI/etc/shadow\fRĄŐĄˇĄ¤Ąë¤Î ˝ńĽ°¤Č¤·¤Ć˝čÍý¤ňąÔ¤¦ˇŁ .SH ·Ůąđ ĘŁżô¤ÎĄÇˇĽĄżĄŮˇĽĄąĄŐĄˇĄ¤Ąë¤ň»ČÍѤą¤ë¤ł¤Č¤Ďˇ˘NDBMĄÇˇĽĄżĄŮˇĽĄąĄéĄ¤ĄÖĄéĄę @@ -84,6 +80,8 @@ mkpasswd \- passwd .br /etc/gshadow \- shadow¤·¤żĄ°ĄëˇĽĄ×ľđĘó .SH ´ŘϢąŕĚÜ -passwd(4), group(4), shadow(4) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR passwd (5), +.BR group (5), +.BR shadow (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/newgrp.1 b/man/ja/newgrp.1 index e1b54cea..a3af9a1e 100644 --- a/man/ja/newgrp.1 +++ b/man/ja/newgrp.1 @@ -1,4 +1,4 @@ -.\" Copyright 1991, John F. Haugh II +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: newgrp.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: newgrp.1,v 1.2 2001/11/16 17:01:32 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -42,21 +38,21 @@ newgrp \- .br sg \- °Ű¤Ę¤ëĄ°ĄëˇĽĄ×ID¤ÇĄłĄŢĄóĄÉ¤ňĽÂąÔ¤ą¤ë .SH ˝ńĽ° -.B newgrp -[ - ] [ \fIgroup\fR ] +.BR newgrp " [" - ] +[\fIgroup\fR] .br -.B sg -[ - ] [ \fIgroup\fR [ \fB-c\fR \fIcommand\fR ] ] +.BR sg " [" - ] +[\fIgroup\fR [[\fB-c\fR] \fIcommand\fR]] .SH ŔâĚŔ -.I newgrp +.B newgrp ¤ĎĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄóĂć¤Ë¸˝şß¤ÎĄ°ĄëˇĽĄ×ID¤ňĘŃąą¤ą¤ë¤ż¤á¤ËÍѤ¤¤é¤ě¤ëˇŁ ĄŞĄ×Ą·ĄçĄó¤Č¤·¤Ć\fB\-\fRĄŐĄéĄ°¤ňÍż¤¨¤żľěąç¤Ďˇ˘ ż·¤ż¤ËĄíĄ°Ą¤Ąó¤·¤ż¤Î¤ČƱ¤¸Íͤ˴Ķ­¤¬şĆ˝é´ü˛˝¤µ¤ě¤ëˇŁ ¤˝¤¦¤Ç¤Ę¤¤ľěąç¤Ďˇ˘şî¶ČĄÇĄŁĄěĄŻĄČĄę¤ň´Ţ¤á¤Ćˇ˘¸˝şß¤Î´Ä¶­¤ĎĘѲ˝¤·¤Ę¤¤ˇŁ .PP -.I newgrp +.B newgrp ¤Ďˇ˘¸˝şß¤ÎĽÂşÝ¤ÎĄ°ĄëˇĽĄ×ID¤ňˇ˘»ŘÄꤷ¤żĄ°ĄëˇĽĄ×¤Ëˇ˘ -¤Ţ¤żĄ°ĄëˇĽĄ×Ěľ¤ň»ŘÄꤷ¤Ę¤«¤Ă¤żľěąç¤Ď\fB/etc/passwd\fR¤Ëµ­şÜ¤µ¤ě¤ż +¤Ţ¤żĄ°ĄëˇĽĄ×Ěľ¤ň»ŘÄꤷ¤Ę¤«¤Ă¤żľěąç¤Ď\fI/etc/passwd\fR¤Ëµ­şÜ¤µ¤ě¤ż ĄÇĄŁĄŐĄ©ĄëĄČ¤ÎĄ°ĄëˇĽĄ×¤Ëˇ˘ĘŃąą¤ą¤ëˇŁ ĄćˇĽĄ¶¤Ë¤ĎĄŃĄąĄďˇĽĄÉ¤¬¤Ę¤ŻĄ°ĄëˇĽĄ×¤Ë¤Ď¤˘¤ëľěąçˇ˘ ¤â¤·¤Ż¤Ďˇ˘ĄáĄóĄĐˇĽ¤Ç¤˘¤ë¤ČŔßÄꤵ¤ě¤Ć¤Ş¤é¤şˇ˘ @@ -65,25 +61,23 @@ sg \- Ą°ĄëˇĽĄ×¤ÎĄŃĄąĄďˇĽĄÉ¤¬ŔßÄꤵ¤ě¤Ć¤Ş¤é¤şˇ˘¤«¤ÄĄćˇĽĄ¶¤¬ĄáĄóĄĐˇĽ¤Č¤·¤Ć ŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘Ą˘ĄŻĄ»Ąą¤ňµńČݤµ¤ě¤ëˇŁ .PP -.I sg -ĄłĄŢĄóĄÉ¤Ď\fInewgrp\fR¤ČƱÍͤĘĆŻ¤­¤ň¤ą¤ë¤¬ˇ˘ +.B sg +ĄłĄŢĄóĄÉ¤Ď\fBnewgrp\fR¤ČƱÍͤĘĆŻ¤­¤ň¤ą¤ë¤¬ˇ˘ ĄćˇĽĄ¶¤ÎĄ·Ą§Ąë¤ĎĂÖ¤­´ą¤ď¤é¤Ę¤¤ˇŁ -˝ľ¤Ă¤Ćˇ˘\fIsg\fRĄłĄŢĄóĄÉ¤«¤éČ´¤±¤żľěąç¤Ď°ĘÁ°¤ÎĄ°ĄëˇĽĄ×ID¤ËĚá¤ëˇŁ -.I sg +˝ľ¤Ă¤Ćˇ˘\fBsg\fRĄłĄŢĄóĄÉ¤«¤éČ´¤±¤żľěąç¤Ď°ĘÁ°¤ÎĄ°ĄëˇĽĄ×ID¤ËĚá¤ëˇŁ +.B sg ¤ĎĄłĄŢĄóĄÉ¤âĽő¤±ÉŐ¤±¤ëˇŁ ĄłĄŢĄóĄÉ¤ĎBourneĄ·Ą§Ąë¤ÇĽÂąÔ¤µ¤ěˇ˘°úÍŃÉä¤Ç°Ď¤Ţ¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .SH ·Ůąđ -.PP -¤ł¤ÎČǤÎ\fInewgrp\fR¤Ë¤ĎÂż¤Ż¤ÎĄłĄóĄŃĄ¤Ąë»ţĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ë¤¬ˇ˘ +¤ł¤ÎČǤÎ\fBnewgrp\fR¤Ë¤ĎÂż¤Ż¤ÎĄłĄóĄŃĄ¤Ąë»ţĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ë¤¬ˇ˘ ĄµĄ¤ĄČ¤Ë¤č¤Ă¤Ć¤Ďˇ˘¤˝¤Î¤¦¤Á¤Î¤¤¤Ż¤Ä¤«¤·¤«ŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤¤ł¤Č¤â¤˘¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë /etc/passwd \- ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČľđĘó .br /etc/group \- Ą°ĄëˇĽĄ×ľđĘó .SH ´ŘϢąŕĚÜ -login(1), -id(1), -su(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.BR login (1), +.BR id (1), +.BR su (1) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/newusers.8 b/man/ja/newusers.8 new file mode 100644 index 00000000..154cc712 --- /dev/null +++ b/man/ja/newusers.8 @@ -0,0 +1,73 @@ +.\" 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. +.\" +.\" $Id: newusers.8,v 1.1 2001/11/16 17:00:48 ankry Exp $ +.\" +.\" Japanese Version Copyright (c) 1996 HANATAKA Shinya +.\" all rights reserved. +.\" Translated Wed Nov 20 17:42:39 JST 1996 +.\" by HANATAKA Shinya +.\" +.TH NEWUSERS 8 +.SH ĚľÁ° +\fBnewusers\fR - ĄćˇĽĄ¶ľđĘó¤ÎĘŃąą¤äż·µ¬ĄćˇĽĄ¶şîŔ®¤ň¤Ţ¤Č¤á¤ĆąÔ¤¦ +.SH ˝ńĽ° +\fBnewusers\fR [\fI new_users \fR] +.SH ŔâĚŔ +\fBnewusers\fR ¤Ďˇ˘ĄćˇĽĄ¶Ěľ¤ČʿʸĄŃĄąĄďˇĽĄÉ¤ÎÂФňµ­¤·¤żĄŐĄˇĄ¤Ąë¤ňĆɤߡ˘ +¤˝¤ÎľđĘó¤ň¤â¤Č¤Ëˇ˘´ű¸¤ÎĄćˇĽĄ¶ľđĘó¤ÎĘŃąą¤äˇ˘ż·µ¬ĄćˇĽĄ¶¤ÎşîŔ®¤ňąÔ¤¦ˇŁ +¤ł¤ÎĄŐĄˇĄ¤Ąë¤Î˝ńĽ°¤Ďˇ˘˛Ľµ­¤ÎĹŔ¤ň˝ü¤­ˇ˘ +ɸ˝ŕĹŞ¤ĘĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë (\fBpasswd\fR(5) »˛ľČ) ¤ČƱ¤¸¤Ç¤˘¤ëˇŁ +.IP "\fIpw_passwd\fR" 10 +¤ł¤ÎĄŐĄŁˇĽĄëĄÉ¤¬°Ĺąć˛˝¤µ¤ěˇ˘°Ĺąć˛˝ĄŃĄąĄďˇĽĄÉ¤Č¤Ę¤ëˇŁ +.IP "\fIpw_age\fR" +ĄćˇĽĄ¶¤¬¤ą¤Ç¤Ë¸şß¤ą¤ëľěąçˇ˘ĄŃĄąĄďˇĽĄÉ¤ň±Ł¤ą¤ż¤áˇ˘¤ł¤ÎĄŐĄŁˇĽĄëĄÉ¤Ď̵»ë¤µ¤ě¤ëˇŁ +.IP "\fIpw_gid\fR" +¤ł¤ÎĄŐĄŁˇĽĄëĄÉ¤Ë´ű¸¤ÎĄ°ĄëˇĽĄ×¤ň»ŘÄꤷ¤żľěąç¤Ďˇ˘ +ĄćˇĽĄ¶¤Ď¤˝¤ÎĄ°ĄëˇĽĄ×¤Ë˛Ă¤¨¤é¤ě¤ëˇŁ +¸şß¤·¤Ę¤¤Ą°ĄëˇĽĄ× ID ¤ň»ŘÄꤷ¤żľěąç¤Ďˇ˘ +¤˝¤ÎĄ°ĄëˇĽĄ× ID ¤ň¤â¤Äż·¤ż¤ĘĄ°ĄëˇĽĄ×¤¬şî¤é¤ě¤ëˇŁ +.IP "\fIpw_dir\fR" +¤ł¤ÎĄŐĄŁˇĽĄëĄÉ¤Ç»ŘÄꤷ¤żĄÇĄŁĄěĄŻĄČĄę¤¬¤ą¤Ç¤Ë¸şß¤ą¤ë¤«ĄÁĄ§ĄĂĄŻ¤·ˇ˘ +¤â¤·Â¸şß¤·¤Ę¤±¤ě¤Đˇ˘ż·¤ż¤ËĄÇĄŁĄěĄŻĄČĄę¤¬şî¤é¤ě¤ëˇŁ +¤Ţ¤żˇ˘¤ł¤ÎĄÇĄŁĄěĄŻĄČĄę¤Ďˇ˘ +ż·µ¬ĄćˇĽĄ¶ˇ˘¤˘¤ë¤¤¤ĎľđĘó¤¬ĘŃąą¤µ¤ě¤żĄćˇĽĄ¶¤¬˝ęÍ­ĽÔ¤Č¤Ę¤ëˇŁ +.PP +¤ł¤ÎĄłĄŢĄóĄÉ¤Ďˇ˘Âż¤Ż¤ÎĄ˘Ą«Ą¦ĄóĄČ¤¬°ěĹ٤ËĘŃąą¤µ¤ě¤ë¤č¤¦¤Ę +Â礭¤ĘĄ·ĄąĄĆĄŕ´Ä¶­¤Ç»Č¤¦¤ż¤á¤Î¤â¤Î¤Ç¤˘¤ëˇŁ +.SH ·Ůąđ +.\" The \fImkpasswd\fR command must be executed afterwards to update the +.\" DBM password files. +ĆţÎĎĄŐĄˇĄ¤Ąë¤Ë¤Ďˇ˘Ŕ¸¤ÎĄŃĄąĄďˇĽĄÉ¤¬´Ţ¤Ţ¤ě¤ë¤ż¤áˇ˘°·¤¤¤ËĂí°Ő¤ą¤ë¤ł¤ČˇŁ +.SH ´ŘϢąŕĚÜ +.\" mkpasswd(8), passwd(1), useradd(1) +.BR passwd (1), +.BR useradd (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + + diff --git a/man/ja/passwd.1 b/man/ja/passwd.1 index 9803560b..af49c90c 100644 --- a/man/ja/passwd.1 +++ b/man/ja/passwd.1 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1994, John F. Haugh II +.\" Copyright 1989 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: passwd.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: passwd.1,v 1.3 2001/12/22 05:40:04 kloczek Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,20 +36,20 @@ .SH ĚľÁ° passwd \- ĄćˇĽĄ¶ĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ë .SH ˝ńĽ° -\fBpasswd\fR [ \fB-f \fR|\fB -s \fR ] [ \fIname\fR ] +\fBpasswd\fR [\fB-f\fR|\fB-s\fR] [\fIname\fR] .br -\fBpasswd\fR [ \fB-g\fR ] [ \fB-r\fR|\fBR\fR ] \fIgroup\fR +\fBpasswd\fR [\fB-g\fR] [\fB-r\fR|\fB-R\fR] \fIgroup\fR .br -\fBpasswd\fR [ \fB-x\fR \fImax\fR ] [ \fB-n\fR \fImin\fR ] -[ \fB-w\fR \fIwarn\fR ] [ \fB-i\fR \fIinact\fR ] \fIname\fR +\fBpasswd\fR [\fB-x\fR \fImax\fR] [\fB-n\fR \fImin\fR] +[\fB-w\fR \fIwarn\fR] [\fB-i\fR \fIinact\fR] \fIname\fR .br -\fBpasswd\fR { \fB-l\fR | \fB-u\fR | \fB-d\fR | \fB-S\fR } \fIname\fR +\fBpasswd\fR {\fB-l\fR|\fB-u\fR|\fB-d\fR|\fB-S\fR} \fIname\fR .SH ŔâĚŔ -\fIpasswd\fR¤ĎĄćˇĽĄ¶µÚ¤ÓĄ°ĄëˇĽĄ×Ą˘Ą«Ą¦ĄóĄČ¤ÎĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ëˇŁ +\fBpasswd\fR¤ĎĄćˇĽĄ¶µÚ¤ÓĄ°ĄëˇĽĄ×Ą˘Ą«Ą¦ĄóĄČ¤ÎĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ëˇŁ °ěČ̥桼Ą¶¤ĎĽ«Ę¬¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ÎĄŃĄąĄďˇĽĄÉ¤·¤«ĘŃąą¤Ç¤­¤Ę¤¤ˇŁ ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Ď¤¤¤«¤Ę¤ëĄ˘Ą«Ą¦ĄóĄČ¤ÎĄŃĄąĄďˇĽĄÉ¤âĘŃąą¤ą¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ Ą°ĄëˇĽĄ×¤Î´ÉÍýĽÔ¤ĎĄ°ĄëˇĽĄ×¤ÎĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ -\fIpasswd\fR¤Ë¤č¤Ă¤Ćˇ˘ĄćˇĽĄ¶¤ÎĄŐĄëĄÍˇĽĄŕˇ˘ĄíĄ°Ą¤ĄóĄ·Ą§Ąëˇ˘ĄŃĄąĄďˇĽĄÉ¤Î +\fBpasswd\fR¤Ë¤č¤Ă¤Ćˇ˘ĄćˇĽĄ¶¤ÎĄŐĄëĄÍˇĽĄŕˇ˘ĄíĄ°Ą¤ĄóĄ·Ą§Ąëˇ˘ĄŃĄąĄďˇĽĄÉ¤Î ´ü¸ÂŔÚ¤ě¤ÎĆüÉŐµÚ¤ÓÍ­¸ú´ü´ÖĹů¤ÎĄ˘Ą«Ą¦ĄóĄČľđĘó¤ňĘŃąą¤ą¤ë¤ł¤Č¤â¤Ç¤­¤ëˇŁ .SS ĄŃĄąĄďˇĽĄÉ¤ÎĘŃąą ĄŃĄąĄďˇĽĄÉ¤¬´ű¤Ë¤˘¤ëľěąç¤Ďˇ˘Ŕ褺¸Ĺ¤¤ĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤą¤ë¤č¤¦ÂĄ¤µ¤ě¤ëˇŁ @@ -64,7 +60,7 @@ passwd \- .PP ĄŃĄąĄďˇĽĄÉ¤¬ĆţÎϤµ¤ě¤ż¸ĺˇ˘ĄŃĄąĄďˇĽĄÉÍ­¸ú´ü¸Â¤ÎľđĘó¤ňÄ´¤Ůˇ˘ ¸˝şßĄŃĄąĄďˇĽĄÉ¤ÎĘŃąą¤¬µö¤µ¤ě¤Ć¤¤¤ë¤«¸ˇşş¤ą¤ëˇŁ -¤â¤·µö˛Ä¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘\fIpasswd\fR¤ĎĘŃąą¤ňµńČݤ·¤Ć˝ŞÎ»¤ą¤ëˇŁ +¤â¤·µö˛Ä¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘\fBpasswd\fR¤ĎĘŃąą¤ňµńČݤ·¤Ć˝ŞÎ»¤ą¤ëˇŁ .PP Ľˇ¤¤¤Çˇ˘Âĺ¤ď¤ę¤ÎĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤą¤ë¤č¤¦ÂĄ¤µ¤ě¤ëˇŁ ĆţÎϤµ¤ě¤żĄŃĄąĄďˇĽĄÉ¤ĎĘŁ»¨¤µ¤ň¸ˇşş¤µ¤ě¤ëˇŁ @@ -81,10 +77,10 @@ passwd \- .PP Ą·ĄąĄĆĄŕ¤ÎĄÇĄŁĄŐĄ©ĄëĄČ¤ÎľĂµîʸ»ú¤äkillʸ»ú¤ň´Ţ¤á¤Ę¤¤ÍÍ¤Ë Ăí°Ő¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -\fIpasswd\fR¤Ď¤˘¤Ţ¤ę¤Ëñ˝ă¤ĘĄŃĄąĄďˇĽĄÉ¤Ř¤ÎĘŃąą¤ĎµńČݤą¤ëˇŁ +\fBpasswd\fR¤Ď¤˘¤Ţ¤ę¤Ëñ˝ă¤ĘĄŃĄąĄďˇĽĄÉ¤Ř¤ÎĘŃąą¤ĎµńČݤą¤ëˇŁ .PP ĆţÎϤ·¤żĄŃĄąĄďˇĽĄÉ¤¬Ľő¤±Ćţ¤ě¤é¤ě¤żľěąçˇ˘ -\fIpasswd\fR¤Ď¤â¤¦°ěĹŮĆţÎϤňÂĄ¤·ˇ˘ĆóČÖĚܤËĆţÎϤ·¤ż¤â¤Î¤ňşÇ˝é¤Î +\fBpasswd\fR¤Ď¤â¤¦°ěĹŮĆţÎϤňÂĄ¤·ˇ˘ĆóČÖĚܤËĆţÎϤ·¤ż¤â¤Î¤ňşÇ˝é¤Î ¤â¤Î¤ČČćłÓ¤ą¤ëˇŁ ĄŃĄąĄďˇĽĄÉĘŃąą¤¬Ľő¤±Ćţ¤ě¤é¤ě¤ë¤ż¤á¤Ë¤Ďˇ˘ÎľĘý¤ÎĆţÎϤ¬Éäąç¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .SS Ą°ĄëˇĽĄ×ĄŃĄąĄďˇĽĄÉ @@ -182,12 +178,9 @@ NIS .br /etc/shadow \- ĄćˇĽĄ¶¤Î°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ .SH ´ŘϢąŕĚÜ -passwd(3), -shadow(3), -group(5), -passwd(5) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - - - +.BR passwd (3), +.\" .BR shadow (3), +.BR group (5), +.BR passwd (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/passwd.5 b/man/ja/passwd.5 index 56c93816..2c3ed806 100644 --- a/man/ja/passwd.5 +++ b/man/ja/passwd.5 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1990, John F. Haugh II +.\" Copyright 1989 - 1990, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: passwd.5,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: passwd.5,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -60,10 +56,10 @@ passwd \- .PP ĄŃĄąĄďˇĽĄÉ¤¬shadow¤µ¤ě¤Ć¤¤¤ëľěąçˇ˘ĄŃĄąĄďˇĽĄÉÍó¤ňËä¤á¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ shadowĄŃĄąĄďˇĽĄÉ¤ňÍѤ¤¤Ć¤¤¤ëľěąçˇ˘°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤Ď -\fB/etc/shadow\fR¤Ë˝ń¤«¤ě¤Ć¤¤¤ëˇŁ +\fI/etc/shadow\fR¤Ë˝ń¤«¤ě¤Ć¤¤¤ëˇŁ °Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤Ďˇ˘Ą˘ĄëĄŐĄˇĄŮĄĂĄČa¤«¤ézˇ˘A¤«¤éZˇ˘0¤«¤é9 µÚ¤Ó\.¤Č/.¤Î64ʸ»ú¤«¤éşî¤é¤ě¤ż13ʸ»ú¤«¤é¤Ę¤ëˇŁ -¤ł¤Îʸ»úÎ󤬤ɤΤ褦¤Ë˛ňĽá¤µ¤ě¤ë¤«¤ÎľÜşŮ¤Ďˇ˘\fIcrypt(3)\fR¤ň +¤ł¤Îʸ»úÎ󤬤ɤΤ褦¤Ë˛ňĽá¤µ¤ě¤ë¤«¤ÎľÜşŮ¤Ďˇ˘\fBcrypt\fR(3)¤ň »˛ľČ¤Î¤ł¤ČˇŁ .PP ĄŞĄ×Ą·ĄçĄó¤Çˇ˘ĄŃĄąĄďˇĽĄÉ¤ËÂł¤¤¤ĆĄŃĄąĄďˇĽĄÉÍ­¸ú´ü¸Â¤¬ˇ˘ @@ -76,7 +72,7 @@ shadow ĄŃĄąĄďˇĽĄÉ¤ÎÍ­¸ú´ü¸Â¤¬˛á¤®¤ż»ţ¤Ďˇ˘ĄćˇĽĄ¶¤Ďż·¤·¤¤ĄŃĄąĄďˇĽĄÉ¤ňŔßÄę ¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .PP -ĄłĄáĄóĄČÍó¤Ďˇ˘\fIfinger(1)\fRĹů¤ÎÍ͡ą¤ĘĄ·ĄąĄĆĄŕĄćˇĽĄĆĄŁĄęĄĆĄŁ¤ËÍřÍѤµ¤ě¤ëˇŁ +ĄłĄáĄóĄČÍó¤Ďˇ˘\fBfinger\fR(1)Ĺů¤ÎÍ͡ą¤ĘĄ·ĄąĄĆĄŕĄćˇĽĄĆĄŁĄęĄĆĄŁ¤ËÍřÍѤµ¤ě¤ëˇŁ ĄłĄáĄóĄČÍó¤Ë¤Ďąą¤Ë3¤Ä¤ÎżôĂͤ¬µ­Ćţ¤µ¤ě¤Ć¤¤¤Ć¤âÎɤ¤ˇŁ ¤˝¤ě¤é¤Ďˇ˘ .IP "" .5i @@ -90,22 +86,22 @@ ulimit= \- ulimit ¶čĘ̤µ¤ě¤Ć¤¤¤ëˇŁ .PP ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄęÍó¤Ë¤ĎĄíĄ°Ą¤Ąó»ţ¤Îşî¶ČĄÇĄŁĄěĄŻĄČĄęĚľ¤¬µ­¤µ¤ě¤Ć¤¤¤ëˇŁ -\fILogin\fR¤Ď¤ł¤ÎľđĘó¤ňÍѤ¤¤Ć´Ä¶­ĘŃżô\fBHOME\fR¤ÎĆâÍƤňŔßÄꤹ¤ëˇŁ +\fBlogin\fR¤Ď¤ł¤ÎľđĘó¤ňÍѤ¤¤Ć´Ä¶­ĘŃżô\fBHOME\fR¤ÎĆâÍƤňŔßÄꤹ¤ëˇŁ .PP ĄłĄŢĄóĄÉĄ¤ĄóĄżĄ×ĄęĄżÍó¤Ë¤ĎĄćˇĽĄ¶¤ÎĄłĄŢĄóĄÉ¸Ŕ¸ěĄ¤ĄóĄżĄ×ĄęĄż¤â¤·¤Ż¤Ď şÇ˝é¤ËĽÂąÔ¤ą¤ëĄ×ĄíĄ°ĄéĄŕ¤ÎĚľÁ°¤ňµ­¤ąˇŁ -\fILogin\fR¤Ď¤ł¤ÎľđĘó¤ňÍѤ¤¤Ć´Ä¶­ĘŃżô\fBSHELL\fR¤ÎĆâÍƤňŔßÄꤹ¤ëˇŁ +\fBlogin\fR¤Ď¤ł¤ÎľđĘó¤ňÍѤ¤¤Ć´Ä¶­ĘŃżô\fBSHELL\fR¤ÎĆâÍƤňŔßÄꤹ¤ëˇŁ ¤ł¤ÎÍó¤Ë˛ż¤âµ­¤µ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘ĄÇĄŁĄŐĄ©ĄëĄČĂͤȤ·¤Ć\fB/bin/sh\fR¤ň »ČÍѤą¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë /etc/passwd \- ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČľđĘó .SH ´ŘϢąŕĚÜ -login(1), -passwd(1), -su(1), -sulogin(1M), -shadow(5), -pwconv(8), -pwunconv(8) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1), +.BR passwd (1), +.BR su (1), +.BR sulogin (8), +.BR shadow (5), +.BR pwconv (8), +.BR pwunconv (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/porttime.5 b/man/ja/porttime.5 index cbb24bba..930b70d0 100644 --- a/man/ja/porttime.5 +++ b/man/ja/porttime.5 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1990, John F. Haugh II +.\" Copyright 1989 - 1990, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: porttime.5,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: porttime.5,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -62,32 +58,32 @@ porttime \- Á´¤Ć¤ÎĄÝˇĽĄČ¤«¤éĄ˘ĄŻĄ»Ąą¤ą¤ë»ö¤ňµö˛Ä¤·¤Ć¤¤¤ëˇŁ .br .sp 1 -*:jfh:Wk0900-1700 + *:jfh:Wk0900-1700 .br .sp 1 °Ę˛Ľ¤ÎĄ¨ĄóĄČĄę¤Ç¤Ďˇ˘\fBroot\fRµÚ¤Ó\fBoper\fR°Ęł°¤ÎĄćˇĽĄ¶¤Ë¤Ďǡ˛ż¤Ę¤ë»ţ´Ö¤Ç¤â /dev/console¤«¤é¤ÎĄ˘ĄŻĄ»Ąą¤ňµö˛Ä¤·¤Ć¤¤¤Ę¤¤ˇŁ -¤ł¤ÎÎ㤫¤é\fB/etc/porttime\fRĄŐĄˇĄ¤Ąë¤¬Ą˘ĄŻĄ»ĄąĄżĄ¤Ąŕ¤ÎĄęĄąĄČ¤Č¤·¤Ć +¤ł¤ÎÎ㤫¤é\fI/etc/porttime\fRĄŐĄˇĄ¤Ąë¤¬Ą˘ĄŻĄ»ĄąĄżĄ¤Ąŕ¤ÎĄęĄąĄČ¤Č¤·¤Ć ¤É¤ÎÍͤʽç˝ř¤Ç˝čÍý¤µ¤ě¤ë¤«¤¬Ę¬¤«¤ëˇŁ Âľ¤ÎÁ´¤Ć¤ÎĄćˇĽĄ¶¤ĎĆóČÖĚܤΥ¨ĄóĄČĄę¤ËÉäąç¤·ˇ˘˝ľ¤Ă¤Ćconsole¤«¤é¤ÎĄ˘ĄŻĄ»Ąą¤Ď µö˛Ä¤µ¤ě¤Ę¤¤ˇŁ .br .sp 1 -console:root,oper:Al0000-2400 + console:root,oper:Al0000-2400 .br -console:*: + console:*: .br .sp 1 °Ę˛Ľ¤ÎĄ¨ĄóĄČĄę¤Ç¤Ďˇ˘ĄćˇĽĄ¶\fBgames\fR¤Ď˝˘¶Č»ţ´Öł°¤Ę¤éǡ˛ż¤Ę¤ëĄÝˇĽĄČ¤«¤é¤â Ą˘ĄŻĄ»Ąą˝ĐÍč¤ëÍͤ˻ŘÄꤷ¤Ć¤¤¤ëˇŁ .br .sp 1 -*:games:Wk1700-0900,SaSu0000-2400 + *:games:Wk1700-0900,SaSu0000-2400 .br .sp 1 .SH ĄŐĄˇĄ¤Ąë /etc/porttime \- ĄÝˇĽĄČ¤Ř¤ÎĄ˘ĄŻĄ»Ąą˛ÄÇ˝»ţ´Ö¤ňµ­¤·¤żĄŐĄˇĄ¤Ąë .SH ´ŘϢąŕĚÜ -login(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/pw_auth.3 b/man/ja/pw_auth.3 index 8606f36e..be353f66 100644 --- a/man/ja/pw_auth.3 +++ b/man/ja/pw_auth.3 @@ -1,4 +1,4 @@ -.\" Copyright 1992 - 1993, John F. Haugh II +.\" Copyright 1992 - 1993, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pw_auth.3,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: pw_auth.3,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,12 +36,18 @@ .SH ĚľÁ° pwauth \- ´ÉÍýĽÔ¤ÎŔßÄꤷ¤żĄŃĄąĄďˇĽĄÉǧľÚĄëˇĽĄÁĄó .SH ˝ńĽ° -.IP "" .5i -#include -.IP "" .5i -int pw_auth (char *command, char *user, int reason, char *input); +.B #include +.PP +.B int pw_auth (char +.I *command, +.B char +.I *user, +.B int +.I reason, +.B char +.IB *input) ; .SH ŔâĚŔ -.I pw_auth +.B pw_auth ¤Ďˇ˘»ŘÄꤵ¤ě¤żĄćˇĽĄ¶¤ËÂФ·¤Ć´ÉÍýĽÔ¤¬ŔßÄꤷ¤ż´Řżô¤ň¸Ć¤Ó˝Đ¤ąˇŁ .PP \fIcommand\fR¤ĎǧľÚĄ×ĄíĄ°ĄéĄŕ¤ÎĚľÁ°¤Ç¤˘¤ëˇŁ @@ -55,7 +57,7 @@ int pw_auth (char *command, char *user, int reason, char *input); łĆˇą¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ďµ­¤µ¤ě¤Ć¤¤¤ë˝ç¤ËĽÂąÔ¤µ¤ě¤ëˇŁ ĄłĄŢĄóĄÉĄéĄ¤Ąó°úżô¤Ď°Ę˛Ľ¤Ëµó¤˛¤ëĘýˡ¤Ç»ŘÄꤵ¤ě¤ëˇŁ .PP -\fIuser\fR¤Ďˇ˘\fB/etc/passwd\fRĄŐĄˇĄ¤ĄëĂć¤Ëµ­¤µ¤ě¤żˇ˘ +\fIuser\fR¤Ďˇ˘\fI/etc/passwd\fRĄŐĄˇĄ¤ĄëĂć¤Ëµ­¤µ¤ě¤żˇ˘ ǧľÚ¤µ¤ě¤ëĄćˇĽĄ¶Ěľ¤Ç¤˘¤ëˇŁ ĄćˇĽĄ¶Ą¨ĄóĄČĄę¤ĎĄćˇĽĄ¶Ěľ¤Ç»ŘÄꤵ¤ě¤ëˇŁ ¤·¤ż¤¬¤Ă¤Ćˇ˘°ě°ŐĹŞ¤Ç¤Ę¤¤ĄćˇĽĄ¶ID¤¬¤˘¤Ă¤Ć¤âÎɤŻˇ˘ @@ -67,54 +69,59 @@ int pw_auth (char *command, char *user, int reason, char *input); ĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż0,1µÚ¤Ó2¤ň»Č¤¦¤ł¤Č¤¬˝ĐÍč¤ëˇŁ ǧľÚ¤ňÍ×ŔÁ¤·¤żĄćˇĽĄ¶¤ÎƱ°ěŔ­¤ňÄ´¤Ů¤ë¤ż¤á¤ËĽÂşÝ¤ÎĄćˇĽĄ¶ID¤ňÍѤ¤¤ë¤ł¤Č¤â˝ĐÍč¤ëˇŁ \fIreason\fR¤Ď°Ę˛Ľ¤Î¤¤¤ş¤ě¤«¤Ç¤˘¤ë -.IP PW_SU 1i +.IP \fBPW_SU\fR 1i »ŘÄꤷ¤żĄćˇĽĄ¶¤ÎĽÂĄćˇĽĄ¶ID¤ËĘŃąą¤ą¤ë¤ż¤á¤Ëˇ˘ĄłĄŢĄóĄÉ¤ňµŻĆ°¤·¤żĄćˇĽĄ¶¤Î ĽÂĄćˇĽĄ¶ID¤ÎǧľÚ¤ňąÔ¤¦ˇŁ \fB-s\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_LOGIN 1i +.IP \fBPW_LOGIN\fR 1i ż·¤ż¤ËĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄó¤ňşî¤ę˝Đ¤˝¤¦¤Č¤·¤Ć¤¤¤ë»ŘÄꤵ¤ě¤żĄćˇĽĄ¶¤ÎǧľÚ¤ň ąÔ¤¦ˇŁ \fB-l\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_ADD 1i +.IP \fBPW_ADD\fR 1i »ŘÄꤵ¤ě¤żĄćˇĽĄ¶¤ËÂФ·¤Ćż·¤ż¤ĘĄ¨ĄóĄČĄę¤ňşî¤ëˇŁ ¤ł¤ě¤Ë¤č¤ęˇ˘Ç§ľÚĄ×ĄíĄ°ĄéĄŕ¤¬ż·µ¬ĄćˇĽĄ¶ÍѤε­˛±Îΰč¤ň˝ŕČ÷¤ą¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ \fB-a\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_CHANGE 1i +.IP \fBPW_CHANGE\fR 1i »ŘÄꤵ¤ě¤żĄćˇĽĄ¶¤Î´ű¸¤ÎĄ¨ĄóĄČĄę¤ňĘŃąą¤ą¤ëˇŁ ¤ł¤ě¤Ë¤č¤ęˇ˘Ç§ľÚĄ×ĄíĄ°ĄéĄŕ¤¬´ű¸¤ÎĄćˇĽĄ¶¤ÎǧľÚľđĘó¤ňĘŃąą¤ą¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ \fB-c\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_DELETE 1i +.IP \fBPW_DELETE\fR 1i »ŘÄꤵ¤ě¤żĄćˇĽĄ¶¤ÎǧľÚľđĘó¤ňľĂµî¤ą¤ëˇŁ ¤ł¤ě¤Ë¤č¤ęˇ˘°Ę¸ĺ¤ł¤ÎǧľÚĄ×ĄíĄ°ĄéĄŕ¤ňÍѤ¤¤ĆǧľÚ¤µ¤ě¤ë»ö¤Î̵¤Ż¤Ę¤Ă¤żĄćˇĽĄ¶ ľđĘó¤Îµ­˛±Îΰč¤ň˛óÉü¤ą¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ \fB-d\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_TELNET 1i -\fItelnet\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ +.IP \fBPW_TELNET\fR 1i +\fBtelnet\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ \fB-t\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_RLOGIN 1i -\fIrlogin\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ +.IP \fBPW_RLOGIN\fR 1i +\fBrlogin\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ \fB-r\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ -.IP PW_FTP 1i -\fIftp\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ +.IP \fBPW_FTP\fR 1i +\fBftp\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ \fB-f\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ ĄćˇĽĄ¶¤Č¤ä¤ę¤Č¤ę¤ą¤ë¤ż¤á¤Ëɸ˝ŕĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤ňÍѤ¤¤ë¤ł¤Č¤Ď˝ĐÍč¤Ę¤¤ˇŁ ɸ˝ŕĆţÎĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤ĎżĆĄ×ĄíĄ»Ąą¤Ë·ë¤Ó¤Ä¤±¤é¤ě¤Ć¤Ş¤ęˇ˘ -°ěĘýÂľ¤ÎĆó¤Ä¤Î˝ĐÎĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤Ď\fB/dev/null\fR¤Ë·ë¤Ó¤Ä¤±¤é¤ě¤Ć¤¤¤ëˇŁ -\fIpw_auth\fR´Řżô¤ĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż0¤ňÍѤ¤¤Ć°ěąÔ¤ÎĄÇˇĽĄż¤ň +°ěĘýÂľ¤ÎĆó¤Ä¤Î˝ĐÎĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤Ď\fI/dev/null\fR¤Ë·ë¤Ó¤Ä¤±¤é¤ě¤Ć¤¤¤ëˇŁ +\fBpw_auth\fR´Řżô¤ĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż0¤ňÍѤ¤¤Ć°ěąÔ¤ÎĄÇˇĽĄż¤ň ǧľÚĄ×ĄíĄ°ĄéĄŕ¤ËĄŃĄ¤Ą×¤ą¤ëˇŁ -.IP PW_REXEC 1i +.IP \fBPW_REXEC\fR 1i \fIrexec\fRĄłĄŢĄóĄÉ¤ňÍѤ¤¤ĆĄ·ĄąĄĆĄŕ¤ËŔÜÂł¤·¤ĆÍ褿ĄćˇĽĄ¶¤ÎǧľÚ¤ňąÔ¤¦ˇŁ \fB-x\fRĄŞĄ×Ą·ĄçĄó¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ň»ŘÄꤷ¤ĆǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ ĄęĄâˇĽĄČĄćˇĽĄ¶¤Č¤ä¤ę¤Č¤ę¤ą¤ë¤ż¤á¤Ëɸ˝ŕĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤ňÍѤ¤¤ë¤ł¤Č¤Ď ˝ĐÍč¤Ę¤¤ˇŁ ɸ˝ŕĆţÎĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤ĎżĆĄ×ĄíĄ»Ąą¤Ë·ë¤Ó¤Ä¤±¤é¤ě¤Ć¤Ş¤ęˇ˘ -°ěĘýÂľ¤ÎĆó¤Ä¤Î˝ĐÎĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤Ď\fB/dev/null\fR¤Ë·ë¤Ó¤Ä¤±¤é¤ě¤Ć¤¤¤ëˇŁ -\fIpw_auth\fR´Řżô¤ĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż0¤ňÍѤ¤¤Ć°ěąÔ¤ÎĄÇˇĽĄż¤ň +°ěĘýÂľ¤ÎĆó¤Ä¤Î˝ĐÎĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż¤Ď\fI/dev/null\fR¤Ë·ë¤Ó¤Ä¤±¤é¤ě¤Ć¤¤¤ëˇŁ +\fBpw_auth\fR´Řżô¤ĎĄŐĄˇĄ¤ĄëĄÇĄŁĄąĄŻĄęĄ×Ąż0¤ňÍѤ¤¤Ć°ěąÔ¤ÎĄÇˇĽĄż¤ň ǧľÚĄ×ĄíĄ°ĄéĄŕ¤ËĄŃĄ¤Ą×¤ą¤ëˇŁ .PP -şÇ¸ĺ¤Î°úżô¤ĎPW_FTPµÚ¤ÓPW_REXEC¤ÎĘýˡ¤ÇÍѤ¤¤é¤ě¤ëǧľÚĄÇˇĽĄż¤Ç¤˘¤ęˇ˘ +şÇ¸ĺ¤Î°úżô¤Ď +.B PW_FTP +µÚ¤Ó +.B PW_REXEC +¤ÎĘýˡ¤ÇÍѤ¤¤é¤ě¤ëǧľÚĄÇˇĽĄż¤Ç¤˘¤ęˇ˘ °ěąÔ¤Îʸ¤Č¤·¤Ć°·¤ď¤ě¤Ćˇ˘Ç§ľÚĄ×ĄíĄ°ĄéĄŕ¤ËĄŃĄ¤Ą×¤µ¤ě¤ëˇŁ -PW_CHANGE¤ÎĘýˡ¤ÇĄćˇĽĄ¶Ěľ¤¬ĘŃąą¤µ¤ě¤ëľěąç¤Ďˇ˘\fIinput\fR¤ÎĆâÍĆ¤Ď +.B PW_CHANGE +¤ÎĘýˡ¤ÇĄćˇĽĄ¶Ěľ¤¬ĘŃąą¤µ¤ě¤ëľěąç¤Ďˇ˘\fIinput\fR¤ÎĆâÍĆ¤Ď °ĘÁ°ÍѤ¤¤Ć¤¤¤żĄćˇĽĄ¶Ěľ¤Č¤Ę¤Ă¤Ć¤¤¤ëˇŁ .SH ·Ůąđ ¤ł¤Î´Řżô¤ĎĽÂşÝ¤ÎĄ»ĄĂĄ·ĄçĄó¤ňşî¤ę˝Đ¤ą¤ł¤Č¤Ď¤·¤Ę¤¤ˇŁ @@ -122,9 +129,14 @@ PW_CHANGE .PP ¤Ţ¤ŔĄÍĄĂĄČĄďˇĽĄŻĄŞĄ×Ą·ĄçĄó¤ĎĄĆĄąĄČ¤·¤Ć¤¤¤Ę¤¤ˇŁ .SH ĘÖ¤ęĂÍ -\fIpw_auth\fR´Řżô¤Ďˇ˘Ç§ľÚĄ×ĄíĄ°ĄéĄŕ¤¬˝ŞÎ»ĄłˇĽĄÉ0¤Ç˝ŞÎ»¤·¤żľěąç¤Ď0¤ňˇ˘ +\fBpw_auth\fR´Řżô¤Ďˇ˘Ç§ľÚĄ×ĄíĄ°ĄéĄŕ¤¬˝ŞÎ»ĄłˇĽĄÉ0¤Ç˝ŞÎ»¤·¤żľěąç¤Ď0¤ňˇ˘ ¤˝¤ě°Ęł°¤Îľěąç¤ĎĄĽĄí°Ęł°¤ÎĂͤňĘÖ¤ąˇŁ .SH ´ŘϢąŕĚÜ -login(1), passwd(1), su(1), useradd(1), userdel(1), usermod(1) -.\" .SH ËÝĚőĽÔ -.\" ¸ĹąâĎÂÄ÷ +.BR login (1), +.BR passwd (1), +.BR su (1), +.BR useradd (8), +.BR userdel (8), +usermod(8) +.SH AUTHOR +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/pwauth.8 b/man/ja/pwauth.8 index 590d8705..2992c960 100644 --- a/man/ja/pwauth.8 +++ b/man/ja/pwauth.8 @@ -1,4 +1,4 @@ -.\" Copyright 1992, John F. Haugh II +.\" Copyright 1992, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pwauth.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: pwauth.8,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -42,18 +38,18 @@ pwauth \- .SH ŔâĚŔ Ą·ĄąĄĆĄŕ¤Î´ÉÍýĽÔ¤Ďˇ˘ĄćˇĽĄ¶¤¬ËܿͤǤ˘¤ë»ö¤ňǧľÚ¤ą¤ëĽęĂʤȤ·¤Ćˇ˘ Ą×ĄíĄ°ĄéĄŕ¤ň¤¤¤Ż¤Ä¤«ŔßÄꤷ¤Ć¤Ş¤Ż»ö¤¬˝ĐÍč¤ëˇŁ -¤˝¤ě¤é¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ď\fB/etc/passwd\fR¤â¤·¤Ż¤Ď\fB/etc/shadow\fRĄŐĄˇĄ¤ĄëĂć¤Çˇ˘ +¤˝¤ě¤é¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ď\fI/etc/passwd\fR¤â¤·¤Ż¤Ď\fI/etc/shadow\fRĄŐĄˇĄ¤ĄëĂć¤Çˇ˘ °Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤ÎÂĺ¤ď¤ę¤Č¤·¤Ć»ŘÄꤵ¤ě¤ëˇŁ ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ň´ÉÍý¤ą¤ëĄćˇĽĄĆĄŁĄęĄĆĄŁ¤Ďˇ˘°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉÍó ¤ňÄ´¤Ůˇ˘¤˝¤ÎĄćˇĽĄ¶¤ËÂФ·¤ĆĄ·ĄąĄĆĄŕ´ÉÍýĽÔ¤¬Ç§ľÚĄ×ĄíĄ°ĄéĄŕ¤ňŔßÄꤷ¤Ć ¤¤¤ë¤«¤É¤¦¤«¤ňČ˝ĂǤą¤ëˇŁ ´ÉÍýĄ×ĄíĄ°ĄéĄŕ¤Î¤¤¤ş¤ě¤«¤¬ˇ˘ ¤ł¤ě¤«¤éĘŃąą¤µ¤ě¤ëĄćˇĽĄ¶¤ËǧľÚĄ×ĄíĄ°ĄéĄŕ¤¬ŔßÄꤵ¤ě¤Ć¤¤¤ë¤Č -Č˝ĂǤ·¤żľěąç¤Ďľď¤Ëˇ˘\fIpw_auth\fR´Řżô¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ +Č˝ĂǤ·¤żľěąç¤Ďľď¤Ëˇ˘\fBpw_auth\fR´Řżô¤¬¸Ć¤Ó˝Đ¤µ¤ě¤ëˇŁ .PP -ĄćˇĽĄ¶Ç§ľÚ¤ËÍѤ¤¤ëşÇ˝é¤ÎĄ¨ĄóĄČĄę¤Ď\fIuseradd\fRĄłĄŢĄóĄÉ¤Ë¤č¤ęŔ¸Ŕ®¤µ¤ě¤ëˇŁ +ĄćˇĽĄ¶Ç§ľÚ¤ËÍѤ¤¤ëşÇ˝é¤ÎĄ¨ĄóĄČĄę¤Ď\fBuseradd\fRĄłĄŢĄóĄÉ¤Ë¤č¤ęŔ¸Ŕ®¤µ¤ě¤ëˇŁ ǧľÚľđĘó¤ÎĘŃąą¤äĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ňşď˝ü¤ą¤ëĹů¤ÎĘŃąą¤ËşÝ¤·¤Ć¤Ď -\fIpw_auth\fR´Řżô¤¬¸Ć¤Ó˝Đ¤µ¤ěˇ˘ +\fBpw_auth\fR´Řżô¤¬¸Ć¤Ó˝Đ¤µ¤ěˇ˘ łĆĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ÎǧľÚľđĘ󤬺ǿ·¤ÎľőÂ֤˰ݻý¤µ¤ě¤ëˇŁ .PP ǧľÚĄ×ĄíĄ°ĄéĄŕĽ«ÂÎ¤ĎĽÂşÝ¤ÎĄíĄ°Ą¤ĄóËô¤ĎĄÍĄĂĄČĄďˇĽĄŻĄ»ĄĂĄ·ĄçĄó¤ň @@ -62,6 +58,12 @@ pwauth \- ¸Ć¤Ó˝Đ¤·¤żĄ×ĄíĄ»Ąą¤Ë¤Ďˇ˘ĄíĄ°Ą¤Ąó¤â¤·¤Ż¤ĎĄÍĄĂĄČĄďˇĽĄŻĄ»ĄĂĄ·ĄçĄó¤ňŔ¸Ŕ® ¤·ĆŔ¤ëŬŔÚ¤ĘĆø˘¤¬¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .SH ´ŘϢąŕĚÜ -login(1), passwd(1), su(1), useradd(1), userdel(1), usermod(1), pwauth(3) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1), +.BR passwd (1), +.BR su (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), +.BR pw_auth (3) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/pwck.8 b/man/ja/pwck.8 index b2323ad4..7845cd7d 100644 --- a/man/ja/pwck.8 +++ b/man/ja/pwck.8 @@ -1,4 +1,4 @@ -.\" Copyright 1992, John F. Haugh II +.\" Copyright 1992, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pwck.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: pwck.8,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,10 +36,10 @@ .SH ĚľÁ° pwck \- ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤Î´°Á´Ŕ­¤ň¸ˇľÚ¤ą¤ë .SH ˝ńĽ° -\fBpwck\fR [ \fB-r\fR ] [ \fIpassword\fR \fIshadow\fR ] -.SH ˝ńĽ° +\fBpwck\fR [\fB-r\fR] [\fIpasswd\fR \fIshadow\fR] +.SH ŔâĚŔ \fBpwck\fR¤ĎĄ·ĄąĄĆĄŕ¤ÎǧľÚľđĘó¤Î´°Á´Ŕ­¤Î¸ˇľÚ¤ňąÔ¤¦ˇŁ -\fB/etc/passwd\fRµÚ¤Ó\fB/etc/shadow\fRĄŐĄˇĄ¤ĄëĂć¤ÎÁ´¤Ć¤ÎĄ¨ĄóĄČĄęˇĽ¤ËÂФ·¤Ćˇ˘ +\fI/etc/passwd\fRµÚ¤Ó\fI/etc/shadow\fRĄŐĄˇĄ¤ĄëĂć¤ÎÁ´¤Ć¤ÎĄ¨ĄóĄČĄęˇĽ¤ËÂФ·¤Ćˇ˘ ˝ńĽ°¤¬Ŕµ¤·¤¤¤«µÚ¤ÓłĆÍó¤Ëµ­¤µ¤ě¤Ć¤¤¤ëĄÇˇĽĄż¤ĎÍ­¸ú¤Ę¤â¤Î¤«¤É¤¦¤«¤Î¸ˇľÚ¤¬ ąÔ¤Ę¤ď¤ě¤ëˇŁ ˝ńĽ°¤¬Ŕµ¤·¤Ż¤Ę¤«¤Ă¤ż¤ę¤˝¤ÎÂľ¤ÎÄűŔµÉÔÇ˝¤Ę¸í¤ę¤ň´Ţ¤ŕĄ¨ĄóĄČĄęˇĽ¤Ďşď˝ü¤ňÂĄ¤µ¤ě¤ëˇŁ @@ -74,12 +70,12 @@ pwck \- Âľ¤ÎÁ´¤Ć¤ÎĄ¨ĄéˇĽ¤ËÂФ·¤Ć¤Ď·Ůąđ¤¬¤Ę¤µ¤ě¤ë¤Î¤ß¤Ç¤˘¤ęˇ˘¤˝¤Îľěąç¤Ď ¸í¤ę¤ňÄűŔµ¤ą¤ë¤ż¤á¤Ë\fBusermod\fRĄłĄŢĄóĄÉ¤ňĽÂąÔ¤ą¤ë¤č¤¦´«¤á¤é¤ě¤ëˇŁ .P -\fB/etc/passwd\fRĄŐĄˇĄ¤Ąë¤ËşîÍѤą¤ëĄłĄŢĄóĄÉ¤Ďˇ˘¸í¤Ă¤ż¤â¤·¤Ż¤Ď +\fI/etc/passwd\fRĄŐĄˇĄ¤Ąë¤ËşîÍѤą¤ëĄłĄŢĄóĄÉ¤Ďˇ˘¸í¤Ă¤ż¤â¤·¤Ż¤Ď ˝ĹĘŁ¤·¤żĄ¨ĄóĄČĄęˇĽ¤ňĘŃąą¤ą¤ë¤ł¤Č¤Ď˝ĐÍč¤Ę¤¤ˇŁ ¤˝¤ÎşÝ¤Ďˇ˘\fBpwck\fR¤ňÍѤ¤¤Ć¸í¤ę¤Î¤˘¤ëĄ¨ĄóĄČĄęˇĽ¤ňşď˝ü¤ą¤Ů¤­¤Ç¤˘¤ëˇŁ .SH ĄŞĄ×Ą·ĄçĄó -ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘\fBpwck\fR¤Ď\fB/etc/passwd\fRĄŐĄˇĄ¤ĄëµÚ¤Ó -\fB/etc/shadow\fR¤ËÂФ·¤ĆşîÍѤą¤ëˇŁ +ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘\fBpwck\fR¤Ď\fI/etc/passwd\fRĄŐĄˇĄ¤ĄëµÚ¤Ó +\fI/etc/shadow\fR¤ËÂФ·¤ĆşîÍѤą¤ëˇŁ \fIpasswd\fRµÚ¤Ó\fIshadow\fRĄŃĄéĄáˇĽĄż¤ňÍѤ¤¤ĆĘ̤ΥեˇĄ¤Ąë¤ňÁŞÂň¤ą¤ë »ö¤â¤Ç¤­¤ëˇŁ ˛Ă¤¨¤Ćˇ˘\fB-r\fRĄŐĄéĄĂĄ°¤Ç»ŘĽ¨¤ą¤ë¤ł¤Č¤Ë¤č¤ęˇ˘ @@ -93,9 +89,12 @@ pwck \- .br /etc/group \- Ą°ĄëˇĽĄ×¤Ë´Ř¤ą¤ëľđĘó .SH ´ŘϢąŕĚÜ -usermod(1), group(4), passwd(4), shadow(4) +.BR usermod (8), +.BR group (5), +.BR passwd (5), +.BR shadow (5) .SH ĘÖ¤ęĂÍ -\fIpwck\fRĄłĄŢĄóĄÉ¤Ď°Ę˛Ľ¤ÎĚá¤ęĂͤňĘÖ¤·¤Ć˝ŞÎ»¤ą¤ë: +\fBpwck\fRĄłĄŢĄóĄÉ¤Ď°Ę˛Ľ¤ÎĚá¤ęĂͤňĘÖ¤·¤Ć˝ŞÎ»¤ą¤ë: .IP 0 5 Ŕ®¸ů .IP 1 5 @@ -108,6 +107,5 @@ usermod(1), group(4), passwd(4), shadow(4) ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ę¤¤ .IP 5 5 ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňąąż·˝ĐÍč¤Ę¤¤ -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/pwconv.8 b/man/ja/pwconv.8 index 6465ee93..9c8276e1 100644 --- a/man/ja/pwconv.8 +++ b/man/ja/pwconv.8 @@ -1,73 +1,85 @@ -.\" Copyright 1989 - 1993, 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. -.\" -.\" $Id: pwconv.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka +.\" Japanese Version Copyright (c) 2001 Yuichi SATO .\" all rights reserved. -.\" Translated Fri Feb 14 23:06:00 JST 1997 -.\" by Kazuyoshi Furutaka +.\" Translated Sat Dec 1 20:09:17 JST 2001 +.\" by Yuichi SATO .\" -.TH PWCONV 8 +.\" $Id: pwconv.8,v 1.2 2001/12/20 14:02:38 ankry Exp $ +.TH PWCONV 8 "26 Sep 1997" .SH ĚľÁ° -pwconv \- shadowĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňĘŃ´ąˇ¦ąąż·¤ą¤ë +pwconv, pwunconv, grpconv, grpunconv \- shadow ĄŃĄąĄďˇĽĄÉ¤Č shadow Ą°ĄëˇĽĄ×¤Ř¤ÎĘŃ´ąˇ˘¤Ş¤č¤ÓÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤Ř¤ÎµŐĘŃ´ą .SH ˝ńĽ° -pwconv +.B pwconv +.br +.B pwunconv +.br +.B grpconv +.br +.B grpunconv .SH ŔâĚŔ -\fIPwconv\fR¤Ď¸Ĺ¤¤ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤ĄëľđĘó¤ňż·¤ż¤ĘshadowĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤Ë -ĄłĄÔˇĽ¤·ˇ˘¤Ţ¤żĄŞĄ×Ą·ĄçĄó¤Î´ű¸¤ÎshadowĄŐĄˇĄ¤Ąë¤«¤éĄ¨ĄóĄČĄę¤ňÉղ乤롣 -ż·¤·¤¤ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤Ď\fBnpasswd\fRˇ˘ż·¤·¤¤shadowĄŐĄˇĄ¤Ąë¤Ď\fBnshadow\fR -¤Č¤¤¤¦ĚľÁ°¤ÇĘݸ¤µ¤ě¤ëˇŁ -Ŕ¸Ŕ®¤µ¤ě¤ëÎľĄŐĄˇĄ¤Ąë¤Îµö˛ÄĄâˇĽĄÉ¤Ď¤Č¤â¤Ëˇ˘˝ęÍ­ĽÔ¤Î¤ß¤¬readĄ˘ĄŻĄ»Ąą¤ň -˝ĐÍč¤ëÍͤËŔßÄꤵ¤ě¤ëˇŁ -´ű¸¤ÎshadowĄŐĄˇĄ¤Ąë¤ÎĄ¨ĄóĄČĄę¤Ď¤˝¤Î¤Ţ¤ŢĄłĄÔˇĽ¤µ¤ě¤ëˇŁ -System V Release 3.2ĄŐĄ©ˇĽĄŢĄĂĄČ¤ÎshadowĄŐĄˇĄ¤ĄëĄ¨ĄóĄČĄę¤Ď -˛ż¤â¸Ŕ¤ď¤şSystem V Release 4ĄŐĄ©ˇĽĄŢĄĂĄČ¤ËĘŃ´ą¤µ¤ě˝ĐÎϤµ¤ě¤ëˇŁ -Ą¨ĄóĄČĄę¤Ë¶őÇňÍ󤬤˘¤ë»ţ¤Ď(ŬĹö¤Ę¤é¤Đ)ĄÇĄŁĄŐĄ©ĄëĄČĂͤ¬ÁŢĆţ¤µ¤ě¤ëˇŁ -ĄŃĄąĄďˇĽĄÉ¤Î´ü¸ÂľđĘ󤬴ű¤ËŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤ľěąç¤Ďˇ˘ -ż·¤ż¤ĘĄ¨ĄóĄČĄę¤ÎĄŃĄąĄďˇĽĄÉÍ­¸ú´ü¸Â¤Ď10000Ćü¸ĺ¤ČŔßÄꤵ¤ěˇ˘ -şÇ˝Şąąż·Ćü¤Ď¤ł¤ÎĄ×ĄíĄ°ĄéĄŕ¤ňµŻĆ°¤·¤żĆüÉդȤʤ롣 -ĄŃĄąĄďˇĽĄÉÍ󤬶őÇň¤ÎĄ¨ĄóĄČĄę¤ĎshadowĄŐĄˇĄ¤Ąë¤ËÁ´¤ŻĄłĄÔˇĽ¤µ¤ě¤Ę¤¤ˇŁ -.SH ĄŐĄˇĄ¤Ąë -/etc/passwd \- ¸Ĺ¤¤°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉµÚ¤Ó¤˝¤ÎÍ­¸ú´ü¸Â -.br -/etc/shadow \- °ĘÁ°¤ËĘŃ´ą¤µ¤ě¤żshadowĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë -.br -./npasswd \- ż·µ¬şîŔ®¤µ¤ě¤ëĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë -.br -./nshadow \- ż·µ¬şîŔ®¤µ¤ě¤ëshadowĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë +¤ł¤ě¤é 4 ¤Ä¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ďˇ˘ÄĚľď¤ÎĄŃĄąĄďˇĽĄÉˇ¦Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë +¤Ş¤č¤Ó shadow ĄŃĄąĄďˇĽĄÉˇ¦Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë +.IR /etc/passwd ", " /etc/group ", " /etc/shadow ", " /etc/gshadow +¤ňÁŕşî¤ą¤ëˇŁ + +\fBpwconv\fR ¤Ď \fIpasswd\fR ¤Č \fIshadow\fR (´ű¤Ë¸şß¤ą¤ëľěąç) ¤«¤é +\fIshadow\fR ¤ňşîŔ®¤ą¤ëˇŁ +\fBpwunconv\fR ¤Ď \fIpasswd\fR ¤Č \fIshadow\fR ¤«¤é \fIpasswd\fR ¤ňşîŔ®¤·ˇ˘ +\fIshadow\fR ¤ňşď˝ü¤ą¤ëˇŁ +\fBgrpconv\fR ¤Ď \fIgroup\fR ¤Č \fIgshadow\fR (´ű¤Ë¸şß¤ą¤ëľěąç) ¤«¤é +\fIgshadow\fR ¤ňşîŔ®¤ą¤ëˇŁ +\fBgrpunconv\fR ¤Ď \fIgroup\fR ¤Č \fIgshadow\fR ¤«¤é \fIgroup\fR ¤ňşîŔ®¤·ˇ˘ +\fIgshadow\fR ¤ňşď˝ü¤ą¤ëˇŁ + +łĆĄ×ĄíĄ°ĄéĄŕ¤ĎɬÍפȤµ¤ě¤ëĄíĄĂĄŻ¤ňĘŃ´ą¤ÎÁ°¤ËĽčĆŔ¤ą¤ëˇŁ + +.B pwconv +¤Č +.B grpconv +¤ĎÎŕ»÷¤·¤Ć¤¤¤ëˇŁ +1 ¤ÄĚܤϡ˘ÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤ËĄ¨ĄóĄČĄę¤¬¤Ę¤¤ľěąçˇ˘ +¤˝¤ÎĄ¨ĄóĄČĄę¤Ď shadow ˛˝¤µ¤ě¤żĄŐĄˇĄ¤Ąë¤Ç¤Ďşď˝ü¤µ¤ě¤ë¤Č¤¤¤¦ĹŔ¤Ç¤˘¤ëˇŁ +2 ¤ÄĚܤϡ˘ÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤ÇĄŃĄąĄďˇĽĄÉ¤¬ `x' ¤Ë¤Ę¤Ă¤Ć¤¤¤Ę¤¤ľěąçˇ˘ +shadow ˛˝¤µ¤ě¤żĄŐĄˇĄ¤Ąë¤Ë¤Ş¤¤¤Ćˇ˘ +¤˝¤ě¤ËÂбţ¤ą¤ëĄ¨ĄóĄČĄę¤¬ąąż·¤µ¤ě¤ë¤Č¤¤¤¦ĹŔ¤Ç¤˘¤ëˇŁ +3 ¤ÄĚܤϡ˘ÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤Ë˝ń¤«¤ě¤żĄŃĄąĄďˇĽĄÉ¤¬ `x' ¤ËĂÖ¤­´ą¤¨¤é¤ě¤ëĹŔ¤Ç¤˘¤ëˇŁ +¤ł¤ě¤é¤ÎĄ×ĄíĄ°ĄéĄŕ¤Ďˇ˘˝é¤á¤ĆĘŃ´ą¤ňąÔ¤¦¤Č¤­¤Ë»Č¤¨¤ëˇŁ +¤Ţ¤żˇ˘ÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤ňĽęĆ°¤ÇĘÔ˝¸¤·¤żľěąç¤Ë +shadow ˛˝¤µ¤ě¤żĄŐĄˇĄ¤Ąë¤ňąąż·¤ą¤ë¤Î¤Ë»Č¤¦¤ł¤Č¤â¤Ç¤­¤ëˇŁ + +.I /etc/shadow +¤Ëż·¤·¤¤Ą¨ĄóĄČĄę¤ňÄɲ乤ëľěąçˇ˘ +.B pwconv +¤Ď +.I /etc/login.defs +¤Ë¤˘¤ë +.BR PASS_MIN_DAYS ", " PASS_MAX_DAYS ", " PASS_WARN_AGE +¤ÎĂͤň»Č¤¦ˇŁ + +ƱÍͤˡ˘ +.B pwunconv +¤Č +.B grpunconv +¤ĎÎŕ»÷¤·¤Ć¤¤¤ëˇŁ +ÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤ÎĄŃĄąĄďˇĽĄÉ¤Ďˇ˘ +shadow ˛˝¤µ¤ě¤żĄŐĄˇĄ¤Ąë¤ň»Č¤Ă¤Ćąąż·¤µ¤ě¤ëˇŁ +Ą¨ĄóĄČĄę¤¬ÄĚľď¤ÎĄŐĄˇĄ¤Ąë¤Ë¤Ď¸şß¤ą¤ë¤¬ +shadow ˛˝¤µ¤ě¤żĄŐĄˇĄ¤Ąë¤Ë¤Ď¸şß¤·¤Ę¤¤¤Č¤¤¤¦ľěąçˇ˘ +¤˝¤ÎĄ¨ĄóĄČĄę¤Ď¤˝¤Î¤Ţ¤Ţ¤Ë¤µ¤ě¤ëˇŁ +şÇ˝ŞĹŞ¤Ë shadow ˛˝¤µ¤ě¤żĄŐĄˇĄ¤Ąë¤Ďşď˝ü¤µ¤ě¤ëˇŁ + +.B pwunconv +¤Ď´ü¸Â¤ÎŔڤ줿ĄŃĄąĄďˇĽĄÉ¤ňÇË´ţ¤·ˇ˘ĘŃ´ą¤Ç¤­¤ë¤â¤Î¤Î¤ß¤ňĘŃ´ą¤ą¤ëˇŁ + +.SH ĄĐĄ° +(ÉÔŔµ¤ĘĄ¨ĄóĄČĄę¤ä˝ĹĘŁ¤·¤żĄ¨ĄóĄČĄę¤Č¤¤¤Ă¤ż) Ą¨ĄéˇĽ¤¬ +ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤äĄ°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤Ë¤˘¤ë¤Čˇ˘ +Ą×ĄíĄ°ĄéĄŕ¤Ď±Ę±ó¤ËĄëˇĽĄ×¤·¤Ćˇ˘¤Ş¤«¤·¤Ę·Á¤ÇĽşÇÔ¤ą¤ëˇŁ +shadow ĄŃĄąĄďˇĽĄÉˇ¦Ą°ĄëˇĽĄ×¤Ř¤ÎĘŃ´ą¤ä +shadow ˛˝ĄŐĄˇĄ¤Ąë¤«¤é¤ÎµŐĘŃ´ą¤ňąÔ¤¦Á°¤Ëˇ˘ +\fBpwck\fR ¤Č \fBgrpck\fR ¤ňĽÂąÔ¤·¤ĆĄ¨ĄéˇĽ¤ň˝¤Ŕµ¤ą¤ë¤ł¤ČˇŁ .SH ´ŘϢąŕĚÜ -passwd(1), -passwd(4), -shadow(4), -pwunconv(8) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login.defs (5), +.BR pwck (8), +.BR grpck (8), +.BR shadowconfig (8) diff --git a/man/ja/pwunconv.8 b/man/ja/pwunconv.8 new file mode 100644 index 00000000..e0a2ab16 --- /dev/null +++ b/man/ja/pwunconv.8 @@ -0,0 +1 @@ +.so pwconv.8 diff --git a/man/ja/sg.1 b/man/ja/sg.1 new file mode 100644 index 00000000..31be7449 --- /dev/null +++ b/man/ja/sg.1 @@ -0,0 +1 @@ +.so newgrp.1 diff --git a/man/ja/shadow.3 b/man/ja/shadow.3 index a1716776..0c99a701 100644 --- a/man/ja/shadow.3 +++ b/man/ja/shadow.3 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1993, John F. Haugh II +.\" Copyright 1989 - 1993, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: shadow.3,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: shadow.3,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,28 +36,34 @@ .SH ĚľÁ° shadow \- °Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤ĄëÍѥ롼ĄÁĄó .SH ˝ńĽ° -#include -.br -struct spwd *getspent(); -.br -struct spwd *getspnam(char * name); -.br -void setspent(); -.br -void endspent(); -.br -struct spwd *fgetspent(FILE *fp); -.br -struct spwd *sgetspent(char *cp); -.br -int putspent(struct spwd *p,FILE *fp); -.br -int lckpwdf (); -.br -int ulckpwdf (); +.B #include +.PP +.B struct spwd *getspent(); +.PP +.B struct spwd *getspnam(char +.IB *name ); +.PP +.B void setspent(); +.PP +.B void endspent(); +.PP +.B struct spwd *fgetspent(FILE +.IB *fp ); +.PP +.B struct spwd *sgetspent(char +.IB *cp ); +.PP +.B int putspent(struct spwd +.I *p, +.B FILE +.IB *fp ); +.PP +.B int lckpwdf(); +.PP +.B int ulckpwdf(); .SH ŔâĚŔ .I shadow -¤ĎshadowĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë\fB/etc/shadow\fR¤ÎĆâÍƤňÁŕşî¤ą¤ëĄëˇĽĄÁĄó¤Ç¤˘¤ëˇŁ +¤ĎshadowĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë\fI/etc/shadow\fR¤ÎĆâÍƤňÁŕşî¤ą¤ëĄëˇĽĄÁĄó¤Ç¤˘¤ëˇŁ .sp struct spwd { .in +.5i @@ -109,24 +111,24 @@ sp_expire \- 1970ÇŻ1 .br sp_flag \- ľ­Íč¤Î»ČÍѤËÍ˝Ěó .SH ŔâĚŔ -\fIgetspent\fR, \fIgetspname\fR, \fIfgetspent\fR, µÚ¤Ó \fIsgetspent\fR +\fBgetspent\fR, \fBgetspname\fR, \fBfgetspent\fR, µÚ¤Ó \fBsgetspent\fR ¤ĎłĆˇą\fBstruct spwd\fR¤Ř¤ÎĄÝĄ¤ĄóĄż¤ňĘÖ¤ąˇŁ -\fIgetspent\fR¤ĎĄŐĄˇĄ¤Ąë¤«¤éĽˇ¤ÎĄ¨ĄóĄČĄę¤ňˇ˘\fIfgetspent\fR¤Ď +\fBgetspent\fR¤ĎĄŐĄˇĄ¤Ąë¤«¤éĽˇ¤ÎĄ¨ĄóĄČĄę¤ňˇ˘\fBfgetspent\fR¤Ď »ŘÄꤵ¤ě¤żĄąĄČĄęˇĽĄŕ¤«¤éĽˇ¤ÎĄ¨ĄóĄČĄę¤ňĘÖ¤ąˇŁ ¤ł¤ÎşÝˇ˘ĄŐĄˇĄ¤Ąë¤ĎŔµ¤·¤¤˝ńĽ°¤Ç¤˘¤ë˛ľÄꤷ¤Ć¤¤¤ëˇŁ -\fIsgetspent\fR¤ĎĆţÎϤȤ·¤ĆÍż¤¨¤é¤ě¤żĘ¸»úÎó¤ňÍѤ¤¤Ć\fBstruct spwd\fR +\fBsgetspent\fR¤ĎĆţÎϤȤ·¤ĆÍż¤¨¤é¤ě¤żĘ¸»úÎó¤ňÍѤ¤¤Ć\fBstruct spwd\fR ¤Ř¤ÎĄÝĄ¤ĄóĄż¤ňĘÖ¤ąˇŁ -\fIgetspnam\fR¤ĎĄŐĄˇĄ¤ĄëĂć¤Î¸˝şß¤Î°ĚĂÖ¤«¤é\fIname\fR¤ËÉäąç¤ą¤ëĄ¨ĄóĄČĄę +\fBgetspnam\fR¤ĎĄŐĄˇĄ¤ĄëĂć¤Î¸˝şß¤Î°ĚĂÖ¤«¤é\fBname\fR¤ËÉäąç¤ą¤ëĄ¨ĄóĄČĄę ¤ňõ¤ąˇŁ .PP -\fIsetspent\fRµÚ¤Ó\fIendspent\fR¤Ďshadow¤·¤żĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤Ř¤Î +\fBsetspent\fRµÚ¤Ó\fBendspent\fR¤Ďshadow¤·¤żĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤Ř¤Î Ą˘ĄŻĄ»Ąą¤ňÉסął«»ĎµÚ¤Ó˝ŞÎ»¤ą¤ë¤ż¤á¤ËÍѤ¤¤ë¤ł¤Č¤¬˝ĐÍč¤ëˇŁ .PP \fB/etc/shadow\fRĄŐĄˇĄ¤Ąë¤ËÂФą¤ëÇÓ¾Ū¤ĘĄ˘ĄŻĄ»Ąą¤ňĘÝľÚ¤ą¤ë¤ż¤á¤Ëˇ˘ -\fIlckpwdf\fRµÚ¤Ó\fIulckpwdf\fRĄëˇĽĄÁĄó¤ňÍѤ¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -\fIlckpwdf\fR¤Ď\fIpw_lock\fR¤ňÍѤ¤¤ĆşÇÂç15ÉĂ´ÖĄíĄĂĄŻ¤ň¤·¤č¤¦¤Č¤ą¤ëˇŁ +\fBlckpwdf\fRµÚ¤Ó\fBulckpwdf\fRĄëˇĽĄÁĄó¤ňÍѤ¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +\fBlckpwdf\fR¤Ď\fBpw_lock\fR¤ňÍѤ¤¤ĆşÇÂç15ÉĂ´ÖĄíĄĂĄŻ¤ň¤·¤č¤¦¤Č¤ą¤ëˇŁ ¤˝¤·¤Ćˇ˘şÇ˝é¤Î15ÉäλĤę¤ňÍѤ¤¤ĆĆóĹŮĚܤΥíĄĂĄŻ¤ň¤·¤č¤¦¤Č¤·Âł¤±¤ëˇŁ -Á´Éô¤Ç15Éô֤δ֤ˤ¤¤ş¤ě¤«¤Î»î¤ß¤¬ĽşÇÔ¤·¤żľěąç¤Ďˇ˘\fIlckpwdf\fR¤Ď-1¤ňĘÖ¤ąˇŁ +Á´Éô¤Ç15Éô֤δ֤ˤ¤¤ş¤ě¤«¤Î»î¤ß¤¬ĽşÇÔ¤·¤żľěąç¤Ďˇ˘\fBlckpwdf\fR¤Ď-1¤ňĘÖ¤ąˇŁ ¤¤¤ş¤ě¤ÎĄíĄĂĄŻ¤âŔ®¸ů¤·¤żľěąç¤Ď0¤¬ĘÖ¤µ¤ě¤ëˇŁ .SH ĘÖ¤ęĂÍ ¤ł¤ě¤é¤ÎĄëˇĽĄÁĄó¤Ďˇ˘Ą¨ĄóĄČĄę¤¬»Ä¤Ă¤Ć¤¤¤Ę¤¤ľěąçËô¤Ď˝čÍý¤Î˛áÄř¤Ç @@ -138,7 +140,7 @@ shadow .SH ĄŐĄˇĄ¤Ąë /etc/shadow \- °Ĺąć˛˝¤µ¤ě¤żĄćˇĽĄ¶ĄŃĄąĄďˇĽĄÉ .SH ´ŘϢąŕĚÜ -getpwent(3), -shadow(5) -.\" .SH ËÝĚőĽÔ -.\" ¸ĹąâĎÂÄ÷ +.BR getpwent (3), +.BR shadow (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/shadow.5 b/man/ja/shadow.5 index 8b587ee9..d3a928f4 100644 --- a/man/ja/shadow.5 +++ b/man/ja/shadow.5 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1990, John F. Haugh II +.\" Copyright 1989 - 1990, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: shadow.5,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: shadow.5,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -66,7 +62,7 @@ shadow \- ĄŃĄąĄďˇĽĄÉÍó¤Ďɬ¤şµ­Ćţ¤µ¤ě¤Ć¤¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ °Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤Ďˇ˘a¤«¤ézˇ˘A¤«¤éZ¤ÎĄ˘ĄëĄŐĄˇĄŮĄĂĄČˇ˘ 0¤«¤é9Ëř¤Îżô»úµÚ¤Ó\.¤Č/¤Î64ʸ»ú¤Î¤¦¤Á¤Î13¤«¤é24ʸ»ú¤«¤é¤Ę¤ëˇŁ -¤ł¤Îʸ»úÎ󤬤ɤΤ褦¤Ë˛ňĽá¤µ¤ě¤ë¤«¤ÎľÜşŮ¤Ď\fIcrypt(3)\fR¤ň»˛ľČ¤»¤čˇŁ +¤ł¤Îʸ»úÎ󤬤ɤΤ褦¤Ë˛ňĽá¤µ¤ě¤ë¤«¤ÎľÜşŮ¤Ď\fBcrypt\fR(3)¤ň»˛ľČ¤»¤čˇŁ .PP şÇ¸ĺ¤ËĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤·¤żĆü»ţ¤Ď1970ÇŻ1·î1Ćü¤«¤é¤ÎĆüżô¤Č¤·¤Ć µ­˝Ň¤µ¤ě¤ëˇŁ @@ -80,7 +76,7 @@ shadow \- ¤Ţ¤żˇ˘Ą˘Ą«Ą¦ĄóĄČ¤Ď»ŘÄꤷ¤ż´üĆü¤Ëˇ˘ĄŃĄąĄďˇĽĄÉÂľ¤ÎÍ­¸ú´ü¸ÂľđĘó¤Ë¤Ď¤č¤é¤şˇ˘ »ČÍŃÉÔÇ˝¤Č¤Ę¤ëˇŁ .PP -¤ł¤ÎľđĘó¤Ď\fB/etc/passwd\fRĂć¤Ëµ­¤µ¤ě¤Ć¤¤¤ëǡ˛ż¤Ę¤ëĄŃĄąĄďˇĽĄÉµÚ¤Ó +¤ł¤ÎľđĘó¤Ď\fI/etc/passwd\fRĂć¤Ëµ­¤µ¤ě¤Ć¤¤¤ëǡ˛ż¤Ę¤ëĄŃĄąĄďˇĽĄÉµÚ¤Ó ¤˝¤ÎÍ­¸ú´ü¸ÂľđĘó¤č¤ę¤âÍĄŔ褵¤ě¤ëˇŁ .PP ĄŃĄąĄďˇĽĄÉ¤Î°ÂÁ´Ŕ­¤ň¤ň°Ý»ý¤ą¤ë¤ż¤á¤Ë¤Ďˇ˘¤ł¤ÎĄŐĄˇĄ¤Ąë¤ň°ěČ̥桼Ą¶ @@ -90,14 +86,14 @@ shadow \- .br /etc/shadow \- °Ĺąć˛˝¤µ¤ě¤żĄćˇĽĄ¶ĄŃĄąĄďˇĽĄÉ .SH ´ŘϢąŕĚÜ -chage(1), -login(1), -passwd(1), -su(1), -sulogin(1M), -shadow(3), -passwd(5), -pwconv(8), -pwunconv(8) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR chage (1), +.BR login (1), +.BR passwd (1), +.BR su (1), +.BR sulogin (8), +.BR shadow (3), +.BR passwd (5), +.BR pwconv (8), +.BR pwunconv (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/shadowconfig.8 b/man/ja/shadowconfig.8 new file mode 100644 index 00000000..59d7e6e2 --- /dev/null +++ b/man/ja/shadowconfig.8 @@ -0,0 +1,25 @@ +.\" all right reserved, +.\" Translated Tue Oct 30 11:59:11 JST 2001 +.\" by Maki KURODA +.\" +.TH SHADOWCONFIG 8 "19 Apr 1997" "Debian GNU/Linux" +.SH ĚľÁ° +shadowconfig \- shadow ĄŃĄąĄďˇĽĄÉ¤ÎŔßÄę¤ňĄŞĄóµÚ¤ÓĄŞĄŐ¤ËŔÚÂؤ¨¤ë +.SH ˝ńĽ° +.B "shadowconfig" +.IR on " | " off +.SH ŔâĚŔ +.PP +.B shadowconfig on +¤Ď shadow ĄŃĄąĄďˇĽĄÉ¤ňÍ­¸ú¤Ë¤ą¤ëˇŁ +.B shadowconfig off +¤Ď shadow ĄŃĄąĄďˇĽĄÉ¤ň̵¸ú¤Ë¤ą¤ëˇŁ +.B shadowconfig +¤Ď˛ż¤é¤«¤Î´Ö°ă¤¤¤¬¤˘¤ë¤Čˇ˘Ą¨ĄéˇĽĄáĄĂĄ»ˇĽĄ¸¤ňÉ˝Ľ¨¤·ˇ˘ˇ˘ +ĄĽĄí¤Ç¤Ď¤Ę¤¤ĘÖ¤ęĂͤňĘÖ¤ąˇŁ +¤â¤·¤˝¤Î¤č¤¦¤Ę¤ł¤Č¤¬µŻ¤ł¤Ă¤żľěąçˇ˘Ą¨ĄéˇĽ¤ň˝¤Ŕµ¤·ˇ˘şĆĹŮĽÂąÔ¤·¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +shadow ĄŃĄąĄďˇĽĄÉ¤ÎŔßÄ꤬¤ą¤Ç¤ËĄŞĄó¤Îľěąç¤ËĄŞĄó¤ËŔßÄꤷ¤ż¤ęˇ˘ +¤ą¤Ç¤ËĄŞĄŐ¤Îľěąç¤ËĄŞĄŐ¤ËŔßÄꤷ¤Ć¤âˇ˘˛ż¤Î±Ć¶Á¤â¤Ę¤¤ + +.I /usr/doc/passwd/README.debian.gz +¤Ë¤Ď shadow ĄŃĄąĄďˇĽĄÉ¤Č¤˝¤ě¤Ë´Ř¤ą¤ëĆĂħ¤Î´Ęñ¤ĘľŇ˛đ¤¬˝ń¤«¤ě¤Ć¤¤¤ëˇŁ diff --git a/man/ja/su.1 b/man/ja/su.1 index 7dbf898a..0366c93d 100644 --- a/man/ja/su.1 +++ b/man/ja/su.1 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1990, John F. Haugh II +.\" Copyright 1989 - 1990, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,24 +25,28 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: su.1,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: su.1,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" 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 16:46:14 JST 2000 +.\" by Kentaro Shirakata +.\" Updated Fri Jan 12 03:35:18 JST 2001 +.\" by Kentaro Shirakata .\" .TH SU 1 .SH ĚľÁ° su \- ĄćˇĽĄ¶ID¤ňĘŃąą¤ą¤ëˇ˘Ëô¤ĎĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Ë¤Ę¤ë .SH ˝ńĽ° -.B su -[ - ] [ username [ args ] ] +.BR su " [" - ] +.RI [ username " [" args ]] .SH ŔâĚŔ -.I su +.B su ¤ĎĄíĄ°Ą¤ĄóĄ»ĄĂĄ·ĄçĄóĂć¤ËĘ̤Υ桼Ą¶¤ËŔ®¤ę¤ą¤Ţ¤ą¤Î¤ËÍѤ¤¤ëˇŁ ĄćˇĽĄ¶Ěľ¤ň»ŘÄꤻ¤ş¤ËµŻĆ°¤·¤żľěąçˇ˘ -ĄÇĄŁĄŐĄ©ĄëĄČ¤Ç¤ĎĄąˇĽĄŃˇĽĄćˇĽĄ¶¤ÎID¤ËĘŃąą¤ą¤ëˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤ĎĄąˇĽĄŃˇĽĄćˇĽĄ¶¤ÎID¤ËĘŃąą¤ą¤ëˇŁ ĄŞĄ×Ą·ĄçĄó°úżô\fB\-\fR¤ňÍѤ¤¤ë¤Čˇ˘ ÄľŔÜĄíĄ°Ą¤Ąó¤·¤żľěąç¤ČƱ¤¸´Ä¶­¤Ë˝é´ü˛˝¤µ¤ě¤ëˇŁ .PP @@ -54,8 +54,8 @@ su \- ¤˝¤Îľěąç¤Î°úżô¤ĎĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ËĹϤµ¤ě¤ëˇŁ Ćäˡ˘¤˝¤Î°úżô¤Î°ě¤Ä¤Č¤·¤Ć\fB-c\fR¤ňĹϤ·¤żľěąçˇ˘ ¤˝¤ě¤ËÂł¤Ż°úżô¤ĎÂçÉôʬ¤ÎĄłĄŢĄóĄÉĄ¤ĄóĄżĄ×ĄęĄż¤ËĄłĄŢĄóĄÉ¤Č¤·¤Ć˛ňĽá¤µ¤ě¤ëˇŁ -¤˝¤ÎĄłĄŢĄóĄÉ¤Ď\fB$SHELL\fR¤Ç»ŘÄꤵ¤ě¤żĄ·Ą§Ąë¤Çˇ˘¤â¤·¤Ż¤Ď -̤ÄęµÁ¤Îľěąç¤Ë¤Ď\fI/etc/passwd\fR¤Ç»ŘÄꤵ¤ě¤żĄ·Ą§Ąë¤ÇĽÂąÔ¤µ¤ě¤ëˇŁ +¤˝¤ÎĄłĄŢĄóĄÉ¤Ď\fI/etc/passwd\fR¤ÇÂоݤΥ桼Ą¶¤Ë»ŘÄꤵ¤ě¤Ć¤¤¤ë +Ą·Ą§Ąë¤ÇĽÂąÔ¤µ¤ě¤ëˇŁ .PP ɬÍפʾěąç¤Ë¤Ďˇ˘ĄćˇĽĄ¶¤Ë¤ĎĄŃĄąĄďˇĽĄÉ¤ÎĆţÎϤ¬ÂĄ¤µ¤ě¤ëˇŁ ´Ö°ă¤Ă¤żĄŃĄąĄďˇĽĄÉ¤¬ĆţÎϤµ¤ě¤żľěąç¤Ë¤ĎĄ¨ĄéˇĽĄáĄĂĄ»ˇĽĄ¸¤¬˝ĐÎϤµ¤ě¤ëˇŁ @@ -64,20 +64,29 @@ su \- .PP ¸˝şß¤Î´Ä¶­¤Ďż·¤·¤¤Ą·Ą§Ąë¤Ë°ú¤­·Ń¤¬¤ě¤ëˇŁ \fB$PATH\fR¤ÎĂͤϡ˘ÄĚľď¤ÎĄćˇĽĄ¶¤Îľěąç¤Ď\fB/bin:/usr/bin\fR¤Ëˇ˘ -ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Îľěąç¤Ď\fB/bin:/usr/bin:/etc\fR¤ËşĆŔßÄꤵ¤ě¤ëˇŁ +ĄąˇĽĄŃˇĽĄćˇĽĄ¶¤Îľěąç¤Ď\fB/sbin:/bin:/usr/sbin:/usr/bin\fR¤ËşĆŔßÄꤵ¤ě¤ëˇŁ +¤ł¤ě¤Ď\fI/etc/login.defs\fR¤Î\fBENV_PATH\fR¤Č\fBENV_SUPATH\fR¤ÇĘŃąą¤Ç¤­¤ëˇŁ +.PP +ĄµĄÖĄ·ĄąĄĆĄŕĄíĄ°Ą¤Ąó¤ĎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ÎşÇ˝é¤Îʸ»ú¤Č¤·¤Ć +"*" ¤ňĂÖ¤Ż¤ł¤Č¤Ç»ŘÄꤹ¤ëˇŁ +Íż¤¨¤é¤ě¤żĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤ĎĄćˇĽĄ¶¤¬ĽÂşÝ¤ËĄíĄ°Ą¤Ąó¤ą¤ë +ż·¤·¤¤ĄŐĄˇĄ¤ĄëĄ·ĄąĄĆĄŕ¤ÎĄëˇĽĄČ¤Č¤·¤Ć°·¤ď¤ě¤ëˇŁ .SH ·Ůąđ .PP -¤ł¤ÎČǤÎ\fIsu\fR¤Ë¤ĎÂż¤Ż¤ÎĄłĄóĄŃĄ¤Ąë»ţĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ë¤¬ˇ˘ +¤ł¤ÎČǤÎ\fBsu\fR¤Ë¤ĎÂż¤Ż¤ÎĄłĄóĄŃĄ¤Ąë»ţĄŞĄ×Ą·ĄçĄó¤¬¤˘¤ë¤¬ˇ˘ ĄµĄ¤ĄČ¤Ë¤č¤Ă¤Ć¤Ďˇ˘¤˝¤Î°ěÉô¤·¤«ŔßÄꤵ¤ě¤Ć¤¤¤Ę¤¤¤ł¤Č¤â¤˘¤ëˇŁ .SH ĄŐĄˇĄ¤Ąë /etc/passwd \- ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ÎľđĘó .br /etc/shadow \- °Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉµÚ¤Ó´ü¸ÂľđĘó .br -$HOME/.profile \- ĄÇĄŁĄŐĄ©ĄëĄČĄ·Ą§ĄëÍѤνé´ü˛˝ĄąĄŻĄęĄ×ĄČ +$HOME/.profile \- ĄÇĄŐĄ©ĄëĄČĄ·Ą§ĄëÍѤνé´ü˛˝ĄąĄŻĄęĄ×ĄČ .SH ´ŘϢąŕĚÜ -login(1), -sh(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1), +.BR sh (1), +.BR suauth (5), +.BR login.defs (5) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + diff --git a/man/ja/suauth.5 b/man/ja/suauth.5 index 78b20654..09f06580 100644 --- a/man/ja/suauth.5 +++ b/man/ja/suauth.5 @@ -1,3 +1,7 @@ +.\" This page is originally in the shadow package. +.\" +.\" Translated Fri 14 Feb 1997 by Kazuyoshi Furutaka +.\" .TH SUAUTH 5 "Feb 14, 1996" .UC 5 .SH ĚľÁ° @@ -7,8 +11,6 @@ suauth \- su .SH ŔâĚŔ .I /etc/suauth ĄŐĄˇĄ¤Ąë¤Ďˇ˘ -.IR /etc/login.defs (5) -ĄŐĄˇĄ¤ĄëĂć¤ÇŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ suĄłĄŢĄóĄÉ¤ňĽÂąÔ¤·¤ż»ţ¤Ëɬ¤ş»˛ľČ¤µ¤ě¤ëˇŁ ¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ë¤č¤Ă¤Ćˇ˘ .PP @@ -27,27 +29,35 @@ su to-id:from-id:ACTION .RE .PP -¤ł¤ł¤Çˇ˘to-id¤ĎALL¤Č¤¤¤¦¸ěˇ˘ĄłĄóĄŢ¤Ç¶čŔÚ¤é¤ě¤żĄćˇĽĄ¶Ěľ¤ÎĄęĄąĄČ -¤â¤·¤Ż¤ĎALL EXCEPT¤Č¤¤¤¦¸ě¤Č¤˝¤ě¤ËÂł¤Ż","¤Ç¶čŔÚ¤é¤ě¤żĄćˇĽĄ¶Ěľ¤ÎĄęĄąĄČ +¤ł¤ł¤Çˇ˘to-id¤Ď +.B ALL +¤Č¤¤¤¦¸ěˇ˘ĄłĄóĄŢ¤Ç¶čŔÚ¤é¤ě¤żĄćˇĽĄ¶Ěľ¤ÎĄęĄąĄČ +¤â¤·¤Ż¤Ď +.B ALL EXCEPT +¤Č¤¤¤¦¸ě¤Č¤˝¤ě¤ËÂł¤Ż","¤Ç¶čŔÚ¤é¤ě¤żĄćˇĽĄ¶Ěľ¤ÎĄęĄąĄČ ¤Î¤¤¤ş¤ě¤«¤Ç¤˘¤ëˇŁ .PP -from-id¤Ďto-id¤ČƱ¤¸˝ńĽ°¤Ç¤˘¤ęˇ˘ąą¤ËGROUP¤Č¤¤¤¦¸ě¤â»ČÍѤǤ­¤ëˇŁ -ALL EXCEPT GROUP¤Č¤¤¤¦»Č¤¤Ęý¤âÁ´¤ŻŔµ¤·¤¤ˇŁ -GROUP¤Î¸ĺ¤Ë¤Ď°ě¤Ä°Ęľĺ¤ÎĄ°ĄëˇĽĄ×Ěľ¤ň","¤Ç¶čŔڤäƵ­¤ąˇŁ +from-id¤Ďto-id¤ČƱ¤¸˝ńĽ°¤Ç¤˘¤ęˇ˘ąą¤Ë +.B GROUP +¤Č¤¤¤¦¸ě¤â»ČÍѤǤ­¤ëˇŁ +.B ALL EXCEPT GROUP +¤Č¤¤¤¦»Č¤¤Ęý¤âÁ´¤ŻŔµ¤·¤¤ˇŁ +.B GROUP +¤Î¸ĺ¤Ë¤Ď°ě¤Ä°Ęľĺ¤ÎĄ°ĄëˇĽĄ×Ěľ¤ň","¤Ç¶čŔڤäƵ­¤ąˇŁ ´ŘϢ¤ą¤ëĄ°ĄëˇĽĄ×¤ÎĽçĄ°ĄëˇĽĄ×id¤ňµ­¤ą¤Ŕ¤±¤Ç¤Ď˝˝Ę¬¤Ç¤Ď¤Ę¤Żˇ˘ -.IR /etc/group (5) +.B /etc/group (5) Ăć¤ÎĄ¨ĄóĄČĄę¤ňµ­¤ąÉ¬Íפ¬¤˘¤ëˇŁ .PP ACTION¤Ë¤Ďˇ˘¸˝şßĄµĄÝˇĽĄČ¤µ¤ě¤Ć¤¤¤ë°Ę˛Ľ¤ÎĄŞĄ×Ą·ĄçĄó¤Î¤¤¤ş¤ě¤«°ě¤Ä ¤ň»ŘÄę¤Ç¤­¤ëˇŁ .TP 20 -DENY +.B DENY ĄŃĄąĄďˇĽĄÉ¤ňĘą¤ŻÁ°¤Ësu¤ňÄä»ß¤ą¤ëˇŁ .TP 20 -NOPASS +.B NOPASS Ľ«Ć°ĹޤËsu¤ą¤ë¤ł¤Č¤¬˝ĐÍ衢ĄŃĄąĄďˇĽĄÉ¤ĎżŇ¤Í¤ĆÍč¤Ę¤¤ˇŁ .TP 20 -OWNPASS +.B OWNPASS su˝ĐÍč¤ë¤ż¤á¤Ë¤Ďˇ˘ĄćˇĽĄ¶¤¬Ľ«Ę¬¤ÎĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤ·¤Ę¤Ż¤Ć¤Ď ¤Ę¤é¤Ę¤¤ˇŁĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤą¤ë¤č¤¦¤ËÍ׵ᤵ¤ě¤ëˇŁ .PP @@ -89,125 +99,15 @@ birddog:terry:NOPASS (ąÔ¤Î»Ď¤áµÚ¤Ó˝Ş¤ď¤ę°Ęł°¤Ë)¸«¤«¤±¤Î¶őÇň¤Ď¤˘¤Ă¤Ć¤Ď¤Ę¤é¤Ę¤¤¤·ˇ˘ ĆĂÄę¤ÎĄČˇĽĄŻĄó¤Ë¤č¤ęÁ´¤ŻĘ̤ζčŔÚ¤ęĘý¤Ë¤Ę¤Ă¤Ć¤·¤Ţ¤¦»ö¤â¤˘¤ëˇŁ .SH ĘÖ¤ęĂÍ -ĄŐĄˇĄ¤Ąë¤ňĄŃˇĽĄą¤ą¤ëşÝ¤ÎĄ¨ĄéˇĽ¤Ďsyslogd(8)¤ňÍѤ¤¤ĆAUTHµˇÇ˝¤ÎĄěĄŮĄëERR +ĄŐĄˇĄ¤Ąë¤ňĄŃˇĽĄą¤ą¤ëşÝ¤ÎĄ¨ĄéˇĽ¤Ď +.B syslogd (8) +¤ňÍѤ¤¤ĆAUTHµˇÇ˝¤ÎĄěĄŮĄëERR ¤Č¤·¤ĆÄĚĂΤµ¤ě¤ëˇŁ .SH ´ŘϢąŕĚÜ -su(1), login.defs(5) +.BR su (1) .SH ĂřĽÔ .nf Chris Evans (lady0110@sable.ox.ac.uk) Lady Margaret Hall Oxford University England -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ - -----Next_Part(Sat_Feb_15_01:37:39_1997)---- - -----Next_Part(Sat_Feb_15_01:37:39_1997)-- -Content-Type: Text/Plain; charset=iso-2022-jp -Content-Transfer-Encoding: 7bit - -.TH SUAUTH 5 "Feb 14, 1996" -.UC 5 -.SH ĚľÁ° -suauth \- su¤ňľÜşŮ¤ËĄłĄóĄČĄíˇĽĄë¤ą¤ë¤ż¤á¤ÎĄŐĄˇĄ¤Ąë -.SH ˝ńĽ° -.B /etc/suauth -.SH ŔâĚŔ -.I /etc/suauth -ĄŐĄˇĄ¤Ąë¤Ďˇ˘ -.IR /etc/login.defs (5) -ĄŐĄˇĄ¤ĄëĂć¤ÇŔßÄꤵ¤ě¤Ć¤¤¤ëľěąç¤Ďˇ˘ -suĄłĄŢĄóĄÉ¤ňĽÂąÔ¤·¤ż»ţ¤Ëɬ¤ş»˛ľČ¤µ¤ě¤ëˇŁ -¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ë¤č¤Ă¤Ćˇ˘ -.PP -.RS -.nf -1) su¤¬ÂоݤȤą¤ëĄćˇĽĄ¶ -.fi -2)suĄłĄŢĄóĄÉ¤ňĽÂąÔ¤·¤Ć¤¤¤ëĄćˇĽĄ¶(¤â¤·¤Ż¤Ď¤˝¤ÎĄćˇĽĄ¶¤¬Â°¤ą¤ëĄ°ĄëˇĽĄ×) -.RE -¤Ë´đ¤Ĺ¤¤¤ĆsuĄłĄŢĄóĄÉ¤Îż¶Éń¤¬ĘŃąą¤µ¤ě¤ëˇŁ -.PP -¤ł¤ÎĄŐĄˇĄ¤Ąë¤Ď°Ę˛Ľ¤ÎÍͤʽńĽ°¤ň¤·¤Ć¤Ş¤ęˇ˘ -#¤Ç»Ď¤Ţ¤ëąÔ¤ĎĄłĄáĄóĄČ¤Č¤·¤Ć°·¤ď¤ěˇ˘Ěµ»ë¤µ¤ě¤ë; -.PP -.RS -to-id:from-id:ACTION -.RE -.PP -¤ł¤ł¤Çˇ˘to-id¤ĎALL¤Č¤¤¤¦¸ěˇ˘ĄłĄóĄŢ¤Ç¶čŔÚ¤é¤ě¤żĄćˇĽĄ¶Ěľ¤ÎĄęĄąĄČ -¤â¤·¤Ż¤ĎALL EXCEPT¤Č¤¤¤¦¸ě¤Č¤˝¤ě¤ËÂł¤Ż","¤Ç¶čŔÚ¤é¤ě¤żĄćˇĽĄ¶Ěľ¤ÎĄęĄąĄČ -¤Î¤¤¤ş¤ě¤«¤Ç¤˘¤ëˇŁ -.PP -from-id¤Ďto-id¤ČƱ¤¸˝ńĽ°¤Ç¤˘¤ęˇ˘ąą¤ËGROUP¤Č¤¤¤¦¸ě¤â»ČÍѤǤ­¤ëˇŁ -ALL EXCEPT GROUP¤Č¤¤¤¦»Č¤¤Ęý¤âÁ´¤ŻŔµ¤·¤¤ˇŁ -GROUP¤Î¸ĺ¤Ë¤Ď°ě¤Ä°Ęľĺ¤ÎĄ°ĄëˇĽĄ×Ěľ¤ň","¤Ç¶čŔڤäƵ­¤ąˇŁ -´ŘϢ¤ą¤ëĄ°ĄëˇĽĄ×¤ÎĽçĄ°ĄëˇĽĄ×id¤ňµ­¤ą¤Ŕ¤±¤Ç¤Ď˝˝Ę¬¤Ç¤Ď¤Ę¤Żˇ˘ -.IR /etc/group (5) -Ăć¤ÎĄ¨ĄóĄČĄę¤ňµ­¤ąÉ¬Íפ¬¤˘¤ëˇŁ -.PP -ACTION¤Ë¤Ďˇ˘¸˝şßĄµĄÝˇĽĄČ¤µ¤ě¤Ć¤¤¤ë°Ę˛Ľ¤ÎĄŞĄ×Ą·ĄçĄó¤Î¤¤¤ş¤ě¤«°ě¤Ä -¤ň»ŘÄę¤Ç¤­¤ëˇŁ -.TP 20 -DENY -ĄŃĄąĄďˇĽĄÉ¤ňĘą¤ŻÁ°¤Ësu¤ňÄä»ß¤ą¤ëˇŁ -.TP 20 -NOPASS -Ľ«Ć°ĹޤËsu¤ą¤ë¤ł¤Č¤¬˝ĐÍ衢ĄŃĄąĄďˇĽĄÉ¤ĎżŇ¤Í¤ĆÍč¤Ę¤¤ˇŁ -.TP 20 -OWNPASS -su˝ĐÍč¤ë¤ż¤á¤Ë¤Ďˇ˘ĄćˇĽĄ¶¤¬Ľ«Ę¬¤ÎĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤ·¤Ę¤Ż¤Ć¤Ď -¤Ę¤é¤Ę¤¤ˇŁĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤą¤ë¤č¤¦¤ËÍ׵ᤵ¤ě¤ëˇŁ -.PP -ĄłĄíĄó¤Ë¤č¤Ă¤Ć¶čŔÚ¤é¤ě¤żĘ̡ą¤ÎÍ󤬻°¤Ä¤˘¤ë¤ł¤Č¤ËĂí°ŐˇŁ -ĄłĄíĄó¤ÎÎ٤˶őÇň¤¬¤˘¤Ă¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -ĄŐĄˇĄ¤Ąë¤Ď°ěąÔËč¤Ë˝çČ֤˶ăĚŁ¤µ¤ě¤ë¤ł¤ČµÚ¤Óˇ˘şÇ˝é¤ËŬąç¤·¤żµ¬Â§¤ňÍѤ¤ˇ˘ -ĄŐĄˇĄ¤Ąë¤Î»Ä¤ę¤Ď¶ăĚŁ¤µ¤ě¤Ę¤¤¤ł¤Č¤Ë¤âĂí°Ő¤»¤čˇŁ -¤·¤ż¤¬¤Ă¤Ćˇ˘Ą·ĄąĄĆĄŕ´ÉÍýĽÔ¤ĎɬÍפȤą¤ë¤Ŕ¤±ČůÄ´Ŕ°¤ňąÔ¤¦¤ł¤Č¤¬˝ĐÍč¤ëˇŁ -.SH Îă -.PP -.nf -# /etc/suauthĄŐĄˇĄ¤Ąë¤ÎÎă -# -# żôĚľ¤ÎĆø˘ĄćˇĽĄ¶¤ĎĽ«Ę¬¤ÎĄŃĄąĄďˇĽĄÉ¤ň -# ÍѤ¤¤Ćroot¤Ësu˝ĐÍč¤ëˇŁ -# -root:chris,birddog:OWNPASS -# -# Âľ¤ÎĄćˇĽĄ¶¤ĎwheelĄ°ĄëˇĽĄ×¤Ë°¤·¤Ć¤¤¤Ę¤¤¸Â¤ę -# root¤Ësu¤ą¤ë¤ł¤Č¤Ď˝ĐÍč¤Ę¤¤ˇŁ -# BSD¤ČƱ¤¸ż¶ÉńˇŁ -# -root:ALL EXCEPT GROUP wheel:DENY -# -# ¤Ş¤˝¤é¤Żterry¤Čbirddog¤ĎƱ¤¸żÍ´Ö¤¬ -# ˝ęÍ­¤ą¤ëĄ˘Ą«Ą¦ĄóĄČ¤Ç¤˘¤ëˇŁ -# ĄŃĄąĄďˇĽĄÉ̵¤·¤Ç¸ß¤¤¤Ë -# ÂľĘý¤Ësu˝ĐÍč¤ëˇŁ -# -terry:birddog:NOPASS -birddog:terry:NOPASS -# -.fi -.SH ĄŐĄˇĄ¤Ąë -/etc/suauth -.SH ĄĐĄ° -Âż¤Ż¤ÎĄĐĄ°¤¬Ŕř¤ó¤Ç¤¤¤ë˛ÄÇ˝Ŕ­¤¬¤˘¤ëˇŁ -¤Č¤ę¤ď¤±ˇ˘ĄŐĄˇĄ¤ĄëĄŃˇĽĄµ¤Ď˝ńĽ°Ą¨ĄéˇĽ¤Ë´˛Âç¤Ç¤Ď¤Ę¤Żˇ˘ -(ąÔ¤Î»Ď¤áµÚ¤Ó˝Ş¤ď¤ę°Ęł°¤Ë)¸«¤«¤±¤Î¶őÇň¤Ď¤˘¤Ă¤Ć¤Ď¤Ę¤é¤Ę¤¤¤·ˇ˘ -ĆĂÄę¤ÎĄČˇĽĄŻĄó¤Ë¤č¤ęÁ´¤ŻĘ̤ζčŔÚ¤ęĘý¤Ë¤Ę¤Ă¤Ć¤·¤Ţ¤¦»ö¤â¤˘¤ëˇŁ -.SH ĘÖ¤ęĂÍ -ĄŐĄˇĄ¤Ąë¤ňĄŃˇĽĄą¤ą¤ëşÝ¤ÎĄ¨ĄéˇĽ¤Ďsyslogd(8)¤ňÍѤ¤¤ĆAUTHµˇÇ˝¤ÎĄěĄŮĄëERR -¤Č¤·¤ĆÄĚĂΤµ¤ě¤ëˇŁ -.SH ´ŘϢąŕĚÜ -su(1), login.defs(5) -.SH ĂřĽÔ -.nf -Chris Evans (lady0110@sable.ox.ac.uk) -Lady Margaret Hall -Oxford University -England -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ diff --git a/man/ja/sulogin.8 b/man/ja/sulogin.8 index 14392631..61c436f6 100644 --- a/man/ja/sulogin.8 +++ b/man/ja/sulogin.8 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1992, John F. Haugh II +.\" Copyright 1989 - 1992, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: sulogin.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: sulogin.8,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. @@ -40,18 +36,18 @@ .SH ĚľÁ° sulogin \- Ą·ĄóĄ°ĄëĄćˇĽĄ¶login .SH ˝ńĽ° -\fBsulogin\fR [ \fItty-device\fR ] +\fBsulogin\fR [\fItty-device\fR] .SH ŔâĚŔ -.I sulogin +.B sulogin ¤ĎĄ·ĄóĄ°ĄëĄćˇĽĄ¶ĄâˇĽĄÉ»ţˇ˘ĄćˇĽĄ¶¤¬Ą·ĄąĄĆĄŕ¤ËĄ˘ĄŻĄ»Ąą˝ĐÍč¤ë¤č¤¦¤Ë -¤Ę¤ëÁ°¤Ë\fB/etc/init\fR¤Ë¤č¤Ă¤ĆµŻĆ°¤µ¤ě¤ëˇŁ -¤ł¤ÎµˇÇ˝¤Ďˇ˘\fIinit\fR¤¬Ĺ¬ŔÚ¤ËĘŃąą¤µ¤ě¤Ć¤¤¤ë¤«ˇ˘ +¤Ę¤ëÁ°¤Ë\fI/etc/init\fR¤Ë¤č¤Ă¤ĆµŻĆ°¤µ¤ě¤ëˇŁ +¤ł¤ÎµˇÇ˝¤Ďˇ˘\fBinit\fR¤¬Ĺ¬ŔÚ¤ËĘŃąą¤µ¤ě¤Ć¤¤¤ë¤«ˇ˘ \fB/etc/inittab\fR¤ËĄ·ĄóĄ°ĄëĄćˇĽĄ¶ÍŃlogin¤ÎĄ¨ĄóĄČĄę¤¬¤˘¤ë Ą·ĄąĄĆĄŕ¤Ç¤Î¤ßĆŻ¤«¤»¤ë»ö¤¬˝ĐÍč¤ëˇŁ .PP Ľˇ¤ÎÍͤËĆţÎϤňÂĄ¤µ¤ě¤ë .IP "" .5i -Type control-d for normal startup, +Type control-d to proceed with normal startup, .br (or give root password for system maintenance): .PP @@ -68,7 +64,7 @@ Type control-d for normal startup, .SH ·Ůąđ .PP ¤ł¤ÎĄłĄŢĄóĄÉ¤Ďˇ˘ -\fIinit\fR¤¬\fB/bin/sh\fR¤Ç¤Ď¤Ę¤Ż\fB/etc/sulogin\fR¤ň¸Ć¤ÖÍÍĘŃąą¤µ¤ě¤Ć¤¤¤ë¤«ˇ˘ +\fBinit\fR¤¬\fB/bin/sh\fR¤Ç¤Ď¤Ę¤Ż\fBsulogin\fR¤ň¸Ć¤ÖÍÍĘŃąą¤µ¤ě¤Ć¤¤¤ë¤«ˇ˘ ¤Ţ¤ż¤Ď\fIinittab\fRĂć¤ÇĄ·ĄóĄ°ĄëĄćˇĽĄ¶ĄíĄ°Ą¤Ąó¤ËÂФą¤ëŔßÄ꤬¤Ę¤µ¤ě¤Ć¤¤¤ë ľěąç¤Ë¤Î¤ß»ČÍѤǤ­¤ëˇŁ Î㤨¤Đˇ˘ @@ -94,8 +90,8 @@ co:s:respawn:/etc/sulogin /dev/console .br /.profile \- Ą·ĄóĄ°ĄëĄćˇĽĄ¶Ą·Ą§ĄëÍѤνé´ü˛˝ĄąĄŻĄęĄ×ĄČ .SH ´ŘϢąŕĚÜ -login(1), -init(1M), -sh(1) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR login (1), +.BR init (8), +.BR sh (1) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) diff --git a/man/ja/useradd.8 b/man/ja/useradd.8 new file mode 100644 index 00000000..844ba55e --- /dev/null +++ b/man/ja/useradd.8 @@ -0,0 +1,201 @@ +.\" 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. +.\" +.\" +.\" $Id: useradd.8,v 1.1 2001/11/16 17:00:42 ankry Exp $ +.\" +.\" Japanese Version Copyright (c) 1996 HANATAKA Shinya +.\" all rights reserved. +.\" Translated Wed Nov 20 17:42:39 JST 1996 +.\" by HANATAKA Shinya +.\" +.\"WORD: initial group ĽçĄ°ĄëˇĽĄ× +.\"WORD: supplementary group Ęä˝őĄ°ĄëˇĽĄ× +.\" +.TH USERADD 8 +.SH ĚľÁ° +useradd \- ż·µ¬ĄćˇĽĄ¶¤ÎşîŔ®ˇ˘¤Ş¤č¤Óż·µ¬ĄćˇĽĄ¶¤ÎĄÇĄŐĄ©ĄëĄČľđĘó¤ÎĘŃąą +.SH ˝ńĽ° +.TP 8 +.B useradd +.\" .RB [ -A +.\" .RI { method | \fBDEFAULT\fR "},... ]" +.RB [ -c +.IR comment ] +.RB [ -d +.IR home_dir ] +.br +.RB [ -e +.IR expire_date ] +.RB [ -f +.IR inactive_time ] +.br +.RB [ -g +.IR initial_group ] +.RB [ -G +.IR group [,...]] +.br +.RB [ -m " [" -k +.IR skeleton_dir ]] +.RB [ -p +.IR passwd ] +.br +.RB [ -s +.IR shell ] +.RB [ -u +.IR uid " [" +.BR -o ]] +.I login +.TP 8 +.B useradd +\fB-D\fR +[\fB-g\fI default_group\fR] +[\fB-b\fI default_home\fR] +.br +[\fB-f\fI default_inactive\fR] +[\fB-e\fI default_expire_date\fR] +.br +[\fB-s\fI default_shell\fR] +.SH ŔâĚŔ +.SS ż·µ¬ĄćˇĽĄ¶¤ÎşîŔ® +\fB-D\fR ĄŞĄ×Ą·ĄçĄó¤Ę¤·¤ÇĽÂąÔ¤µ¤ě¤żľěąçˇ˘ \fBuseradd\fR ĄłĄŢĄóĄÉ¤Ďˇ˘ +ĄłĄŢĄóĄÉĄéĄ¤Ąó¤ÇÍż¤¨¤é¤ě¤żĂͤȥǥե©ĄëĄČ¤ÎŔßÄęĂͤň¤â¤Č¤Ëˇ˘ +ż·µ¬ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ňşîŔ®¤ą¤ëˇŁ +ĄłĄŢĄóĄÉĄéĄ¤Ąó¤ÎĄŞĄ×Ą·ĄçĄó¤Ë±ţ¤¸¤Ćˇ˘ż·µ¬ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČ¤¬ +ɬÍפʥ·ĄąĄĆĄŕĄŐĄˇĄ¤Ąë¤ËÄɲ䵤졢ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤¬şî¤é¤ěˇ˘ +ŔßÄęĄŐĄˇĄ¤Ąë¤¬ĄłĄÔˇĽ¤µ¤ě¤ëˇŁ +\fBuseradd\fR ĄłĄŢĄóĄÉ¤ÎĄŞĄ×Ą·ĄçĄó¤ĎĽˇ¤Î¤Č¤Ş¤ę¤Ç¤˘¤ëˇŁ +.\" .IP "\fB-A {\fImethod\fR|\fBDEFAULT\fR},..." +.\" The value of the user's authentication method. +.\" The authentication method is the name of a program which is responsible +.\" for validating the user's identity. +.\" The string \fBDEFAULT\fR may be used to change the user's authentication +.\" method to the standard system password method. +.\" This is a comma-separated list of program names. +.\" It may include \fBDEFAULT\fR exactly once. +.IP "\fB-c \fIcomment\fR" +ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ËÄɲ乤뿷µ¬ĄćˇĽĄ¶¤ÎĄłĄáĄóĄČĄŐĄŁˇĽĄëĄÉˇŁ +.IP "\fB-d \fIhome_dir\fR" +ż·µ¬ĄćˇĽĄ¶¤ÎĄíĄ°Ą¤Ąó»ţ¤ÎĄÇĄŁĄěĄŻĄČĄę¤Ďˇ˘ \fIhome_dir\fR ¤Č¤ą¤ëˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘ \fIlogin\fR ¤ň \fIdefault_home\fR ¤ËÉŐ¤±˛Ă¤¨¤ż¤â¤Î¤¬ +ĄíĄ°Ą¤Ąó»ţ¤ÎĄÇĄŁĄěĄŻĄČĄę¤Č¤Ę¤ëˇŁ +.IP "\fB-e \fIexpire_date\fR" +ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤¬Ěµ¸ú¤Č¤Ę¤ëĆüÉŐˇŁ +ĆüÉŐ¤Ď \fIYYYY-MM-DD\fR ¤Î·ÁĽ°¤Ç¤˘¤ëˇŁ +.IP "\fB-f \fIinactive_days\fR" +ĄŃĄąĄďˇĽĄÉ¤¬¤Î»ČÍŃ´ü¸Â¤¬ŔÚ¤ě¤Ć¤«¤éˇ˘¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤ÇÍż¤¨¤żĆüżô·Đ˛á¤ą¤ë¤Č +Ą˘Ą«Ą¦ĄóĄČ¤Ď±Ęµ×¤Ë»ČÍŃÉÔÇ˝¤Č¤Ę¤ëˇŁ +ĂͤȤ·¤Ć 0 ¤ň»ŘÄꤹ¤ë¤Čˇ˘ĄŃĄąĄďˇĽĄÉ¤¬Ľş¸ú¤·¤żÄľ¸ĺ¤ËĄ˘Ą«Ą¦ĄóĄČ¤Ď»ČÍŃÉÔÇ˝¤Č¤Ę¤ęˇ˘ +-1 ¤ň»ŘÄꤹ¤ë¤Čˇ˘¤ł¤ÎµˇÇ˝¤Ď̵¸ú¤Č¤Ę¤ëˇŁ +ĄÇĄŐĄ©ĄëĄČĂÍ¤Ď -1 ¤Ç¤˘¤ëˇŁ +.IP "\fB-g \fIinitial_group\fR" +ĄćˇĽĄ¶¤Î°¤ą¤ëĽçĄ°ĄëˇĽĄ×¤ÎĄ°ĄëˇĽĄ×Ěľ¤Ţ¤ż¤ĎĄ°ĄëˇĽĄ× IDˇŁ +Ą°ĄëˇĽĄ×Ěľ¤Ď¤ą¤Ç¤Ë¸şß¤ą¤ë¤â¤Î¤Ç¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +Ą°ĄëˇĽĄ× ID ¤Ďˇ˘¤ą¤Ç¤Ë¸şß¤ą¤ëĄ°ĄëˇĽĄ×¤ËÂбţ¤ą¤ë¤â¤Î¤Ç¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +ĄÇĄŐĄ©ĄëĄČ¤ÎĄ°ĄëˇĽĄ× ID ¤Ď 1 ¤Ç¤˘¤ëˇŁ +.IP "\fB-G \fIgroup,[...]\fR" +ĄćˇĽĄ¶¤Î°¤ą¤ëĘä˝őĄ°ĄëˇĽĄ×¤ÎĄęĄąĄČˇŁ +Ą°ĄëˇĽĄ×¤ĎĄłĄóĄŢ¤Ç¶čŔڤꡢ¶őÇň¤ň´Ţ¤á¤Ć¤Ď¤¤¤±¤Ę¤¤ˇŁ +¤ł¤ě¤é¤ÎĄ°ĄëˇĽĄ×¤Ďˇ˘ \fB-g\fR ĄŞĄ×Ą·ĄçĄó¤ČƱÍͤˡ˘ +¤ą¤Ç¤Ë¸şß¤ą¤ë¤â¤Î¤Ç¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘ĄćˇĽĄ¶¤ĎĽçĄ°ĄëˇĽĄ×¤Î¤ß¤Ë°¤ą¤ëˇŁ +.IP \fB-m\fR +ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤¬Â¸şß¤·¤Ę¤¤ľěąç¤Ë¤Ďˇ˘ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤ňşîŔ®¤ą¤ëˇŁ +\fB-k\fR ĄŞĄ×Ą·ĄçĄó¤ňƱ»ţ¤Ë»ŘÄꤹ¤ë¤Č \fIskeleton_dir\fR °Ę˛Ľ¤ÎĄŐĄˇĄ¤Ąë¤¬ˇ˘ +»ŘÄꤷ¤Ę¤¤¤Č \fI/etc/skel\fR °Ę˛Ľ¤ÎĄŐĄˇĄ¤Ąë¤¬ˇ˘ +ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤ËĄłĄÔˇĽ¤µ¤ě¤ëˇŁ +\fIskeleton_dir\fR ¤Ţ¤ż¤Ď \fI/etc/skel\fR ¤Ë´Ţ¤Ţ¤ě¤ë¤ą¤Ů¤Ć¤ÎĄÇĄŁĄěĄŻĄČĄę¤âˇ˘ +ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤Ëşî¤é¤ě¤ëˇŁ +\fB-k\fR ĄŞĄ×Ą·ĄçĄó¤Ďˇ˘ \fB-m\fR ĄŞĄ×Ą·ĄçĄó¤Č¤Č¤â¤Ë»Č¤ď¤ě¤ëľěąç¤Î¤ßÍ­¸ú¤Ç¤˘¤ëˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤ňşî¤é¤şˇ˘ĄŐĄˇĄ¤Ąë¤ÎĄłĄÔˇĽ¤â¤·¤Ę¤¤ˇŁ +.IP "\fB-p \fIpasswd\fR" +\fBcrypt\fR(3) ¤Ë¤č¤Ă¤Ć°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘Ą˘Ą«Ą¦ĄóĄČ¤Ď»Č¤¨¤Ę¤¤ľőÂ֤Ȥʤ롣 +.IP "\fB-s \fIshell\fR" +ĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĄ·Ą§ĄëĚľˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ď¤ł¤ÎĄŐĄŁˇĽĄëĄÉ¤Ď¶őÇň¤Č¤Ę¤ęˇ˘ +Ą·ĄąĄĆĄŕ¤¬ĄÇĄŐĄ©ĄëĄČ¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňÁŞ¤ÖˇŁ +.IP "\fB-u \fIuid\fR" +ĄćˇĽĄ¶ IDˇŁ +\fI-o\fR ĄŞĄ×Ą·ĄçĄó¤¬Ć±»ţ¤Ë»ŘÄꤵ¤ě¤Ę¤¤ľěąç¤Ďˇ˘Âľ¤Č˝Ĺ¤Ę¤Ă¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +żôĂͤĎČóÉé¤ÎĂͤǤʤ±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +ĄÇĄŐĄ©ĄëĄČ¤Ç¤Ďˇ˘ 99 ¤č¤ęÂ礭¤Żˇ˘ +¤ą¤Ç¤Ë¸şß¤ą¤ë¤É¤ÎĄćˇĽĄ¶¤č¤ę¤âÂ礭¤¤żô¤Î¤¦¤Áˇ˘şÇľ®¤ÎĂͤ¬»Č¤ď¤ě¤ëˇŁ +0 ¤«¤é 99 ¤Ţ¤Ç¤ÎĂͤĎÂçÄńˇ˘Ą·ĄąĄĆĄŕĄ˘Ą«Ą¦ĄóĄČÍѤȤ·¤ĆÍ˝Ě󤵤ě¤Ć¤¤¤ëˇŁ +.SS ĄÇĄŐĄ©ĄëĄČĂͤÎĘŃąą +\fB-D\fR ĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤹ¤ë¤Čˇ˘ +\fBuseradd\fR ¤Ď¸˝şß¤ÎĄÇĄŐĄ©ĄëĄČĂͤňÉ˝Ľ¨¤ą¤ë¤«ˇ˘ +¤Ţ¤ż¤ĎĄŞĄ×Ą·ĄçĄó¤ÇÍż¤¨¤é¤ě¤żĂͤ˱ţ¤¸¤ĆĄÇĄŐĄ©ĄëĄČĂͤňĘŃąą¤ą¤ëˇŁ +»ČÍѲÄÇ˝¤ĘĄŞĄ×Ą·ĄçĄó¤ĎĽˇ¤Î¤Č¤Ş¤ę¤Ç¤˘¤ëˇŁ +.IP "\fB-b \fIdefault_home\fR" +ż·µ¬ĄćˇĽĄ¶¤ÎĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤Ř¤ÎĄŃĄąˇŁ +ż·µ¬ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ňşîŔ®¤ą¤ëşÝ¤Ë \fB-d\fI ĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤Ę¤¤ľěąçˇ˘ +\fIdefault_home\fR ¤Î¸ĺ¤ËĄćˇĽĄ¶Ěľ¤ňÉŐ¤±˛Ă¤¨¤ż¤â¤Î¤¬ +ż·µ¬ĄÇĄŁĄěĄŻĄČĄęĚľ¤Č¤·¤Ć»Č¤ď¤ě¤ëˇŁ +.IP "\fB-e \fIdefault_expire_date\fR" +ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤¬Ěµ¸ú¤Č¤Ę¤ëĆüÉŐˇŁ +.IP "\fB-f \fIdefault_inactive\fR" +ĄŃĄąĄďˇĽĄÉ¤Î»ČÍŃ´ü¸Â¤¬ŔÚ¤ě¤Ć¤«¤éĄ˘Ą«Ą¦ĄóĄČ¤¬»ČÍŃÉÔÇ˝¤Č¤Ę¤ë¤Ţ¤Ç¤ÎĆüżôˇŁ +.IP "\fB-g \fIdefault_group\fR" +ż·µ¬ĄćˇĽĄ¶¤Î°¤ą¤ëĽçĄ°ĄëˇĽĄ×¤ÎĄ°ĄëˇĽĄ×Ěľ¤Ţ¤ż¤ĎĄ°ĄëˇĽĄ× IDˇŁ +Ą°ĄëˇĽĄ×Ěľ¤Ď¤ą¤Ç¤Ë¸şß¤ą¤ë¤â¤Î¤Ç¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +Ą°ĄëˇĽĄ× ID ¤Ďˇ˘¤ą¤Ç¤Ë¸şß¤ą¤ëĄ°ĄëˇĽĄ×¤ËÂбţ¤ą¤ë¤â¤Î¤Ç¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ +.IP "\fB-s \fIdefault_shell\fR" +ż·µ¬ĄćˇĽĄ¶¤ÎĄíĄ°Ą¤ĄóĄ·Ą§ĄëˇŁ +»ŘÄꤵ¤ě¤żĄ×ĄíĄ°ĄéĄŕ¤¬ˇ˘şŁ¸ĺşî¤é¤ě¤ë¤ą¤Ů¤Ć¤ÎĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ËŬÍѤµ¤ě¤ëˇŁ +.PP +ĄŞĄ×Ą·ĄçĄó¤ň»ŘÄꤷ¤Ę¤¤ľěąçˇ˘ \fBuseradd\fR ¤Ď¸˝şß¤ÎĄÇĄŐĄ©ĄëĄČĂͤňÉ˝Ľ¨¤ą¤ëˇŁ +.SH Ăí°Ő +\fI/etc/skel\fR ĄÇĄŁĄěĄŻĄČĄę¤ËĄÇĄŐĄ©ĄëĄČ¤ÎĄćˇĽĄ¶ĄŐĄˇĄ¤Ąë¤ňĂÖ¤Żşî¶Č¤Ď +Ą·ĄąĄĆĄŕ´ÉÍýĽÔ¤ÎŔŐǤ¤Ç¤˘¤ëˇŁ +.SH ·Ůąđ +NIS ¤ÎĄ°ĄëˇĽĄ×¤ËĄćˇĽĄ¶¤ň˛Ă¤¨¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +¤ł¤ě¤Ďɬ¤ş NIS ĄµˇĽĄĐľĺ¤ÇąÔ¤¦¤ł¤ČˇŁ +.SH ĄŐĄˇĄ¤Ąë +/etc/passwd \- ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČľđĘó +.br +/etc/shadow \- shadow ¤µ¤ě¤żĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČľđĘó +.br +/etc/group \- Ą°ĄëˇĽĄ×ľđĘó +.br +/etc/default/useradd \- ĄÇĄŐĄ©ĄëĄČĂͤξđĘó +.br +/etc/skel \- ĄŐĄˇĄ¤Ąë¤Îż÷·Á¤¬ĂÖ¤«¤ě¤ëĄÇĄŁĄěĄŻĄČĄę +.SH ´ŘϢąŕĚÜ +.BR chfn (1), +.BR chsh (1), +.BR crypt (3), +.BR groupadd (8), +.BR groupdel (8), +.BR groupmod (8), +.BR passwd (1), +.BR userdel (8), +.BR usermod (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + + diff --git a/man/ja/userdel.8 b/man/ja/userdel.8 index 506c7c00..c8c9c3e1 100644 --- a/man/ja/userdel.8 +++ b/man/ja/userdel.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991 - 1994, John F. Haugh II +.\" Copyright 1991 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,28 +25,29 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: userdel.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: userdel.8,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka +.\" Updated Fri Jan 12 03:27:30 JST 2000 +.\" by Kentaro Shirakata .\" .TH USERDEL 8 .SH ĚľÁ° -userdel \- ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČµÚ¤Ó´ŘϢ¤ą¤ëĄŐĄˇĄ¤Ąë¤ňşď˝ü¤ą¤ëˇŁ +userdel \- ĄćˇĽĄ¶¤ÎĄ˘Ą«Ą¦ĄóĄČµÚ¤Ó´ŘϢ¤ą¤ëĄŐĄˇĄ¤Ąë¤ňşď˝ü¤ą¤ë .SH ˝ńĽ° .B userdel -.\"[ \fB-r\fI ] -[ \fB-r\fR ] +[\fB-r\fR] .I login .SH ŔâĚŔ -\fIuserdel\fRĄłĄŢĄóĄÉ¤ĎĄ·ĄąĄĆĄŕ¤ÎĄ˘Ą«Ą¦ĄóĄČĄŐĄˇĄ¤Ąë¤ËĘŃąą¤ň»Ü¤·ˇ˘ +\fBuserdel\fRĄłĄŢĄóĄÉ¤ĎĄ·ĄąĄĆĄŕ¤ÎĄ˘Ą«Ą¦ĄóĄČĄŐĄˇĄ¤Ąë¤ËĘŃąą¤ň»Ü¤·ˇ˘ ĄćˇĽĄ¶\fIlogin\fR¤Ë°¤ą¤ëÁ´¤Ć¤ÎĄ¨ĄóĄČĄęˇĽ¤ňşď˝ü¤ą¤ëˇŁ şď˝ü¤µ¤ě¤ëĄćˇĽĄ¶¤Ď¸şß¤·¤Ć¤¤¤Ę¤±¤ě¤Đ¤Ę¤é¤Ę¤¤ˇŁ .IP \fB-r\fR ĄćˇĽĄ¶¤ÎĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄęĂć¤ÎĄŐĄˇĄ¤Ąë¤ňĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄęĽ«ÂΤȤȤâ¤Ë -ľĂµî¤ą¤ëˇŁ +ľĂµî¤ą¤ëˇŁ¤Ţ¤żĄćˇĽĄ¶¤ÎĄáˇĽĄëĄąĄ×ˇĽĄë¤âľĂµî¤ą¤ëˇŁ Âľ¤ÎĄŐĄˇĄ¤ĄëĄ·ĄąĄĆĄŕľĺ¤Ë¤˘¤ëĄŐĄˇĄ¤Ąë¤ĎĽęşî¶Č¤Çõ¤·˝Đ¤·¤Ć˝üµî¤·¤Ę¤Ż¤Ć¤Ď ¤Ę¤é¤Ę¤¤ˇŁ .SH ĄŐĄˇĄ¤Ąë @@ -67,8 +64,15 @@ kill NIS¤ÎĄŻĄéĄ¤Ą˘ĄóĄČ¤«¤é¤Ď¤¤¤«¤Ę¤ëNIS˝ęÍ­¤ÎĄ˘Ą«Ą¦ĄóĄČ¤âľĂµî¤ą¤ë»ö¤Ď˝ĐÍč¤Ę¤¤ˇŁ ľĂµî¤ą¤ëľěąç¤Ë¤ĎNIS¤ÎĄµˇĽĄĐ¤«¤éąÔ¤ď¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ .SH ´ŘϢąŕĚÜ -\fBchfn(1), chsh(1), groupadd(1M), groupdel(1M), groupmod(1M), -passwd(1), useradd(1M), usermod(1M) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR chfn (1), +.BR chsh (1), +.BR groupadd (8), +.BR groupdel (8), +.BR groupmod (8), +.BR passwd (1), +.BR useradd (8), +.BR usermod (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + diff --git a/man/ja/usermod.8 b/man/ja/usermod.8 index 2e66a72a..d5a19a23 100644 --- a/man/ja/usermod.8 +++ b/man/ja/usermod.8 @@ -1,4 +1,4 @@ -.\" Copyright 1991 - 1994, John F. Haugh II +.\" Copyright 1991 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -9,18 +9,14 @@ .\" 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 +.\" 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 JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" 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 JOHN HAUGH OR CONTRIBUTORS BE LIABLE +.\" 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) @@ -29,41 +25,63 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: usermod.8,v 1.1 2001/06/16 02:35:46 kloczek Exp $ +.\" $Id: usermod.8,v 1.2 2001/11/16 17:01:33 ankry Exp $ .\" .\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka .\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka +.\" Updated Tue Jan 23 17:21:08 JST 2001 +.\" by Kentaro Shirakata .\" .TH USERMOD 8 .SH ĚľÁ° usermod \- ĄćˇĽĄ¶Ą˘Ą«Ą¦ĄóĄČ¤ňĘŃąą¤ą¤ë .SH ˝ńĽ° +.TP 8 .B usermod -[ \fB-A\fI method\fR | \fBDEFAULT\fR ] -[ \fB-c\fI comment\fR ] -[ \fB-d\fI home_dir \fR[ \fB-m\fR ] ] -[ \fB-e\fI expire_date\fR ] -[ \fB-f\fI inactive_time\fR ] -[ \fB-g\fI initial_group\fR ] -[ \fB-G\fI group[,...]\fR ] -[ \fB-l\fI login_name \fR ] -[ \fB-s\fI shell\fR ] -[ \fB-u\fI uid \fR[ \fB-o\fR ] +.\" .RB [ -A +.\" .RI { method | \fBDEFAULT\fR "},... ]" +.RB [ -c +.IR comment ] +.RB [ -d +.IR home_dir " [" +.BR -m ]] +.br +.RB [ -e +.IR expire_date ] +.RB [ -f +.IR inactive_time ] +.br +.RB [ -g +.IR initial_group ] +.RB [ -G +.IR group [,...]] +.br +.RB [ -l +.IR login_name ] +.RB [ -p +.IR passwd ] +.br +.RB [ -s +.IR shell ] +.RB [ -u +.IR uid " [" +.BR -o ]] +.RB [ -L | -U ] .I login .SH ŔâĚŔ -\fIusermod\fRĄłĄŢĄóĄÉ¤ĎĄłĄŢĄóĄÉĄéĄ¤Ąóľĺ¤Ç¤Î»ŘĽ¨¤Ë¤·¤ż¤¬¤Ă¤Ć +\fBusermod\fRĄłĄŢĄóĄÉ¤ĎĄłĄŢĄóĄÉĄéĄ¤Ąóľĺ¤Ç¤Î»ŘĽ¨¤Ë¤·¤ż¤¬¤Ă¤Ć Ą·ĄąĄĆĄŕ¤ÎĄ˘Ą«Ą¦ĄóĄČĄŐĄˇĄ¤Ąë¤ňĘŃąą¤ą¤ëˇŁ -\fIusermod\fRĄłĄŢĄóĄÉ¤Ç»Č¤¨¤ëĄŞĄ×Ą·ĄçĄó¤Ď -.IP "\fB-A \fImethod\fR|\fBDEFAULT\fR" -ĄćˇĽĄ¶¤Îż·¤·¤¤Ç§ľÚĘýˡˇŁ -ĄćˇĽĄ¶¤ÎǧľÚĘýˡ¤Č¤Ďˇ˘ĄćˇĽĄ¶¤¬ËܿͤǤ˘¤ë»ö¤ňłÎǧ¤ą¤ë°Ů¤ÎĄ×ĄíĄ°ĄéĄŕĚľ¤Ç¤˘¤ëˇŁ -ʸ»úÎó\fBDEFAULT\fR¤ňÍѤ¤¤ĆĄćˇĽĄ¶¤ÎǧľÚĘýˡ¤ňĄ·ĄąĄĆĄŕɸ˝ŕ¤ÎĄŃĄąĄďˇĽĄÉĘýĽ°¤Ë -ĘŃąą¤ą¤ë»ö¤â˝ĐÍč¤ëˇŁ +\fBusermod\fRĄłĄŢĄóĄÉ¤Ç»Č¤¨¤ëĄŞĄ×Ą·ĄçĄó¤Ď +.\" .IP "\fB-A \fImethod\fR|\fBDEFAULT\fR" +.\" ĄćˇĽĄ¶¤Îż·¤·¤¤Ç§ľÚĘýˡˇŁ +.\" ĄćˇĽĄ¶¤ÎǧľÚĘýˡ¤Č¤Ďˇ˘ĄćˇĽĄ¶¤¬ËܿͤǤ˘¤ë»ö¤ňłÎǧ¤ą¤ë°Ů¤ÎĄ×ĄíĄ°ĄéĄŕĚľ¤Ç¤˘¤ëˇŁ +.\" ʸ»úÎó\fBDEFAULT\fR¤ňÍѤ¤¤ĆĄćˇĽĄ¶¤ÎǧľÚĘýˡ¤ňĄ·ĄąĄĆĄŕɸ˝ŕ¤ÎĄŃĄąĄďˇĽĄÉĘýĽ°¤Ë +.\" ĘŃąą¤ą¤ë»ö¤â˝ĐÍč¤ëˇŁ .IP "\fB-c \fIcomment\fR" ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤Îż·¤·¤¤ĄłĄáĄóĄČÍó¤ÎĆâÍĆ -ÄĚľď¤Ď\fBchfn(1)\fRĄćˇĽĄĆĄŁĄęĄĆĄŁ¤ňÍѤ¤¤ĆĘŃąą¤µ¤ě¤ëˇŁ +ÄĚľď¤Ď\fBchfn\fR(1)ĄćˇĽĄĆĄŁĄęĄĆĄŁ¤ňÍѤ¤¤ĆĘŃąą¤µ¤ě¤ëˇŁ .IP "\fB-d \fIhome_dir\fR" ż·¤·¤¤ĄíĄ°Ą¤ĄóĄÇĄŁĄěĄŻĄČĄęˇŁ \fB-m\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤żľěąç¤Ď¸˝şß¤ÎĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę¤ÎĂćżČ¤¬ @@ -71,21 +89,21 @@ usermod \- şî¤é¤ě¤ëˇŁ .IP "\fB-e \fIexpire_date\fR" Ą˘Ą«Ą¦ĄóĄČ¤¬»ČÍŃÉÔÇ˝¤Ë¤Ę¤ëĆüÉŐˇŁ -ĆüÉŐ¤Ď\fIMM/DD/YY\fR¤Č¤¤¤¦˝ńĽ°¤Ç»ŘÄꤹ¤ë(MM,DD,YY¤Ď¤˝¤ě¤ľ¤ě -·îˇ˘Ćüˇ˘ÇŻ¤ňÉ˝¤ąĆó·ĺ¤Îżô»ú)ˇŁ +ĆüÉŐ¤Ď\fIYYYY-MM-DD\fR¤Č¤¤¤¦˝ńĽ°¤Ç»ŘÄꤹ¤ë +(YYYY, MM, DD ¤Ď¤˝¤ě¤ľ¤ěÇŻˇ˘·îˇ˘Ćü¤ňÉ˝¤ążô»ú)ˇŁ .IP "\fB-f \fIinactive_days\fR" ĄŃĄąĄďˇĽĄÉ¤Î»ČÍŃ´ü¸Â¤¬ŔÚ¤ě¤Ć¤«¤éĄ˘Ą«Ą¦ĄóĄČ¤¬±Ęµ×¤Ë»ČÍŃÉÔÇ˝¤Ë¤Ę¤ë ¤Ţ¤Ç¤ÎĆüżôˇŁ 0¤Č¤ą¤ë¤Čˇ˘ĄŃĄąĄďˇĽĄÉ¤Î´ü¸Â¤¬ŔÚ¤ě¤ë¤ČƱ»ţ¤Ë¤ł¤ÎĄ˘Ą«Ą¦ĄóĄČ¤Ď»ČÍŃÉÔ˛ÄÇ˝ ¤Ë¤Ę¤ëˇŁ-1¤Č¤ą¤ë¤Č¤ł¤ÎµˇÇ˝¤¬ĆŻ¤«¤Ę¤Ż¤Ę¤ëˇŁ -ĄÇĄŁĄŐĄ©ĄëĄČĂͤĎ-1ˇŁ +ĄÇĄŐĄ©ĄëĄČĂͤĎ-1ˇŁ .IP "\fB-g \fIinitial_group\fR" ĄíĄ°Ą¤Ąó»ţ¤Îż·¤·¤¤Ą°ĄëˇĽĄ×Ěľ¤Ţ¤ż¤ĎIDˇŁ ¤ł¤ÎĄ°ĄëˇĽĄ×Ěľ¤Ď´ű¤Ë¸şß¤·¤Ć¤¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -¤Ţ¤żˇ¤Ą°ĄëˇĽĄ×ČÖąć¤Ď´ű¸¤ÎĄ°ĄëˇĽĄ×¤ň»˛ľČ¤·¤Ć¤¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ -ĄÇĄŁĄŐĄ©ĄëĄČ¤ÎĄ°ĄëˇĽĄ×ČÖąć¤Ď1¤Ç¤˘¤ëˇŁ +¤Ţ¤żˇ˘Ą°ĄëˇĽĄ×ČÖąć¤Ď´ű¸¤ÎĄ°ĄëˇĽĄ×¤ň»˛ľČ¤·¤Ć¤¤¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +ĄÇĄŐĄ©ĄëĄČ¤ÎĄ°ĄëˇĽĄ×ČÖąć¤Ď1¤Ç¤˘¤ëˇŁ .IP "\fB-G \fIgroup,[...]\fR" -ĄćˇĽĄ¶¤¬Â°¤ąˇ¤ÉűĄ°ĄëˇĽĄ×¤ÎĄęĄąĄČˇŁ +ĄćˇĽĄ¶¤¬Â°¤ąˇ˘ÉűĄ°ĄëˇĽĄ×¤ÎĄęĄąĄČˇŁ Ą°ĄëˇĽĄ×¤ĎĄłĄóĄŢ¤ňÍѤ¤¤Ć¶čŔڤꡢ´Ö¤Ë¶őÇňʸ»ú¤ňĆţ¤ě¤Ć¤Ď ¤Ę¤é¤Ę¤¤ˇŁ »ŘÄę¤Ç¤­¤ëĄ°ĄëˇĽĄ×¤Ë¤Ď\fB-g\fRĄŞĄ×Ą·ĄçĄó¤ňÍѤ¤¤ëľěąç¤Č @@ -97,9 +115,11 @@ usermod \- Âľ¤Ď˛ż¤âĘŃąą¤·¤Ę¤¤ˇŁ Ćäˡ˘ż·¤·¤¤ĄíĄ°Ą¤ĄóĚľ¤Ëąç¤ď¤»¤ĆĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄęĚľ¤ňĘŃąą¤·¤Ę¤Ż¤Ć¤Ď ¤Ę¤é¤Ę¤¤¤Ŕ¤í¤¦ˇŁ +.IP "\fB-p \fIpasswd\fR" +\fBcrypt\fR(3)¤ÎĘÖ¤ęĂͤǤ˘¤ë°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉˇŁ .IP "\fB-s \fIshell\fR" ż·¤·¤¤ĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ÎĚľÁ°ˇŁ -¤ł¤ÎÍó¤ň¶őÇň¤Ë¤·¤żľěąç¤ĎĄ·ĄąĄĆĄŕ¤¬ĄÇĄŁĄŐĄ©ĄëĄČ¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ň +¤ł¤ÎÍó¤ň¶őÇň¤Ë¤·¤żľěąç¤ĎĄ·ĄąĄĆĄŕ¤¬ĄÇĄŐĄ©ĄëĄČ¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ň ÁŞÂň¤ą¤ëˇŁ .IP "\fB-u \fIuid\fR" ĄćˇĽĄ¶¤ÎIDČֹ档 @@ -110,6 +130,15 @@ usermod \- ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę°Ę˛Ľ¤Îˇ˘¤˝¤ÎĄćˇĽĄ¶˝ęÍ­¤ÎÁ´¤Ć¤ÎĄŐĄˇĄ¤Ąë¤ÎĄćˇĽĄ¶ID¤Ďˇ˘ Ľ«Ć°ĹŞ¤Ëż·¤·¤¤ĂͤËĘŃąą¤µ¤ě¤ëˇŁ ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę°Ę˛Ľ¤Ë¤Ę¤¤ĄŐĄˇĄ¤Ąë¤ĎĽęşî¶Č¤ÇĘŃąą¤·¤Ę¤Ż¤Ć¤Ď¤Ę¤é¤Ę¤¤ˇŁ +.IP "\fB-L\fR" +ĄćˇĽĄ¶¤ÎĄŃĄąĄďˇĽĄÉ¤ňĄíĄĂĄŻ¤ą¤ëˇŁ +¤ł¤ě¤Ď°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤ÎŔčƬ¤Ë '!' ¤ňÄɲä·ˇ˘ +»öĽÂľĺĄŃĄąĄďˇĽĄÉ¤ň̵¸ú¤Ë¤ą¤ëˇŁ +¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤Ď \fI-p\fR ¤Ţ¤ż¤Ď \fI-U\fR ¤ČƱ»ţ¤ËÍѤ¤¤ë¤ł¤Č¤Ď¤Ç¤­¤Ę¤¤ˇŁ +.IP "\fB-U\fR" +ĄćˇĽĄ¶¤ÎĄŃĄąĄďˇĽĄÉ¤ňĄ˘ĄóĄíĄĂĄŻ¤ą¤ëˇŁ +¤ł¤ě¤Ď°Ĺąć˛˝¤µ¤ě¤żĄŃĄąĄďˇĽĄÉ¤ÎŔčƬ¤Î '!' ¤ňĽč¤ę˝ü¤ŻˇŁ +¤ł¤ÎĄŞĄ×Ą·ĄçĄó¤Ď \fI-p\fR ¤Ţ¤ż¤Ď \fI-L\fR ¤ČƱ»ţ¤ËÍѤ¤¤ë¤ł¤Č¤Ď¤Ç¤­¤Ę¤¤ˇŁ .SH ·Ůąđ \fBusermod\fR¤Ď¸˝şßĄíĄ°Ą¤Ąó¤·¤Ć¤¤¤ëĄćˇĽĄ¶¤ÎĚľÁ°¤ňĘŃąą¤ą¤ë»ö¤Ď˝ĐÍč¤Ę¤¤ˇŁ ¤ł¤ÎĄłĄŢĄóĄÉ¤ň»ČÍѤ·¤ĆĄćˇĽĄ¶¤ÎIDČÖąć¤ňĘŃąą¤ą¤ëşÝ¤Ďˇ˘ @@ -125,8 +154,16 @@ NIS .br /etc/group \- Ą°ĄëˇĽĄ×ľđĘó .SH ´ŘϢąŕĚÜ -\fBchfn(1), chsh(1), groupadd(1M), groupdel(1M), groupmod(1M), -passwd(1), useradd(1M), userdel(1M) -.SH ËÝĚőĽÔ -¸ĹąâĎÂÄ÷ +.BR chfn (1), +.BR chsh (1), +.BR crypt (3), +.BR groupadd (8), +.BR groupdel (8), +.BR groupmod (8), +.BR passwd (1), +.BR useradd (8), +.BR userdel (8) +.SH ĂřĽÔ +Julianne Frances Haugh (jockgrrl@ix.netcom.com) + diff --git a/man/ja/vigr.8 b/man/ja/vigr.8 new file mode 100644 index 00000000..f0f503cc --- /dev/null +++ b/man/ja/vigr.8 @@ -0,0 +1 @@ +.so vipw.8 diff --git a/man/ja/vipw.8 b/man/ja/vipw.8 new file mode 100644 index 00000000..087c2542 --- /dev/null +++ b/man/ja/vipw.8 @@ -0,0 +1,37 @@ +.\" $Id: vipw.8,v 1.1 2001/11/16 17:00:34 ankry Exp $ +.\" +.\" +.\" Japanese Version Copyright (c) 2001 Maki KURODA +.\" all right reserved, +.\" Translated Tue Oct 30 11:55:56 JST 2001 +.\" by Maki KURODA +.\" +.\" +.TH VIPW 8 "26 Sep 1997" +.SH ĚľÁ° +vipw, vigr \- passwordˇ˘ groupˇ˘ shadow-passwordˇ˘shadow-group ĄŐĄˇĄ¤Ąë¤ňĘÔ˝¸¤ą¤ëˇŁ +.SH ˝ńĽ° +.BR vipw " [-s]" +.br +.BR vigr " [-s]" +.SH ŔâĚŔ +.BR vipw " ¤Č " vigr +¤Ď +.IR /etc/passwd ¤Č /etc/group +¤ň¤˝¤ě¤ľ¤ěĘÔ˝¸¤ą¤ëˇŁ +.B -s +ĄŐĄéĄ°¤¬»ŘÄꤵ¤ě¤Ć¤¤¤ëľěąçˇ˘¤˝¤ě¤é¤ÎĄŐĄˇĄ¤Ąë¤Î shadow ĄĐˇĽĄ¸ĄçĄó¤Ç¤˘¤ë +.IR /etc/shadow ¤Č /etc/gshadow +¤ň¤˝¤ě¤ľ¤ěĘÔ˝¸¤ą¤ëˇŁ +Ą×ĄíĄ°ĄéĄŕ¤ĎĄŐĄˇĄ¤Ąë¤Î˛ţĘѤňËɤ°¤ż¤á¤ÎŬŔڤʥíĄĂĄŻ¤ňŔßÄꤹ¤ëˇŁ +»Č¤ď¤ě¤ëĄ¨ĄÇĄŁĄż¤Ďˇ˘´Ä¶­ĘŃżô +.BR VISUAL ˇ˘ +´Ä¶­ĘŃżô +.BR EDITOR ˇ˘ +ĄÇĄŐĄ©ĄëĄČ¤ÎĄ¨ĄÇĄŁĄż +.BR vi +¤Î˝ç¤Ç¤˘¤ëˇŁ +.SH ´ŘϢąŕĚÜ +.BR passwd (5), +.BR group (5), +.BR shadow (5) diff --git a/man/newgrp.1 b/man/newgrp.1 index 4d60ac7a..6faca301 100644 --- a/man/newgrp.1 +++ b/man/newgrp.1 @@ -1,4 +1,4 @@ -.\"$Id: newgrp.1,v 1.9 2001/01/27 02:55:52 kloczek Exp $ +.\"$Id: newgrp.1,v 1.10 2001/12/22 05:40:01 kloczek Exp $ .\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" @@ -33,7 +33,7 @@ sg \- Execute command as different group ID .SH SYNOPSIS \fBnewgrp\fR [\fB-\fR] [\fIgroup\fR] .br -\fBnewgrp\fR [\fB-\fR] [\fIgroup\fR [[\fB-c\fR] \fIcommand\fR]] +\fBnewgrp\fR [\fB-\fR] [\fIgroup\fR [[\fB-c\fR] \fIcommand\fR]] .SH DESCRIPTION \fBnewgrp\fR is used to change the current group ID during a login session. If the optional \fB\-\fR flag is given, the user's environment diff --git a/man/newusers.8 b/man/newusers.8 index 57773a95..ea4bf9b8 100644 --- a/man/newusers.8 +++ b/man/newusers.8 @@ -1,4 +1,4 @@ -.\"$Id: newusers.8,v 1.8 2001/01/27 02:55:52 kloczek Exp $ +.\"$Id: newusers.8,v 1.9 2001/12/22 05:40:01 kloczek Exp $ .\" Copyright 1991 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" @@ -29,7 +29,7 @@ .SH NAME \fBnewusers\fR - update and create new users in batch .SH SYNOPSIS -\fBnewusers\fR [\fI new_users \fR] +\fBnewusers\fR [\fInew_users\fR] .SH DESCRIPTION \fBnewusers\fR reads a file of user name and cleartext password pairs and uses this information to update a group of existing users or to diff --git a/man/passwd.1 b/man/passwd.1 index 321da581..db6d4830 100644 --- a/man/passwd.1 +++ b/man/passwd.1 @@ -1,4 +1,4 @@ -.\"$Id: passwd.1,v 1.9 2001/01/27 02:55:52 kloczek Exp $ +.\"$Id: passwd.1,v 1.10 2001/12/22 05:40:01 kloczek Exp $ .\" Copyright 1989 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" @@ -31,7 +31,7 @@ passwd \- change user password .SH SYNOPSIS \fBpasswd\fR [\fB-f\fR|\fB-s\fR] [\fIname\fR] .br -\fBpasswd\fR [\fB-g\fR] [\fB-r\fR|\fBR\fR] \fIgroup\fR +\fBpasswd\fR [\fB-g\fR] [\fB-r\fR|\fB-R\fR] \fIgroup\fR .br \fBpasswd\fR [\fB-x\fR \fImax\fR] [\fB-n\fR \fImin\fR] [\fB-w\fR \fIwarn\fR] [\fB-i\fR \fIinact\fR] \fIlogin\fR diff --git a/man/pl/Makefile.am b/man/pl/Makefile.am index f744e83d..0690595b 100644 --- a/man/pl/Makefile.am +++ b/man/pl/Makefile.am @@ -2,46 +2,54 @@ mandir = @mandir@/pl man_MANS = \ + adduser.8 \ chage.1 \ chfn.1 \ + chpasswd.8 \ chsh.1 \ - gpasswd.1 \ - login.1 \ - newgrp.1 \ - passwd.1 \ - su.1 \ - shadow.3 \ d_passwd.5 \ + expiry.1 \ faillog.5 \ - limits.5 \ - login.access.5 \ - login.defs.5 \ - passwd.5 \ - porttime.5 \ - shadow.5 \ - suauth.5 \ - adduser.8 \ - chpasswd.8 \ faillog.8 \ + gpasswd.1 \ groupadd.8 \ groupdel.8 \ groupmod.8 \ + grpck.8 \ grpconv.8 \ grpunconv.8 \ - grpck.8 \ lastlog.8 \ + limits.5 \ + login.1 \ + login.access.5 \ + login.defs.5 \ logoutd.8 \ mkpasswd.8 \ + newgrp.1 \ newusers.8 \ + passwd.1 \ + passwd.5 \ + porttime.5 \ pwck.8 \ pwconv.8 \ pwunconv.8 \ - shadowconfig.8 \ + sg.1 \ + shadow.5 \ + su.1 \ + suauth.5 \ useradd.8 \ userdel.8 \ usermod.8 \ + vigr.8 \ vipw.8 EXTRA_DIST = $(man_MANS) \ - dialups.5 groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 \ - dpasswd.8 + dialups.5 \ + dpasswd.8 \ + groups.1 \ + id.1 \ + pw_auth.3 \ + pwauth.8 \ + shadow.3 \ + shadowconfig.8 \ + sulogin.8 diff --git a/man/pl/Makefile.in b/man/pl/Makefile.in index 5090e9ad..fdbf4e38 100644 --- a/man/pl/Makefile.in +++ b/man/pl/Makefile.in @@ -109,50 +109,58 @@ install_sh = @install_sh@ mandir = @mandir@/pl man_MANS = \ + adduser.8 \ chage.1 \ chfn.1 \ + chpasswd.8 \ chsh.1 \ - gpasswd.1 \ - login.1 \ - newgrp.1 \ - passwd.1 \ - su.1 \ - shadow.3 \ d_passwd.5 \ + expiry.1 \ faillog.5 \ - limits.5 \ - login.access.5 \ - login.defs.5 \ - passwd.5 \ - porttime.5 \ - shadow.5 \ - suauth.5 \ - adduser.8 \ - chpasswd.8 \ faillog.8 \ + gpasswd.1 \ groupadd.8 \ groupdel.8 \ groupmod.8 \ + grpck.8 \ grpconv.8 \ grpunconv.8 \ - grpck.8 \ lastlog.8 \ + limits.5 \ + login.1 \ + login.access.5 \ + login.defs.5 \ logoutd.8 \ mkpasswd.8 \ + newgrp.1 \ newusers.8 \ + passwd.1 \ + passwd.5 \ + porttime.5 \ pwck.8 \ pwconv.8 \ pwunconv.8 \ - shadowconfig.8 \ + sg.1 \ + shadow.5 \ + su.1 \ + suauth.5 \ useradd.8 \ userdel.8 \ usermod.8 \ + vigr.8 \ vipw.8 EXTRA_DIST = $(man_MANS) \ - dialups.5 groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 \ - dpasswd.8 + dialups.5 \ + dpasswd.8 \ + groups.1 \ + id.1 \ + pw_auth.3 \ + pwauth.8 \ + shadow.3 \ + shadowconfig.8 \ + sulogin.8 subdir = man/pl mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -223,45 +231,6 @@ uninstall-man1: rm -f $(DESTDIR)$(man1dir)/$$inst; \ done -man3dir = $(mandir)/man3 -install-man3: $(man3_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man3dir) - @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.3*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst; \ - done -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.3*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man3dir)/$$inst"; \ - rm -f $(DESTDIR)$(man3dir)/$$inst; \ - done - man5dir = $(mandir)/man5 install-man5: $(man5_MANS) $(man_MANS) @$(NORMAL_INSTALL) @@ -369,7 +338,7 @@ check: check-am all-am: Makefile $(MANS) installdirs: - $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man3dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir) + $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir) install: install-am install-exec: install-exec-am @@ -416,7 +385,7 @@ install-exec-am: install-info: install-info-am -install-man: install-man1 install-man3 install-man5 install-man8 +install-man: install-man1 install-man5 install-man8 installcheck-am: @@ -430,20 +399,18 @@ mostlyclean-am: mostlyclean-generic mostlyclean-libtool uninstall-am: uninstall-info-am uninstall-man -uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ - uninstall-man8 +uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-man1 install-man3 \ - install-man5 install-man8 install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool uninstall uninstall-am uninstall-info-am \ - uninstall-man uninstall-man1 uninstall-man3 uninstall-man5 \ - uninstall-man8 + install-info-am install-man install-man1 install-man5 \ + install-man8 install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool uninstall \ + uninstall-am uninstall-info-am uninstall-man uninstall-man1 \ + uninstall-man5 uninstall-man8 # 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. diff --git a/man/pl/chfn.1 b/man/pl/chfn.1 index 35f7abf2..86a12be2 100644 --- a/man/pl/chfn.1 +++ b/man/pl/chfn.1 @@ -1,4 +1,4 @@ -.\" $Id: chfn.1,v 1.4 2001/01/27 02:55:54 kloczek Exp $ +.\" $Id: chfn.1,v 1.5 2001/12/22 07:18:47 kloczek Exp $ .\" {PTM/WK/1999-09-25} .\" Copyright 1990 - 1994 Julianne Frances Haugh .\" All rights reserved. @@ -61,7 +61,6 @@ zmianie. .SH AUTOR Julianne Frances Haugh (jockgrrl@ix.netcom.com) .SH OD TŁUMACZA -Niniejsza dokumentacja opisuje polecenie wchodz±ce w skład pakietu -shadow-password. -Z uwagi na powtarzaj±ce się nazwy poleceń, upewnij się, że korzystasz -z wła¶ciwej dokumentacji. +Niniejsza dokumentacja opisuje polecenie wchodz±ce w skład pakietu shadow. Z +uwagi na powtarzaj±ce się nazwy poleceń, upewnij się, że korzystasz z +wła¶ciwej dokumentacji. diff --git a/man/pl/chsh.1 b/man/pl/chsh.1 index f7f9e586..4cd9d45a 100644 --- a/man/pl/chsh.1 +++ b/man/pl/chsh.1 @@ -1,4 +1,4 @@ -.\" $Id: chsh.1,v 1.4 2001/01/27 02:55:54 kloczek Exp $ +.\" $Id: chsh.1,v 1.5 2001/12/22 07:18:47 kloczek Exp $ .\" {PTM/WK/1999-09-25} .\" Copyright 1990, Julianne Frances Haugh .\" All rights reserved. @@ -60,8 +60,7 @@ Bie .SH AUTOR Julianne Frances Haugh (jockgrrl@ix.netcom.com) .SH OD TŁUMACZA -Niniejsza dokumentacja opisuje polecenie wchodz±ce w skład pakietu -shadow-password. -Istnieje wiele programów i skryptów do zarz±dzania kontami -użytkowników czy grup. Z uwagi na powtarzaj±ce się nazwy poleceń, upewnij -się, że korzystasz z wła¶ciwej dokumentacji. +Niniejsza dokumentacja opisuje polecenie wchodz±ce w skład pakietu shadow. +Istnieje wiele programów i skryptów do zarz±dzania kontami użytkowników czy +grup. Z uwagi na powtarzaj±ce się nazwy poleceń, upewnij się, że korzystasz +z wła¶ciwej dokumentacji. diff --git a/man/pl/expiry.1 b/man/pl/expiry.1 new file mode 100644 index 00000000..5441c3a6 --- /dev/null +++ b/man/pl/expiry.1 @@ -0,0 +1,48 @@ +.\"$Id: expiry.1,v 1.1 2001/11/13 23:26:57 ankry Exp $ +.\" Copyright 1990 - 1994 Julianne Frances Haugh +.\" All rights reserved. +.\" Modified for expiry by Ben Collins +2002-01-06 gettextize - * Makefile.in.in: Upgrade to gettext-0.10.38. + * Makefile.in.in: Upgrade to gettext-0.10.40. -2001-10-06 gettextize +2002-01-06 gettextize - * Makefile.in.in: Upgrade to gettext-0.10.38. - -2001-09-10 gettextize - - * Makefile.in.in: Upgrade to gettext-0.10.38. - -2001-09-08 gettextize - - * Makefile.in.in: Upgrade to gettext-0.10.38. - -2001-09-08 gettextize - - * Makefile.in.in: Upgrade to gettext-0.10.38. - -2001-09-07 gettextize - - * Makefile.in.in: Upgrade to gettext-0.10.38. + * Makefile.in.in: Upgrade to gettext-0.10.40. diff --git a/po/cs.gmo b/po/cs.gmo index 78f03d4a..81ad562f 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index 2b9d83b4..c36de01f 100644 --- a/po/cs.po +++ b/po/cs.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-utils-20000902\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: 2000-09-23 19:58+0200\n" "Last-Translator: Jiří Pavlovský \n" "Language-Team: Czech \n" @@ -21,36 +21,36 @@ msgstr "Varov msgid "Warning: too many groups\n" msgstr "Varování: přílią mnoho skupin\n" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "Platnost vaąeho hesla vyprąela." -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "Vaąe heslo je vypnuto." -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "Platnost vaąeho účtu vyprąela." -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr " Kontaktujte správce systému.\n" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr " Zvolte nové heslo.\n" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "Platnost vaąeho heslo vyprąí za %ld dnů.\n" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "Platnost vaąeho heslo vyprąí zítra.\n" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "Platnost vaąeho heslo vyprąí dnes.\n" @@ -107,7 +107,7 @@ msgstr "Nem msgid "You have mail." msgstr "Máte poątu." -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "Heslo %s je chybné. " @@ -122,12 +122,12 @@ msgstr "passwd: vol msgid "passwd: %s\n" msgstr "passwd: %s\n" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "Nelze nastavit aktuální adresář na \"%s\".\n" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "®ádný adresář, nastavuji HOME na /" @@ -177,25 +177,25 @@ msgstr "vol msgid "Dialup Password: " msgstr "Heslo pro přístup vytáčenou linkou:" -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "Nemohu alokovat dostatek místa pro konfigurační údaje.\n" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" "konfigurační chyba - neznámý předmět '%s' (informujte správce systému)\n" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "chyba - hledání '%s' bylo neúspěąné\n" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "%s nenalezeno\n" @@ -204,7 +204,7 @@ msgstr "%s nenalezeno\n" #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "Heslo: " @@ -222,111 +222,107 @@ msgstr "(Echo zapnuto)" msgid "Unknown error %d" msgstr "Neznámá chyba %d" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -"Pouľití: %s [ -l ] [ -m min_dnů ] [ -M max_dnů ] [ -W varování ]\n" -" [ -I vypnutí ] [ -E vyprąení ] [ -d poslední den ] uľivatel\n" +"Pouľití: %s [-l] [-m min_dnů] [-M max_dnů] [-W varování]\n" +"\t[-I vypnutí] [-E vyprąení] [-d poslední den] uľivatel\n" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -"Pouľití: %s [ -l ] [ -m min_dnů ] [ -M max_dnů ] [ -d poslední den ] " -"uľivatel\n" +"Pouľití: %s [-l] [-m min_dnů] [-M max_dnů] [-d poslední den] uľivatel\n" -#: src/chage.c:199 +#: src/chage.c:157 +#, fuzzy msgid "" -"Enter the new value, or press return for the default\n" +"Enter the new value, or press ENTER for the default\n" "\n" msgstr "" -"Zadejte novou hodnotu, nebo stiskněte return pro pouľití implicitní hodnoty\n" -"\n" +"Zadejte novou hodnotu, nebo stiskněte ENTER pro pouľití implicitní hodnoty\n" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "Minimální stáří hesla" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "maximální stáří hesla" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "Poslední změna hesla (YYYY-MM-DD)" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "Varování o vyprąení platnosti hesla" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "Vypnuté heslo" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Vyprąení platnosti účtu (YYYY-MM-DD)" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum:\t%ld\n" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "Varování:\t%ld\n" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "Vypnutí:\t%ld\n" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "Poslední změna:\t\t" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "Nikdy\n" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "Platnost hesla vyprąí:\t" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 msgid "Password Inactive:\t" msgstr "Vypnuté heslo:\t" @@ -334,584 +330,584 @@ msgstr "Vypnut #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 msgid "Account Expires:\t" msgstr "Platnost hesla vyprąí:\t" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, fuzzy, c-format -msgid "%s: PAM authentication failed\n" -msgstr "%s: chyba při vytváření ověřovací metody\n" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "%s: nepouľívejte \"l\" s ostatními příznaky\n" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "%s: přístup odmítnut\n" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s: chyba při vytváření ověřovací metody\n" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "%s: soubor s hesly nelze zamknout\n" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "%s: soubor s hesly nelze otevřít\n" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "%s: uľivatel %s je neznámý\n" -#: src/chage.c:592 -#, c-format -msgid "%s: can't lock shadow password file\n" +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" msgstr "%s: soubor se stínovými hesly nelze zamknout\n" -#: src/chage.c:599 -#, c-format -msgid "%s: can't open shadow password file\n" +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" msgstr "%s: soubor se stínovými hesly nelze otevřít\n" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "Měním informace o uľivateli %s.\n" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "%s: chyba při změně poloľek\n" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "%s: soubor s hesly nelze aktualizovat\n" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "%s: soubor se stínovými hesly nelze aktualizovat\n" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "Chyba při aktualizaci DBM databáze hesel.\n" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "%s: soubor se stínovými hesly nelze přepsat\n" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "%s: soubor s hesly nelze přepsat\n" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, fuzzy, c-format msgid "%s: PAM chauthtok failed\n" msgstr "%s: nelze odemknout soubor\n" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "%s: chybí informace\n" - -#: src/chfn.c:107 +#: src/chfn.c:83 #, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -"Pouľití: %s [ -f jméno ] [ -r číslo místnosti ] [ -w telefon do " -"zaměstnání ]\n" -" [ -h telefon domů ] [ -o ostatní ] [ uľivatel ]\n" +"Pouľití: %s [-f jméno] [-r číslo místnosti] [-w telefon do zaměstnání]\n" +"\t[-h telefon domů] [-o ostatní] [uľivatel]\n" -#: src/chfn.c:111 +#: src/chfn.c:88 #, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" msgstr "" -"Pouľití: %s [ -f jméno ] [ -r číslo místnosti ] [ -w telefon do " -"zaměstnání ]\n" -" [ -h telefon domů ]\n" +"Pouľití: %s [-f jméno] [-r číslo místnosti] [-w telefon do zaměstnání]\n" +"\t[-h telefon domů]\n" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" +#: src/chfn.c:139 +#, fuzzy +msgid "Enter the new value, or press ENTER for the default\n" msgstr "" -"Zadejte novou hodnotu, nebo stiskněte return pro pouľití implicitní hodnoty\n" +"Zadejte novou hodnotu, nebo stiskněte ENTER pro pouľití implicitní hodnoty\n" +"\n" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "Celé jméno" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "\tCelé jméno: %s\n" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "Číslo místnosti" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "\tČíslo místnosti: %s\n" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "Telefon do zaměstnání" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "\tTelefon do zaměstnání: %s\n" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "Telefon domů" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "\tTelefon domů: %s\n" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "Ostatní" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "%s: přístup odmítnut\n" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "%s: uľivatel %s je neznámý\n" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "%s: vaąe uľivatelské jméno nelze zjistit\n" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "%s: uľivatele `%s' nelze na NIS klientu změnit\n" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "%s: `%s' je hlavním NIS serverem pro tohoto klienta\n" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "Měním informace o uľivateli %s\n" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "%s: jméno (\"%s\") je chybné\n" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "%s: číslo místnosti (\"%s\") je chybné\n" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "%s: telefonní číslo do zaměstnání (\"%s\") je chybné\n" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "%s: telefonní číslo domů (\"%s\") je chybné\n" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "%s: \"%s\" obsahuje chybné znaky\n" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "%s: poloľka je přílią dlouhá\n" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "Nelze změnit ID na root.\n" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "Nelze zamknout soubor s hesly; zkuste to později.\n" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "Soubor s hesly nelze otevřít.\n" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "%s: %s se v /etc/passwd nenalézá\n" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "Chyba při aktualizaci poloľky v souboru s hesly.\n" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "Nelze provést změny v souboru s hesly.\n" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "Soubor s hesly nelze odemknout.\n" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "Pouľití: %s [-e]\n" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "%s: soubor se stínovými hesly nelze zamknout\n" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "%s: soubor se stínovými hesly nelze otevřít\n" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "%s: řádek %d je přílią dlouhý\n" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "%s: řádek %d: chybí nové heslo\n" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "%s: řádek %d: uľivatel %s je neznámý\n" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "%s: řádek %d: poloľku v souboru s hesly nelze aktualizovat\n" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: chyba, změny budou ignorovány\n" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "%s: chyba při aktualizaci souboru se stínovými hesly\n" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "%s: chyba při aktualizaci souboru s hesly\n" -#: src/chsh.c:105 +#: src/chsh.c:75 #, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" -msgstr "Pouľití: %s [ -s shell ] [ jméno ]\n" +msgid "Usage: %s [-s shell] [name]\n" +msgstr "Pouľití: %s [-s shell] [jméno]\n" -#: src/chsh.c:120 +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"Zadejte novou hodnotu, nebo stiskněte ENTER pro pouľití implicitní hodnoty\n" +"\n" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "Implicitní shell" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "Nemůľete změnit shell pro %s.\n" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "Měním implicitní shell pro %s\n" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "%s: chybná poloľka %s\n" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "Shell %s je chybný.\n" -#: src/dpasswd.c:69 +#: src/dpasswd.c:52 #, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" -msgstr "Pouľití: %s [ -(ald) ] shell\n" +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "Pouľití: %s [-(ald)] shell\n" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "Heslo shellu: " -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "zadejte znovu heslo shellu: " -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "%s: hesla se liąí, zkuste to znovu\n" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "%s: %s nelze vytvořit" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "%s: %s nelze otevřít" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "%s: Shell %s nebyl nalezen.\n" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" msgstr "Pouľití: expiry { -f | -c }\n" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "%s: VAROVÁNÍ! Musí mít oprávnění superuľivatele!\n" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "%s: neznámý uľivatel\n" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "Pouľití: %s [-a|-u uľivatel] [-m max] [-r] [-t dny] [-l zamkn sek]\n" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "Uľivatel %s je neznámý.\n" -#: src/faillog.c:215 +#: src/faillog.c:212 msgid "Username Failures Maximum Latest\n" msgstr "Jméno Chyb Maximum Poslední\n" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr " %s on %s" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr " [%lds zbylo]" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr " [%lds zámek]" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "Pouľití: %s [r|-R] skupina\n" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr " %s [-a uľivatel] skupina\n" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr " %s [-d uľivatel] skupina\n" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr " %s [-A uľivatel,...] [-M uľivatel,...] skupina\n" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr " %s [-M uľivatel,...] skupina\n" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "%s: uľivatel %s je neznámý\n" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "Přístup odmítnut.\n" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "%s: přepínač -A funguje pouze se stínovými hesly skupin\n" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "Kdo jste?\n" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "skupina %s je neznámá\n" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "Přidávám uľivatele %s do skupiny %s.\n" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "Odstraňuji uľivatele %s ze skupiny %s\n" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "%s: člen %s je neznámý\n" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "%s: Nejedná se o tty\n" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "Měním heslo skupiny %s\n" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "Nové heslo: " -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "Zadejte opět nové heslo: " -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "Neshodují se; zkuste to opět" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "%s: Zkuste to později\n" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "%s: nelze získat zámek\n" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "%s: nelze získat zámek pro soubor se stínovými hesly\n" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "%s: nelze otevřít soubor\n" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "%s: nelze aktualizovat poloľku\n" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "%s: nelze aktualizovat poloľku souboru se stínovými hesly\n" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "%s: nelze přepsat soubor\n" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "%s: nelze přepsat soubor se stínovými hesly\n" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "%s: nelze odemknout soubor\n" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "%s: nelze aktualizovat soubory s DBM databázemi\n" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "%s: nelze aktualizovat soubory s DBM databázemi stínových hesel\n" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "Pouľití: groupadd [-g gid [-o]] skupina\n" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "%s: chyba při přidávání poloľky souboru se skupinami\n" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "%s: nelze přidat poloľku do souboru s dbm databází skupin\n" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "%s: jméno %s není jedinečné\n" -#: src/groupadd.c:279 -#, c-format -msgid "%s: gid %ld is not unique\n" -msgstr "%s: gid %ld není jedinečné\n" +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s uid %ld není jedinečné\n" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "%s: nelze vytvořit jedinečné gid\n" @@ -919,54 +915,54 @@ msgstr "%s: nelze vytvo #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "%s: %s není platným jménem skupiny\n" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "%s: chybná skupina %s\n" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "%s: přepínač -O vyľaduje argument typu JMÉNO=HODNOTA\n" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "%s: soubor se skupinami nelze přepsat\n" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "%s: soubor se stínovými skupinami nelze přepsat\n" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "%s: soubor se skupinami nelze zamknout\n" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "%s: soubor se skupinami nelze otevřít\n" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "%s: soubor se stínovými skupinami nelze zamknout\n" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "%s: soubor se stínovými skupinami nelze otevřít\n" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "%s: skupina %s jiľ existuje\n" @@ -975,12 +971,12 @@ msgstr "%s: skupina %s ji msgid "usage: groupdel group\n" msgstr "Pouľití: groupdel skupina\n" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru se skupinami\n" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru s dbm databází skupin\n" @@ -990,7 +986,7 @@ msgstr "%s: chyba p msgid "%s: error removing shadow group entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru se stínovými skupinami\n" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "" @@ -1005,132 +1001,131 @@ msgstr "" msgid "%s: cannot remove user's primary group.\n" msgstr "%s: primární skupinu uľivatele nelze odstranit\n" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "%s: skupina %s neexistuje\n" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "%s: skupina %s je NIS skupinou\n" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "%s: %s je hlavním NIS serverem\n" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" msgstr "" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 #, fuzzy msgid "Unable to lock group file\n" msgstr "%s: soubor se skupinami nelze zamknout\n" -#: src/groupmems.c:209 +#: src/groupmems.c:220 #, fuzzy msgid "Unable to open group file\n" msgstr "%s: soubor se skupinami nelze otevřít\n" -#: src/groupmems.c:229 +#: src/groupmems.c:240 #, fuzzy msgid "Cannot close group file\n" msgstr "%s: soubor se skupinami nelze otevřít\n" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "Pouľití: groupmod [-g gid [-o]] [-n jméno] skupina\n" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, c-format msgid "%s: %s not found in /etc/group\n" msgstr "%s: %s se v /etc/group nenalézá\n" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "%s: nelze přidat poloľku do souboru s dbm databází stínových skupin\n" -#: src/groupmod.c:305 -#, c-format -msgid "%s: %ld is not a unique gid\n" +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" msgstr "%s: gid %ld není jedinečné\n" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "%s: jméno %s není jedinečné\n" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "uľivatel %s je neznámý\n" -#: src/grpck.c:98 +#: src/grpck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" msgstr "" -"Pouľití: %s [ -r ] [ soubor se skupinami [ soubor se stínovými " -"skupinami ] ]\n" +"Pouľití: %s [-r] [-s] [soubor se skupinami [soubor se stínovými skupinami]]\n" -#: src/grpck.c:100 +#: src/grpck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" -msgstr "Usage: %s [ -r ] [ soubor se skupinami ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "Usage: %s [-r] [-s] [soubor se skupinami]\n" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "Ne" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" msgstr "" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "%s: soubor %s nelze zamknout\n" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "%s: soubor %s nelze otevřít\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "chybná poloľka v souboru se skupinami\n" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "smazat řádek `%s'?" @@ -1139,35 +1134,30 @@ msgstr "smazat #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "tato poloľka se v souboru se skupinami vyskytuje vícekrát\n" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "jméno skupiny `%s' je chybné\n" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "skupina %s: chybné GID (%d)\n" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "skupina %s: uľivatel %s neexistuje\n" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "smazat člena `%s'? " #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "chybná poloľka v souboru se stínovými skupinami\n" @@ -1175,204 +1165,201 @@ msgstr "chybn #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "duplikovaná poloľka v souboru se stínovými skupinami\n" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "v souboru se skupinami neexistuje odpovídající poloľka\n" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "stínová skupina %s: administrátor %s neexistuje\n" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "smazat administrátora `%s'? " -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "stínová skupina %s: uľivatel %s neexistuje\n" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "%s: soubor %s nelze aktualizovat\n" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "%s: soubory byly aktualizovány; spus»te mkpasswd\n" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "%s: ľádné změny nebyly provedeny\n" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "%s: soubory byly aktualizovány\n" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "%s: soubor se skupinami nelze zamknout\n" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "%s: soubor se skupinami nelze otevřít\n" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "%s: soubor se stínovými skupinami nelze zamknout\n" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "%s: soubor se stínovými skupinami nelze otevřít\n" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "%s: poloľku stínové skupiny %s nelze odstranit\n" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "%s: poloľku %s souboru se stínovými hesly nelze aktualizovat\n" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "%s: poloľku skupiny %s nelze odstranit\n" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "%s: soubor se stínovými hesly nelze aktualizovat\n" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "%s: soubor s hesly nelze aktualizovat\n" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "%s: podpora pro stínová hesla skupin není nakonfigurována\n" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "%s: soubor se stínovými hesly skupin nelze smazat\n" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" -msgstr "Pouľití: id [ -a ]\n" +#: src/id.c:53 +msgid "usage: id [-a]\n" +msgstr "Pouľití: id [-a]\n" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "Pouľití: id\n" -#: src/id.c:127 -#, c-format -msgid "uid=%d(%s)" +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" msgstr "uid=%d(%s)" -#: src/id.c:129 -#, c-format -msgid "uid=%d" +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" msgstr "uid=%d" -#: src/id.c:133 -#, c-format -msgid " gid=%d(%s)" +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" msgstr " gid=%d(%s)" -#: src/id.c:135 -#, c-format -msgid " gid=%d" +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" msgstr " gid=%d" -#: src/id.c:145 -#, c-format -msgid " euid=%d(%s)" +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" msgstr " euid=%d(%s)" -#: src/id.c:147 -#, c-format -msgid " euid=%d" +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" msgstr " euid=%d" -#: src/id.c:152 -#, c-format -msgid " egid=%d(%s)" +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" msgstr " egid=%d(%s)" -#: src/id.c:154 -#, c-format -msgid " egid=%d" +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" msgstr " egid=%d" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr " skupiny=" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "Uľivatel Port Z Naposledy\n" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "Uľivatel Port Naposledy\n" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "**Nikdy nebyl přihláąen**" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "Pouľití: %s [-p] jméno\n" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr " %s [-p] [-h počítač] [-f jméno]\n" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr " %s [-p] -r počítač\n" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "Chybný čas přihláąení\n" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" @@ -1380,7 +1367,7 @@ msgstr "" "\n" "Systém byl uzavřen kvůli pravidelné údrľbě.\n" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1388,7 +1375,7 @@ msgstr "" "\n" "[Odpojení přeskočeno -- uľivatel root smí být přihláąen.]\n" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" @@ -1397,17 +1384,17 @@ msgstr "" "\n" "Vyprąel časový limit (%d vteřin) pro přihláąení.\n" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr " na `%.100s' z `%.200s'" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr " na `%.100s'" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" @@ -1416,236 +1403,231 @@ msgstr "" "\n" "Přihlaąovací jméno na %s: " -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "Přihlaąovací jméno: " -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "Chybné přihláąení" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "Varování: po dočasném zákazu je přihlaąování opět povoleno\n" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "Poslední přihláąení: %s na %s" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "Poslední přihláąení: %.19s na %s" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr " z %.*s" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "Spouątím rad_login\n" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "%s: systém neobsahuje ľádnou DBM databázi - není co dělat\n" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "Pouľití: %s [ -vf ] [ -p|g|sp|sg ] soubor\n" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "Pouľití: %s [ -vf ] [ -p|g|sp ] soubor\n" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "Pouľití: %s [ -vf ] [ -p|g ] soubor\n" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "%s: soubor %s nelze přepsat\n" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "%s: soubory s DBM databázemi pro %s nelze otevřít\n" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "%s: začátek s " -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 #, fuzzy msgid " is too long\n" msgstr "%s: poloľka je přílią dlouhá\n" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "%s: chyba při zpracování řádku \"%s\"\n" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "přidávám záznam pro jméno" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" msgstr "" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "%s: chyba při zadávání záznamu pro jméno " -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "počet přidaných poloľek: %d; délka největąí: %d\n" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "Pouľití: newgrp [ - ] [ skupina ]\n" - -#: src/newgrp.c:68 -msgid "usage: sg group [[-c] command ]\n" -msgstr "Pouľití: sg skupina [[-c] příkaz ]\n" - -#: src/newgrp.c:125 +#: src/mkpasswd.c:392 #, c-format -msgid "unknown uid: %d\n" +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "Pouľití: %s [-vf] [-p|g|sp|sg] soubor\n" + +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "Pouľití: %s [-vf] [-p|g|sp] soubor\n" + +#: src/mkpasswd.c:398 +#, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "Pouľití: %s [-vf] [-p|g] soubor\n" + +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "Pouľití: newgrp [-] [skupina]\n" + +#: src/newgrp.c:63 +msgid "usage: sg group [[-c] command]\n" +msgstr "Pouľití: sg skupina [[-c] příkaz]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" msgstr "uid %d je neznámé\n" -#: src/newgrp.c:201 -#, c-format -msgid "unknown gid: %ld\n" +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" msgstr "gid %ld je neznámé\n" -#: src/newgrp.c:245 -#, c-format -msgid "unknown gid: %d\n" -msgstr "gid %d je neznámé\n" - -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "Lituji.\n" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "přílią mnoho skupin\n" -#: src/newusers.c:82 +#: src/newusers.c:78 #, c-format -msgid "Usage: %s [ input ]\n" -msgstr "Pouľití: %s [ vstup ]\n" +msgid "Usage: %s [input]\n" +msgstr "Pouľití: %s [vstup]\n" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "%s: soubor /etc/passwd nelze zamknout\n" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "%s: soubory nelze zamknout. Zkuste to opět později.\n" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "%s: soubory nelze otevřít\n" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: řádek %d: chybný řádek\n" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "%s: řádek %d: nelze vytvořit GID\n" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "%s: řádek %d: nelze vytvořit UID\n" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "%s: řádek %d: uľivatele %s nelze nalézt\n" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: řádek %d: heslo nelze aktualizovat\n" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "%s: řádek %d: volání mkdir selhalo\n" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "%s: řádek %d: volání chown selhalo\n" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "%s: řádek %d: poloľku nelze aktualizovat\n" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "%s: chyba při aktualizaci souborů\n" -#: src/passwd.c:239 +#: src/passwd.c:174 #, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" -msgstr "Pouľití: %s [ -f | -s ] [ jméno ]\n" +msgid "usage: %s [-f|-s] [name]\n" +msgstr "Pouľití: %s [-f|-s] [jméno]\n" -#: src/passwd.c:242 +#: src/passwd.c:178 #, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" -msgstr " %s [ -x max ] [ -n min ] [ -w varování ] [ -i vypnutí ] jméno\n" +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x max] [-n min] [-w varování] [-i vypnutí] jméno\n" -#: src/passwd.c:245 -#, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" msgstr " %s { -l | -u | -d | -S | -e } jméno\n" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "Uľivatel %s má TCFS klíč, je třeba jeho staré heslo.\n" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "Můľete pouľít přepínač -t pro vynucení změny.\n" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "Staré heslo: " -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "Chybné heslo pro `%s'\n" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "Varování: uľivatele %s má TCFS klíč.\n" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" @@ -1654,15 +1636,15 @@ msgstr "" "Zadejte nové heslo (počet znaků v intervalu %d aľ %d).\n" "Pouľijte kombinaci velkých a malých písmen s číslicemi.\n" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "Nové heslo: " -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "Zkuste to znovu.\n" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" @@ -1670,90 +1652,91 @@ msgstr "" "\n" "Varování: slabé heslo (pokud jej opravdu chcete pouľít, zadejte jej znovu).\n" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "Neshodují se; zkuste to znovu.\n" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "Heslo pro %s nelze změnit.\n" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "Lituji, ale heslo pro %s nelze jeątě změnit.\n" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "%s: doąla pamě»\n" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "Nelze zamknout databázi TCFS klíčů. Zkuste to později.\n" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "Nelze otevřít databázi TCFS klíčů.\n" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "Chyba při aktualizaci databáze TCFS klíčů.\n" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "Nelze změnit TCFS databázi.\n" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "%s: %s nelze spustit" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "%s: úloľna %s není podporována\n" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "%s: přístup odmítnut\n" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "Nesmíte změnit heslo pro %s.\n" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "Měním heslo uľivatele %s\n" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "Heslo uľivatele %s nebylo změněno.\n" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "Heslo bylo změněno.\n" -#: src/pwck.c:98 +#: src/pwck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" -msgstr "Pouľití: %s [ -qr ] [ soubor s hesly[ soubor se stínovými hesly ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "" +"Pouľití: %s [-q] [-r] [-s] [soubor s hesly [soubor se stínovými hesly]]\n" -#: src/pwck.c:100 +#: src/pwck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" -msgstr "Pouľití: %s [ -qr ] [ soubor s hesly ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "Pouľití: %s [-q] [-r] [-s] [soubor s hesly]\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "chybná poloľka v souboru s hesly\n" @@ -1761,32 +1744,24 @@ msgstr "chybn #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "duplikovaná poloľka v souboru s hesly\n" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "chybné uľivatelské jméno `%s'\n" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "uľivatel %s: chybné UID (%d)\n" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 -#, c-format -msgid "user %s: no group %d\n" +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" msgstr "uľivatel %s: skupina %d neexistuje\n" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "uľivatel %s: adresář %s neexistuje\n" @@ -1794,16 +1769,16 @@ msgstr "u #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "uľivatel %s: program %s neexistuje\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "chybná poloľka v souboru se stínovými hesly\n" @@ -1811,7 +1786,7 @@ msgstr "chybn #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "duplikovaná poloľka v souboru se stínovými hesly\n" @@ -1819,70 +1794,70 @@ msgstr "duplikovan #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "chybí poloľka v souboru s hesly\n" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "uľivatel %s: poslední změna hesla v budoucnosti\n" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "%s: soubor s hesly nelze zamknout\n" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "%s: soubor s hesly nelze otevřít\n" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "%s: poloľku souboru s hesly pro uľivatele %s nelze odstranit\n" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "%s: poloľku souboru s hesly pro uľivatele %s nelze aktualizovat\n" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "%s: soubor se stínovými hesly nelze aktualizovat\n" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "%s: soubor s hesly nelze aktualizovat\n" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "%s: stínová hesla nejsou nakonfigurována\n" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "%s: poloľku pro uľivatele %s nelze aktualizovat\n" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "%s: nemůľete smazat soubor se stínovými hesly\n" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "Lituji." -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: musí být spuątěno z terminálu\n" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "%s: pam_start: chyba %d\n" @@ -1892,18 +1867,17 @@ msgstr "%s: pam_start: chyba %d\n" msgid "Unknown id: %s\n" msgstr "Id %s je neznámé.\n" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, c-format msgid "You are not authorized to su %s\n" msgstr "Nejste oprávněn pouľívat su %s\n" #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "(Zadejte vaąe heslo.)" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" @@ -1912,28 +1886,23 @@ msgstr "" "%s: %s\n" "(Ignoruji)\n" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "®ádný shell\n" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "Soubor s hesly neexistuje\n" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "V databázi není poloľka pro uľivatele 'root'\n" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1944,7 +1913,7 @@ msgstr "" "(nebo zadejte heslo uľivatele root pro údrľbu systému):" #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "Vstupuji do reľimu údrľby systému\n" @@ -1953,506 +1922,509 @@ msgstr "Vstupuji do re msgid "%s: rebuild the group database\n" msgstr "%s: vytvořte znovu databázi skupin\n" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "%s: vytvořte znovu databázi stínových skupin\n" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "%s: chybný numerický argument `%s'\n" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "%s: gid %s je neznámé\n" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "%s: skupina %s je neznámá\n" -#: src/useradd.c:426 -#, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "skupina=%s,%ld základ. adr.=%s skel=%s\n" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "shell=%s " -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "vypnutí=%ld vyprąení=%s" -#: src/useradd.c:435 -#, c-format -msgid "GROUP=%ld\n" +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" msgstr "SKUPINA=%ld\n" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "DOMÁCÍ ADRESÁŘ=%s\n" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "VYPNUTÍ=%ld\n" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "VYPR©ENÍ=%s\n" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "INTERPRET PŘÍKAZŮ=%s\n" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "SKELETON=%s\n" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nemohu vytvořit nový soubor s implicitními hodnotami\n" -#: src/useradd.c:488 +#: src/useradd.c:503 #, fuzzy, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nemohu vytvořit nový soubor s implicitními hodnotami\n" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "%s: přejmenovat: %s" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "%s: skupina `%s' je NIS skupinou\n" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: zadáno přílią mnoho skupin (max %d).\n" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "Pouľití: %s\t[-u uid [-o]] [-g skupina [-G skupina,...] \n" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "\t\t[-d domácí adr.] [-s shell] [-c komentář] [-m [-k ąablona]]\n" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 +#, fuzzy msgid "[-f inactive] [-e expire ] " -msgstr "[-f vypnutí] [-e vyprąení ] " +msgstr "[-f vypnutí] [-e vyprąení] " -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "[-A program] " -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "[-p heslo] jméno\n" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr " %s\t-D [-g skupina [-b základní adr.] [-s shell]\n" -#: src/useradd.c:736 +#: src/useradd.c:756 +#, fuzzy msgid "\t\t[-f inactive] [-e expire ]\n" -msgstr "\t\t[-f vypnutí] [-e vyprąení ]\n" +msgstr "\t\t[-f vypnutí] [-e vyprąení]\n" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "%s: chyba při zamykání souboru se skupinami\n" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "%s: chyba při otevírání souboru se skupinami\n" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "%s: chyba při zamykání souboru se stínovými hesly\n" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "%s: chyba při otevírání souboru se stínovými hesly\n" -#: src/useradd.c:1019 -#, c-format -msgid "%s: uid %d is not unique\n" -msgstr "%s: uid %d není jedinečné\n" +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s uid %ld není jedinečné\n" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "%s: nemohu získat jedinečné uid\n" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "%s: chybná poloľka `%s'\n" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "%s: chybný základní adresář `%s'\n" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "%s: chybný komentář `%s'\n" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "%s: chybný domácí adresář `%s'\n" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "%s: chybné datum `%s'\n" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "%s: přepínač -e vyľaduje stínová hesla\n" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "%s: přepínač -f vyľaduje stínová hesla\n" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "%s: chybný shell `%s'\n" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "%s: chybné uľivatelské jméno `%s'\n" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "%s: soubor s hesly nelze přepsat\n" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "%s: soubor se stínovými hesly nelze přepsat\n" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "%s: soubor s hesly nelze zamknout\n" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "%s: soubor s hesly nelze otevřít\n" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "%s: soubor se stínovými hesly nelze zamknout\n" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "%s: soubor se stínovými hesly nelze otevřít\n" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "%s: chyba při vytváření ověřovací metody\n" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "%s: chyba při vytváření nové poloľky v souboru s hesly\n" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "%s: chyba při aktualizaci poloľky dbm databáze hesel\n" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "%s: chyba při vytváření nové poloľky v souboru se stínovými hesly\n" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "%s: chyba při aktualizaci poloľky dbm databáze stínových hesel\n" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s: adresář %s nelze vytvořit\n" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "%s: uľivatel %s jiľ existuje\n" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" msgstr "" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "%s: varování: CREATE_HOME není podporováno, pouľijte přepínač -m\n" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "Pouľití: %s [-r] jméno\n" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "%s: poloľku souboru se skupinami nelze aktualizovat\n" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "%s: poloľku dbm databáze skupin nelze aktualizovat\n" -#: src/userdel.c:221 +#: src/userdel.c:219 #, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "%s: poloľku dbm databáze skupin nelze odstranit\n" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "%s: soubor s TCFS klíči nelze přepsat\n" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "%s: soubor s TCFS klíči nelze zamknout\n" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "%s: soubor s TCFS klíči nelze otevřít\n" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "%s: soubor se skupinami nelze otevřít\n" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "%s: soubor se stínovými skupinami nelze otevřít\n" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "%s: chyba při odstraňování ověřovací metody\n" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru s hesly\n" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru se stínovými hesly\n" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "%s: chyba při odstraňování TCFS poloľky\n" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "%s: chyba při odstraňování poloľky z dbm databáze hesel\n" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "%s: chyba při odstraňování poloľky z dbm databáze stínových hesel\n" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: uľivatel %s je právě přihláąen\n" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "%s: varování: vlastníkem %s není %s, nemaľu jej\n" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "%s: varování: nemohu smazat " -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "%s: uľivatel %s neexistuje\n" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "%s: uľivatel %s je NIS uľivatelem\n" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "%s: vlastníkem %s není %s, nemaľu jej\n" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "%s: adresář %s nebudu mazat (je to domácí adresář uľivatele %s)\n" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "%s: chyba při mazání adresáře %s\n" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "\t\t[-d domácí adr. [-m]] [-s shell] [-c komentář] [-l nové jméno]\n" -#: src/usermod.c:330 -msgid "[-A {DEFAULT|program},... ] " -msgstr "[-A {DEFAULT|program},... ] " - #: src/usermod.c:332 +#, fuzzy +msgid "[-A {DEFAULT|program},... ] " +msgstr "[-A {DEFAULT|program},...] " + +#: src/usermod.c:334 msgid "[-p passwd] [-L|-U] name\n" msgstr "[-p heslo] [-L|-U] jméno\n" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "%s nedostatek paměti v update_group\n" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "%s: nedostatek paměti v update_gshadow\n" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "%s: ľádné přepínače\n" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "%s: přepínače -e a -f vyľadují stínová hesla\n" -#: src/usermod.c:1215 -#, c-format -msgid "%s: uid %ld is not unique\n" +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" msgstr "%s uid %ld není jedinečné\n" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "%s: chyba při odstraňování ověřovací metody\n" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "%s: chyba při změně ověřovací metody\n" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "%s: chyba při změně poloľky v souboru s hesly\n" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru s hesly\n" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "%s: chyba při přidávání poloľky do dbm databáze hesel\n" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "%s: chyba při odstraňování poloľky z dbm databáze hesel\n" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "%s: chyba při odstraňování poloľky ze souboru se stínovými hesly\n" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "%s: chyba při odstraňování poloľky z dbm databáze stínových hesel\n" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "%s: adresář %s jiľ existuje\n" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "%s: %s nelze vytvořit\n" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "%s: volání chown pro %s selhalo\n" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: adresář %s nelze na %s přejmenovat\n" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: varování: vlastníkem %s není %s\n" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "chyba při změně vlastníka schránky" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "chyba při přejmenovávání schránky" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" @@ -2461,20 +2433,20 @@ msgstr "" "\n" "%s: %s je beze změny\n" -#: src/vipw.c:127 +#: src/vipw.c:132 msgid "Couldn't lock file" msgstr "Soubor nelze zamknout" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" msgstr "Zálohování nelze provést." -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "%s: %s nelze obnovit: %s (změny jsou v %s)\n" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" @@ -2484,5 +2456,24 @@ msgstr "" "`vipw' edituje /etc/passwd `vipw -s' edituje /etc/shadow\n" "`vigr' edituje /etc/group `vigr -s' edituje /etc/gshadow\n" +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: gid %ld není jedinečné\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "gid %d je neznámé\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: uid %d není jedinečné\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "uľivatel %s: chybné UID (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s: chybí informace\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "skupina %s: chybné GID (%d)\n" + #~ msgid "%s: permission denied (shell).\n" #~ msgstr "%s: přístup odmítnut (shell)\n" diff --git a/po/el.gmo b/po/el.gmo index 056a226d..0dd2f61d 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index 84747fed..04bf402c 100644 --- a/po/el.po +++ b/po/el.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Shadow 980726\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Nikos Mavroyanopoulos \n" "Language-Team: Hellenic \n" @@ -23,36 +23,36 @@ msgstr " msgid "Warning: too many groups\n" msgstr "Đńďĺéäďđďßçóç: ĐďëëÝň ďěÜäĺň\n" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "Ôď óőíčçěáôéęü óáň Ý÷ĺé ëŢîĺé." -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "Ôď óőíčçěáôéęü óáň ĺßíáé áíĺíĺńăü." -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "Ď ęůäéęüň ĺéóüäďő óáň Ý÷ĺé ëŢîĺé." -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr " ĹđéęďéíůíŢóôĺ ěĺ ôďí äéá÷ĺéńéóôŢ ôďő óőóôŢěáôďň.\n" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr " ĹđéëÝîôĺ Ýíá íÝď óőíčçěáôéęü.\n" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "Ôď óőíčçěáôéęü óáň čá ëŢîĺé óĺ %ld ěÝńĺň.\n" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "Ôď óőíčçěáôéęü óáň čá ëŢîĺé áýńéď.\n" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "Ôď óőíčçěáôéęü óáň čá ëŢîĺé óŢěĺńá.\n" @@ -111,7 +111,7 @@ msgstr " msgid "You have mail." msgstr "¸÷ĺôĺ ăńÜěěáôá." -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "Ęáęü óőíčçěáôéęü: %s. " @@ -126,12 +126,12 @@ msgstr " msgid "passwd: %s\n" msgstr "óőíčçěáôéęü: %s\n" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "Áäőíáěßá áëëáăŢň ęáôáëüăďő óôďí \"%s\"\n" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "×ůńßň ęáôÜëďăď, ĺéóáăůăŢ ěĺ ĚÇÔŃÉĘĎ_ĘÁÔÁËĎĂĎ=/" @@ -181,26 +181,26 @@ msgstr " msgid "Dialup Password: " msgstr "Óőíčçěáôéęü ôçëĺöůíéęŢň óýíäĺóçň: " -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "Áäőíáěßá äÝóěĺőóçň ÷ţńďő ăéá đëçńďöďńßĺň äéáěüńöůóçň.\n" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" "óöÜëěá äéáěüńöůóçň - Üăíůóôď áíôéęĺßěĺíď '%s' (ĺéäďđďéĺßóôĺ ôďí " "äéá÷ĺéńéóôŢ)\n" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "óöÜëěá - ç áíáćŢôçóç '%s' áđÝôő÷ĺ\n" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "%s äĺí âńÝčçęĺ\n" @@ -209,7 +209,7 @@ msgstr "%s #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "Óőíčçěáôéęü: " @@ -227,111 +227,106 @@ msgstr "" msgid "Unknown error %d" msgstr "Áăíůóôď óöÜëěá %d" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -"×ńŢóç: %s [ -l ] [ -m ĺëá÷_ěÝńĺň ] [ -M ěĺă_ěÝńĺň ] [ -W đńďĺéä. ]\n" -"\t[ -I áíĺíĺńăü ] [ -E ëŢîç ] [ -d ôĺëĺőôáßá_ěÝńá ] ÷ńŢóôçň\n" +"×ńŢóç: %s [-l] [-m ĺëá÷_ěÝńĺň] [-M ěĺă_ěÝńĺň] [-W đńďĺéä.]\n" +"\t[-I áíĺíĺńăü] [-E ëŢîç] [-d ôĺëĺőôáßá_ěÝńá] ÷ńŢóôçň\n" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -"×ńŢóç: %s [ -l ] [ -m ĺëÜ÷_ěÝńĺň ] [ -M ěĺă_ěÝńĺň ]\n" -"[ -d ôĺëĺőôáßá_ěÝńá ] ÷ńŢóôçň\n" +"×ńŢóç: %s [-l] [-m ĺëÜ÷_ěÝńĺň] [-M ěĺă_ěÝńĺň] [-d ôĺëĺőôáßá_ěÝńá] ÷ńŢóôçň\n" -#: src/chage.c:199 +#: src/chage.c:157 +#, fuzzy msgid "" -"Enter the new value, or press return for the default\n" -"\n" -msgstr "" -"ĹéóÜăĺôĺ ôçí íÝá ôéěŢ, Ţ đéÝóôĺ `return' ăéá ôçí đńďęáčďńéóěÝíç\n" +"Enter the new value, or press ENTER for the default\n" "\n" +msgstr "ĹéóÜăĺôĺ ôçí íÝá ôéěŢ, Ţ đéÝóôĺ ENTER ăéá ôçí đńďęáčďńéóěÝíç\n" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "Ěéęńüôĺńç äéÜńęĺéá óőíčçěáôéęďý" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "ĚÝăéóôç äéÜńęĺéá óőíčçěáôéęďý" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "Ôĺëĺőôáßá áëëáăŢ óőíčçěáôéęďý (××××-ĚĚ-ÇÇ)" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "Đńďĺéäďđďßçóç ëŢîçň óőíčçěáôéęďý" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "Áíĺíĺńăü óőíčçěáôéęü" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Çěĺńďěçíßá ËŢîçň Ëďăáńéáóěďý (××××-ĚĚ-ÇÇ)" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "ĹëÜ÷éóôď:\t%ld\n" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "ĚÝăéóôď:\t%ld\n" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "Đńďĺéäďđďßçóç:\t%ld\n" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "Áíĺíĺńăüň:\t%ld\n" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "Ôĺëĺőôáßá áëëáăŢ:\t\t" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "ĐďôÝ\n" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "Ôď óőíčçěáôéęü ëŢăĺé:\t" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 #, fuzzy msgid "Password Inactive:\t" msgstr "Áíĺíĺńăü óőíčçěáôéęü" @@ -340,587 +335,590 @@ msgstr " #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 #, fuzzy msgid "Account Expires:\t" msgstr "Ôď óőíčçěáôéęü ëŢăĺé:\t" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, fuzzy, c-format -msgid "%s: PAM authentication failed\n" -msgstr "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç ěĺčüäďő ĺîáęńßâůóçň\n" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "%s: Íá ěçí óőěđĺńéëáěâÜíĺôĺ ôď \"l\" ěĺ ôéň Üëëĺň ĺíäĺßîĺéň\n" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "%s: Üäĺéá áđďńńßöčçęĺ\n" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç ěĺčüäďő ĺîáęńßâůóçň\n" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "%s: Üăíůóôďň ÷ńŢóôçň: %s\n" -#: src/chage.c:592 -#, c-format -msgid "%s: can't lock shadow password file\n" +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/chage.c:599 -#, c-format -msgid "%s: can't open shadow password file\n" +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "ÁëëáăŢ đëçńďöďńéţí ÷ńüíďő ăéá ôďí %s\n" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí áëëáăŢ đĺäßůí\n" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "%s: áäőíáěßá áíáíÝůóçň áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "" "ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ôçň ęáôá÷ţńçóçň óôď dbm áń÷ĺßď óőíčçěáôéęţí.\n" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, fuzzy, c-format msgid "%s: PAM chauthtok failed\n" msgstr "%s: áäőíáěßá îĺęëĺéäţěáôďň áń÷ĺßďő\n" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "%s: Äĺí őđÜń÷ďőí đëçńďöďńßĺň ăŢńáíóçň\n" - -#: src/chfn.c:107 +#: src/chfn.c:83 #, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -"Usage: %s [ -f đëŢńĺň_üíďěá ] [ -r áńßčě_äůěáôßďő ] [ -w ôçë_ĺńăáóßáň ]\n" -"\t[ -h ôçë_ďéęßáň ] [ -o Üëëď ] [ ÷ńŢóôçň ]\n" +"Usage: %s [-f đëŢńĺň_üíďěá] [-r áńßčě_äůěáôßďő] [-w ôçë_ĺńăáóßáň]\n" +"\t[-h ôçë_ďéęßáň] [-o Üëëď] [÷ńŢóôçň]\n" -#: src/chfn.c:111 +#: src/chfn.c:88 #, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" msgstr "" -"×ńŢóç: %s [ -f đëŢńĺň_üíďěá ] [ -r áńéčě_äůěáôßďő ] [ -w ôçë_äůěáôßďő ]\n" -"[ -h ôçë_ďéęßáň ]\n" +"×ńŢóç: %s [-f đëŢńĺň_üíďěá] [-r áńéčě_äůěáôßďő] [-w ôçë_äůěáôßďő]\n" +"[-h ôçë_ďéęßáň]\n" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" -msgstr "ĹéóÜăĺôĺ ôçí íÝá ôéěŢ, Ţ đéÝóôĺ `return' ăéá ôçí đńďęáčďńéóěÝíç\n" +#: src/chfn.c:139 +#, fuzzy +msgid "Enter the new value, or press ENTER for the default\n" +msgstr "" +"ĹéóÜăĺôĺ ôçí íÝá ôéěŢ, Ţ đéÝóôĺ ENTER ăéá ôçí đńďęáčďńéóěÝíç\n" +"\n" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "ĐëŢńĺň üíďěá" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "\tĐëŢńĺň Ľíďěá: %s\n" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "Áńéčěüň äůěáôßďő" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "\tÁńéčěüň Äůěáôßďő: %s\n" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "ÔçëÝöůíď Ĺńăáóßáň" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "\tÔçëÝöůíď Ĺńăáóßáň: %s\n" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "ÔçëÝöůíď Ďéęßáň" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "\tÔçëÝöůíď ďéęßáň: %s\n" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "Áëëď" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "%s: ¶äĺéá áđďńńßöčçęĺ.\n" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "%s: Áăíůóôďň ď ÷ńŢóôçň %s\n" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "%s: Äĺí ĺßíáé äőíáôüí íá ęáčďńéóôĺß ôď üíďěá ÷ńŢóôç óáň.\n" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "%s: áäőíáěßá áëëáăŢň ÷ńŢóôç `%s' óôďí NIS ĺîőđçńĺôďýěĺíď.\n" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "%s: `%s' ĺßíáé ď ęýńéďň äéáęďěéóôŢň NIS ăé'áőôüí ôďí ĺîőđçńĺôďýěĺíď.\n" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "ÁëëáăŢ đëçńďöďńéţí ÷ńŢóôç ăéá ôďí %s\n" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "%s: Ěç Ýăęőńď üíďěá: `%s'\n" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "%s: Ěç Ýăęőńďň áńéčěüň äůěáôßďő: `%s'\n" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "%s: Ěç Ýăęőńď ôçëÝöůíď ĺńăáóßáň: `%s'\n" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "%s: Ěç Ýăęőńď ôçëÝöůíď ďéęßáň: `%s'\n" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "%s: \"%s\" đĺńéÝ÷ĺé ěç Ýăęőńďőň ÷áńáęôŢńĺň\n" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "%s: Đďëý ěáęńéÜ đĺäßá\n" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "Áäőíáěßá áëëáăŢň ôáőôüôçôáň ÷ńŢóôç óĺ root.\n" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "Áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí. ÄďęéěÜóôĺ áńăüôĺńá.\n" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "Áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí.\n" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "%s: Ď %s äĺí âńÝčçęĺ óôď /etc/passwd\n" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ęáôá÷ţńçóçň óôď áń÷ĺßď óőíčçěáôéęţí.\n" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "Áäőíáěßá ĺéóáăůăŢň ôůí áëëáăţí óôď áń÷ĺßď óőíčçěáôéęţí.\n" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "Áäőíáěßá îĺęëĺéäţěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "÷ńŢóç: %s [-e]\n" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "%s: ăńáěěŢ %d: đďëý ěĺăÜëç ăńáěěŢ\n" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "%s: ăńáěěŢ %d: Ýëëĺéřç íÝďő óőíčçěáôéęďý\n" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "%s: ăńáěěŢ %d: Üăíůóôďň ÷ńŢóôçň %s\n" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "%s: ăńáěěŢ %d: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň óőíčçěáôéęďý\n" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: Áíé÷íÝőôçęĺ óöÜëěá, ďé áëëáăÝň áăíďŢčçęáí\n" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ęáôá÷ůńŢóĺůí óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ęáôá÷ůńŢóĺůí óôď áń÷ĺßď óőíčçěáôéęţí\n" -#: src/chsh.c:105 +#: src/chsh.c:75 #, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" -msgstr "×ńŢóç: %s [ -s öëďéüň ] [ üíďěá ]\n" +msgid "Usage: %s [-s shell] [name]\n" +msgstr "×ńŢóç: %s [-s öëďéüň] [üíďěá]\n" -#: src/chsh.c:120 +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"ĹéóÜăĺôĺ ôçí íÝá ôéěŢ, Ţ đéÝóôĺ ENTER ăéá ôçí đńďęáčďńéóěÝíç\n" +"\n" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "ĘÝëőöďň Ĺéóüäďő" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "Äĺí ěđďńĺßôĺ íá áëëÜîĺôĺ ôď öëďéü ăéá ôď(í) %s.\n" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "ÁëëÜăŢ ôďő öëďéďý ăéá ôďí %s\n" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "%s: Ěç Ýăęőńç ęáôá÷ţńçóç: %s\n" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "%s äĺí ĺßíáé Ýăęőńďň öëďéüň.\n" -#: src/dpasswd.c:69 +#: src/dpasswd.c:52 #, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" -msgstr "×ńŢóç: %s [ -(ald) ] öëďéüň\n" +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "×ńŢóç: %s [-(ald)] öëďéüň\n" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "Óőíčçěáôéęü öëďéďý: " -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "ĹđáíĺéóÜăĺôĺ ôď óőíčçěáôéęü öëďéďý: " -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "%s: Ôá óőíčçěáôéęÜ äĺí ôáéńéÜćďőí, äďęéěÜóôĺ îáíÜ.\n" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "%s: áäőíáěßá äçěéďőńăßáň ôďő %s" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő %s" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "%s: Ď öëďéüň %s äĺí âńÝčçęĺ.\n" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" msgstr "×ńŢóç: expiry { -f | -c }\n" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "" "%s: ĐŃĎÓĎ×Ç! ĐńÝđĺé íá Ý÷ĺé ôĺčĺß ôď bit đáńá÷ţńçóçň ôáőôüôçôáň root!\n" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "%s: Üăíůóôďň ÷ńŢóôçň\n" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "" "÷ńŢóç: %s [-a|-u ÷ńŢóôçň] [-m ěĺă] [-r] [-t ěÝńĺň] [-l äĺőôĺńüëĺđôá_ęëĺéä]\n" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "Áăíůóôďň ÷ńŢóôçň: %s\n" -#: src/faillog.c:215 +#: src/faillog.c:212 msgid "Username Failures Maximum Latest\n" msgstr "Ľíďěá_×ńŢóôç Áđďôő÷ßĺň ĚÝăéóôď Ôĺëĺőôáßá\n" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr " %s óôď %s" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr " [%lds áđÝěĺéíáí]" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr " [%lds ęëĺßäůěá]" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "÷ńŢóç: %s [-r|-R] ďěÜäá\n" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr " %s [-a ÷ńŢóôçň] ďěÜäá\n" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr " %s [-d ÷ńŢóôçň] ďěÜäá\n" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr " %s [-A ÷ńŢóôçň,...] [-M ÷ńŢóôçň,...] ďěÜäá\n" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr " %s [-M ÷ńŢóôçň,...] ďěÜäá\n" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "%s: Üăíůóôďň ÷ńŢóôçň %s\n" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "¶äĺéá áđďńńßöčçęĺ.\n" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "%s: óęéţäç óőíčçěáôéęÜ ďěÜäůí áđáéôďýíôáé ăéá ôď -A\n" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "Đďéďň ĺßóáé;\n" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "Üăíůóôç ďěÜäá: %s\n" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "ĐńďóčŢęç ôďő ÷ńŢóôç %s óôçí ďěÜäá %s\n" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "ÄéáăńÜöç ôďő ÷ńŢóôç %s áđü ôçí ďěÜäá %s\n" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "%s: Üăíůóôď ěÝëďň %s\n" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "%s: Äĺí ĺßíáé tty\n" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "ÁëëáăŢ ôďő óőíčŢěáôďň ăéá ôçí ďěÜäá %s\n" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "ÍÝď Óőíčçěáôéęü: " -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "ĹđáíĺéóÜăĺôĺ ôď íÝď óőíčçěáôéęü: " -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "Äĺí ôáéńéÜćďőí. ÄďęéěÜóôĺ îáíÜ" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "%s: ÎáíáäďęéěÜóôĺ áńăüôĺńá\n" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "%s: Áäőíáěßá äçěéďőńăßáň ęëĺéäţěáôďň\n" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "" "%s: Áäőíáěßá äçěéďőńăßáň ęëĺéäţěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő %s\n" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň\n" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň áń÷ĺßďő\n" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "%s: áäőíáěßá îĺęëĺéäţěáôďň áń÷ĺßďő\n" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ôůí DBM áń÷ĺßůí\n" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ôůí DBM áń÷ĺßůí óęéůäţí óőíčçěáôéęţí\n" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "÷ńŢóç: groupadd [-g gid [-o]] ďěÜäá\n" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç íÝáň ęáôá÷ţńçóçň óôď áń÷ĺßď ďěÜäůí\n" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "%s: áäőíáěßá đńďóčŢęçň íÝáň dbm ęáôá÷ţńçóçň óôď áń÷ĺßď ďěÜäůí\n" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "%s: Ôď üíďěá %s äĺí ĺßíáé ěďíáäéęü\n" -#: src/groupadd.c:279 -#, c-format -msgid "%s: gid %ld is not unique\n" -msgstr "%s: Ôď gid %ld äĺí ĺßíáé ěďíáäéęü\n" +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s: Ôď uid %ld äĺí ĺßíáé ěďíáäéęü\n" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "%s: áäőíáěßá ĺýńĺóçň ěďíáäéęďý gid\n" @@ -928,54 +926,54 @@ msgstr "%s: #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "%s: Ôď %s äĺí ĺßíáé Ýăęőńď üíďěá ďěÜäáň\n" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "%s: Ěç Ýăęőńç ďěÜäá `%s'\n" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "%s: -O áđáéôĺß ĽÍĎĚÁ=ÔÉĚÇ\n" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "%s: Áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "%s: Áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "%s: Áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "%s: Áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "%s: Ç ďěÜäá %s őđÜń÷ĺé\n" @@ -984,12 +982,12 @@ msgstr "%s: msgid "usage: groupdel group\n" msgstr "÷ńŢóç: groupdel ďěÜäá\n" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň ďěÜäáň\n" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň óôď dbm áń÷ĺßď ďěÜäůí\n" @@ -1001,7 +999,7 @@ msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áöáßńĺóç ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí " "ďěÜäůí\n" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "" @@ -1015,132 +1013,132 @@ msgstr "" msgid "%s: cannot remove user's primary group.\n" msgstr "%s: áäőíáěßá áöáßńĺóçň ôçň đńůôáń÷éęŢň ďěÜäáň ôďő ÷ńŢóôç.\n" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "%s: Ç ďěÜäá %s äĺí őđÜń÷ĺé\n" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "%s: Ç ďěÜäá %s ĺßíáé NIS ďěÜäá\n" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "%s: Ď %s ĺßíáé ď ęýńéďň äéáęďěéóôŢň NIS\n" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" msgstr "" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 #, fuzzy msgid "Unable to lock group file\n" msgstr "%s: Áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/groupmems.c:209 +#: src/groupmems.c:220 #, fuzzy msgid "Unable to open group file\n" msgstr "%s: Áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/groupmems.c:229 +#: src/groupmems.c:240 #, fuzzy msgid "Cannot close group file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň áń÷ĺßďő ďěÜäůí\n" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "÷ńŢóç: groupmod [-g gid [-o]] [-n üíďěá] ďěÜäá\n" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, fuzzy, c-format msgid "%s: %s not found in /etc/group\n" msgstr "%s: Ď %s äĺí âńÝčçęĺ óôď /etc/passwd\n" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "" "%s: áäőíáěßá đńďóčŢęçň íÝáň dbm ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí " "ďěÜäůí\n" -#: src/groupmod.c:305 -#, c-format -msgid "%s: %ld is not a unique gid\n" +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" msgstr "%s: Ôď %ld äĺí ĺßíáé ěďíáäéęü gid\n" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "%s: Ôď %s äĺí ĺßíáé ěďíáäéęü üíďěá\n" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "Üăíůóôďň ÷ńŢóôçň: %s\n" -#: src/grpck.c:98 +#: src/grpck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" -msgstr "×ńŢóç: %s [ -r ] [ group [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "×ńŢóç: %s [-r] [-s] [group [gshadow]]\n" -#: src/grpck.c:100 +#: src/grpck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" -msgstr "×ńŢóç: %s [ -r ] [ group ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "×ńŢóç: %s [-r] [-s] [group]\n" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "Ď÷é" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" msgstr "" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő %s\n" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "%s: áäőíáěßá áíďßăěáôďň áń÷ĺßďő %s\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "Ěç Ýăęőńç ęáôá÷ţńçóç óôď áń÷ĺßď ďěÜäůí\n" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "äéáăńáöŢ ăńáěěŢň `%s'; " @@ -1149,35 +1147,30 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "áíôéăńáöŢ ęáôá÷ţńçóçň óôď áń÷ĺßď ďěÜäůí\n" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "Ěç Ýăęőńď üíďěá ďěÜäáň `%s'\n" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "ďěÜäá %s: ëÜčďň GID (%d)\n" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "ďěÜäá %s: äĺí őđÜń÷ĺé ÷ńŢóôçň %s\n" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "äéáăńáöŢ ěÝëďőň `%s'; " #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "Ěç Ýăęőńç ęáôá÷ţńçóç óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" @@ -1185,209 +1178,206 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "áíôéăńáöŢ ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "Äĺí âńÝčçęĺ ęáôá÷ţńçóç óôď áń÷ĺßď ďěÜäůí đďő íá ôáéńéÜćĺé\n" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "óęéţäçň ďěÜäá %s: Äĺí őđÜń÷ĺé äéá÷ĺéńéóôŢň ÷ńŢóôçň %s\n" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "äéáăńáöŢ äéá÷ĺéńéóôéęďý ěÝëďőň `%s'; " -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "óęéţäçň ďěÜäá %s: äĺí őđÜń÷ĺé ÷ńŢóôçň %s\n" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "%s: áäőíáěßá áíáíÝůóçň áń÷ĺßďő %s\n" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "%s: ôá áń÷ĺßá áíáíĺţčçęáí. ĹęôĺëÝóôĺ mkpasswd\n" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "%s: ęáěéÜ áëëáăŢ\n" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "%s: ôá áń÷ĺßá áíáíĺţčçęáí\n" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "" "%s: áäőíáěßá áöáßńĺóçň ôçň ďěÜäáň %s, áđü ôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" "ďěÜäůí\n" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "" "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí ăéá ôďí %" "s\n" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň ăéá ôçí ďěÜäá %s\n" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ăéá ôď áń÷ĺßď ďěÜäůí\n" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "%s: Äĺí ĺßíáé äéáěďńöůěÝíď ăéá óęéţäç óőíčçěáôéęÜ ďěÜäůí.\n" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "" "%s: Äĺí ĺßíáé äőíáôüí íá äéáăńáöĺß ôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" -msgstr "÷ńŢóç: id [ -a ]\n" +#: src/id.c:53 +msgid "usage: id [-a]\n" +msgstr "÷ńŢóç: id [-a]\n" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "÷ńŢóç: id\n" -#: src/id.c:127 +#: src/id.c:123 #, c-format -msgid "uid=%d(%s)" +msgid "uid=%u(%s)" +msgstr "" + +#: src/id.c:125 +#, c-format +msgid "uid=%u" msgstr "" #: src/id.c:129 #, c-format -msgid "uid=%d" +msgid " gid=%u(%s)" msgstr "" -#: src/id.c:133 +#: src/id.c:131 #, c-format -msgid " gid=%d(%s)" +msgid " gid=%u" msgstr "" -#: src/id.c:135 +#: src/id.c:141 #, c-format -msgid " gid=%d" +msgid " euid=%u(%s)" msgstr "" -#: src/id.c:145 +#: src/id.c:143 #, c-format -msgid " euid=%d(%s)" +msgid " euid=%u" msgstr "" -#: src/id.c:147 +#: src/id.c:148 #, c-format -msgid " euid=%d" +msgid " egid=%u(%s)" msgstr "" -#: src/id.c:152 +#: src/id.c:150 #, c-format -msgid " egid=%d(%s)" -msgstr "" - -#: src/id.c:154 -#, c-format -msgid " egid=%d" +msgid " egid=%u" msgstr "" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr " ďěÜäĺň=" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "Ľíďěá_×ńŢóôç Čýńá Áđü Ôĺëĺőôáßá\n" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "Ľíďěá_×ńŢóôç Čýńá Ôĺëĺőôáßá\n" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "**ĘáěéÜ ĺßóďäďň óôď óýóôçěá**" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "÷ńŢóç: %s [-p] [üíďěá]\n" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr " %s [-p] [-h óýóôçěá] [-f üíďěá]\n" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr " %s [-p] -r óýóôçěá\n" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "ĹóöáëěÝíç ţńá ĺéóüäďő\n" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" @@ -1395,7 +1385,7 @@ msgstr "" "\n" "Ôď óýóôçěá Ýęëĺéóĺ ăéá óőíôŢńçóç ńďőôßíáň\n" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1403,7 +1393,7 @@ msgstr "" "\n" "[ĐáńÜęáěřç áđďóýíäĺóçň -- Ç ĺßóďäďň ôďő root ĺđĺôńÜđç.]\n" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" @@ -1412,17 +1402,17 @@ msgstr "" "\n" "Ç äéáäéęáóßá ĺéóüäďő ôĺńěáôßóôçęĺ ěĺôÜ áđü %d äĺőôĺńüëĺđôá.\n" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr " óôď `%.100s' áđü `%.200s'" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr " óôď `%.100s'" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" @@ -1431,243 +1421,237 @@ msgstr "" "\n" "%s login: " -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "login: " -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "Äéáäéęáóßá ĺéóüäďő áđÝôő÷ĺ" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "" "Đńďĺéäďđďßçóç: Ç ĺßóďäďň ĺđáíĺíĺńăďđďéŢčçęĺ ěĺôÜ áđü đńďóůńéíü áđďęëĺéóěü.\n" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "Ôĺëĺőôáßá ĺßóďäďň: %s óôď %s" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "Ôĺëĺőôáßá ĺßóďäďň: %.19s óôď %s" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr " áđü %.*s" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "¸íáńîç rad_login\n" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "" "%s: Äĺí őđÜń÷ĺé DBM âÜóç äĺäďěÝíůí óôď óýóôçěá - ęáěéÜ ĺíÝńăĺéá äĺí " "ĺęôĺëĺßôáé\n" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "×ńŢóç: %s [ -vf ] [ -p|g|sp|sg ] áń÷ĺßď\n" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "×ńŢóç: %s [ -vf ] [ -p|g|sp ] áń÷ĺßď\n" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "×ńŢóç: %s [ -vf ] [ -p|g ] áń÷ĺßď\n" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "%s: áäőíáěßá ĺăăńáöŢň đÜíů áđü ôď áń÷ĺßď %s\n" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "%s: áäőíáěßá áíďßăěáôďň DBM áń÷ĺßůí ăéá ôď %s\n" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "%s: ç áń÷Ţ ěĺ " -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 #, fuzzy msgid " is too long\n" msgstr "%s: Đďëý ěáęńéÜ đĺäßá\n" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí ĺđĺîĺńăáóßá ôçň ăńáěěŢň \"%s\"\n" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "đńďóčŢęç ęáôá÷ţńçóçň ăéá üíďěá " -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" msgstr "" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç ęáôá÷ţńçóçň ăéá " -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "đńďóôÝčçęáí %d ęáôá÷ůńŢóĺéň, ç ěĺăáëýôĺńç Ţôáí %d\n" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "÷ńŢóç: newgrp [ - ] [ ďěÜäá ]\n" - -#: src/newgrp.c:68 -#, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "÷ńŢóç: sg ďěÜäá [ ĺíôďëŢ ]\n" - -#: src/newgrp.c:125 +#: src/mkpasswd.c:392 #, c-format -msgid "unknown uid: %d\n" +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "×ńŢóç: %s [-vf] [-p|g|sp|sg] áń÷ĺßď\n" + +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "×ńŢóç: %s [-vf] [-p|g|sp] áń÷ĺßď\n" + +#: src/mkpasswd.c:398 +#, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "×ńŢóç: %s [-vf] [-p|g] áń÷ĺßď\n" + +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "÷ńŢóç: newgrp [-] [ďěÜäá]\n" + +#: src/newgrp.c:63 +#, fuzzy +msgid "usage: sg group [[-c] command]\n" +msgstr "÷ńŢóç: sg ďěÜäá [ĺíôďëŢ]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" msgstr "Üăíůóôď uid: %d\n" -#: src/newgrp.c:201 -#, c-format -msgid "unknown gid: %ld\n" +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" msgstr "Üăíůóôď gid: %ld\n" -#: src/newgrp.c:245 -#, c-format -msgid "unknown gid: %d\n" -msgstr "Üăíůóôď gid: %d\n" - -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "ËőđÜěáé.\n" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "đÜńá đďëëÝň ďěÜäĺň\n" -#: src/newusers.c:82 +#: src/newusers.c:78 #, c-format -msgid "Usage: %s [ input ]\n" -msgstr "×ńŢóç: %s [ ĺßóďäďň ]\n" +msgid "Usage: %s [input]\n" +msgstr "×ńŢóç: %s [ĺßóďäďň]\n" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő /etc/passwd.\n" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň áń÷ĺßůí, îáíáäďęéěÜóôĺ áńăüôĺńá\n" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôůí áń÷ĺßůí\n" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: ăńáěěŢ %d: ěç Ýăęőńç ăńáěěŢ\n" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "%s: ăńáěěŢ %d: áäőíáěßá äçěéďőńăßáň GID\n" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "%s: ăńáěěŢ %d: áäőíáěßá äçěéďőńăßáň UID\n" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "%s: ăńáěěŢ %d: áäőíáěßá ĺýńĺóçň ÷ńŢóôç %s\n" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: ăńáěěŢ %d: áäőíáěßá áíáíÝůóç óőíčçěáôéęďý\n" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "%s: ăńáěěŢ %d: áđďôő÷ßá äçěéďőńăßáň ęáôáëüăďő(mkdir)\n" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "%s: ăńáěěŢ %d: áđďôő÷ßá áëëáăŢň éäéďęôŢôç(chown)\n" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "%s: ăńáěěŢ %d: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň\n" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí ĺíçěÝńůóç áń÷ĺßůí\n" -#: src/passwd.c:239 +#: src/passwd.c:174 #, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" -msgstr "÷ńŢóç: %s [ -f | -s ] [ üíďěá ]\n" +msgid "usage: %s [-f|-s] [name]\n" +msgstr "÷ńŢóç: %s [-f|-s] [üíďěá]\n" -#: src/passwd.c:242 +#: src/passwd.c:178 #, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" -msgstr "" -" %s [ -x ěĺă. ] [ -n ĺëÜ÷. ] [ -w đńďĺéä. ] [ -i áíĺíĺńăü ] üíďěá\n" +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x ěĺă.] [-n ĺëÜ÷.] [-w đńďĺéä.] [-i áíĺíĺńăü] üíďěá\n" -#: src/passwd.c:245 -#, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" msgstr " %s { -l | -u | -d | -S | -e } üíďěá\n" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "Ď ÷ńŢóôçň %s Ý÷ĺé ęëĺéäß TCFS, áđáéôĺßôáé ôď đáëéü óőíčçěáôéęü.\n" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "" "Ěđďńĺßôĺ íá ÷ńçóéěďđďéŢóĺôĺ ôçí -t đáńÜěĺôńď ăéá íá ĺîáíáăęÜóĺôĺ ôçí\n" "đńáăěáôďđďßçóç ôçň áëëáăŢň.\n" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "Đáëéü Óőíčçěáôéęü: " -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "ĹóöáëěÝíď óőíčçěáôéęü ăéá ôďí `%s'\n" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "Đńďĺéäďđďßçóç: Ď ÷ńŢóôçň %s Ý÷ĺé ęëĺéäß TCFS.\n" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" @@ -1677,15 +1661,15 @@ msgstr "" "Đáńáęáëţ ÷ńçóéěďđďéŢóôĺ Ýíá óőíäőáóěü áđü ęĺöáëáßá ęáé ěéęńÜ ăńÜěěáôá\n" "ęáčţň ęáé áńéčěďýň.\n" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "ÍÝď Óőíčçěáôéęü: " -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "ÎáíáäďęéěÜóôĺ.\n" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" @@ -1693,90 +1677,90 @@ msgstr "" "\n" "Đńďóď÷Ţ: áäýíáěď óőíčçěáôéęü (ĺéóÜăĺôÝ ôď đÜëé ăéá íá ôď ÷ńçóéěďđďéŢóĺôĺ).\n" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "Äĺí ôáéńéÜćďőí. ÄďęéěÜóôĺ îáíÜ.\n" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "Ôď óőíčçěáôéęü ăéá ôďí %s äĺí ěđďńĺß íá áëëÜîĺé.\n" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "Óőăíţěç, ôď óőíčçěáôéęü ăéá ôďí %s äĺí ěđďńĺß íá áëëÜîĺé áęüěç.\n" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "%s: äĺí őđÜń÷ĺé ĺëĺýčĺńç ěíŢěç\n" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "Áäőíáěßá ęëĺéäţěáôďň ôçň âÜóçň ęëĺéäéţí ôďő TCFS. ÄďęéěÜóôĺ áńăüôĺńá\n" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "Áäőíáěßá áíďßăěáôďň ôçň âÜóçň ęëĺéäéţí ôďő TCFS.\n" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ôçň âÜóçň ęëĺéäéţí ôďő TCFS.\n" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "Áäőíáěßá őëďđďßçóçň ôůí áëëáăţí óôď TCFS.\n" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "%s: Áäőíáěßá ĺęôÝëĺóçň ôďő %s" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "%s: ç áđďčŢęç %s äĺí őđďóôçńßćĺôáé\n" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "%s: ¶äĺéá áđďńńßöčçęĺ\n" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "Äĺí ěđďńĺßôĺ íá áëëÜîĺôĺ ôď óőíčçěáôéęü ăéá ôď(í) %s.\n" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "ÁëëáăŢ óőíčçěáôéęďý ăéá ôďí %s\n" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "Ôď óőíčçěáôéęü ăéá ôďí %s äĺí Üëëáîĺ.\n" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "Ôď óőíčçěáôéęü Üëëáîĺ.\n" -#: src/pwck.c:98 +#: src/pwck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" -msgstr "×ńŢóç: %s [ -qr ] [ passwd [ shadow ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "×ńŢóç: %s [-q] [-r] [-s] [passwd [shadow]]\n" -#: src/pwck.c:100 +#: src/pwck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" -msgstr "×ńŢóç: %s [ -qr ] [ passwd ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "×ńŢóç: %s [-q] [-r] [-s] [passwd]\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "Ěç Ýăęőńç ęáôá÷ţńçóç óôď áń÷ĺßď óőíčçěáôéęţí\n" @@ -1784,32 +1768,24 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "áíôéăńáöŢ ęáôá÷ţńçóçň óôď áń÷ĺßď óőíčçěáôéęţí\n" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "Ěç Ýăęőńď üíďěá ÷ńŢóôç `%s'\n" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "÷ńŢóôçň %s: ëáíčáóěÝíď UID (%d)\n" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 -#, c-format -msgid "user %s: no group %d\n" +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" msgstr "÷ńŢóôçň %s: ęáěéÜ ďěÜäá %d\n" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "÷ńŢóôçň %s: ď ęáôÜëďăďň %s äĺí őđÜń÷ĺé\n" @@ -1817,16 +1793,16 @@ msgstr " #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "÷ńŢóôçň %s: ôď đńüăńáěěá %s äĺí őđÜń÷ĺé\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "Ěç Ýăęőńç ęáôá÷ţńçóç óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" @@ -1834,7 +1810,7 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "áíôéăńáöŢ ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" @@ -1842,72 +1818,72 @@ msgstr " #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "Äĺí âńÝčçęĺ ęáôá÷ţńçóç óôď áń÷ĺßď óőíčçěáôéęţí đďő íá ôáéńßáćĺé\n" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "÷ńŢóôçň %s: ôĺëĺőôáßá áëëáăŢ óőíčçěáôéęďý óôď ěÝëëďí\n" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "" "áäőíáěßá áöáßńĺóçň ęáôá÷ţńçóçň ăéá ôďí %s, áđü ôď áń÷ĺßď óęéůäţí " "óőíčçěáôéęţí\n" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň óőíčçěáôéęďý ăéá ôďí %s\n" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "%s: áäőíáěßá áíáíÝůóçň áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "%s: Ôá óęéţäç óőíčçěáôéęÜ äĺí Ý÷ďőí äéáěďńöůčĺß.\n" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ęáôá÷ţńçóçň ăéá ôďí ÷ńŢóôç %s\n" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "%s: Äĺí ĺßíáé äőíáôüí íá äéáăńáöĺß ôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "ËőđÜěáé." -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: đńÝđĺé íá ĺęôĺëĺóôĺß áđü ôĺńěáôéęü\n" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "%s: pam_start: óöÜëěá %d\n" @@ -1917,18 +1893,17 @@ msgstr "%s: pam_start: msgid "Unknown id: %s\n" msgstr "Áăíůóôç ôáőôüôçôá: %s\n" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, c-format msgid "You are not authorized to su %s\n" msgstr "Äĺí Ý÷ĺôĺ Üäĺéá ăéá su %s\n" #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "(ĹéóÜăĺôĺ ôď äéęü óáň óőíčçěáôéęü.)" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" @@ -1937,28 +1912,23 @@ msgstr "" "%s: %s\n" "(ÁăíďŢčçęĺ)\n" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "Äĺí őđÜń÷ĺé öëďéüň\n" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "Äĺí őđÜń÷ĺé áń÷ĺßď óőíčçěáôéęţí\n" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "Äĺí őđÜń÷ĺé ęáôá÷ţńçóç óőíčçěáôéęďý ăéá ôďí 'root'\n" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1969,7 +1939,7 @@ msgstr "" "(Ţ äţóôĺ ôď óőíčçěáôéęü ôďő root ăéá óőíôŢńçóç ôďő óőóôŢěáôďň):" #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "¸íáńîç ĘáôÜóôáóçň ÓőíôŢńçóçň ÓőóôŢěáôďň\n" @@ -1978,527 +1948,530 @@ msgstr " msgid "%s: rebuild the group database\n" msgstr "%s: ĺđáíáęôßóôĺ ôçí âÜóç äĺäďěÝíůí ďěÜäůí\n" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "%s: ĺđáíáęôßóôĺ ôçí âÜóç äĺäďěÝíůí ôůí óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "%s: Ěç Ýăęőńç áńéčěçôéęŢ đáńÜěĺôńďň `%s'\n" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "%s: Üăíůóôď gid %s\n" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "%s: Üăíůóôç ďěÜäá %s\n" -#: src/useradd.c:426 -#, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "ďěÜäá=%s,%ld âáóéęüň_ęáôáë=%s óęĺë=%s\n" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "öëďéüň=%s " -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "áíĺíĺńăü=%ld ëŢîç=%s" -#: src/useradd.c:435 -#, c-format -msgid "GROUP=%ld\n" +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" msgstr "ĎĚÁÄÁ=%ld\n" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "ĚÇÔŃÉĘĎÓ_ĘÁÔÁËĎĂĎÓ=%s\n" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "ÁÍĹÍĹŃĂĎÓ=%ld\n" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "ËÇÎÇ=%s\n" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "ĘĹËŐÖĎÓ=%s\n" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "ÓĘĹË=%s\n" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: áäőíáěßá äçěéďőńăßáň íÝďő áń÷ĺßďő đńďęáčďńéóěÝíůí ńőčěßóĺůí\n" -#: src/useradd.c:488 +#: src/useradd.c:503 #, fuzzy, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: áäőíáěßá äçěéďőńăßáň íÝďő áń÷ĺßďő đńďęáčďńéóěÝíůí ńőčěßóĺůí\n" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "%s: ěĺôďíďěáóßá: %s" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "%s: Ç ďěÜäá `%s' ĺßíáé NIS ďěÜäá.\n" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Đńďóäéďńßóôçęáí őđĺńâďëéęÝň ďěÜäĺň (ěĺă. %d).\n" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "÷ńŢóç: %s\t[-u uid [-o]] [-g ďěÜäá] [-G ďěÜäá,...] \n" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "" "\t\t[-d ěçôńéęüň_ęáôÜëďăďň] [-s öëďéüň] [-c ó÷üëéď]\n" "\t\t[-m [-k ęáíüíáň]]\n" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 +#, fuzzy msgid "[-f inactive] [-e expire ] " -msgstr "[-f áíĺíĺńăü] [-e ëŢîç ] " +msgstr "[-f áíĺíĺńăü] [-e ëŢîç] " -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "[-A đńüăńáěěá] " -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "[-p óőíčçěáôéęü] üíďěá\n" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr " %s\t-D [-g ďěÜäá] [-b âÜóç] [-s öëďéüň]\n" -#: src/useradd.c:736 +#: src/useradd.c:756 +#, fuzzy msgid "\t\t[-f inactive] [-e expire ]\n" -msgstr "\t\t[-f áíĺíĺńăü] [-e ëŢîç ]\n" +msgstr "\t\t[-f áíĺíĺńăü] [-e ëŢîç]\n" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "%s: ÓöÜëěá ęáôÜ ôď ęëĺßäůěá ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "%s: ÓöÜëěá ęáôÜ ôď Üíďéăěá ôďő áń÷ĺßďő ďěÜäůí\n" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "%s: ÓöÜëěá ęáôÜ ôď ęëĺßäůěá ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "%s: ÓöÜëěá ęáôÜ ôď Üíďéăěá ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/useradd.c:1019 -#, c-format -msgid "%s: uid %d is not unique\n" -msgstr "%s: Ôď uid %d äĺí ĺßíáé ěďíáäéęü\n" +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s: Ôď uid %ld äĺí ĺßíáé ěďíáäéęü\n" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "%s: áäőíáěßá ĺőńĺóçň ěďíáäéęďý uid\n" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "%s: Ěç Ýăęőńď đĺäßď `%s'\n" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "%s: Ěç Ýăęőńďň ęáôÜëďăďň âÜóçň `%s'\n" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "%s: Ěç Ýăęőńď ó÷üëéď `%s'\n" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "%s: Ěç Ýăęőńďň ěçôńéęüň ęáôÜëďăďň ÷ńŢóôç `%s'\n" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "%s: Ěç Ýăęőńç çěĺńďěçíßá `%s'\n" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "%s: óęéţäç óőíčçěáôéęÜ áđáéôďýíôáé ăéá ôď -e\n" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "%s: óęéţäç óőíčçěáôéęÜ áđáéôďýíôáé ăéá -f\n" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "%s: Ěç Ýăęőńďň öëďéüň `%s'\n" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "%s: Ěç Ýăęőńď üíďěá ÷ńŢóôç `%s'\n" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "%s: Áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "%s: Áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő óőíčçěáôéęţí\n" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň áń÷ĺßďő óęéůäţí óőíčçěáôéęţí\n" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç ěĺčüäďő ĺîáęńßâůóçň\n" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç íÝáň ęáôá÷ţńçóçň óôď áń÷ĺßď óőíčçěáôéęţí\n" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ęáôá÷ůńŢóĺůí óôď dbm áń÷ĺßď óőíčçěáôéęţí\n" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç íÝáň ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí " "óőíčçěáôéęţí\n" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ęáôá÷ůńŢóĺůí óôď dbm áń÷ĺßď óęéůäţí " "óőíčçěáôéęţí\n" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s: áäőíáěßá äçěéďőńăßáň ęáôáëüăďő %s\n" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "%s: Ď ÷ńŢóôçň %s őđÜń÷ĺé\n" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" msgstr "" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "÷ńŢóç: %s [-r] üíďěá\n" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí áíáíÝůóç ęáôá÷ůńŢóçň ďěÜäáň\n" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ôçň dbm ęáôá÷ţńçóçň óôď áń÷ĺßď ďěÜäůí\n" -#: src/userdel.c:221 +#: src/userdel.c:219 #, fuzzy, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "%s: áäőíáěßá áíáíÝůóçň ôçň dbm ęáôá÷ţńçóçň óôď áń÷ĺßď ďěÜäůí\n" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "%s: áäőíáěßá ĺđáíĺăăńáöŢň ôďő áń÷ĺßďő ęëĺéäéţí ôďő TCFS\n" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "%s: áäőíáěßá ęëĺéäţěáôďň ôďő áń÷ĺßďő ęëĺéäéţí ôďő TCFS\n" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň ôďő áń÷ĺßďő ęëĺéäéţí ôďő TCFS\n" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň áń÷ĺßďő ďěÜäůí\n" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "%s: áäőíáěßá áíďßăěáôďň áń÷ĺßďő óęéůäţí óőíčçěáôéęţí ďěÜäůí\n" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ĺîáęńßâůóçň\n" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň óôď áń÷ĺßď óőíčçěáôéęţí\n" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň ôďő TCFS\n" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň óôď dbm áń÷ĺßď óőíčçěáôéęţí\n" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ęáôá÷ţńçóçň óôď dbm áń÷ĺßď óęéůäţí " "óőíčçěáôéęţí\n" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: Ď ÷ńŢóôçň %s âńßóęĺôáé óôď óýóôçěá\n" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "%s: đńďĺéäďđďßçóç: Ôď %s äĺí áíŢęĺé óôďí %s, äĺí äéáăńÜöĺôáé\n" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "%s: đńďĺéäďđďßçóç: áäőíáěßá äéáăńáöŢň " -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "%s: Ď ÷ńŢóôçň %s äĺí őđÜń÷ĺé\n" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "%s: Ď ÷ńŢóôçň %s ĺßíáé NIS ÷ńŢóôçň\n" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "%s: Ôď %s äĺí áíŢęĺé óôďí %s, äĺí áöáéńĺßôáé\n" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "" "%s: Äĺí äéáăńÜöĺôáé ď ęáôÜëďăďň %s (čá áöáéńďýóĺ ôďí ěçôńéęü ęáôÜëďăď ôďő " "÷ńŢóôç %s)\n" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ôďő ęáôáëüăďő %s\n" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "" "\t\t[-d ěçôńéęüň_ęáôÜëďăďň [-m]] [-s öëďéüň] [-c ó÷üëéď]\n" "\t\t[-l íÝď_üíďěá]\n" -#: src/usermod.c:330 -msgid "[-A {DEFAULT|program},... ] " -msgstr "[-A {DEFAULT|đńüăńáěěá},... ] " - #: src/usermod.c:332 #, fuzzy +msgid "[-A {DEFAULT|program},... ] " +msgstr "[-A {DEFAULT|đńüăńáěěá},...] " + +#: src/usermod.c:334 +#, fuzzy msgid "[-p passwd] [-L|-U] name\n" msgstr "[-p óőíčçěáôéęü] üíďěá\n" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "%s: äĺí őđÜń÷ĺé ĺëĺýčĺńç ěíŢěç óôď update_group\n" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "%s: óôď update_gshadow\n" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "%s: Äĺí äüčçęáí ĺíäĺßîĺéň\n" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "%s: óęéţäç óőíčçěáôéęÜ áđáéôďýíôáé ăéá ôď -e ęáé -f\n" -#: src/usermod.c:1215 -#, c-format -msgid "%s: uid %ld is not unique\n" +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" msgstr "%s: Ôď uid %ld äĺí ĺßíáé ěďíáäéęü\n" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí äéáăńáöŢ ěĺčüäďő ĺîáęńßâůóçň\n" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí áëëáăŢ ěĺčüäďő ĺîáęńßâůóçň\n" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí áëëáăŢ ęáôá÷ţńçóçň óőíčçěáôéęďý\n" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "%s: ÓöÜëěá ęáôÜ ôçí áöáßńĺóç ęáôá÷ţńçóçň óôď áń÷ĺßď óőíčçěáôéęţí\n" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí đńďóčŢęç íÝáň ęáôá÷ţńçóçň óôď dbm áń÷ĺßď óőíčçěáôéęţí\n" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áöáßńĺóç ęáôá÷ţńçóçň áđü ôď dbm áń÷ĺßď óőíčçěáôéęţí\n" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áöáßńĺóç ęáôá÷ţńçóçň óôď áń÷ĺßď óęéůäţí óőíčçěáôéęţí\n" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "" "%s: ÓöÜëěá ęáôÜ ôçí áöáßńĺóç ęáôá÷ţńçóçň óôď dbm áń÷ĺßď óęéůäţí " "óőíčçěáôéęţí\n" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "%s: ď ęáôÜëďăďň %s őđÜń÷ĺé\n" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "%s: áäőíáěßá äçěéďőńăßáň ôďő %s\n" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "%s: Áäőíáěßá áëëáăŢň éäéďęôŢôç(chown) ôďő %s\n" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: áäőíáěßá ěĺôďíďěáóßáň ôďő ęáôáëüăďő %s óĺ %s\n" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: đńďĺéäďđďßçóç: Ôď %s äĺí áíŢęĺé óôďí %s\n" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "áđďôő÷ßá áëëáăŢň ôďő éäéďęôŢôç ôďő ăńáěěáôďęéâůôßďő" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "áđďôő÷ßá ěĺôďíďěáóßáň ăńáěěáôďęéâůôßďő" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" @@ -2507,21 +2480,21 @@ msgstr "" "\n" "%s: Ôď %s äĺí Üëëáîĺ\n" -#: src/vipw.c:127 +#: src/vipw.c:132 #, fuzzy msgid "Couldn't lock file" msgstr "%s: áäőíáěßá îĺęëĺéäţěáôďň áń÷ĺßďő\n" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" msgstr "" -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "%s: áäőíáěßá ĺđáíáöďńÜň %s: %s (ďé áëëáăÝň ĺßíáé óôď %s)\n" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" @@ -2531,6 +2504,25 @@ msgstr "" "`vipw' óýíôáóĺé ôď /etc/passwd `vipw -s' óőíôÜóóĺé ôď /etc/shadow\n" "`vigr' óýíôáóĺé ôď /etc/group `vigr -s' óőíôÜóóĺé ôď /etc/gshadow\n" +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: Ôď gid %ld äĺí ĺßíáé ěďíáäéęü\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "Üăíůóôď gid: %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: Ôď uid %d äĺí ĺßíáé ěďíáäéęü\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "÷ńŢóôçň %s: ëáíčáóěÝíď UID (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s: Äĺí őđÜń÷ďőí đëçńďöďńßĺň ăŢńáíóçň\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "ďěÜäá %s: ëÜčďň GID (%d)\n" + #~ msgid "%s: permission denied (shell).\n" #~ msgstr "%s: Üäĺéá áđďńńßöčçęĺ (öëďéüň)\n" diff --git a/po/fr.gmo b/po/fr.gmo index 046640d2..593d5cef 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index f18188a8..63120df9 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 19990709\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: 1999-07-09 20:02+0200\n" "Last-Translator: Vincent Renardias \n" "Language-Team: Vincent Renardias \n" @@ -23,36 +23,36 @@ msgstr "Avertissement: le groupe %s est inconnu\n" msgid "Warning: too many groups\n" msgstr "Avertissement: trop de groupes\n" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "Votre mot de passe a expiré." -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "Votre mot de passe est désactivé." -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "Votre compte a expiré." -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr " Contactez l'administrateur systčme.\n" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr " Choisissez un nouveau mot de passe.\n" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "Votre mot de passe expirera dans %ld jours.\n" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "Votre mot de passe expirera demain.\n" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "Votre mot de passe expirera aujourd'hui.\n" @@ -111,7 +111,7 @@ msgstr "Pas de courier." msgid "You have mail." msgstr "Vous avez du courier." -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "Mauvais mot de passe: %s. " @@ -126,12 +126,12 @@ msgstr "passwd: msgid "passwd: %s\n" msgstr "passwd: %s\n" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "Impossible d'aller dans \"%s\"\n" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "Pas de répertoire, connexion avec HOME=/" @@ -181,26 +181,26 @@ msgstr " msgid "Dialup Password: " msgstr "Mot de passe dialup : " -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "Impossible d'allouer l'espace pour l'information sur la conf.\n" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" "erreur de configuration - élément '%s' inconnu (avertissez " "l'administrateur)\n" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "erreur - échec de la recherche de '%s'\n" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "%s non trouvé\n" @@ -209,7 +209,7 @@ msgstr "%s non trouv #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "Mot de passe: " @@ -227,112 +227,108 @@ msgstr "" msgid "Unknown error %d" msgstr "Erreur %d inconnue" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -"Usage: %s [ -l ] [ -m min_jourss ] [ -M max_jours ]\n" -" [ -W avertissement ] [ -I inactif ] [ -E expire ] [ -d dernier_jour ]\n" -" utilisateur\n" +"Usage: %s [-l] [-m min_jourss] [-M max_jours] [-W avertissement]\n" +"\t[-I inactif] [-E expire] [-d dernier_jour] utilisateur\n" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -"Usage: %s [ -l ] [ -m min_jours ] [ -M max_jours ] [ -d dernier_jour ] " -"utilisateur\n" +"Usage: %s [-l] [-m min_jours] [-M max_jours] [-d dernier_jour] utilisateur\n" -#: src/chage.c:199 +#: src/chage.c:157 +#, fuzzy msgid "" -"Enter the new value, or press return for the default\n" +"Enter the new value, or press ENTER for the default\n" "\n" msgstr "" "Entrez la nouvelle valeur ou tapes Entrée pour la valeur par défaut\n" "\n" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "Age minimum du mot de passe" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "Age maximum du mot de passe" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "Dernier changement de mot de passe (YYYY-MM-DD)" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "Avertissement d'expiration de mot de passe" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "Mot de passe désactivé" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Date d'expiration du compte (YYYY-MM-DD)" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum :\t%ld\n" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maximum :\t%ld\n" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "Avertissement :\t%ld\n" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "Désactivé :\t%ld\n" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "Dernier changement :\t\t" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "Jamais\n" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "Expiration du mot de passe :\t" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 #, fuzzy msgid "Password Inactive:\t" msgstr "Mot de passe désactivé" @@ -341,581 +337,579 @@ msgstr "Mot de passe d #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 #, fuzzy msgid "Account Expires:\t" msgstr "Expiration du mot de passe :\t" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, fuzzy, c-format -msgid "%s: PAM authentication failed\n" -msgstr "%s : erreur lors de l'ajout de la méthode d'authentification\n" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "%s : ne pas include \"l\" avec les autres drapeaux\n" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "%s : permission refusée\n" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s : erreur lors de l'ajout de la méthode d'authentification\n" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "%s: impossible de vérouiller de fichier de mots de passe\n" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "%s: impossible d'ouvrir le fichier de mots de passe\n" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "%s: utilisateur inconnu: %s\n" -#: src/chage.c:592 -#, c-format -msgid "%s: can't lock shadow password file\n" +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" msgstr "%s : impossible de vérouiller le fichier shadow password\n" -#: src/chage.c:599 -#, c-format -msgid "%s: can't open shadow password file\n" +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" msgstr "%s : impossible d'ouvrir le fichier shadow password\n" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "Changement des informations sur l'age pour %s\n" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "%s : erreur lors du changement des champs\n" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "%s : impossible de mettre ŕ jour le fichier passwd\n" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "%s : impossible de mettre ŕ jour le fichier shadow password\n" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "Erreur durant la mise ŕ jour de l'entrée du mot de passe DBM.\n" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "%s : impossible de re-écrire le fichier shadow password\n" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "%s : impossible de re-écrire le fichier password\n" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, fuzzy, c-format msgid "%s: PAM chauthtok failed\n" msgstr "%s : impossible de dévérouiller le fichier\n" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "%s : aucune information sur l'age\n" - -#: src/chfn.c:107 -#, c-format +#: src/chfn.c:83 +#, fuzzy, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -"Usage: %s [ -f nom_complet ] [ -r no_bureau ] [ -w tel_bureau ]\n" -"\t[ -h tel_perso ] [ -o autre ] [ utilisateur ]\n" +"Usage: %s [-f nom_complet ] [-r no_bureau ] [-w tel_bureau ]\n" +"\t[-h tel_perso ] [-o autre ] [utilisateur ]\n" -#: src/chfn.c:111 -#, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" -msgstr "Usage: %s [ -f nom_complet ] [ -w no_bureau ] [ -h tel_bureau ]\n" +#: src/chfn.c:88 +#, fuzzy, c-format +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" +msgstr "Usage: %s [-f nom_complet ] [-w no_bureau ] [-h tel_bureau ]\n" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" +#: src/chfn.c:139 +msgid "Enter the new value, or press ENTER for the default\n" msgstr "Entrez la nouvelle valeur ou tapez Entrée pour le défaut\n" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "Nom complet" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "\tNom complet : %s\n" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "No de bureau" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "\tNo de bureau : %s\n" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "Téléphone travail" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "\tTéléphone travail : %s\n" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "Téléphone perso" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "\tTéléphone perso : %s\n" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "Autre" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "%s: Permission refusée.\n" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "%s: Utilisateur %s inconnu\n" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "%s: Impossible de déterminer votre nom d'utilisateur.\n" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "%s: impossible de changer l'utilisateur `%' sur le client NIS.\n" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "%s: `%s' est le maître NIS pour ce client.\n" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "Changement de l'information utilisateur pour %s\n" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "%s : nom non valide : \"%s\"\n" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "%s : no de bureau non valide : \"%s\"\n" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "%s : téléphone du bureau non valide : \"%s\"\n" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "%s : téléphone perso non valide : \"%s\"\n" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "%s : \"%s\" contient des caractčres non valide\n" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "%s: champs trop longs\n" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "Impossible de changer l'ID en root.\n" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "" "Impossible de vérouiller le fichier de mots de passe; essayez plus tard.\n" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "Impossible d'ouvrir le fichier de mots de passe.\n" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "%s: %s non trouvé dans /etc/passwd\n" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "Erreur durant la mise ŕ jour du mot de passe.\n" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "Impossible de valider le changement de mot de passe.\n" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "Impossible de dévérouiller le fichier de mots de passe.\n" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "usage: %s [-e]\n" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "%s: impossible de vérouiller le fichier shadow\n" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "%s: impossible d'ouvrir le fichier shadow\n" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "%s: ligne %d: ligne trop longue\n" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "%s: ligne %d: nouveau mot de passe manquant\n" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "%s: ligne %d: utilisateur %s inconnu\n" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "%s: ligne %d: impossible de mettre le mot de passe ŕ jour\n" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: erreur détectée; changements ignorés\n" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "%s: erreur lors de la mise ŕ jour du fichier shadow\n" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "%s: erreur lors de la mise ŕ jour du fichier de mots de passe\n" -#: src/chsh.c:105 -#, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" -msgstr "Usage: %s [ -s shell ] [ nom ]\n" +#: src/chsh.c:75 +#, fuzzy, c-format +msgid "Usage: %s [-s shell] [name]\n" +msgstr "Usage: %s [-s shell ] [nom ]\n" -#: src/chsh.c:120 +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "Entrez la nouvelle valeur ou tapez Entrée pour le défaut\n" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "Shell de login" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "Vous ne pouvez pas changer le shell de %s.\n" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "Changement du shell de login pour %s\n" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "%s: Entrée non valide : %s\n" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "%s n'est pas un shell valide.\n" -#: src/dpasswd.c:69 -#, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" -msgstr "Usage: %s [ -(a|d) ] shell\n" +#: src/dpasswd.c:52 +#, fuzzy, c-format +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "Usage: %s [-(a|d) ] shell\n" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "Mot de passe shell : " -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "Confirmez le mot de passe shell : " -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "%s : Les mots de passe ne correspondent pas, essayez encore.\n" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "%s: impossible de créer %s" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "%s : impossible d'ouvrir %s" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "%s : Shell %s non trouvé.\n" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" msgstr "Usage : expiry { -f | -c }\n" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "%s: AVERTISSEMENT! Devrait ętre set-UID root!\n" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "%s : utilisateur inconnu\n" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "usage: %s [-a|-u utilisateur] [-m max] [-r] [-t jours] [-l sec_ver]\n" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "Utilisateur %s inconnu\n" -#: src/faillog.c:215 +#: src/faillog.c:212 msgid "Username Failures Maximum Latest\n" msgstr "Utilisateur Échecs Maximum Dernier\n" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr " %s sur %s" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr " [%lds restant]" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr " [%lds verrou]" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "usage: %s [-r|-R] groupe\n" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr " %s [-a utilisateur] groupe\n" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr " %s [-d utilisateur] groupe\n" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr " %s [-A utilisateur,...] [-M utilisateur,...] groupe\n" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr " %s [-M utilisateur,...] groupe\n" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "%s : utilisateur %s inconnu\n" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "Permission refusée.\n" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "%s : mots de passe shadow nécessaires pour -A\n" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "Qui ętes vous?\n" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "groupe inconnu : %s\n" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "Ajout de l'utilisateur %s au groupe %s\n" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "Retrait de l'utilisateur %s du groupe %s\n" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "%s : membre %s inconnu\n" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "%s : N'est pas un tty\n" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "Changement du mot de passe pour le group %s\n" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "Nouveau mot de passe : " -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "Nouveau mot de passe (ŕ nouveau) : " -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "Ils ne sont pas identiques; essayez ŕ nouveau" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "%s: Essayez ŕ nouveau plus tard\n" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "%s : impossible d'obtenir le verrou\n" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "%s : impossible d'obtenir le verrou sur shadow\n" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "%s : impossible d'ouvrir le fichier\n" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "%s : impossible de mettre ŕ jour l'entrée\n" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "%s : impossible de mettre ŕ jour l'entrée shadow\n" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "%s : impossible de re-écrire le fichier\n" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "%s : impossible de re-écrire le fichier shadow\n" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "%s : impossible de dévérouiller le fichier\n" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "%s : impossible de mettre ŕ jours les fichiers DBM\n" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "%s : impossible de mettre ŕ jours les fichiers DBM shadow\n" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "usage: groupadd [-g gid [-o]] groupe\n" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "%s : erreur durant l'addition du nouveau groupe\n" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "%s : impossible d'ajouter une nouvelle entrée pour le groupe dbm\n" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "%s : le nom %s n'est pas unique\n" -#: src/groupadd.c:279 -#, c-format -msgid "%s: gid %ld is not unique\n" -msgstr "%s : le gid %ld n'est pas unique\n" +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s : l'uid %ld n'est pas unique\n" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "%s : impossible d'obtenir un gid unique\n" @@ -923,54 +917,54 @@ msgstr "%s : impossible d'obtenir un gid unique\n" #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "%s : %s n'est pas un nom de groupe valide\n" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "%s : groupe %s non valide\n" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "%s : -O requiert NAME=VALEUR\n" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "%s : impossible de re-écrire le fichier group\n" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "%s : impossible de re-écrire le fichier shadow group\n" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "%s : impossible de vérouiller le fichier group\n" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "%s : impossible d'ouvrir le fichier group\n" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "%s : impossible de vérouiller le fichier group\n" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "%s : impossible d'ouvrir le fichier shadow group\n" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "%s : le groupe %s existe\n" @@ -979,12 +973,12 @@ msgstr "%s : le groupe %s existe\n" msgid "usage: groupdel group\n" msgstr "usage: groupdel groupe\n" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "%s : erreur lors de retrait de l'entrée du groupe\n" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "%s : erreur lors du retrait de l'entrée dbm du groupe\n" @@ -994,7 +988,7 @@ msgstr "%s : erreur lors du retrait de l'entr msgid "%s: error removing shadow group entry\n" msgstr "%s : erreur lors du retrait de l'entrée shadow du groupe\n" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "%s : erreur lors du retrait de l'entrée dbm shadow du groupe\n" @@ -1007,130 +1001,130 @@ msgstr "%s : erreur lors du retrait de l'entr msgid "%s: cannot remove user's primary group.\n" msgstr "%s : impossible d'enlever l'utilisateur de son groupe primaire.\n" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "%s : le groupe %s n'existe pas\n" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "%s : le groupe %s est un groupe NIS\n" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "%s : %s est le maître NIS\n" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" msgstr "" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 #, fuzzy msgid "Unable to lock group file\n" msgstr "%s : impossible de vérouiller le fichier group\n" -#: src/groupmems.c:209 +#: src/groupmems.c:220 #, fuzzy msgid "Unable to open group file\n" msgstr "%s : impossible d'ouvrir le fichier group\n" -#: src/groupmems.c:229 +#: src/groupmems.c:240 #, fuzzy msgid "Cannot close group file\n" msgstr "%s : impossible d'ouvrir le fichier group\n" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "usage : groupmod [-g gid [-o]] [-n nom] groupe\n" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, c-format msgid "%s: %s not found in /etc/group\n" msgstr "%s : %s non trouvé dans /etc/group\n" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "%s : impossible d'ajouter une nouvelle entrée dbm shadow group\n" -#: src/groupmod.c:305 -#, c-format -msgid "%s: %ld is not a unique gid\n" +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" msgstr "%s : %ld n'est pas un gid unique\n" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "%s : %s n'est pas un nom unique\n" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "utilisateur %s inconnu\n" -#: src/grpck.c:98 +#: src/grpck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" -msgstr "Usage : %s [ -r ] ] groupe [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "Usage : %s [-r] [-s] [groupe [gshadow ] ]\n" -#: src/grpck.c:100 +#: src/grpck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" -msgstr "Usage: %s [ -r ] [ groupe ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "Usage: %s [-r] [-s] [groupe ]\n" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "Non" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" msgstr "" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "%s : impossible de vérouiller le fichier %s\n" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "%s : impossible d'ouvrir le fichier %s\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "entrée dans le fichier group non valide\n" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "effacer la ligne `%s'? " @@ -1139,35 +1133,30 @@ msgstr "effacer la ligne `%s'? " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "entrée de groupe dupliquée\n" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "nom de groupe `%s' non valide\n" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "groupe %s : mauvais GID (%d)\n" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "groupe %s : pas d'utilisateur %s\n" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "effacer le membre `%s'? " #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "entrée non valide dans le fichier shadow group\n" @@ -1175,204 +1164,202 @@ msgstr "entr #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "entrée dupliquée dans le fichier shadow group\n" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "aucune entrée dans le fichier group correspondante\n" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "groupe shadow %s : aucun administrateur %s\n" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "effacer le membre administrateur `%s' ?" -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "groupe shadow %s : aucun utilisateur %s\n" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "%s : impossible de mettre ŕ jour le fichier %s\n" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "%s : les fichiers ont été mis ŕ jour; exécutez mkpasswd\n" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" -msgstr "Usage : id [ -a ]\n" +#: src/id.c:53 +#, fuzzy +msgid "usage: id [-a]\n" +msgstr "Usage : id [-a ]\n" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "Usage : id\n" -#: src/id.c:127 -#, c-format -msgid "uid=%d(%s)" +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" msgstr "uid=%d(%s)" -#: src/id.c:129 -#, c-format -msgid "uid=%d" +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" msgstr "uid=%d" -#: src/id.c:133 -#, c-format -msgid " gid=%d(%s)" +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" msgstr " gid=%d(%s)" -#: src/id.c:135 -#, c-format -msgid " gid=%d" +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" msgstr " gid=%d" -#: src/id.c:145 -#, c-format -msgid " euid=%d(%s)" +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" msgstr " euid=%d(%s)" -#: src/id.c:147 -#, c-format -msgid " euid=%d" +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" msgstr " euid=%d" -#: src/id.c:152 -#, c-format -msgid " egid=%d(%s)" +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" msgstr " egid=%d(%s)" -#: src/id.c:154 -#, c-format -msgid " egid=%d" +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" msgstr " egid=%d" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr " groupes=" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "Utilisateur Port Venant de Derničre\n" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "Utilisateur Port Derničre\n" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "**Jamais connecté**" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "Usage : %s [-p] [nom]\n" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr " %s [-p] [-h hôte] [-f nom]\n" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr " %s [-p] -r hôte\n" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "Heure de connexion non valide\n" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" @@ -1380,7 +1367,7 @@ msgstr "" "\n" "Systčme fermé pour maintenance\n" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1388,7 +1375,7 @@ msgstr "" "\n" "[Disconnexion court-circuitée -- login root authorisé.]\n" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" @@ -1397,17 +1384,17 @@ msgstr "" "\n" "Tentative de connexion: délai de %s secondes dépassé.\n" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr " sur `%.100s' ŕ partir de `%.200s'" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr " sur `%.100s'" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" @@ -1416,238 +1403,234 @@ msgstr "" "\n" "% login: " -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "login: " -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "Login incorrect" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "Avertissement: login réactivé aprčs une désactivation temporaire.\n" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "Derničre connexion : le %s sur %s" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "Derničre connexion : le %.19s sur %s" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr " ŕ partir de %.*s" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "Démarrage de rad_login\n" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "%s : pas de base de données DBM sur le systčme - aucune action prise\n" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "Usage : %s [ -vf ] [ -p|g|sp|sg ] fichier\n" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "Usage : %s [ -vf ] [ -p|g|sp ] fichier\n" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "Usage : %s [ -vf ] [ -p|g ] fichier\n" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "%s : impossible d'écraser le fichier %s\n" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "%s : impossible d'ouvrir les fichiers DBM pour %s\n" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 #, fuzzy msgid " is too long\n" msgstr "%s: champs trop longs\n" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "%s : erreur lors l'analyse de la ligne \"%s\"\n" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" msgstr "" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "" -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "%d entrées ajoutées, la plus longue fut %d\n" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "Usage : newgrp [ - ] [ groupe ]\n" +#: src/mkpasswd.c:392 +#, fuzzy, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "Usage : %s [-vf ] [-p|g|sp|sg ] fichier\n" -#: src/newgrp.c:68 +#: src/mkpasswd.c:395 +#, fuzzy, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "Usage : %s [-vf ] [-p|g|sp ] fichier\n" + +#: src/mkpasswd.c:398 +#, fuzzy, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "Usage : %s [-vf ] [-p|g ] fichier\n" + +#: src/newgrp.c:61 #, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "Usage : sg groupe [ commande ]\n" +msgid "usage: newgrp [-] [group]\n" +msgstr "Usage : newgrp [- ] [groupe ]\n" -#: src/newgrp.c:125 -#, c-format -msgid "unknown uid: %d\n" +#: src/newgrp.c:63 +#, fuzzy +msgid "usage: sg group [[-c] command]\n" +msgstr "Usage : sg groupe [commande ]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" msgstr "uid inconnue : %d\n" -#: src/newgrp.c:201 -#, c-format -msgid "unknown gid: %ld\n" +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" msgstr "gid inconnu : %ld\n" -#: src/newgrp.c:245 -#, c-format -msgid "unknown gid: %d\n" -msgstr "gid inconnu : %d\n" - -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "Désolé ;-)\n" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "trop de groupes\n" -#: src/newusers.c:82 -#, c-format -msgid "Usage: %s [ input ]\n" -msgstr "Usage : %s [ entrée ] \n" +#: src/newusers.c:78 +#, fuzzy, c-format +msgid "Usage: %s [input]\n" +msgstr "Usage : %s [entrée ] \n" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "%s : impossible de vérouiller /etc/passwd.\n" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "%s : impossible de vérouiller les fichiers, essayez plus tard\n" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "%s : impossible d'ouvrir les fichiers\n" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s : ligne %d : ligne non valide\n" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "%s : ligne %d : impossible de créer le GID\n" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "%s : ligne %d : impossible de créer le GID\n" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "%s : ligne %d : impossible de trouver l'utilisateur %s\n" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s : ligne %d : impossible de mettre le mot de passe ŕ jour\n" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "%s : ligne %d : échec de mkdir\n" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "%s : ligne %d : échec de chown\n" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "%s : ligne %d : impossible de mettre l'entrée ŕ jour\n" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "%s : erreur lors de la mise ŕ jour des fichiers\n" -#: src/passwd.c:239 -#, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" -msgstr "Usage : %s [ -f | -s ] [ nom ]\n" +#: src/passwd.c:174 +#, fuzzy, c-format +msgid "usage: %s [-f|-s] [name]\n" +msgstr "Usage : %s [-f|-s] [nom ]\n" -#: src/passwd.c:242 -#, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" -msgstr " %s [ -x max ] [ -n min ] [ -w avert ] [ -i inact ] nom\n" +#: src/passwd.c:178 +#, fuzzy, c-format +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x max ] [-n min ] [-w avert ] [-i inact ] nom\n" -#: src/passwd.c:245 -#, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" msgstr " %s { -l | -u | -d | -S | -e } nom\n" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "" "L'utilisateur %s a une clé TCFS, son ancien mot de passe est nécessaire.\n" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "Vous pouvez utiliser l'option -t pour forcer le changement.\n" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "Ancien mot de passe : " -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "Mot de passe incorrect pour `%s'\n" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "Avertissement : l'utilisateur %s a une clé TCFS.\n" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" @@ -1657,15 +1640,15 @@ msgstr "" "caractčres). Utilisez une combinaison de lettres en majuscule/minuscule\n" "et de nombres.\n" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "Nouveau mot de passe : " -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "Essaye encore...\n" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" @@ -1674,92 +1657,92 @@ msgstr "" "Avertissement : mot de passe simpliste (tapez le ŕ nouveau pour l'utiliser\n" "quand męme).\n" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "Ils ne sont pas identique; essaye encore...\n" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "Le mot de passe pour %s ne peut ętre changé.\n" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "Désolé, le mot de passe pour %s ne peux pas encore ętre changé.\n" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "%s : plus de mémoire\n" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "" "Impossible de vérouiller la base de données de clés TCFS; essayez ŕ\n" "nouveau plus tard\n" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "Impossible d'ouvrir la base de clés TCFS.\n" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "Erreur lors de la mise ŕ jour de la base de clés TCFS.\n" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "Impossible de valider les changements TCFS.\n" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "%s : Impossible d'exécuter %s" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "%s : Permission refusée\n" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "Vous ne pouvez pas changer le mot de passe de %s.\n" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "Changement du mot de passe de %s\n" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "Le mot de passe pour %s est inchangé.\n" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "Mot de passe changé.\n" -#: src/pwck.c:98 +#: src/pwck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" -msgstr "Usage : %s [ -qr ] [ passwd [ shadow ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "Usage : %s [-q] [-r] [-s] [passwd [shadow ] ]\n" -#: src/pwck.c:100 +#: src/pwck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" -msgstr "Usage : %s [ -qr ] [ passwd ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "Usage : %s [-q] [-r] [-s] [passwd ]\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "entrée non valide dans le fichier password\n" @@ -1767,32 +1750,24 @@ msgstr "entr #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "entrée dupliquée dans password\n" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "nom d'utilisateur `%s' non valide\n" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "utilisateur %s : mauvais UID (%d)\n" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 -#, c-format -msgid "user %s: no group %d\n" +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" msgstr "utilisateur %s : aucun groupe %d\n" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "utilisateur %s : le répertoire %s n'existe pas\n" @@ -1800,16 +1775,16 @@ msgstr "utilisateur %s : le r #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "utilisateur %s : le programme %s n'existe pas\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "entrée shadow password non valide\n" @@ -1817,7 +1792,7 @@ msgstr "entr #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "entrée shadow password dupliquée\n" @@ -1825,71 +1800,71 @@ msgstr "entr #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "aucune entrée correspondante dans le fichier password\n" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "" "utilisateur %s : date du dernier changement de mot de passe dans le futur\n" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "%s : impossible de vérouiller le fichier passwd\n" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "%s : impossible d'ouvrir le fichier passwd\n" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "%s : impossible d'enlever l'entrée shadow pour %s\n" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "%s : impossible de mettre ŕ jour le mot de passe de %s\n" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "%s : impossible de mettre ŕ jour le fichier shadow\n" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "%s : impossible de mettre ŕ jour le fichier passwd\n" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "%s : Les mots de passe shadow ne sont pas configurés.\n" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "%s : impossible de mettre ŕ jour l'entrée %s\n" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "%s : impossible d'effacer le fichier shadow\n" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "Désolé ;-)" -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s : doit ętre lancé ŕ partir d'un terminal\n" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "%s : pam_start : erreur %d\n" @@ -1899,18 +1874,17 @@ msgstr "%s : pam_start : erreur %d\n" msgid "Unknown id: %s\n" msgstr "ID inconnue : %s\n" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, fuzzy, c-format msgid "You are not authorized to su %s\n" msgstr "Vous n'ętes pas authorisés " #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "(Entrez votre propre mot de passe.)" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" @@ -1919,28 +1893,23 @@ msgstr "" "%s: %s\n" "(Ignoré)\n" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "Pas de shell\n" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "Pas de fichier de mot de passe\n" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "Pas d'entrée pour le mot de passe de 'root'\n" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1951,7 +1920,7 @@ msgstr "" "(ou donnez le mot de passe de root pour la maintenance) : " #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "Entrée du systčme en mode maintenance\n" @@ -1960,510 +1929,510 @@ msgstr "Entr msgid "%s: rebuild the group database\n" msgstr "%s : reconstruction de la base de données des groupes\n" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "%s : reconstruction de la base de données des groupes shadow\n" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "%s : argument numérique `%s' non valide\n" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "%s : gid %s inconnu\n" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "%s : groupe %s inconnu\n" -#: src/useradd.c:426 -#, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "group=%s,%ld rép_base=%s skel=%s\n" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "shell=%s " -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "inactif=%ld expire=%s" -#: src/useradd.c:435 -#, c-format -msgid "GROUP=%ld\n" +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" msgstr "GROUP=%ld\n" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "HOME=%s\n" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "INACTIVE=%ld\n" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "EXPIRE=%s\n" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "SHELL=%s\n" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "SKEL=%s\n" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s : impossible de créer un nouveau fichier de défauts\n" -#: src/useradd.c:488 +#: src/useradd.c:503 #, fuzzy, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s : impossible de créer un nouveau fichier de défauts\n" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "%s : rename : %s" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "%s : le groupe `%s' est un groupe NIS.\n" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s : trop de groupes spécifiés (max %d).\n" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "Usage : %s\t[-u uid [-o]] [-g groupe] [-G groupe,...] \n" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "\t\t[-d home] [-s shell] [-c commentaire] [-m [-k template]]\n" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 msgid "[-f inactive] [-e expire ] " msgstr "[-f inactif] [-e expire ] " -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "[-A program] " -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "[-p mot-de-passe] nom\n" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr " %s\t-D [-g groupe] [-b base] [-s shell]\n" -#: src/useradd.c:736 +#: src/useradd.c:756 msgid "\t\t[-f inactive] [-e expire ]\n" msgstr "\t\t[-f inactif] [-e expire ]\n" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "%s : erreur lors du vérouillage du fichier de groupe\n" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "%s : erreur lors d'ouverture du fichier de groupe\n" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "%s : erreur lors du vérouillage du fichier shadow group\n" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "%s : erreur lors de l'ouverture du fichier shadow group\n" -#: src/useradd.c:1019 -#, c-format -msgid "%s: uid %d is not unique\n" -msgstr "%s : l'uid %d n'est pas unique\n" +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s : l'uid %ld n'est pas unique\n" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "%s : impossible d'obtenir un uid unique\n" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "%s : champs `%s' non valide\n" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "%s : répertoire de base non valide `%s'\n" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "%s : commentaire `%s' non valide\n" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "%s : répertoire personnel `%s' non valide\n" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "%s : date `%s' non valide\n" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "%s : mots de passe shadow nécessaires pour -e\n" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "%s : mots de passe shadow nécessaires pour -f\n" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "%s : shell `%s' non valide\n" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "%s : nom d'utilisateur `%s' non valide\n" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "%s : impossible de reécrire le fichier de mots de passe\n" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "%s : impossible de reécrire le fichier shadow\n" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "%s : impossible de vérouiller le fichier de mots de passe\n" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "%s : impossible d'ouvrir le fichier de mots de passe\n" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "%s : impossible de vérouiller le fichier de mots de passe\n" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "%s : impossible d'ouvrir le fichier shadow\n" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "%s : erreur lors de l'ajout de la méthode d'authentification\n" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "%s : erreur lors de l'ajout de la nouvelle entrée\n" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "%s : erreur lors de la mise ŕ jour de l'entrée dbm\n" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "%s : erreur lors de l'ajout de la nouvelle entrée shadow\n" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "%s : erreur lors de la mise ŕ jour de l'entrée shadow passwd dbm\n" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s : impossible de créer le répertoire %s\n" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "%s : l'utilisateur %s existe\n" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" msgstr "" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "" "%s : avertissement : CREATE_HOME non supporté, utilisez -m ŕ la place.\n" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "Usage : %s [-r] nom\n" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "%s : erreur lors de la mise ŕ jour de l'entrée group\n" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "%s : impossible de mettre ŕ jour l'entrée dbm group\n" -#: src/userdel.c:221 +#: src/userdel.c:219 #, fuzzy, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "%s : impossible de mettre ŕ jour l'entrée dbm group\n" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "%s : impossible de reécrire le fichier de clés TCFS\n" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "%s : impossible de vérouiller le fichier de clés TCFS\n" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "%s : impossible d'ouvrir le fichier de clés TCFS\n" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "%s : impossible d'ouvrir le fichier group\n" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "%s : impossible d'ouvrir le fichier shadow group\n" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "%s : erreur lors de l'effacement de l'authentification\n" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "%s : erreur lors de la suppression de l'entrée dans /etc/passwd\n" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "%s : erreur lors de la suppression de l'entrée dans /etc/shadow\n" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "%s : erreur lors de l'effacement de l'entrée TCFS\n" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "%s : erreur lors de l'effacement de l'entrée dbm du mot de passe\n" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "%s : erreur lors de l'effacement de l'entrée shadow passwd dbm\n" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s : l'utilisateur %s est connecté\n" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "%s : avertissement : %s n'appartient pas ŕ %s, non enlevé\n" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "%s : impossible d'enlever " -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "%s : l'utilisateur %s n'existe pas\n" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "%s : le compte %s est un compte NIS\n" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "%s : %s n'appartient pas ŕ %s, non enlevé\n" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "" "%s : répertoire %s non enlevé (cela enléverait le répertoire personnel de %" "s)\n" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "%s : erreur lors de l'effacement du répertoire %s\n" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "\t\t[-d home [-m]] [-s shell] [-c commentaire] [-l nouveau_nom]\n" -#: src/usermod.c:330 +#: src/usermod.c:332 msgid "[-A {DEFAULT|program},... ] " msgstr "[-A {DÉFAUT|programme},... ] " -#: src/usermod.c:332 +#: src/usermod.c:334 #, fuzzy msgid "[-p passwd] [-L|-U] name\n" msgstr "[-p mot-de-passe] nom\n" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "%s : plus de mémoire pour update_group\n" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "%s : plus de mémoire pour update_gshadow\n" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "%s : aucun drapeau donné\n" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "%s : mots de passe shadow nécessaires pour -e ou -f\n" -#: src/usermod.c:1215 -#, c-format -msgid "%s: uid %ld is not unique\n" +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" msgstr "%s : l'uid %ld n'est pas unique\n" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "%s : erreur lors de l'effacement de la méthode d'authentification\n" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "%s : erreur lors du changement de la méthode d'authentification\n" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "%s : erreur lors du changement de l'entrée dans /etc/passwd\n" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "%s : erreur lors de l'effacement du mot de passe\n" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "%s : le répertoire %s existe\n" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "%s : impossible de créer %s\n" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "%s : impossible de changer le propričtaire de %s\n" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "%s : impossible de renommer le répertoire %s en %s\n" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s : avertissement : %s n'appartient pas ŕ %s\n" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "échec du changement de propričtaire de la mailbox" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "échec du renommage de la mailbox" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" @@ -2472,20 +2441,20 @@ msgstr "" "\n" "%s : %s est inchangé\n" -#: src/vipw.c:127 +#: src/vipw.c:132 msgid "Couldn't lock file" msgstr "Impossible de vérouiller le fichier" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" msgstr "Impossible de faire une sauvegarde" -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "%s : impossible de restaurer %s : %s (vos changements sont dans %s)\n" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" @@ -2495,5 +2464,24 @@ msgstr "" "`vipw' édite /etc/passwd `vipw -s' édite /etc/shadow\n" "`vigr' édite /etc/group `vigr -s' édite /etc/gshadow\n" +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s : le gid %ld n'est pas unique\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "gid inconnu : %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s : l'uid %d n'est pas unique\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "utilisateur %s : mauvais UID (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s : aucune information sur l'age\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "groupe %s : mauvais GID (%d)\n" + #~ msgid "%s: permission denied (shell).\n" #~ msgstr "%s : permission refusée (shell).\n" diff --git a/po/ja.gmo b/po/ja.gmo new file mode 100644 index 00000000..ccd1ff53 Binary files /dev/null and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..90024d26 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,2475 @@ +# Shadow utils japanese message catalog +# Copyright (C) YEAR Free Software Foundation, Inc. +# Yasuyuki Furukawa , 2000. +# +msgid "" +msgstr "" +"Project-Id-Version: shadow 1990827\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" +"PO-Revision-Date: 2000-06-18 120:22+0900\n" +"Last-Translator: Yasuyuki Furukawa \n" +"Language-Team: Japanese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: libmisc/addgrps.c:60 +#, c-format +msgid "Warning: unknown group %s\n" +msgstr "·Ůąđ: ÉÔĚŔ¤ĘĄ°ĄëˇĽĄ× %s¤Ç¤ą\n" + +#: libmisc/addgrps.c:71 +msgid "Warning: too many groups\n" +msgstr "·Ůąđ: Ą°ĄëˇĽĄ×¤¬Âż¤ą¤®¤Ţ¤ą\n" + +#: libmisc/age.c:77 +msgid "Your password has expired." +msgstr "¤˘¤Ę¤ż¤ÎĄŃĄąĄďˇĽĄÉ¤Ď´ü¸Â¤¬ŔÚ¤ě¤Ţ¤·¤ż." + +#: libmisc/age.c:80 +msgid "Your password is inactive." +msgstr "¤˘¤Ę¤ż¤ÎĄŃĄąĄďˇĽĄÉ¤Ďinactive¤Ç¤ą." + +#: libmisc/age.c:83 +msgid "Your login has expired." +msgstr "¤˘¤Ę¤ż¤ÎĄíĄ°Ą¤Ąó¤Ď´ü¸Â¤¬ŔÚ¤ě¤Ţ¤·¤ż." + +#: libmisc/age.c:96 +msgid " Contact the system administrator.\n" +msgstr " Ą·ĄąĄĆĄŕ´ÉÍýĽÔ¤ČÁęĂ̤·¤Ć¤Ż¤Ŕ¤µ¤¤.\n" + +#: libmisc/age.c:99 +msgid " Choose a new password.\n" +msgstr " ż·¤·¤¤ĄŃĄąĄďˇĽĄÉ¤ňÁŞÂň¤·¤Ć¤Ż¤Ŕ¤µ¤¤.\n" + +#: libmisc/age.c:176 +#, c-format +msgid "Your password will expire in %ld days.\n" +msgstr "¤˘¤Ę¤ż¤ÎĄŃĄąĄďˇĽĄÉ¤Ď%ldĆüĂć¤Ë´ü¸Â¤¬ŔÚ¤ě¤Ţ¤ą.\n" + +#: libmisc/age.c:178 +msgid "Your password will expire tomorrow.\n" +msgstr "¤˘¤Ę¤ż¤ÎĄŃĄąĄďˇĽĄÉ¤ĎĚŔĆü¤Ë´ü¸Â¤¬ŔÚ¤ě¤Ţ¤ą.\n" + +#: libmisc/age.c:180 +msgid "Your password will expire today.\n" +msgstr "¤˘¤Ę¤ż¤ÎĄŃĄąĄďˇĽĄÉ¤ĎËÜĆü´ü¸ÂŔÚ¤ě¤Ç¤ą.\n" + +#: libmisc/chowntty.c:113 +#, c-format +msgid "Unable to change tty %s" +msgstr "TTY %s¤ňĘŃąą¤Ç¤­¤Ţ¤»¤ó" + +#: libmisc/env.c:160 +msgid "Environment overflow\n" +msgstr "´Ä¶­ĄŞˇĽĄĐˇĽĄŐĄíˇĽ¤Ç¤ą\n" + +#: libmisc/env.c:200 +#, c-format +msgid "You may not change $%s\n" +msgstr "$%s¤ňĘŃąą¤Ç¤­¤Ţ¤»¤ó\n" + +#: libmisc/failure.c:238 +#, c-format +msgid "%d %s since last login. Last was %s on %s.\n" +msgstr "şÇ¸ĺ¤ÎĄíĄ°Ą¤Ąó¤«¤é %d %s. şÇ¸ĺ¤ÎĄíĄ°Ą¤Ąó¤Ď %s, ĄŢĄ·Ąó %s.\n" + +#: libmisc/failure.c:239 +msgid "failures" +msgstr "ĽşÇÔ" + +#: libmisc/failure.c:239 +msgid "failure" +msgstr "ĽşÇÔ" + +#: libmisc/limits.c:397 +msgid "Too many logins.\n" +msgstr "ĄíĄ°Ą¤Ąó¤¬Âż¤ą¤®¤Ţ¤ą.\n" + +#: libmisc/login_desrpc.c:63 +#, c-format +msgid "Password does not decrypt secret key for %s.\n" +msgstr "ĄŃĄąĄďˇĽĄÉ¤Ď%s¤ÎČëĚ©¸°¤ň°ĹąćÉü¸µ¤Ç¤­¤Ţ¤»¤ó.\n" + +#: libmisc/login_desrpc.c:69 +#, c-format +msgid "Could not set %s's secret key: is the keyserv daemon running?\n" +msgstr "%s¤ÎČëĚ©¸°¤ňŔßÄę¤Ç¤­¤Ţ¤»¤ó¤Ç¤·¤ż: keyservĄÇˇĽĄâĄó¤¬µŻĆ°¤·¤Ć¤Ţ¤ą¤«?\n" + +#: libmisc/mail.c:62 libmisc/mail.c:77 +msgid "You have new mail." +msgstr "ż·¤·¤¤ĄáˇĽĄë¤¬Íč¤Ć¤¤¤Ţ¤ą." + +#: libmisc/mail.c:73 +msgid "No mail." +msgstr "ĄáˇĽĄë¤Ď¤˘¤ę¤Ţ¤»¤ó." + +#: libmisc/mail.c:75 +msgid "You have mail." +msgstr "ĄáˇĽĄë¤¬¤˘¤ę¤Ţ¤ą." + +#: libmisc/obscure.c:281 src/passwd.c:244 +#, c-format +msgid "Bad password: %s. " +msgstr "ÉÔŔµ¤ĘĄŃĄąĄďˇĽĄÉ¤Ç¤ą: %s." + +#: libmisc/pam_pass.c:42 +#, c-format +msgid "passwd: pam_start() failed, error %d\n" +msgstr "" + +#: libmisc/pam_pass.c:49 +#, c-format +msgid "passwd: %s\n" +msgstr "ĄŃĄąĄďˇĽĄÉ: %s\n" + +#: libmisc/setupenv.c:211 +#, c-format +msgid "Unable to cd to \"%s\"\n" +msgstr "\"%s\"¤ŘĄÇĄŁĄěĄŻĄČĄęĘŃąą¤Ç¤­¤Ţ¤»¤ó\n" + +#: libmisc/setupenv.c:219 +msgid "No directory, logging in with HOME=/" +msgstr "ĄÇĄŁĄěĄŻĄČĄę¤¬¤˘¤ę¤Ţ¤»¤ó. HOME=/ ¤Č¤·¤ĆĄíĄ°Ą¤Ąó¤·¤Ţ¤ą" + +#: libmisc/shell.c:78 +#, c-format +msgid "Executing shell %s\n" +msgstr "Ą·Ą§Ąë%s¤ÎĽÂąÔĂć\n" + +#. +#. * Obviously something is really wrong - I can't figure out +#. * how to execute this stupid shell, so I might as well give +#. * up in disgust ... +#. +#: libmisc/shell.c:122 +#, c-format +msgid "Cannot execute %s" +msgstr "%s¤ňĽÂąÔ¤Ç¤­¤Ţ¤»¤ó" + +#: libmisc/suauth.c:99 +msgid "Access to su to that account DENIED.\n" +msgstr "su¤Ç¤ł¤ÎĄ˘Ą«Ą¦ĄóĄČ¤ŘĄ˘ĄŻĄ»Ąą¤ą¤ë¤ł¤Č¤ňµńČݤµ¤ě¤Ţ¤·¤ż.\n" + +#: libmisc/suauth.c:106 +msgid "Password authentication bypassed.\n" +msgstr "ĄĐĄ¤ĄĐĄą¤Ë¤č¤Ă¤ĆĄŃĄąĄďˇĽĄÉ¤ňǧľÚ¤·¤Ţ¤ą.\n" + +#: libmisc/suauth.c:113 +msgid "Please enter your OWN password as authentication.\n" +msgstr "ǧľÚ¤Č¤·¤Ć, ¤˘¤Ę¤ż˝ęÍ­¤ÎĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤ·¤Ć¤Ż¤Ŕ¤µ¤¤.\n" + +#: libmisc/sub.c:61 +#, c-format +msgid "Invalid root directory \"%s\"\n" +msgstr "ÉÔŔµ¤ĘĄëˇĽĄČĄÇĄŁĄěĄŻĄČĄę \"%s\" ¤Ç¤ą \n" + +#: libmisc/sub.c:73 +#, c-format +msgid "Can't change root directory to \"%s\"\n" +msgstr "ĄëˇĽĄČĄÇĄŁĄěĄŻĄČĄę¤ň \"%s\"¤ŘĘŃąą¤Ç¤­¤Ţ¤»¤ó\n" + +#: libmisc/xmalloc.c:28 +#, c-format +msgid "malloc(%d) failed\n" +msgstr "malloc(%d) ¤ËĽşÇÔ¤·¤Ţ¤·¤ż\n" + +#: lib/dialchk.c:71 +msgid "Dialup Password: " +msgstr "ĄŔĄ¤Ą˘ĄëĄ˘ĄĂĄ×ĄŃĄąĄďˇĽĄÉ: " + +#: lib/getdef.c:276 +msgid "Could not allocate space for config info.\n" +msgstr "ŔßÄęľđĘóÍѤζő¤­ÍĆÎ̤¬łÎĘݤǤ­¤Ţ¤»¤ó¤Ç¤·¤ż.\n" + +#. +#. * Item was never found. +#. +#: lib/getdef.c:330 +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "ŔßÄꥨĄéˇĽ - ÉÔĚŔ¤ĘĄ˘Ą¤ĄĆĄŕ '%s'¤Ç¤ą (notify administrator)\n" + +#: lib/getdef.c:417 +#, c-format +msgid "error - lookup '%s' failed\n" +msgstr "" + +#: lib/getdef.c:425 +#, c-format +msgid "%s not found\n" +msgstr "%s¤Ď¸«ÉŐ¤«¤ę¤Ţ¤»¤ó\n" + +#. +#. * get the password from her, and set the salt for +#. * the decryption from the group file. +#. +#: lib/pwauth.c:54 src/newgrp.c:348 +msgid "Password: " +msgstr "ĄŃĄąĄďˇĽĄÉ: " + +#: lib/pwauth.c:56 +#, c-format +msgid "%s's Password: " +msgstr "%s¤ÎĄŃĄąĄďˇĽĄÉ: " + +#: lib/pwauth.c:270 +msgid "(Echo on) " +msgstr "" + +#: lib/strerror.c:20 +#, c-format +msgid "Unknown error %d" +msgstr "ÉÔĚŔ¤ĘĄ¨ĄéˇĽ %d" + +#: src/chage.c:116 +#, c-format +msgid "" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" +msgstr "" +"»ČÍŃˡ: %s [-l] [-m şÇľ®Ćüżô] [-M şÇÂçĆüżô] [-W ·Ůąđ]\n" +"\t[-I ̵¸ú] [-E ´ü¸ÂŔÚ¤ě] [-d şÇ¸ĺĆü] ĄćˇĽĄ¶\n" + +#: src/chage.c:122 +#, c-format +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" +msgstr "»ČÍŃˡ: %s [-l] [-m şÇľ®Ćüżô] [-M şÇÂçĆüżô] [-d şÇ¸ĺĆü] ĄćˇĽĄ¶\n" + +#: src/chage.c:157 +#, fuzzy +msgid "" +"Enter the new value, or press ENTER for the default\n" +"\n" +msgstr "" +"ż·¤·¤¤ĂͤňĆţÎϤ·¤Ć¤Ż¤Ŕ¤µ¤¤, ɸ˝ŕŔßÄęĂͤňÍřÍѤą¤ë¤Ë¤ĎĄęĄżˇĽĄó¤ň˛ˇ¤·¤Ć¤Ż¤Ŕ¤µ" +"¤¤.\n" +"\n" + +#: src/chage.c:160 +msgid "Minimum Password Age" +msgstr "şÇľ®ĄŃĄąĄďˇĽĄÉĘŃąąÉÔ˛ÄÇ˝Ćüżô" + +#: src/chage.c:166 +msgid "Maximum Password Age" +msgstr "şÇÂçĄŃĄąĄďˇĽĄÉĘŃąą˛ÄÇ˝Ćüżô" + +#: src/chage.c:174 +msgid "Last Password Change (YYYY-MM-DD)" +msgstr "şÇ¸ĺĄŃĄąĄďˇĽĄÉĘŃąąĆüÉŐ (YYYY-MM-DD)" + +#: src/chage.c:183 +msgid "Password Expiration Warning" +msgstr "ĄŃĄąĄďˇĽĄÉ´ü¸ÂŔÚ¤ě·ŮąđĆüżô" + +#: src/chage.c:189 +msgid "Password Inactive" +msgstr "ĄŃĄąĄďˇĽĄÉ̵¸úĆüżô" + +#: src/chage.c:197 +msgid "Account Expiration Date (YYYY-MM-DD)" +msgstr "Ą˘Ą«Ą¦ĄóĄČ´ü¸ÂŔÚ¤ěĆüÉŐ (YYYY-MM-DD)" + +#. +#. * Start with the easy numbers - the number of days before the +#. * password can be changed, the number of days after which the +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. +#. +#: src/chage.c:248 +#, c-format +msgid "Minimum:\t%ld\n" +msgstr "şÇľ®:\t%ld\n" + +#: src/chage.c:249 +#, c-format +msgid "Maximum:\t%ld\n" +msgstr "şÇÂç:\t%ld\n" + +#: src/chage.c:251 +#, c-format +msgid "Warning:\t%ld\n" +msgstr "·Ůąđ:\t%ld\n" + +#: src/chage.c:252 +#, c-format +msgid "Inactive:\t%ld\n" +msgstr "̵¸ú:\t%ld\n" + +#. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. +#. +#: src/chage.c:260 +msgid "Last Change:\t\t" +msgstr "şÇ¶á¤ÎĘŃąą:\t\t" + +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 +msgid "Never\n" +msgstr "¤Ę¤·:\n" + +#. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. +#. +#: src/chage.c:273 +msgid "Password Expires:\t" +msgstr "ĄŃĄąĄďˇĽĄÉ´ü¸Â:\t" + +#. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. +#. +#: src/chage.c:290 +msgid "Password Inactive:\t" +msgstr "ĄŃĄąĄďˇĽĄÉ̵¸ú:\t" + +#. +#. * The account will expire on the given date regardless of the +#. * password expiring or not. +#. +#: src/chage.c:304 +msgid "Account Expires:\t" +msgstr "Ą˘Ą«Ą¦ĄóĄČ´ü¸ÂŔÚ¤ě:\t" + +#: src/chage.c:468 +#, c-format +msgid "%s: do not include \"l\" with other flags\n" +msgstr "%s: Âľ¤ÎĄŐĄéĄ°¤Î¤ż¤á \"l\" ĄŞĄ×Ą·ĄçĄó¤Ď´Ţ¤Ţ¤»¤ë¤ł¤Č¤¬¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chage.c:481 src/chage.c:652 src/login.c:516 +#, c-format +msgid "%s: permission denied\n" +msgstr "%s: ¸˘¸Â¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "ĄĐĄ¤ĄĐĄą¤Ë¤č¤Ă¤ĆĄŃĄąĄďˇĽĄÉ¤ňǧľÚ¤·¤Ţ¤ą.\n" + +#: src/chage.c:533 src/chpasswd.c:157 +#, c-format +msgid "%s: can't lock password file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chage.c:544 src/chpasswd.c:162 +#, c-format +msgid "%s: can't open password file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤¬ł«¤±¤Ţ¤»¤ó\n" + +#: src/chage.c:552 +#, c-format +msgid "%s: unknown user: %s\n" +msgstr "%s: ÉÔĚŔ¤ĘĄćˇĽĄ¶¤Ç¤ą: %s\n" + +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" +msgstr "Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/chage.c:674 +#, c-format +msgid "Changing the aging information for %s\n" +msgstr "%s¤Î´ü¸ÂľđĘó¤ňĘŃąąĂć\n" + +#: src/chage.c:677 +#, c-format +msgid "%s: error changing fields\n" +msgstr "%s: ąŕĚÜĘŃąą¤ÇĄ¨ĄéˇĽ¤¬µŻ¤ł¤ę¤Ţ¤·¤ż\n" + +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 +#, c-format +msgid "%s: can't update password file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňąąż·¤·¤Ţ¤»¤ó\n" + +#: src/chage.c:737 src/pwunconv.c:168 +#, c-format +msgid "%s: can't update shadow password file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňąąż·¤·¤Ţ¤»¤ó\n" + +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 +msgid "Error updating the DBM password entry.\n" +msgstr "" + +#: src/chage.c:823 +#, c-format +msgid "%s: can't rewrite shadow password file\n" +msgstr "" + +#: src/chage.c:838 +#, c-format +msgid "%s: can't rewrite password file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňľĺ˝ń¤­¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 +#, fuzzy, c-format +msgid "%s: PAM chauthtok failed\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chfn.c:83 +#, c-format +msgid "" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" +msgstr "" +"»ČÍŃˡ: %s [-f ĄŐĄëĄÍˇĽĄŕ] [-r ĄëˇĽĄŕNo] [-w ż¦ľěTEL]\n" +"\t[-h Ľ«ÂđTEL] [-o ¤˝¤ÎÂľ] [ĄćˇĽĄ¶]\n" + +#: src/chfn.c:88 +#, c-format +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" +msgstr "»ČÍŃˡ: %s [-f ĄŐĄëĄÍˇĽĄŕ] [-r ĄëˇĽĄŕNo] [-w ż¦ľěTEL] [-h Ľ«ÂđTEL]\n" + +#: src/chfn.c:139 +msgid "Enter the new value, or press ENTER for the default\n" +msgstr "" +"ż·¤·¤¤ĂͤňĆţÎϤ·¤Ć¤Ż¤Ŕ¤µ¤¤, ɸ˝ŕŔßÄęĂͤňÍřÍѤą¤ë¤Ë¤Ď ĄęĄżˇĽĄó¤ň˛ˇ¤·¤Ć¤Ż¤Ŕ¤µ" +"¤¤.\n" + +#: src/chfn.c:142 +msgid "Full Name" +msgstr "ĄŐĄëĄÍˇĽĄŕ" + +#: src/chfn.c:144 +#, c-format +msgid "\tFull Name: %s\n" +msgstr "\tĄŐĄëĄÍˇĽĄŕ: %s\n" + +#: src/chfn.c:147 +msgid "Room Number" +msgstr "Éô˛°ČÖąć" + +#: src/chfn.c:149 +#, c-format +msgid "\tRoom Number: %s\n" +msgstr "\tÉô˛°ČÖąć: %s\n" + +#: src/chfn.c:152 +msgid "Work Phone" +msgstr "ż¦ľěĹĹĎĂČÖąć" + +#: src/chfn.c:154 +#, c-format +msgid "\tWork Phone: %s\n" +msgstr "\tż¦ľěĹĹĎĂČÖąć: %s\n" + +#: src/chfn.c:157 +msgid "Home Phone" +msgstr "Ľ«ÂđĹĹĎĂČÖąć" + +#: src/chfn.c:159 +#, c-format +msgid "\tHome Phone: %s\n" +msgstr "\tĽ«ÂđĹĹĎĂČÖąć: %s\n" + +#: src/chfn.c:162 +msgid "Other" +msgstr "¤˝¤ÎÂľ" + +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 +#, c-format +msgid "%s: Permission denied.\n" +msgstr "%s: ¸˘¸Â¤¬¤˘¤ę¤Ţ¤»¤ó.\n" + +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 +#, c-format +msgid "%s: Unknown user %s\n" +msgstr "%s: ÉÔĚŔ¤ĘĄćˇĽĄ¶ %s\n" + +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 +#, c-format +msgid "%s: Cannot determine your user name.\n" +msgstr "%s: ¤˘¤Ę¤ż¤ÎĄćˇĽĄ¶Ěľ¤ňČ˝Äę¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/chfn.c:358 src/chsh.c:215 +#, c-format +msgid "%s: cannot change user `%s' on NIS client.\n" +msgstr "%s: NISĄŻĄéĄ¤Ą˘ĄóĄČľĺ¤ÇĄćˇĽĄ¶`%s'¤ĎĘŃąą¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/chfn.c:366 src/chsh.c:223 +#, c-format +msgid "%s: `%s' is the NIS master for this client.\n" +msgstr "%s: `%s'¤¬¤ł¤ÎĄŻĄéĄ¤Ą˘ĄóĄČÍѤÎNISĄŢĄąĄżˇĽ¤Ç¤ą.\n" + +#: src/chfn.c:441 +#, c-format +msgid "Changing the user information for %s\n" +msgstr "%s¤ÎĄćˇĽĄ¶ľđĘóĘŃąąĂć\n" + +#: src/chfn.c:450 +#, c-format +msgid "%s: invalid name: \"%s\"\n" +msgstr "%s: ĄćˇĽĄ¶Ěľ¤¬ÉÔŔµ¤Ç¤ą: \"%s\"\n" + +#: src/chfn.c:456 +#, c-format +msgid "%s: invalid room number: \"%s\"\n" +msgstr "%s: Éô˛°Čֹ椬ÉÔŔµ¤Ç¤ą: \"%s\"\n" + +#: src/chfn.c:462 +#, c-format +msgid "%s: invalid work phone: \"%s\"\n" +msgstr "%s: ż¦ľěĹĹĎĂČֹ椬ÉÔŔµ¤Ç¤ą: \"%s\"\n" + +#: src/chfn.c:468 +#, c-format +msgid "%s: invalid home phone: \"%s\"\n" +msgstr "%s: Ľ«ÂđĹĹĎĂČֹ椬ÉÔŔµ¤Ç¤ą: \"%s\"\n" + +#: src/chfn.c:475 +#, c-format +msgid "%s: \"%s\" contains illegal characters\n" +msgstr "%s: \"%s\" ¤ĎÉÔŔµ¤Ęʸ»ú¤ň´Ţ¤ó¤Ç¤¤¤Ţ¤ą\n" + +#: src/chfn.c:488 +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: ĆţÎĎĆâÍƤ¬Äą˛á¤®¤Ţ¤ą\n" + +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 +msgid "Cannot change ID to root.\n" +msgstr "ID¤ňroot¤ŘĘŃąą¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 +msgid "Cannot lock the password file; try again later.\n" +msgstr "ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó; ¸ĺ¤Ç¤â¤¦°ěĹٻ¤Ć¤Ż¤Ŕ¤µ¤¤.\n" + +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 +msgid "Cannot open the password file.\n" +msgstr "ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó.\n" + +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 +#, c-format +msgid "%s: %s not found in /etc/passwd\n" +msgstr "%s: %s¤Ď /etc/passwdĂć¤Ë¸«ÉŐ¤«¤ę¤Ţ¤»¤ó\n" + +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 +msgid "Error updating the password entry.\n" +msgstr "ĄŃĄąĄďˇĽĄÉĆţÎϤιąż·¤ÎĄ¨ĄéˇĽ¤Ç¤ą.\n" + +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 +msgid "Cannot commit password file changes.\n" +msgstr "ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ÎĘŃąą¤ňłÎÄę(commit)¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/chfn.c:592 src/chsh.c:404 +msgid "Cannot unlock the password file.\n" +msgstr "ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ˛ň˝ü¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/chpasswd.c:66 +#, c-format +msgid "usage: %s [-e]\n" +msgstr "»ČÍŃˡ: %s [-e]\n" + +#: src/chpasswd.c:171 src/pwconv.c:94 +#, c-format +msgid "%s: can't lock shadow file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 +#, c-format +msgid "%s: can't open shadow file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/chpasswd.c:200 src/newusers.c:460 +#, c-format +msgid "%s: line %d: line too long\n" +msgstr "%s: %d ąÔ: 1ąÔ¤¬Äą˛á¤®¤Ţ¤ą\n" + +#: src/chpasswd.c:220 +#, c-format +msgid "%s: line %d: missing new password\n" +msgstr "%s: %d ąÔ: ż·µ¬ĄŃĄąĄďˇĽĄÉ¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/chpasswd.c:237 +#, c-format +msgid "%s: line %d: unknown user %s\n" +msgstr "%s: %d ąÔ: ÉÔĚŔ¤ĘĄćˇĽĄ¶ %s ¤Ç¤ą\n" + +#: src/chpasswd.c:290 +#, c-format +msgid "%s: line %d: cannot update password entry\n" +msgstr "%s: %d ąÔ: ĄŃĄąĄďˇĽĄÉĆţÎϤňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/chpasswd.c:307 src/newusers.c:588 +#, c-format +msgid "%s: error detected, changes ignored\n" +msgstr "%s: Ą¨ĄéˇĽ¤¬¸ˇ˝Đ¤µ¤ě¤Ţ¤·¤ż, ĘŃąą¤Ď̵¸ú¤Ë¤Ę¤ę¤Ţ¤·¤ż\n" + +#: src/chpasswd.c:319 +#, c-format +msgid "%s: error updating shadow file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŐĄˇĄ¤Ąë¤Îąąż·¤ËĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/chpasswd.c:328 +#, c-format +msgid "%s: error updating password file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤Îąąż·¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/chsh.c:75 +#, c-format +msgid "Usage: %s [-s shell] [name]\n" +msgstr "»ČÍŃˡ: %s [-s Ą·Ą§Ąë] [ĄćˇĽĄ¶Ěľ]\n" + +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"ż·¤·¤¤ĂͤňĆţÎϤ·¤Ć¤Ż¤Ŕ¤µ¤¤, ɸ˝ŕŔßÄęĂͤňÍřÍѤą¤ë¤Ë¤Ď ĄęĄżˇĽĄó¤ň˛ˇ¤·¤Ć¤Ż¤Ŕ¤µ" +"¤¤.\n" + +#: src/chsh.c:90 +msgid "Login Shell" +msgstr "ĄíĄ°Ą¤Ąóˇ¦Ą·Ą§Ąë" + +#: src/chsh.c:239 src/chsh.c:253 +#, c-format +msgid "You may not change the shell for %s.\n" +msgstr "¤˘¤Ę¤ż¤¬ %s¤ÎĄ·Ą§Ąë¤ňĘŃąą¤ą¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/chsh.c:282 +#, c-format +msgid "Changing the login shell for %s\n" +msgstr "%s¤ÎĄíĄ°Ą¤ĄóĄ·Ą§Ąë¤ňĘŃąąĂć\n" + +#: src/chsh.c:294 +#, c-format +msgid "%s: Invalid entry: %s\n" +msgstr "%s: ÉÔŔµ¤ĘĆţÎĎ: %s\n" + +#: src/chsh.c:301 +#, c-format +msgid "%s is an invalid shell.\n" +msgstr "%s¤ĎÉÔŔµ¤ĘĄ·Ą§Ąë¤Ç¤ą.\n" + +#: src/dpasswd.c:52 +#, c-format +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "»ČÍŃˡ: %s [-(a|d)] Ą·Ą§Ąë\n" + +#: src/dpasswd.c:115 +msgid "Shell password: " +msgstr "Ą·Ą§ĄëĄŃĄąĄďˇĽĄÉ: " + +#: src/dpasswd.c:121 +msgid "re-enter Shell password: " +msgstr "Ą·Ą§ĄëĄŃĄąĄďˇĽĄÉ¤ÎşĆĆţÎĎ: " + +#: src/dpasswd.c:129 +#, c-format +msgid "%s: Passwords do not match, try again.\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉ¤¬°ěĂפ·¤Ţ¤»¤ó, ¤â¤¦°ěĹŮ¤Ş´ę¤¤¤·¤Ţ¤ą.\n" + +#: src/dpasswd.c:149 +#, c-format +msgid "%s: can't create %s" +msgstr "%s: %s¤ňşîŔ®¤Ç¤­¤Ţ¤»¤ó" + +#: src/dpasswd.c:155 +#, c-format +msgid "%s: can't open %s" +msgstr "%s: %s¤ňł«¤±¤Ţ¤»¤ó" + +#: src/dpasswd.c:183 +#, c-format +msgid "%s: Shell %s not found.\n" +msgstr "%s: Ą·Ą§Ąë %s¤¬¸«ÉŐ¤«¤ę¤Ţ¤»¤ó.\n" + +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" +msgstr "»ČÍŃˡ: expiry { -f | -c }\n" + +#: src/expiry.c:113 +#, c-format +msgid "%s: WARNING! Must be set-UID root!\n" +msgstr "%s: ·Ůąđ! set-UID root¤µ¤ě¤Ć¤Ę¤Ż¤Ć¤Ď¤Ę¤ę¤Ţ¤»¤ó!\n" + +#: src/expiry.c:124 +#, c-format +msgid "%s: unknown user\n" +msgstr "%s: ÉÔĚŔ¤ĘĄćˇĽĄ¶¤Ç¤ą\n" + +#: src/faillog.c:77 +#, c-format +msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" +msgstr "»ČÍŃˡ: %s [-a|-u ĄćˇĽĄ¶] [-m şÇÂç] [-r] [-t Ćüżô] [-l ĄíĄĂĄŻÉĂ]\n" + +#: src/faillog.c:131 src/lastlog.c:96 +#, c-format +msgid "Unknown User: %s\n" +msgstr "ÉÔĚŔ¤ĘĄćˇĽĄ¶¤Ç¤ą: %s\n" + +#: src/faillog.c:212 +msgid "Username Failures Maximum Latest\n" +msgstr "ĄćˇĽĄ¶Ěľ ĽşÇÔ şÇÂç şÇ¶á\n" + +#: src/faillog.c:229 +#, c-format +msgid " %s on %s" +msgstr "" + +#: src/faillog.c:233 +#, c-format +msgid " [%lds left]" +msgstr "" + +#: src/faillog.c:237 +#, c-format +msgid " [%lds lock]" +msgstr "" + +#: src/gpasswd.c:78 +#, c-format +msgid "usage: %s [-r|-R] group\n" +msgstr "»ČÍŃˡ: %s [-r|-R] Ą°ĄëˇĽĄ×\n" + +#: src/gpasswd.c:79 +#, c-format +msgid " %s [-a user] group\n" +msgstr "" + +#: src/gpasswd.c:80 +#, c-format +msgid " %s [-d user] group\n" +msgstr " %s [-d ĄćˇĽĄ¶] Ą°ĄëˇĽĄ×\n" + +#: src/gpasswd.c:83 +#, c-format +msgid " %s [-A user,...] [-M user,...] group\n" +msgstr " %s [-A ĄćˇĽĄ¶,...] [-M ĄćˇĽĄ¶,...] Ą°ĄëˇĽĄ×\n" + +#: src/gpasswd.c:85 +#, c-format +msgid " %s [-M user,...] group\n" +msgstr " %s [-M ĄćˇĽĄ¶,...] Ą°ĄëˇĽĄ×\n" + +#: src/gpasswd.c:146 src/gpasswd.c:230 +#, c-format +msgid "%s: unknown user %s\n" +msgstr "%s: ÉÔĚŔ¤ĘĄćˇĽĄ¶ %s ¤Ç¤ą\n" + +#: src/gpasswd.c:157 +msgid "Permission denied.\n" +msgstr "Ą˘ĄŻĄ»Ąą¸˘¤¬µńČݤµ¤ě¤Ţ¤·¤ż.\n" + +#: src/gpasswd.c:243 +#, c-format +msgid "%s: shadow group passwords required for -A\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŃĄąĄďˇĽĄÉ¤¬ -A¤ËÂФ·¤ĆɬÍפǤą\n" + +#: src/gpasswd.c:294 +msgid "Who are you?\n" +msgstr "¤˘¤Ę¤ż¤ĎĂŻ?\n" + +#: src/gpasswd.c:313 src/newgrp.c:297 +#, c-format +msgid "unknown group: %s\n" +msgstr "ÉÔĚŔ¤ĘĄ°ĄëˇĽĄ×¤Ç¤ą: %s\n" + +#: src/gpasswd.c:422 +#, c-format +msgid "Adding user %s to group %s\n" +msgstr "ĄćˇĽĄ¶ %s ¤ňĄ°ĄëˇĽĄ× %s ¤«¤éÄɲĂ\n" + +#: src/gpasswd.c:440 +#, c-format +msgid "Removing user %s from group %s\n" +msgstr "ĄćˇĽĄ¶ %s ¤ňĄ°ĄëˇĽĄ× %s ¤«¤éşď˝ü\n" + +#: src/gpasswd.c:454 +#, c-format +msgid "%s: unknown member %s\n" +msgstr "%s: ÉÔĚŔ¤ĘČÖąć %s¤Ç¤ą\n" + +#: src/gpasswd.c:501 +#, c-format +msgid "%s: Not a tty\n" +msgstr "%s: TTY¤Ç¤Ď¤˘¤ę¤Ţ¤»¤ó\n" + +#. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. +#. +#: src/gpasswd.c:522 +#, c-format +msgid "Changing the password for group %s\n" +msgstr "%sĄ°ĄëˇĽĄ×¤ÎĄŃĄąĄďˇĽĄÉ¤ňĘŃąą\n" + +#: src/gpasswd.c:525 +msgid "New Password: " +msgstr "ż·µ¬ĄŃĄąĄďˇĽĄÉ: " + +#: src/gpasswd.c:530 src/passwd.c:365 +msgid "Re-enter new password: " +msgstr "ż·µ¬ĄŃĄąĄďˇĽĄÉşĆĆţÎĎ: " + +#: src/gpasswd.c:542 +msgid "They don't match; try again" +msgstr "°ěĂפ·¤Ţ¤»¤ó; ¤â¤¦°ěĹŮ¤Ş´ę¤¤¤·¤Ţ¤ą" + +#: src/gpasswd.c:546 +#, c-format +msgid "%s: Try again later\n" +msgstr "%s: ¸ĺ¤Ç¤â¤¦°ěĹŮ¤Ş´ę¤¤¤·¤Ţ¤ą\n" + +#: src/gpasswd.c:578 +#, c-format +msgid "%s: can't get lock\n" +msgstr "%s: ĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:584 +#, c-format +msgid "%s: can't get shadow lock\n" +msgstr "%s: Ą·ĄăĄÉĄ¦¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:590 +#, c-format +msgid "%s: can't open file\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:602 +#, c-format +msgid "%s: can't update entry\n" +msgstr "%s: Ą¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:608 +#, c-format +msgid "%s: can't update shadow entry\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:615 +#, c-format +msgid "%s: can't re-write file\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤ňľĺ˝ń¤­¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:621 +#, c-format +msgid "%s: can't re-write shadow file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŐĄˇĄ¤Ąë¤ňľĺ˝ń¤­¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:630 +#, c-format +msgid "%s: can't unlock file\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:635 +#, c-format +msgid "%s: can't update DBM files\n" +msgstr "%s: DBM ĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/gpasswd.c:642 +#, c-format +msgid "%s: can't update DBM shadow files\n" +msgstr "%s: DBM Ą·ĄăĄÉĄ¦ˇ¦ĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/groupadd.c:101 +#, fuzzy +msgid "usage: groupadd [-g gid [-o]] group\n" +msgstr "»ČÍŃˡ: groupadd [-g Ą°ĄëˇĽĄ×ID [-o]] [-r] [-f] Ą°ĄëˇĽĄ×\n" + +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 +#, c-format +msgid "%s: error adding new group entry\n" +msgstr "%s: ż·µ¬Ą°ĄëˇĽĄ×Ą¨ĄóĄČĄę¤ŘÄɲäΥ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 +#, c-format +msgid "%s: cannot add new dbm group entry\n" +msgstr "%s: ż·µ¬DBMĄ°ĄëˇĽĄ×ˇ¦Ą¨ĄóĄČĄę¤ŘÄɲäǤ­¤Ţ¤»¤ó\n" + +#: src/groupadd.c:255 src/useradd.c:1034 +#, c-format +msgid "%s: name %s is not unique\n" +msgstr "s: ĚľÁ° %s ¤Ď˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s: ĄćˇĽĄ¶ID %ld ¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/groupadd.c:294 +#, c-format +msgid "%s: can't get unique gid\n" +msgstr "%s: °ě°Ő¤ÎĄ°ĄëˇĽĄ×ID¤ňĽčĆŔ¤Ç¤­¤Ţ¤»¤ó\n" + +#. +#. * All invalid group names land here. +#. +#: src/groupadd.c:317 src/groupmod.c:341 +#, c-format +msgid "%s: %s is a not a valid group name\n" +msgstr "" + +#: src/groupadd.c:346 src/groupmod.c:366 +#, c-format +msgid "%s: invalid group %s\n" +msgstr "%s: Ą°ĄëˇĽĄ× %s ¤ĎÉÔŬŔڤǤą\n" + +#: src/groupadd.c:363 src/useradd.c:1313 +#, c-format +msgid "%s: -O requires NAME=VALUE\n" +msgstr "" + +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 +#, fuzzy, c-format +msgid "%s: cannot rewrite group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 +#, fuzzy, c-format +msgid "%s: cannot rewrite shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤¬ł«¤±¤Ţ¤»¤ó\n" + +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 +#, fuzzy, c-format +msgid "%s: unable to lock group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 +#, fuzzy, c-format +msgid "%s: unable to open group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 +#, fuzzy, c-format +msgid "%s: unable to lock shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 +#, fuzzy, c-format +msgid "%s: unable to open shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤¬ł«¤±¤Ţ¤»¤ó\n" + +#: src/groupadd.c:562 +#, fuzzy, c-format +msgid "%s: group %s exists\n" +msgstr "%s: ĄćˇĽĄ¶ %s ¤Ď¸şß¤·¤Ţ¤ą\n" + +#: src/groupdel.c:92 +msgid "usage: groupdel group\n" +msgstr "»ČÍŃˡ: groupdel Ą°ĄëˇĽĄ×\n" + +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 +#, c-format +msgid "%s: error removing group entry\n" +msgstr "" + +#: src/groupdel.c:122 src/groupmod.c:204 +#, c-format +msgid "%s: error removing group dbm entry\n" +msgstr "" + +#: src/groupdel.c:137 +#, c-format +msgid "%s: error removing shadow group entry\n" +msgstr "" + +#: src/groupdel.c:150 src/groupmod.c:254 +#, c-format +msgid "%s: error removing shadow group dbm entry\n" +msgstr "" + +#. +#. * Can't remove the group. +#. +#: src/groupdel.c:254 +#, c-format +msgid "%s: cannot remove user's primary group.\n" +msgstr "" + +#: src/groupdel.c:355 src/groupmod.c:550 +#, c-format +msgid "%s: group %s does not exist\n" +msgstr "%s: %sĄ°ĄëˇĽĄ× ¤Ď¸şß¤·¤Ţ¤»¤ó\n" + +#: src/groupdel.c:369 src/groupmod.c:566 +#, c-format +msgid "%s: group %s is a NIS group\n" +msgstr "%s: %sĄ°ĄëˇĽĄ×¤Ď NIS ¤ÎĄ°ĄëˇĽĄ×¤Ç¤ą\n" + +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 +#, c-format +msgid "%s: %s is the NIS master\n" +msgstr "%s: %s ¤Ď NIS ĄŢĄąĄżˇĽ¤Ç¤ą\n" + +#: src/groupmems.c:95 +msgid "Member already exists\n" +msgstr "" + +#: src/groupmems.c:125 +msgid "Member to remove could not be found\n" +msgstr "" + +#: src/groupmems.c:158 +msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" +msgstr "" + +#: src/groupmems.c:201 +msgid "Only root can add members to different groups\n" +msgstr "" + +#: src/groupmems.c:206 +msgid "Group access is required\n" +msgstr "" + +#: src/groupmems.c:210 +msgid "Not primary owner of current group\n" +msgstr "" + +#: src/groupmems.c:215 +#, fuzzy +msgid "Unable to lock group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/groupmems.c:220 +#, fuzzy +msgid "Unable to open group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/groupmems.c:240 +#, fuzzy +msgid "Cannot close group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/groupmod.c:103 +msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" +msgstr "»ČÍŃˡ: groupmod [-g Ą°ĄëˇĽĄ×ID [-o]] [-n ĚľÁ°] Ą°ĄëˇĽĄ×\n" + +#: src/groupmod.c:161 +#, c-format +msgid "%s: %s not found in /etc/group\n" +msgstr "%s: /etc/group¤Ë %s ¤¬¸«ÉŐ¤«¤ę¤Ţ¤»¤ó\n" + +#: src/groupmod.c:247 +#, c-format +msgid "%s: cannot add new dbm shadow group entry\n" +msgstr "%s: ż·µ¬DBMĄ·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦Ą¨ĄóĄČĄę¤ňÄɲäǤ­¤Ţ¤»¤ó\n" + +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" +msgstr "%s: %ld ¤ĎĄ°ĄëˇĽĄ×ID¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/groupmod.c:330 +#, c-format +msgid "%s: %s is not a unique name\n" +msgstr "%s: %s ¤ĎĚľÁ°¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/groups.c:59 +#, c-format +msgid "unknown user %s\n" +msgstr "ÉÔĚŔ¤ĘĄćˇĽĄ¶¤Ç¤ą %s\n" + +#: src/grpck.c:87 +#, fuzzy, c-format +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "»ČÍŃˡ: %s [-r] [-s] [Ą°ĄëˇĽĄ× [Ą°ĄëˇĽĄ×Ą·ĄăĄÉĄ¦]]\n" + +#: src/grpck.c:90 +#, fuzzy, c-format +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "»ČÍŃˡ: %s [-r] [Ą°ĄëˇĽĄ×]\n" + +#: src/grpck.c:108 src/pwck.c:108 +msgid "No" +msgstr "" + +#: src/grpck.c:192 src/pwck.c:175 +#, c-format +msgid "%s: -s and -r are incompatibile\n" +msgstr "" + +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 +#, c-format +msgid "%s: cannot lock file %s\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë %s ¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 +#, c-format +msgid "%s: cannot open file %s\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë %s ¤ňł«¤±¤Ţ¤»¤ó\n" + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/grpck.c:311 +msgid "invalid group file entry\n" +msgstr "ÉÔŔµ¤ĘĄ°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ÎĄ¨ĄóĄČĄę¤Ç¤ą\n" + +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 +#, c-format +msgid "delete line `%s'? " +msgstr "`%s'ąÔ¤ňşď˝ü¤·¤Ţ¤ą¤«? " + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/grpck.c:374 +msgid "duplicate group entry\n" +msgstr "Ą°ĄëˇĽĄ×Ą¨ĄóĄČĄę¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/grpck.c:391 +#, c-format +msgid "invalid group name `%s'\n" +msgstr "ÉÔŔµ¤ĘĄ°ĄëˇĽĄ×Ěľ `%s' ¤Ç¤ą\n" + +#: src/grpck.c:418 +#, c-format +msgid "group %s: no user %s\n" +msgstr "Ą°ĄëˇĽĄ× %s: ĄćˇĽĄ¶ %s ¤Ď¤¤¤Ţ¤»¤ó\n" + +#: src/grpck.c:420 src/grpck.c:590 +#, c-format +msgid "delete member `%s'? " +msgstr "ĄáĄóĄĐˇĽ `%s' ¤ňşď˝ü¤·¤Ţ¤ą¤«? " + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/grpck.c:457 +msgid "invalid shadow group file entry\n" +msgstr "Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąëˇ¦Ą¨ĄóĄČĄę¤¬ÉÔŔµ¤Ç¤ą\n" + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/grpck.c:520 +msgid "duplicate shadow group entry\n" +msgstr "Ą°ĄëˇĽĄ×Ą¨ĄóĄČĄę¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/grpck.c:537 +msgid "no matching group file entry\n" +msgstr "Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤ĄëĄ¨ĄóĄČĄę¤Č°ěĂפ·¤Ţ¤»¤ó\n" + +#: src/grpck.c:558 +#, c-format +msgid "shadow group %s: no administrative user %s\n" +msgstr "" + +#: src/grpck.c:560 +#, c-format +msgid "delete administrative member `%s'? " +msgstr "" + +#: src/grpck.c:588 +#, c-format +msgid "shadow group %s: no user %s\n" +msgstr "" + +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 +#, c-format +msgid "%s: cannot update file %s\n" +msgstr "" + +#: src/grpck.c:647 src/pwck.c:612 +#, c-format +msgid "%s: the files have been updated; run mkpasswd\n" +msgstr "" + +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 +#, c-format +msgid "%s: no changes\n" +msgstr "%s: ĘŃąą¤Ď¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/grpck.c:651 src/pwck.c:616 +#, c-format +msgid "%s: the files have been updated\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤Ďąąż·¤µ¤ě¤Ţ¤·¤ż\n" + +#: src/grpconv.c:60 src/grpunconv.c:56 +#, c-format +msgid "%s: can't lock group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:65 src/grpunconv.c:61 +#, c-format +msgid "%s: can't open group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/grpconv.c:70 src/grpunconv.c:66 +#, c-format +msgid "%s: can't lock shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:76 src/grpunconv.c:72 +#, c-format +msgid "%s: can't open shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤¬ł«¤±¤Ţ¤»¤ó\n" + +#: src/grpconv.c:94 +#, c-format +msgid "%s: can't remove shadow group %s\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ× %s ¤ňşď˝ü¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:138 src/pwconv.c:153 +#, c-format +msgid "%s: can't update shadow entry for %s\n" +msgstr "%s: %s ¤ÎĄ·ĄăĄÉĄ¦ˇ¦Ą¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:148 src/grpunconv.c:91 +#, c-format +msgid "%s: can't update entry for group %s\n" +msgstr "%s: Ą°ĄëˇĽĄ× %s ¤ÎĄ¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:155 src/grpunconv.c:99 +#, c-format +msgid "%s: can't update shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:160 src/grpunconv.c:105 +#, c-format +msgid "%s: can't update group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/grpconv.c:175 src/grpunconv.c:127 +#, c-format +msgid "%s: not configured for shadow group support.\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄµĄÝˇĽĄČÍѤËŔßÄꤵ¤ě¤Ć¤¤¤Ţ¤»¤ó\n" + +#: src/grpunconv.c:110 +#, c-format +msgid "%s: can't delete shadow group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňşď˝ü¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/id.c:53 +msgid "usage: id [-a]\n" +msgstr "»ČÍŃˡ: id [-a]\n" + +#: src/id.c:55 +msgid "usage: id\n" +msgstr "»ČÍŃˡ: id\n" + +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" +msgstr "ĄćˇĽĄ¶ID=%d(%s)" + +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" +msgstr "ĄćˇĽĄ¶ID=%d" + +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" +msgstr " Ą°ĄëˇĽĄ×ID=%d(%s)" + +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" +msgstr " Ą°ĄëˇĽĄ×ID=%d" + +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" +msgstr " ĽÂ¸úĄćˇĽĄ¶ID=%d(%s)" + +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" +msgstr " ĽÂ¸úĄćˇĽĄ¶ID=%d" + +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" +msgstr " ĽÂ¸úĄ°ĄëˇĽĄ×ID=%d(%s)" + +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" +msgstr " ĽÂ¸úĄ°ĄëˇĽĄ×ID=%d" + +#. +#. * Start off the group message. It will be of the format +#. * +#. * groups=###(aaa),###(aaa),###(aaa) +#. * +#. * where "###" is a numerical value and "aaa" is the +#. * corresponding name for each respective numerical value. +#. +#: src/id.c:169 +msgid " groups=" +msgstr " Ą°ĄëˇĽĄ×=" + +#: src/lastlog.c:110 src/lastlog.c:116 +#, c-format +msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" +msgstr "" + +#: src/lastlog.c:181 +msgid "Username Port From Latest\n" +msgstr "ĄćˇĽĄ¶Ěľ ĄÝˇĽĄČ ľě˝ę şÇ¶á¤ÎĄíĄ°Ą¤Ąó\n" + +#: src/lastlog.c:183 +msgid "Username Port Latest\n" +msgstr "ĄćˇĽĄ¶Ěľ ĄÝˇĽĄČ şÇ¶á¤ÎĄíĄ°Ą¤Ąó\n" + +#: src/lastlog.c:197 +msgid "**Never logged in**" +msgstr "**°ěĹ٤âĄíĄ°Ą¤Ąó¤Ď¤˘¤ę¤Ţ¤»¤ó**" + +#: src/login.c:183 +#, c-format +msgid "usage: %s [-p] [name]\n" +msgstr "»ČÍŃˡ: %s [-p] [ĄćˇĽĄ¶Ěľ]\n" + +#: src/login.c:186 +#, c-format +msgid " %s [-p] [-h host] [-f name]\n" +msgstr " %s [-p] [-h ĄŰĄąĄČ] [-f ĄćˇĽĄ¶Ěľ]\n" + +#: src/login.c:188 +#, c-format +msgid " %s [-p] -r host\n" +msgstr " %s [-p] -r ĄŰĄąĄČ\n" + +#: src/login.c:272 +msgid "Invalid login time\n" +msgstr "ĄíĄ°Ą¤Ąó»ţ´Ö¤¬ÉÔŔµ¤Ç¤ą\n" + +#: src/login.c:327 +msgid "" +"\n" +"System closed for routine maintenance\n" +msgstr "" +"\n" +"Ą·ĄąĄĆĄŕ¤ĎĄáĄóĄĆĄĘĄóĄąĄëˇĽĄÁĄó¤ËÂФ·¤ĆĘĤ¸¤Ţ¤·¤ż\n" + +#: src/login.c:338 +msgid "" +"\n" +"[Disconnect bypassed -- root login allowed.]\n" +msgstr "" + +#: src/login.c:375 +#, c-format +msgid "" +"\n" +"Login timed out after %d seconds.\n" +msgstr "" +"\n" +"%sÉøĺ¤ÎĄíĄ°Ą¤Ąóˇ¦ĄżĄ¤ĄŕŔ©¸Â¤Ç¤ą.\n" + +#: src/login.c:687 +#, c-format +msgid " on `%.100s' from `%.200s'" +msgstr "" + +#: src/login.c:691 +#, c-format +msgid " on `%.100s'" +msgstr "" + +#: src/login.c:850 +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s ĄíĄ°Ą¤Ąó: " + +#: src/login.c:853 +msgid "login: " +msgstr "ĄíĄ°Ą¤Ąó: " + +#: src/login.c:1069 src/sulogin.c:233 +msgid "Login incorrect" +msgstr "ĄíĄ°Ą¤Ąó¤¬°ă¤¤¤Ţ¤ą" + +#: src/login.c:1263 +msgid "Warning: login re-enabled after temporary lockout.\n" +msgstr "" + +#: src/login.c:1276 +#, c-format +msgid "Last login: %s on %s" +msgstr "şÇ¶á¤ÎĄíĄ°Ą¤Ąó: %s on %s" + +#: src/login.c:1279 +#, c-format +msgid "Last login: %.19s on %s" +msgstr "şÇ¶á¤ÎĄíĄ°Ą¤Ąó: %.19s on %s" + +#: src/login.c:1285 +#, c-format +msgid " from %.*s" +msgstr " ľě˝ę %.*s" + +#: src/login.c:1362 +msgid "Starting rad_login\n" +msgstr "" + +#: src/mkpasswd.c:47 +#, c-format +msgid "%s: no DBM database on system - no action performed\n" +msgstr "" + +#: src/mkpasswd.c:232 src/mkpasswd.c:237 +#, c-format +msgid "%s: cannot overwrite file %s\n" +msgstr "" + +#: src/mkpasswd.c:252 +#, c-format +msgid "%s: cannot open DBM files for %s\n" +msgstr "" + +#: src/mkpasswd.c:287 +#, c-format +msgid "%s: the beginning with " +msgstr "" + +#: src/mkpasswd.c:288 +#, fuzzy +msgid " is too long\n" +msgstr "%s: ĆţÎĎĆâÍƤ¬Äą˛á¤®¤Ţ¤ą\n" + +#: src/mkpasswd.c:315 +#, c-format +msgid "%s: error parsing line \"%s\"\n" +msgstr "" + +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 +msgid "adding record for name " +msgstr "" + +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 +msgid "\n" +msgstr "" + +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 +#, c-format +msgid "%s: error adding record for " +msgstr "" + +#: src/mkpasswd.c:378 +#, c-format +msgid "added %d entries, longest was %d\n" +msgstr "" + +#: src/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "»ČÍŃˡ: %s [-vf] [-p|g|sp|sg] ĄŐĄˇĄ¤Ąë\n" + +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "»ČÍŃˡ: %s [-vf] [-p|g|sp] ĄŐĄˇĄ¤Ąë\n" + +#: src/mkpasswd.c:398 +#, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "»ČÍŃˡ: %s [-vf] [-p|g] ĄŐĄˇĄ¤Ąë\n" + +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "»ČÍŃˡ: newgrp [-] [Ą°ĄëˇĽĄ×]\n" + +#: src/newgrp.c:63 +msgid "usage: sg group [[-c] command]\n" +msgstr "»ČÍŃˡ: sg Ą°ĄëˇĽĄ× [[-c] ĄłĄŢĄóĄÉ]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" +msgstr "ÉÔĚŔ¤ĘĄćˇĽĄ¶ID¤Ç¤ą: %d\n" + +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" +msgstr "ÉÔĚŔ¤ĘĄ°ĄëˇĽĄ×ID¤Ç¤ą: %ld\n" + +#: src/newgrp.c:365 src/newgrp.c:374 +msgid "Sorry.\n" +msgstr "ż˝¤·Ěő¤´¤¶¤¤¤Ţ¤»¤ó.\n" + +#: src/newgrp.c:472 +msgid "too many groups\n" +msgstr "Ą°ĄëˇĽĄ×¤¬Âż¤ą¤®¤Ţ¤ą\n" + +#: src/newusers.c:78 +#, c-format +msgid "Usage: %s [input]\n" +msgstr "»ČÍŃˡ: %s [ĆţÎĎ]\n" + +#: src/newusers.c:407 +#, c-format +msgid "%s: can't lock /etc/passwd.\n" +msgstr "%s: /etc/passwd ¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/newusers.c:419 +#, c-format +msgid "%s: can't lock files, try again later\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó, ¸ĺ¤Ç¤â¤¦°ěĹٻ¤Ć¤Ż¤Ŕ¤µ¤¤\n" + +#: src/newusers.c:435 +#, c-format +msgid "%s: can't open files\n" +msgstr "%s: ĄŐĄˇĄ¤Ąë¤ňł«¤­¤Ţ¤ą\n" + +#: src/newusers.c:480 +#, c-format +msgid "%s: line %d: invalid line\n" +msgstr "%s: %dąÔ: ÉÔŔµąÔ¤Ç¤ą\n" + +#: src/newusers.c:499 +#, c-format +msgid "%s: line %d: can't create GID\n" +msgstr "%s: %dąÔ: Ą°ĄëˇĽĄ×ID¤¬şîŔ®¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/newusers.c:515 +#, c-format +msgid "%s: line %d: can't create UID\n" +msgstr "%s: %dąÔ: ĄćˇĽĄ¶ID¤¬şîŔ®¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/newusers.c:528 +#, c-format +msgid "%s: line %d: cannot find user %s\n" +msgstr "%s: %dąÔ: ĄćˇĽĄ¶ %s ¤¬¸«ÉŐ¤«¤ę¤Ţ¤»¤ó\n" + +#: src/newusers.c:537 +#, c-format +msgid "%s: line %d: can't update password\n" +msgstr "%s: %dąÔ: ĄŃĄąĄďˇĽĄÉ¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/newusers.c:555 +#, c-format +msgid "%s: line %d: mkdir failed\n" +msgstr "%s: %dąÔ: mkdir ¤ËĽşÇÔ¤·¤Ţ¤·¤ż\n" + +#: src/newusers.c:561 +#, c-format +msgid "%s: line %d: chown failed\n" +msgstr "%s: %dąÔ: chown ¤ËĽşÇÔ¤·¤Ţ¤·¤ż\n" + +#: src/newusers.c:571 +#, c-format +msgid "%s: line %d: can't update entry\n" +msgstr "%s: %dąÔ: Ą¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/newusers.c:603 +#, c-format +msgid "%s: error updating files\n" +msgstr "%s: ĄŐĄˇĄ¤Ąëąąż·¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/passwd.c:174 +#, c-format +msgid "usage: %s [-f|-s] [name]\n" +msgstr "»ČÍŃˡ: %s [-f|-s] [ĄćˇĽĄ¶Ěľ]\n" + +#: src/passwd.c:178 +#, c-format +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x şÇÂç] [-n şÇľ®] [-w ·Ůąđ] [-i ̵¸ú] ĄćˇĽĄ¶Ěľ\n" + +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" +msgstr " %s { -l | -u | -d | -S | -e } ĄćˇĽĄ¶Ěľ\n" + +#: src/passwd.c:283 +#, c-format +msgid "User %s has a TCFS key, his old password is required.\n" +msgstr "" +"ĄćˇĽĄ¶ %s ¤Ď TCFSĄ­ˇĽ¤ň¤â¤Ă¤Ć¤¤¤Ţ¤ą, ¤˝¤ÎĄćˇĽĄ¶¤ÎµěĄŃĄąĄďˇĽĄÉ¤¬É¬ÍפǤą.\n" + +#: src/passwd.c:286 +msgid "You can use -t option to force the change.\n" +msgstr "¶ŻŔ©ĹޤËĘŃąą¤ňąÔ¤¦¤Ë¤Ď, ĄŞĄ×Ą·ĄçĄó -t ¤¬É¬ÍפǤą\n" + +#: src/passwd.c:292 +msgid "Old password: " +msgstr "¸Ĺ¤¤ĄŃĄąĄďˇĽĄÉ: " + +#: src/passwd.c:301 +#, c-format +msgid "Incorrect password for `%s'\n" +msgstr "" + +#: src/passwd.c:314 +#, c-format +msgid "Warning: user %s has a TCFS key.\n" +msgstr "" + +#: src/passwd.c:333 +#, c-format +msgid "" +"Enter the new password (minimum of %d, maximum of %d characters)\n" +"Please use a combination of upper and lower case letters and numbers.\n" +msgstr "" + +#: src/passwd.c:339 +msgid "New password: " +msgstr "ż·¤·¤¤ĄŃĄąĄďˇĽĄÉ: " + +#: src/passwd.c:350 +msgid "Try again.\n" +msgstr "¤â¤¦°ěĹŮ¤Ş´ę¤¤¤·¤Ţ¤ą.\n" + +#: src/passwd.c:361 +msgid "" +"\n" +"Warning: weak password (enter it again to use it anyway).\n" +msgstr "" +"\n" +"·Ůąđ: ŔȤ¤ĄŃĄąĄďˇĽĄÉ¤Ç¤ą (¤É¤¦¤·¤Ć¤â»Č¤¦ľěąç, ¤â¤¦°ěĹ٤ł¤ě¤ňĆţÎϤ·¤Ć¤Ż¤Ŕ¤µ" +"¤¤).\n" + +#: src/passwd.c:371 +msgid "They don't match; try again.\n" +msgstr "°ěĂפ·¤Ţ¤»¤ó: ¤â¤¦°ěĹŮ¤Ş´ę¤¤¤·¤Ţ¤ą.\n" + +#: src/passwd.c:451 src/passwd.c:469 +#, c-format +msgid "The password for %s cannot be changed.\n" +msgstr "%s ¤ÎĄŃĄąĄďˇĽĄÉ¤ĎĘŃąą¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/passwd.c:494 +#, c-format +msgid "Sorry, the password for %s cannot be changed yet.\n" +msgstr "ż˝¤·Ěő¤˘¤ę¤Ţ¤»¤ó¤¬, %s ¤ÎĄŃĄąĄďˇĽĄÉ¤Ď¤Ţ¤ŔĘŃąą¤ą¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/passwd.c:614 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: ĄáĄâĄę¤¬¤ż¤ę¤Ţ¤»¤ó\n" + +#: src/passwd.c:769 +msgid "Cannot lock the TCFS key database; try again later\n" +msgstr "TCFSĄ­ˇĽĄÇˇĽĄżĄŮˇĽĄą¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó, ¸ĺ¤Ç¤â¤¦°ěĹٻ¤Ć¤Ż¤Ŕ¤µ¤¤.\n" + +#: src/passwd.c:777 +msgid "Cannot open the TCFS key database.\n" +msgstr "TCFSĄ­ˇĽĄÇˇĽĄżĄŮˇĽĄą¤ňł«¤±¤Ţ¤»¤ó.\n" + +#: src/passwd.c:785 +msgid "Error updating the TCFS key database.\n" +msgstr "TCFSĄ­ˇĽĄÇˇĽĄżĄŮˇĽĄą¤Îąąż·¤ÎĄ¨ĄéˇĽ¤Ç¤ą.\n" + +#: src/passwd.c:792 +msgid "Cannot commit TCFS changes.\n" +msgstr "TCFSĘŃąą¤ňcommit¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/passwd.c:975 +#, c-format +msgid "%s: Cannot execute %s" +msgstr "%s: %s¤ňĽÂąÔ¤Ç¤­¤Ţ¤»¤ó" + +#: src/passwd.c:1077 +#, c-format +msgid "%s: repository %s not supported\n" +msgstr "%s: ĄěĄÝĄ¸ĄČĄę %s ¤ĎĄµĄÝˇĽĄČ¤·¤Ć¤¤¤Ţ¤»¤ó\n" + +#: src/passwd.c:1152 +#, c-format +msgid "%s: Permission denied\n" +msgstr "%s: ¸˘¸Â¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/passwd.c:1176 +#, c-format +msgid "You may not change the password for %s.\n" +msgstr "¤˘¤Ę¤ż¤Ď %s ¤ÎĄŃĄąĄďˇĽĄÉ¤ňĘŃąą¤ą¤ë¤ł¤Č¤Ď¤Ç¤­¤Ţ¤»¤ó.\n" + +#: src/passwd.c:1242 +#, c-format +msgid "Changing password for %s\n" +msgstr "%s¤ÎĄŃĄąĄďˇĽĄÉ¤ÎĘŃąą\n" + +#: src/passwd.c:1246 +#, c-format +msgid "The password for %s is unchanged.\n" +msgstr "%s¤ÎĄŃĄąĄďˇĽĄÉ¤ĎĘŃąą¤µ¤ě¤Ţ¤»¤ó.\n" + +#: src/passwd.c:1297 +msgid "Password changed.\n" +msgstr "ĄŃĄąĄďˇĽĄÉ¤ĎĘŃąą¤µ¤ě¤Ţ¤·¤ż.\n" + +#: src/pwck.c:87 +#, fuzzy, c-format +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "»ČÍŃ: %s [-q] [-r] [-s] [ĄŃĄąĄďˇĽĄÉ [Ą·ĄăĄÉĄ¦]]\n" + +#: src/pwck.c:90 +#, fuzzy, c-format +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "»ČÍŃ: %s [-q] [-r] [-s] [ĄŃĄąĄďˇĽĄÉ]\n" + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/pwck.c:295 +msgid "invalid password file entry\n" +msgstr "ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąëˇ¦Ą¨ĄóĄČĄę¤¬ÉÔŔµ¤Ç¤ą\n" + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/pwck.c:357 +msgid "duplicate password entry\n" +msgstr "ĄŃĄąĄďˇĽĄÉĄ¨ĄóĄČĄę¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/pwck.c:373 +#, c-format +msgid "invalid user name `%s'\n" +msgstr "ÉÔŔµ¤ĘĄćˇĽĄ¶Ěľ`%s' ¤Ç¤ą\n" + +#. +#. * No primary group, just give a warning +#. +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" +msgstr "ĄćˇĽĄ¶ %s: Ą°ĄëˇĽĄ× %d ¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/pwck.c:404 +#, c-format +msgid "user %s: directory %s does not exist\n" +msgstr "ĄćˇĽĄ¶ %s: ĄÇĄŁĄěĄŻĄČĄę %s ¤¬Â¸şß¤·¤Ţ¤»¤ó\n" + +#. +#. * Login shell doesn't exist, give a warning +#. +#: src/pwck.c:420 +#, c-format +msgid "user %s: program %s does not exist\n" +msgstr "ĄćˇĽĄ¶ %s: Ą×ĄíĄ°ĄéĄŕ %s ¤Ď¸şß¤·¤Ţ¤»¤ó\n" + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/pwck.c:456 +msgid "invalid shadow password file entry\n" +msgstr "ÉÔŔµ¤ĘĄ·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄę¤Ç¤ą\n" + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/pwck.c:518 +msgid "duplicate shadow password entry\n" +msgstr "Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄę¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#. +#. * Tell the user this entry has no matching +#. * /etc/passwd entry and ask them to delete it. +#. +#: src/pwck.c:542 +msgid "no matching password file entry\n" +msgstr "ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąëˇ¦Ą¨ĄóĄČĄę¤Č°ěĂפ·¤Ţ¤»¤ó\n" + +#: src/pwck.c:560 +#, c-format +msgid "user %s: last password change in the future\n" +msgstr "ĄćˇĽĄ¶ %s: şÇ¸ĺ¤ÎĄŃĄąĄďˇĽĄÉĘŃąą¤¬Ě¤Íč¤Ë¤˘¤ę¤Ţ¤ą\n" + +#: src/pwconv.c:84 src/pwunconv.c:93 +#, c-format +msgid "%s: can't lock passwd file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/pwconv.c:89 src/pwunconv.c:98 +#, c-format +msgid "%s: can't open passwd file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/pwconv.c:117 +#, c-format +msgid "%s: can't remove shadow entry for %s\n" +msgstr "%s: %s¤ÎĄ·ĄăĄÉĄ¦ˇ¦Ą¨ĄóĄČĄę¤ňşď˝ü¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/pwconv.c:163 +#, c-format +msgid "%s: can't update passwd entry for %s\n" +msgstr "%s: %s¤ÎĄŃĄąĄďˇĽĄÉĄ¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/pwconv.c:170 +#, c-format +msgid "%s: can't update shadow file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/pwconv.c:175 +#, c-format +msgid "%s: can't update passwd file\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/pwunconv.c:50 +#, c-format +msgid "%s: Shadow passwords are not configured.\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ĄŃĄąĄďˇĽĄÉ¤¬ŔßÄꤵ¤ě¤Ć¤¤¤Ţ¤»¤ó.\n" + +#: src/pwunconv.c:160 +#, c-format +msgid "%s: can't update entry for user %s\n" +msgstr "%s: ĄćˇĽĄ¶ %s ¤ÎĄ¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/pwunconv.c:181 +#, c-format +msgid "%s: can't delete shadow password file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦ĄŐĄˇĄ¤Ąë¤ňşď˝ü¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/su.c:133 +msgid "Sorry." +msgstr "ż˝¤·Ěő¤´¤¶¤¤¤Ţ¤»¤ó." + +#: src/su.c:216 +#, c-format +msgid "%s: must be run from a terminal\n" +msgstr "%s: ĂĽËöľĺ¤«¤éĽÂąÔ¤·¤Ć¤Ż¤Ŕ¤µ¤¤\n" + +#: src/su.c:306 +#, c-format +msgid "%s: pam_start: error %d\n" +msgstr "%s: pam_start: Ą¨ĄéˇĽ %d\n" + +#: src/su.c:336 +#, c-format +msgid "Unknown id: %s\n" +msgstr "ÉÔĚŔ¤Ę ID¤Ç¤ą: %s\n" + +#: src/su.c:373 src/su.c:390 +#, c-format +msgid "You are not authorized to su %s\n" +msgstr "¤˘¤Ę¤ż¤Ď su %s ¤ËǧľÚ¤Ç¤­¤Ţ¤»¤ó¤Ç¤·¤ż\n" + +#. require own password +#: src/su.c:385 +msgid "(Enter your own password.)" +msgstr "(¤˘¤Ę¤żĽ«żČ¤ÎĄŃĄąĄďˇĽĄÉ¤ňĆţÎϤ·¤Ć¤Ż¤Ŕ¤µ¤¤.)" + +#: src/su.c:419 +#, c-format +msgid "" +"%s: %s\n" +"(Ignored)\n" +msgstr "" +"%s: %s\n" +"(̵¸ú)\n" + +#: src/su.c:626 +msgid "No shell\n" +msgstr "Ą·Ą§Ąë¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#. must be a password file! +#: src/sulogin.c:132 +msgid "No password file\n" +msgstr "ĄŃĄąĄďˇĽĄÉĄŐĄˇĄ¤Ąë¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#. +#. * Fail secure +#. +#: src/sulogin.c:174 +msgid "No password entry for 'root'\n" +msgstr "'root'¤ÎĄŃĄąĄďˇĽĄÉĄ¨ĄóĄČĄę¤¬¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/sulogin.c:190 +msgid "" +"\n" +"Type control-d to proceed with normal startup,\n" +"(or give root password for system maintenance):" +msgstr "" + +#. make new environment active +#: src/sulogin.c:243 +msgid "Entering System Maintenance Mode\n" +msgstr "Ą·ĄąĄĆĄŕĄáĄóĄĆĄĘĄóĄąĄâˇĽĄÉ¤ŘĆţ¤ę¤Ţ¤ą\n" + +#: src/useradd.c:251 +#, c-format +msgid "%s: rebuild the group database\n" +msgstr "" + +#: src/useradd.c:260 +#, c-format +msgid "%s: rebuild the shadow group database\n" +msgstr "" + +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 +#, c-format +msgid "%s: invalid numeric argument `%s'\n" +msgstr "" + +#: src/useradd.c:365 +#, c-format +msgid "%s: unknown gid %s\n" +msgstr "%s: ÉÔĚŔ¤ĘĄ°ĄëˇĽĄ×ID %s\n" + +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 +#, c-format +msgid "%s: unknown group %s\n" +msgstr "%s: ÉÔĚŔ¤ĘĄ°ĄëˇĽĄ× %s\n" + +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" +msgstr "Ą°ĄëˇĽĄ×=%s,%ld ĄŮˇĽĄąĄÇĄŁĄěĄŻĄČĄę=%s ż÷·ż=%s\n" + +#: src/useradd.c:444 +#, c-format +msgid "shell=%s " +msgstr "Ą·Ą§Ąë=%s " + +#: src/useradd.c:446 +#, c-format +msgid "inactive=%ld expire=%s" +msgstr "" + +#: src/useradd.c:450 +#, c-format +msgid "GROUP=%u\n" +msgstr "" + +#: src/useradd.c:451 +#, c-format +msgid "HOME=%s\n" +msgstr "" + +#: src/useradd.c:453 +#, c-format +msgid "INACTIVE=%ld\n" +msgstr "" + +#: src/useradd.c:454 +#, c-format +msgid "EXPIRE=%s\n" +msgstr "" + +#: src/useradd.c:456 +#, c-format +msgid "SHELL=%s\n" +msgstr "" + +#: src/useradd.c:457 +#, c-format +msgid "SKEL=%s\n" +msgstr "" + +#: src/useradd.c:498 +#, c-format +msgid "%s: cannot create new defaults file\n" +msgstr "" + +#: src/useradd.c:503 +#, fuzzy, c-format +msgid "%s: cannot open new defaults file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/useradd.c:596 src/useradd.c:608 +#, c-format +msgid "%s: rename: %s" +msgstr "" + +#: src/useradd.c:697 src/usermod.c:281 +#, c-format +msgid "%s: group `%s' is a NIS group.\n" +msgstr "" + +#: src/useradd.c:706 src/usermod.c:290 +#, c-format +msgid "%s: too many groups specified (max %d).\n" +msgstr "" + +#: src/useradd.c:738 src/usermod.c:322 +#, c-format +msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" +msgstr "»ČÍŃˡ: %s\t[-u ĄćˇĽĄ¶ID [-o]] [-g Ą°ĄëˇĽĄ×] [-G Ą°ĄëˇĽĄ×,...] \n" + +#: src/useradd.c:742 +msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" +msgstr "\t\t[-d ĄŰˇĽĄŕ] [-s Ą·Ą§Ąë] [-c ĄłĄáĄóĄČ] [-m [-k ĄĆĄóĄ×ĄěˇĽĄČ]]\n" + +#: src/useradd.c:745 src/usermod.c:329 +#, fuzzy +msgid "[-f inactive] [-e expire ] " +msgstr "[-f ̵¸úĆüżô] [-e ´ü¸ÂŔÚ¤ěĆü] " + +#: src/useradd.c:748 +msgid "[-A program] " +msgstr "[-A Ą×ĄíĄ°ĄéĄŕ] " + +#: src/useradd.c:750 +#, fuzzy +msgid "[-p passwd] name\n" +msgstr "[-p ĄŃĄąĄďˇĽĄÉ] [-L|-U] ĄćˇĽĄ¶Ěľ\n" + +#: src/useradd.c:753 +#, c-format +msgid " %s\t-D [-g group] [-b base] [-s shell]\n" +msgstr " %s\t-D [-g Ą°ĄëˇĽĄ×] [-b ĄŮˇĽĄą] [-s Ą·Ą§Ąë]\n" + +#: src/useradd.c:756 +#, fuzzy +msgid "\t\t[-f inactive] [-e expire ]\n" +msgstr "\t\t[-f ̵¸úĆüżô] [-e ´ü¸ÂŔÚ¤ěĆü]\n" + +#: src/useradd.c:850 src/usermod.c:480 +#, c-format +msgid "%s: error locking group file\n" +msgstr "" + +#: src/useradd.c:855 src/usermod.c:486 +#, c-format +msgid "%s: error opening group file\n" +msgstr "" + +#: src/useradd.c:862 src/usermod.c:597 +#, c-format +msgid "%s: error locking shadow group file\n" +msgstr "" + +#: src/useradd.c:867 src/usermod.c:603 +#, c-format +msgid "%s: error opening shadow group file\n" +msgstr "" + +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s: ĄćˇĽĄ¶ID %ld ¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/useradd.c:1069 +#, c-format +msgid "%s: can't get unique uid\n" +msgstr "%s: °ě°Ő¤ÎĄćˇĽĄ¶ID¤ňĽčĆŔ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 +#, c-format +msgid "%s: invalid field `%s'\n" +msgstr "" + +#: src/useradd.c:1189 +#, c-format +msgid "%s: invalid base directory `%s'\n" +msgstr "%s: ĄŮˇĽĄąĄÇĄŁĄěĄŻĄČĄę `%s' ¤ĎÉÔŔµ¤Ç¤ą\n" + +#: src/useradd.c:1199 +#, c-format +msgid "%s: invalid comment `%s'\n" +msgstr "%s: ĄłĄáĄóĄČ `%s' ¤ĎÉÔŔµ¤Ç¤ą\n" + +#: src/useradd.c:1210 +#, c-format +msgid "%s: invalid home directory `%s'\n" +msgstr "%s: ĄŰˇĽĄŕĄÇĄŁĄěĄŻĄČĄę `%s' ¤ĎÉÔŔµ¤Ç¤ą\n" + +#: src/useradd.c:1229 src/usermod.c:1110 +#, c-format +msgid "%s: invalid date `%s'\n" +msgstr "%s: ĆüÉŐ `%s' ¤ĎÉÔŔµ¤Ç¤ą\n" + +#: src/useradd.c:1242 +#, c-format +msgid "%s: shadow passwords required for -e\n" +msgstr "" + +#: src/useradd.c:1258 +#, c-format +msgid "%s: shadow passwords required for -f\n" +msgstr "" + +#: src/useradd.c:1336 +#, c-format +msgid "%s: invalid shell `%s'\n" +msgstr "%s: Ą·Ą§Ąë `%s' ¤ĎÉÔŔµ¤Ç¤ą\n" + +#: src/useradd.c:1377 +#, c-format +msgid "%s: invalid user name `%s'\n" +msgstr "" + +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 +#, c-format +msgid "%s: cannot rewrite password file\n" +msgstr "" + +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 +#, c-format +msgid "%s: cannot rewrite shadow password file\n" +msgstr "" + +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 +#, c-format +msgid "%s: unable to lock password file\n" +msgstr "" + +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 +#, c-format +msgid "%s: unable to open password file\n" +msgstr "" + +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 +#, c-format +msgid "%s: cannot lock shadow password file\n" +msgstr "" + +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 +#, c-format +msgid "%s: cannot open shadow password file\n" +msgstr "" + +#: src/useradd.c:1580 src/usermod.c:1405 +#, c-format +msgid "%s: error adding authentication method\n" +msgstr "" + +#: src/useradd.c:1604 +#, c-format +msgid "%s: error adding new password entry\n" +msgstr "" + +#: src/useradd.c:1618 +#, c-format +msgid "%s: error updating password dbm entry\n" +msgstr "" + +#: src/useradd.c:1634 src/usermod.c:1471 +#, c-format +msgid "%s: error adding new shadow password entry\n" +msgstr "" + +#: src/useradd.c:1650 src/usermod.c:1488 +#, c-format +msgid "%s: error updating shadow passwd dbm entry\n" +msgstr "" + +#: src/useradd.c:1682 +#, c-format +msgid "%s: cannot create directory %s\n" +msgstr "" + +#: src/useradd.c:1806 src/usermod.c:1233 +#, c-format +msgid "%s: user %s exists\n" +msgstr "%s: ĄćˇĽĄ¶ %s ¤Ď¸şß¤·¤Ţ¤ą\n" + +#: src/useradd.c:1821 +#, c-format +msgid "" +"%s: group %s exists - if you want to add this user to that group, use -g.\n" +msgstr "" +"%s: Ą°ĄëˇĽĄ× %s ¤Ď¸şß¤·¤Ţ¤ą ˇÝ ¤â¤·¤ł¤ÎĄćˇĽĄ¶¤ň¤˝¤ÎĄ°ĄëˇĽĄ×¤ŘÄɲ乤ë¤Ë¤Ď, -" +"g ¤ňÍřÍѤ·¤Ć¤Ż¤Ŕ¤µ¤¤.\n" + +#: src/useradd.c:1854 +#, c-format +msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" +msgstr "" + +#: src/userdel.c:129 +#, c-format +msgid "usage: %s [-r] name\n" +msgstr "»ČÍŃˡ: %s [-r] ĄćˇĽĄ¶Ěľ\n" + +#: src/userdel.c:181 src/userdel.c:267 +#, c-format +msgid "%s: error updating group entry\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦Ą¨ĄóĄČĄę¤Îąąż·¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/userdel.c:191 src/userdel.c:276 +#, c-format +msgid "%s: cannot update dbm group entry\n" +msgstr "%s: DBMĄ°ĄëˇĽĄ×ˇ¦Ą¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/userdel.c:219 +#, fuzzy, c-format +msgid "%s: cannot remove dbm group entry\n" +msgstr "%s: DBMĄ°ĄëˇĽĄ×ˇ¦Ą¨ĄóĄČĄę¤ňąąż·¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/userdel.c:308 +#, c-format +msgid "%s: cannot rewrite TCFS key file\n" +msgstr "%s: TCFSĄ­ˇĽˇ¦ĄŐĄˇĄ¤Ąë¤ňşĆ˝ń¤­ąţ¤ß¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/userdel.c:392 +#, c-format +msgid "%s: cannot lock TCFS key file\n" +msgstr "%s: TCFSĄ­ˇĽˇ¦ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/userdel.c:397 +#, c-format +msgid "%s: cannot open TCFS key file\n" +msgstr "%s: TCFSĄ­ˇĽˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/userdel.c:408 +#, c-format +msgid "%s: cannot open group file\n" +msgstr "%s: Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤ňł«¤±¤Ţ¤»¤ó\n" + +#: src/userdel.c:419 +#, c-format +msgid "%s: cannot open shadow group file\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦Ą°ĄëˇĽĄ×ˇ¦ĄŐĄˇĄ¤Ąë¤¬ł«¤±¤Ţ¤»¤ó\n" + +#: src/userdel.c:451 src/userdel.c:468 +#, c-format +msgid "%s: error deleting authentication\n" +msgstr "" + +#: src/userdel.c:479 +#, c-format +msgid "%s: error deleting password entry\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/userdel.c:485 +#, c-format +msgid "%s: error deleting shadow password entry\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/userdel.c:496 +#, c-format +msgid "%s: error deleting TCFS entry\n" +msgstr "%s: TCFSĄ¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/userdel.c:510 +#, c-format +msgid "%s: error deleting password dbm entry\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉDBMĄ¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/userdel.c:533 +#, c-format +msgid "%s: error deleting shadow passwd dbm entry\n" +msgstr "" + +#: src/userdel.c:569 +#, c-format +msgid "%s: user %s is currently logged in\n" +msgstr "%s: ĄćˇĽĄ¶ %s ¤Ď¸˝şßĄíĄ°Ą¤ĄóĂć¤Ç¤ą\n" + +#: src/userdel.c:659 +#, c-format +msgid "%s: warning: %s not owned by %s, not removing\n" +msgstr "%s: ·Ůąđ: %s¤Ď %s ¤Î˝ęÍ­¤Ç¤Ď¤˘¤ę¤Ţ¤»¤ó, şď˝ü¤ĎąÔ¤¤¤Ţ¤»¤ó\n" + +#: src/userdel.c:666 +#, c-format +msgid "%s: warning: can't remove " +msgstr "" + +#: src/userdel.c:758 src/usermod.c:1023 +#, c-format +msgid "%s: user %s does not exist\n" +msgstr "%s: ĄćˇĽĄ¶ %s ¤Ď¸şß¤·¤Ţ¤»¤ó\n" + +#: src/userdel.c:770 src/usermod.c:1039 +#, c-format +msgid "%s: user %s is a NIS user\n" +msgstr "%s: ĄćˇĽĄ¶ %s ¤Ď NIS ĄćˇĽĄ¶¤Ç¤ą\n" + +#: src/userdel.c:799 +#, c-format +msgid "%s: %s not owned by %s, not removing\n" +msgstr "%s: %s¤Ď %s¤Î˝ęÍ­¤Ç¤Ď¤˘¤ę¤Ţ¤»¤ó, şď˝ü¤ĎąÔ¤¤¤Ţ¤»¤ó\n" + +#: src/userdel.c:818 +#, c-format +msgid "%s: not removing directory %s (would remove home of user %s)\n" +msgstr "%s: ĄÇĄŁĄěĄŻĄČĄę%s ¤Îşď˝ü¤ĎąÔ¤¤¤Ţ¤»¤ó (would remove home of user %s)\n" + +#: src/userdel.c:830 +#, c-format +msgid "%s: error removing directory %s\n" +msgstr "%s: ĄÇĄŁĄěĄŻĄČĄę %s ¤Îşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:326 +msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" +msgstr "\t\t[-d ĄŰˇĽĄŕ [-m]] [-s Ą·Ą§Ąë] [-c ĄłĄáĄóĄČ] [-l ż·µ¬ĄćˇĽĄ¶Ěľ]\n" + +#: src/usermod.c:332 +#, fuzzy +msgid "[-A {DEFAULT|program},... ] " +msgstr "[-A {DEFAULT|Ą×ĄíĄ°ĄéĄŕ},...] " + +#: src/usermod.c:334 +msgid "[-p passwd] [-L|-U] name\n" +msgstr "[-p ĄŃĄąĄďˇĽĄÉ] [-L|-U] ĄćˇĽĄ¶Ěľ\n" + +#: src/usermod.c:514 +#, c-format +msgid "%s: out of memory in update_group\n" +msgstr "%s: update_group Ăć¤ËĄáĄâĄę¤¬ÉÔ­¤·¤Ţ¤·¤ż\n" + +#: src/usermod.c:641 +#, c-format +msgid "%s: out of memory in update_gshadow\n" +msgstr "%s: update_shdow Ăć¤ËĄáĄâĄę¤¬ÉÔ­¤·¤Ţ¤·¤ż\n" + +#: src/usermod.c:1210 +#, c-format +msgid "%s: no flags given\n" +msgstr "%s: ¤Ň¤Č¤Ä¤âĄŐĄéĄ°¤¬»ŘÄꤵ¤ě¤Ć¤¤¤Ţ¤»¤ó\n" + +#: src/usermod.c:1217 +#, c-format +msgid "%s: shadow passwords required for -e and -f\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉ¤Ë¤Ď -e ¤Ş¤č¤Ó -e ¤¬É¬ÍפǤą\n" + +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" +msgstr "%s: ĄćˇĽĄ¶ID %ld ¤¬˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#: src/usermod.c:1392 +#, c-format +msgid "%s: error deleting authentication method\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉǧľÚĘýˡ¤Îşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1418 +#, c-format +msgid "%s: error changing authentication method\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉǧľÚĘýˡ¤ÎĘŃąą¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1436 +#, c-format +msgid "%s: error changing password entry\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄęĘŃąą¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1442 +#, c-format +msgid "%s: error removing password entry\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1451 +#, c-format +msgid "%s: error adding password dbm entry\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉDBMĄ¨ĄóĄČĄęÄɲäΥ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1459 +#, c-format +msgid "%s: error removing passwd dbm entry\n" +msgstr "%s: ĄŃĄąĄďˇĽĄÉDBMĄ¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1478 +#, c-format +msgid "%s: error removing shadow password entry\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ˇ¦ĄŃĄąĄďˇĽĄÉˇ¦Ą¨ĄóĄČĄęşď˝ü¤ÎĄ¨ĄéˇĽ¤Ç¤ą\n" + +#: src/usermod.c:1495 +#, c-format +msgid "%s: error removing shadow passwd dbm entry\n" +msgstr "%s: Ą·ĄăĄÉĄ¦ĄŃĄąĄďˇĽĄÉ DBMĄ¨ĄóĄČĄę ¤Îşď˝ü¤ÎĄ¨ĄéˇĽ\n" + +#: src/usermod.c:1524 +#, c-format +msgid "%s: directory %s exists\n" +msgstr "%s: ĄÇĄŁĄěĄŻĄČĄę %s¤Ď¸şß¤·¤Ţ¤ą\n" + +#: src/usermod.c:1533 +#, c-format +msgid "%s: can't create %s\n" +msgstr "%s: %s¤ň şîŔ®¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/usermod.c:1539 +#, c-format +msgid "%s: can't chown %s\n" +msgstr "%s: %s¤ňchown¤Ç¤­¤Ţ¤»¤ó\n" + +#: src/usermod.c:1556 +#, c-format +msgid "%s: cannot rename directory %s to %s\n" +msgstr "%s: ĄÇĄŁĄěĄŻĄČĄę%s¤ň %s¤ŘĚľÁ°ĘŃąą¤Ç¤­¤Ţ¤»¤ó\n" + +#. better leave it alone +#: src/usermod.c:1653 +#, c-format +msgid "%s: warning: %s not owned by %s\n" +msgstr "%s: ·Ůąđ: %s ¤Ď%s¤Î˝ęÍ­¤Ç¤Ď¤˘¤ę¤Ţ¤»¤ó\n" + +#: src/usermod.c:1659 +msgid "failed to change mailbox owner" +msgstr "mailbox¤Î˝ęÍ­ĽÔ¤ÎĘŃąą¤ËĽşÇÔ¤·¤Ţ¤·¤ż" + +#: src/usermod.c:1667 +msgid "failed to rename mailbox" +msgstr "mailbox¤ÎĚľÁ°ĘŃąą¤ËĽşÇÔ¤·¤Ţ¤·¤ż" + +#: src/vipw.c:104 +#, c-format +msgid "" +"\n" +"%s: %s is unchanged\n" +msgstr "" +"\n" +"%s: %s ¤ÎĘŃąą¤ĎąÔ¤ď¤ě¤Ţ¤»¤ó\n" + +#: src/vipw.c:132 +msgid "Couldn't lock file" +msgstr "ĄŐĄˇĄ¤Ąë¤ňĄíĄĂĄŻ¤Ç¤­¤Ţ¤»¤ó" + +#: src/vipw.c:141 +msgid "Couldn't make backup" +msgstr "ĄĐĄĂĄŻĄ˘ĄĂĄ×¤ňşîŔ®¤Ç¤­¤Ţ¤»¤ó" + +#: src/vipw.c:206 +#, c-format +msgid "%s: can't restore %s: %s (your changes are in %s)\n" +msgstr "%s: %s¤ňÉüµě¤Ç¤­¤Ţ¤»¤ó¤Ç¤·¤ż: %s (¤˘¤Ę¤ż¤ÎĘŃąą¤Ď%s¤Ë¤˘¤ę¤Ţ¤ą)\n" + +#: src/vipw.c:244 +msgid "" +"Usage:\n" +"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" +"`vigr' edits /etc/group `vigr -s' edits /etc/gshadow\n" +msgstr "" +"»ČÍŃˡ:\n" +"`vipw' /etc/passwd ¤ňĘÔ˝¸ `vipw -s' /etc/shadow¤ňĘÔ˝¸\n" +"`vigr' /etc/group¤ňĘÔ˝¸ `vigr -s' /etc/gshadow¤ňĘÔ˝¸\n" + +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: Ą°ĄëˇĽĄ×ID %ld ¤Ď˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "ÉÔĚŔ¤ĘĄ°ĄëˇĽĄ×ID¤Ç¤ą: %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: ĄćˇĽĄ¶ID %d ¤Ď˝ĹĘŁ¤·¤Ć¤¤¤Ţ¤ą\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "ĄćˇĽĄ¶ %s: ÉÔŔµ¤ĘĄćˇĽĄ¶ID¤Ç¤¦¤ą (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "$s: ´ü¸ÂľđĘ󤬤˘¤ę¤Ţ¤»¤ó\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "Ą°ĄëˇĽĄ× %s: ÉÔŔµ¤ĘĄ°ĄëˇĽĄ×ID (%d) ¤Ç¤ą\n" + +#~ msgid "%s: permission denied (shell).\n" +#~ msgstr "%s: ¸˘¸Â¤¬µńČݤµ¤ě¤Ţ¤·¤ż(Ą·Ą§Ąë).\n" + +#~ msgid "[-p passwd] [-n] [-r] name\n" +#~ msgstr "[-p ĄŃĄąĄďˇĽĄÉ] [-n] [-r] ĄćˇĽĄ¶Ěľ\n" diff --git a/po/ko.gmo b/po/ko.gmo new file mode 100644 index 00000000..8a88e887 Binary files /dev/null and b/po/ko.gmo differ diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..d3eace8a --- /dev/null +++ b/po/ko.po @@ -0,0 +1,2477 @@ +# shadow korean translations +# Copyright (C) YEAR Free Software Foundation, Inc. +# Hwang, SangJin , 1999. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: shadow\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" +"PO-Revision-Date: 2001-02-03 15:09+0900\n" +"Last-Translator: Hwang, Sang-Jin \n" +"Language-Team: Korean \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=euc-kr\n" +"Content-Transfer-Encoding: 8bit\n" + +#: libmisc/addgrps.c:60 +#, c-format +msgid "Warning: unknown group %s\n" +msgstr "°ć°í: ľË Ľö ľř´Â ±×·ě(%s)\n" + +#: libmisc/addgrps.c:71 +msgid "Warning: too many groups\n" +msgstr "°ć°í: ±×·ěĽö°ˇ łĘą« ¸ąŔ˝\n" + +#: libmisc/age.c:77 +msgid "Your password has expired." +msgstr "ĆĐ˝şżöµĺ »çżë±âÇŃŔĚ Áöłµ˝Ŕ´Ď´Ů." + +#: libmisc/age.c:80 +msgid "Your password is inactive." +msgstr "ĆĐ˝şżöµĺ »çżë±â°Ł ĂĘ°ú·Î »çżëÇŇ Ľö ľř˝Ŕ´Ď´Ů." + +#: libmisc/age.c:83 +msgid "Your login has expired." +msgstr "·Î±×ŔÎ »çżë±âÇŃŔĚ Áöłµ˝Ŕ´Ď´Ů" + +#: libmisc/age.c:96 +msgid " Contact the system administrator.\n" +msgstr " ˝Ă˝şĹŰ °ü¸®ŔÚżÍ »ó´ăÇϽʽÿŔ.\n" + +#: libmisc/age.c:99 +msgid " Choose a new password.\n" +msgstr " »ő·Îżî ĆĐ˝şżöµĺ¸¦ Ľ±ĹĂÇĎĽĽżä.\n" + +#: libmisc/age.c:176 +#, c-format +msgid "Your password will expire in %ld days.\n" +msgstr "ĆĐ˝şżöµĺ »çżë±âÇŃŔĚ %ldŔĎżˇ łˇłł´Ď´Ů.\n" + +#: libmisc/age.c:178 +msgid "Your password will expire tomorrow.\n" +msgstr "ĆĐ˝şżöµĺ »çżë±âÇŃŔĚ ł»ŔĎ łˇłł´Ď´Ů.\n" + +#: libmisc/age.c:180 +msgid "Your password will expire today.\n" +msgstr "ĆĐ˝şżöµĺ »çżë±âÇŃŔĚ żŔ´Ă łˇłł´Ď´Ů.\n" + +#: libmisc/chowntty.c:113 +#, c-format +msgid "Unable to change tty %s" +msgstr "tty(´Ü¸»Ĺ͹̳Î) %s·Î şŻ°ćÇŇ Ľö ľřŔ˝" + +#: libmisc/env.c:160 +msgid "Environment overflow\n" +msgstr "" + +#: libmisc/env.c:200 +#, c-format +msgid "You may not change $%s\n" +msgstr "$%s´Â şŻ°ćµÇľî ŔÖÁö ľĘŔş°Í °°˝Ŕ´Ď´Ů\n" + +#: libmisc/failure.c:238 +#, c-format +msgid "%d %s since last login. Last was %s on %s.\n" +msgstr "¸¶Áö¸· ·Î±×ŔÎŔ¸·ÎşÎĹÍ %dȸŔÇ %sŔÔ´Ď´Ů. ¸¶Áö¸· ·Î±×ŔÎŔş %s ŔĺĽŇ %s.\n" + +#: libmisc/failure.c:239 +msgid "failures" +msgstr "˝ÇĆĐ" + +#: libmisc/failure.c:239 +msgid "failure" +msgstr "˝ÇĆĐ" + +#: libmisc/limits.c:397 +msgid "Too many logins.\n" +msgstr "·Î±×ŔÎĽö°ˇ ¸ą˝Ŕ´Ď´Ů.\n" + +#: libmisc/login_desrpc.c:63 +#, c-format +msgid "Password does not decrypt secret key for %s.\n" +msgstr "ĆĐ˝şżöµĺ°ˇ %sŔÇ şńąĐĹ°¸¦ ÇŘĽ®ÇŇ Ľö ľřŔ˝.\n" + +#: libmisc/login_desrpc.c:69 +#, c-format +msgid "Could not set %s's secret key: is the keyserv daemon running?\n" +msgstr "%sŔÇ şńąĐż­Ľč¸¦ ĽłÁ¤ÇŇ Ľö ľř˝Ŕ´Ď´Ů: keyservµĄ¸óŔĚ ÇöŔç ˝ÇÇŕÁßŔԴϱî?\n" + +#: libmisc/mail.c:62 libmisc/mail.c:77 +msgid "You have new mail." +msgstr "»ő·Îżî ¸ŢŔĎŔĚ µµÂřÇĎż´˝Ŕ´Ď´Ů." + +#: libmisc/mail.c:73 +msgid "No mail." +msgstr "¸ŢŔĎ ľřŔ˝." + +#: libmisc/mail.c:75 +msgid "You have mail." +msgstr "¸ŢŔĎŔĚ ŔÖ˝Ŕ´Ď´Ů." + +#: libmisc/obscure.c:281 src/passwd.c:244 +#, c-format +msgid "Bad password: %s. " +msgstr "Ŕ߸řµČ ĆĐ˝şżöµĺ: %s. " + +#: libmisc/pam_pass.c:42 +#, c-format +msgid "passwd: pam_start() failed, error %d\n" +msgstr "ĆĐ˝şżöµĺ: pam_start()żˇ ˝ÇĆĐÇß˝Ŕ´Ď´Ů, żŔ·ů %d\n" + +#: libmisc/pam_pass.c:49 +#, c-format +msgid "passwd: %s\n" +msgstr "ĆĐ˝şżöµĺ: %s\n" + +#: libmisc/setupenv.c:211 +#, c-format +msgid "Unable to cd to \"%s\"\n" +msgstr "µđ·şĹ丮¸¦ \"%s\"·Î Ŕ̵żÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: libmisc/setupenv.c:219 +msgid "No directory, logging in with HOME=/" +msgstr "µđ·şĹ丮°ˇ ľřŔ˝, ·çĆ® µđ·şĹ丮(/)·Î ·Î±×ŔÎÇŐ´Ď´Ů" + +#: libmisc/shell.c:78 +#, c-format +msgid "Executing shell %s\n" +msgstr "%s ˝©Ŕ» ˝ÇÇŕÇŐ´Ď´Ů\n" + +#. +#. * Obviously something is really wrong - I can't figure out +#. * how to execute this stupid shell, so I might as well give +#. * up in disgust ... +#. +#: libmisc/shell.c:122 +#, c-format +msgid "Cannot execute %s" +msgstr "%s¸¦ ˝ÇÇŕÇŇ Ľö ľřŔ˝" + +#: libmisc/suauth.c:99 +msgid "Access to su to that account DENIED.\n" +msgstr "ŔĚ ľîÄ«żîĆ®·Î su·Î Á˘±ŮÁ¦ľîÇĎ´Â Çă°ˇ°ˇ ľřŔ˝.\n" + +#: libmisc/suauth.c:106 +msgid "Password authentication bypassed.\n" +msgstr "ĆĐ˝şżöµĺ ŔÎÁőŔĚ ą«˝ĂµÇľú˝Ŕ´Ď´Ů.\n" + +#: libmisc/suauth.c:113 +msgid "Please enter your OWN password as authentication.\n" +msgstr "»çżëŔÚ ŔÚ˝ĹŔÇ ĆĐ˝şżöµĺ¸¦ ŔÎÁőŔ¸·Î˝á ŔÔ·ÂŔ» ÇϽʽÿŔ.\n" + +#: libmisc/sub.c:61 +#, c-format +msgid "Invalid root directory \"%s\"\n" +msgstr "Ȩ µđ·şĹ丮 \"%s\"°ˇ Ŕ߸řµÇľú˝Ŕ´Ď´Ů\n" + +#: libmisc/sub.c:73 +#, c-format +msgid "Can't change root directory to \"%s\"\n" +msgstr "·çĆ® µđ·şĹ丮¸¦ \"%s\"·Î şŻ°ćÇŇ Ľö ľřŔ˝\n" + +#: libmisc/xmalloc.c:28 +#, c-format +msgid "malloc(%d) failed\n" +msgstr "malloc(%d)żˇ ˝ÇĆĐÇßŔ˝\n" + +#: lib/dialchk.c:71 +msgid "Dialup Password: " +msgstr "´ŮŔĚľóľ÷ ĆĐ˝şżöµĺ: " + +#: lib/getdef.c:276 +msgid "Could not allocate space for config info.\n" +msgstr "ĽłÁ¤ Á¤ş¸¸¦ Ŕ§ÇŃ °ř°Ł Č®ş¸¸¦ ÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#. +#. * Item was never found. +#. +#: lib/getdef.c:330 +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "ĽłÁ¤ żŔ·ů - ľË Ľö ľř´ÂĹ° '%s'°ˇ ŔÖŔ˝ (°ü¸®ŔÚżˇ°Ô ż¬¶ôąŮ¶÷)\n" + +#: lib/getdef.c:417 +#, c-format +msgid "error - lookup '%s' failed\n" +msgstr "żŔ·ů - '%s'ŔÇ °Ë»öżˇ ˝ÇĆĐ\n" + +#: lib/getdef.c:425 +#, c-format +msgid "%s not found\n" +msgstr "%s°ˇ ąß°ßµÇÁö ľĘŔ˝\n" + +#. +#. * get the password from her, and set the salt for +#. * the decryption from the group file. +#. +#: lib/pwauth.c:54 src/newgrp.c:348 +msgid "Password: " +msgstr "ĆĐ˝şżöµĺ: " + +#: lib/pwauth.c:56 +#, c-format +msgid "%s's Password: " +msgstr "%sŔÇ ĆĐ˝şżöµĺ: " + +#: lib/pwauth.c:270 +msgid "(Echo on) " +msgstr "" + +#: lib/strerror.c:20 +#, c-format +msgid "Unknown error %d" +msgstr "ľË Ľö ľř´Â żŔ·ů %d" + +#: src/chage.c:116 +#, c-format +msgid "" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" +msgstr "" +"»çżëąý: %s [-l] [-m ĂÖĽŇŔĎĽö] [-M ĂÖ´ëŔĎĽö] [-W °ć°íŔĎĽö]\n" +"\t[-I ą«ČżŔĎĽö] [-E ¸¸·áŔĎĽö] [-d »ő ĆĐ˝şżöµĺ şŻ°ćŔĎ] »çżëŔÚ¸í\n" + +#: src/chage.c:122 +#, c-format +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" +msgstr "»çżëąý: %s [-l] [-m ĂÖĽŇŔĎĽö] [-M ĂÖ´ëŔĎĽö] [-W °ć°íŔĎĽö] »çżëŔÚ\n" + +#: src/chage.c:157 +#, fuzzy +msgid "" +"Enter the new value, or press ENTER for the default\n" +"\n" +msgstr "»ő·Îżî °ŞŔ» łÖ°ĹłŞ, µđĆúĆ® °ŞŔ» żřÇѴٸé ENTERĹ°¸¦ ġĽĽżä.\n" + +#: src/chage.c:160 +msgid "Minimum Password Age" +msgstr "ĂÖĽŇ ĆĐ˝şżöµĺ ż¬·É" + +#: src/chage.c:166 +msgid "Maximum Password Age" +msgstr "ĂÖ´ë ĆĐ˝şżöµĺ ż¬·É" + +#: src/chage.c:174 +msgid "Last Password Change (YYYY-MM-DD)" +msgstr "¸¶Áö¸· ĆĐ˝şżöµĺ şŻ°ć (YYYY-MM-DD)" + +#: src/chage.c:183 +msgid "Password Expiration Warning" +msgstr "ĆĐ˝şżöµĺ »çżë¸¸±âŔĎ ĂĘ°ú °ć°í" + +#: src/chage.c:189 +msgid "Password Inactive" +msgstr "ĆĐ˝şżöµĺ°ˇ ŔŻČżÇĎÁö ľĘŔ˝" + +#: src/chage.c:197 +msgid "Account Expiration Date (YYYY-MM-DD)" +msgstr "°čÁ¤ »çżëŔĎ ¸¸±â ŔĎ(YYYY-MM-DD)" + +#. +#. * Start with the easy numbers - the number of days before the +#. * password can be changed, the number of days after which the +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. +#. +#: src/chage.c:248 +#, c-format +msgid "Minimum:\t%ld\n" +msgstr "ĂÖĽŇ:\t%ld\n" + +#: src/chage.c:249 +#, c-format +msgid "Maximum:\t%ld\n" +msgstr "ĂÖ´ë:\t%ld\n" + +#: src/chage.c:251 +#, c-format +msgid "Warning:\t%ld\n" +msgstr "°ć°í:\t%ld\n" + +#: src/chage.c:252 +#, c-format +msgid "Inactive:\t%ld\n" +msgstr "ŔŻČżÇĎÁö ľĘŔ˝:\t%ld\n" + +#. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. +#. +#: src/chage.c:260 +msgid "Last Change:\t\t" +msgstr "¸¶Áö¸· şŻ°ć:\t\t" + +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 +msgid "Never\n" +msgstr "şŇ°ˇ\n" + +#. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. +#. +#: src/chage.c:273 +msgid "Password Expires:\t" +msgstr "ĆĐ˝şżöµĺ ¸¸±â:\t" + +#. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. +#. +#: src/chage.c:290 +msgid "Password Inactive:\t" +msgstr "ĆĐ˝şżöµĺ°ˇ ŔŻČżÇĎÁö ľĘŔ˝:\t" + +#. +#. * The account will expire on the given date regardless of the +#. * password expiring or not. +#. +#: src/chage.c:304 +msgid "Account Expires:\t" +msgstr "°čÁ¤ ¸¸±â:\t" + +#: src/chage.c:468 +#, c-format +msgid "%s: do not include \"l\" with other flags\n" +msgstr "%s: \"l\" żÍ ÇÔ˛˛ ´Ů¸Ą flags¸¦ Ć÷ÇÔÇĎÁö ¸»°Í\n" + +#: src/chage.c:481 src/chage.c:652 src/login.c:516 +#, c-format +msgid "%s: permission denied\n" +msgstr "%s: Á˘±Ů±ÇÇŃ ľřŔ˝\n" + +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s: ŔÎÁőąćąý Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/chage.c:533 src/chpasswd.c:157 +#, c-format +msgid "%s: can't lock password file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎŔ» lockÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:544 src/chpasswd.c:162 +#, c-format +msgid "%s: can't open password file\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎŔ» ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:552 +#, c-format +msgid "%s: unknown user: %s\n" +msgstr "ľËĽöľř´Â »çżëŔÚ: %s\n" + +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" +msgstr "˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» lockÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" +msgstr "˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:674 +#, c-format +msgid "Changing the aging information for %s\n" +msgstr "%sŔÇ ż¬·Éżˇ ´ëÇŃ Á¤ş¸¸¦ °»˝ĹÇŐ´Ď´Ů %s\n" + +#: src/chage.c:677 +#, c-format +msgid "%s: error changing fields\n" +msgstr "%s: Ç׸ńŔ» ąŮ˛Ů´Â µµÁß żŔ·ů°ˇ ąß»ýÇß˝Ŕ´Ď´Ů\n" + +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 +#, c-format +msgid "%s: can't update password file\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:737 src/pwunconv.c:168 +#, c-format +msgid "%s: can't update shadow password file\n" +msgstr "˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 +msgid "Error updating the DBM password entry.\n" +msgstr "DBM Ć佺żöµĺ ŔԷºκĐŔ» ľ÷µĄŔĚĆ® ÇϴµĄ żŔ·ů°ˇ ąß»ýÇß˝Ŕ´Ď´Ů.\n" + +#: src/chage.c:823 +#, c-format +msgid "%s: can't rewrite shadow password file\n" +msgstr "˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» ´Ů˝Ă ŔŰĽşÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:838 +#, c-format +msgid "%s: can't rewrite password file\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎŔ» ´Ů˝Ă ŔŰĽşÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 +#, fuzzy, c-format +msgid "%s: PAM chauthtok failed\n" +msgstr "%s: ĆÄŔĎ Ŕá±ÝŔ» Ç® Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chfn.c:83 +#, c-format +msgid "" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" +msgstr "" +"»çżëąý: %s [-f Ŕ̸§] [-r ąć_ąřČŁ] [-w Á÷Ŕĺ_ŔüČ­ąřČŁ]\n" +"\t[-h Áý_ŔüČ­ąřČŁ] [-o ±âŸ] [»çżëŔÚ]\n" + +#: src/chfn.c:88 +#, c-format +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" +msgstr "" +"»çżëąý: %s [-f Ŕ̸§] [-r ąć_ąřČŁ] [-w Á÷Ŕĺ_ŔüČ­ąřČŁ] [-h Áý_ŔüČ­ąřČŁ]\n" + +#: src/chfn.c:139 +msgid "Enter the new value, or press ENTER for the default\n" +msgstr "»ő·Îżî °ŞŔ» łÖ°ĹłŞ, µđĆúĆ®¸¦ żřÇĎ¸é żŁĹ͸¦ ġĽĽżä\n" + +#: src/chfn.c:142 +msgid "Full Name" +msgstr "Ŕ̸§" + +#: src/chfn.c:144 +#, c-format +msgid "\tFull Name: %s\n" +msgstr "\tŔ̸§: %s\n" + +#: src/chfn.c:147 +msgid "Room Number" +msgstr "ąć ąřČŁ" + +#: src/chfn.c:149 +#, c-format +msgid "\tRoom Number: %s\n" +msgstr "\tąć ąřČŁ: %s\n" + +#: src/chfn.c:152 +msgid "Work Phone" +msgstr "Á÷Ŕĺ ąřČ­ąřČŁ" + +#: src/chfn.c:154 +#, c-format +msgid "\tWork Phone: %s\n" +msgstr "\tÁ÷Ŕĺ ŔüČ­ąřČŁ: %s\n" + +#: src/chfn.c:157 +msgid "Home Phone" +msgstr "Áý ŔüČ­ąřČŁ" + +#: src/chfn.c:159 +#, c-format +msgid "\tHome Phone: %s\n" +msgstr "\tÁý ŔüČ­ąřČŁ: %s\n" + +#: src/chfn.c:162 +msgid "Other" +msgstr "±âŸ" + +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 +#, c-format +msgid "%s: Permission denied.\n" +msgstr "Á˘±Ů±ÇÇŃ ľřŔ˝.\n" + +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 +#, c-format +msgid "%s: Unknown user %s\n" +msgstr "ľËĽöľř´Â »çżëŔÚ %s\n" + +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 +#, c-format +msgid "%s: Cannot determine your user name.\n" +msgstr "%s: »çżëŔÚ Ŕ̸§Ŕ» ŔνÄÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/chfn.c:358 src/chsh.c:215 +#, c-format +msgid "%s: cannot change user `%s' on NIS client.\n" +msgstr "NIS Ŭ¶óŔĚľđĆ®żˇĽ­ '%s'ŔÇ »çżëŔÚ Ŕ̸§Ŕ» şŻ°ćÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/chfn.c:366 src/chsh.c:223 +#, c-format +msgid "%s: `%s' is the NIS master for this client.\n" +msgstr "%s: ÇöŔçŔÇ Ĺ¬¶óŔĚľđĆ®żˇ ´ëÇĎż© '%s'°ˇ NIS ¸¶˝şĹÍŔÔ´Ď´Ů.\n" + +#: src/chfn.c:441 +#, c-format +msgid "Changing the user information for %s\n" +msgstr "%sżˇ ´ëÇĎż© »çżëŔÚŔÇ Á¤ş¸¸¦ ąŮ˛ß´Ď´Ů\n" + +#: src/chfn.c:450 +#, c-format +msgid "%s: invalid name: \"%s\"\n" +msgstr "%s: ŔŻČżÇĎÁö ľĘ´Â Ŕ̸§: \"%s\"\n" + +#: src/chfn.c:456 +#, c-format +msgid "%s: invalid room number: \"%s\"\n" +msgstr "ŔŻČżÇĎÁö ľĘ´Â ąć ąřČŁ: \"%s\"\n" + +#: src/chfn.c:462 +#, c-format +msgid "%s: invalid work phone: \"%s\"\n" +msgstr "ŔŻČżÇĎÁö ľĘ´Â Á÷Ŕĺ ŔüČ­ąřČŁ: \"%s\"\n" + +#: src/chfn.c:468 +#, c-format +msgid "%s: invalid home phone: \"%s\"\n" +msgstr "%s: ŔŻČżÇĎÁö ľĘ´Â Áý ŔüČ­ąřČŁ: \"%s\"\n" + +#: src/chfn.c:475 +#, c-format +msgid "%s: \"%s\" contains illegal characters\n" +msgstr "%s: \"%s\"Ŕş ŔűŔýÇĎÁö ľĘ´Â ±ŰŔÚ¸¦ Ć÷ÇÔÇĎ°í ŔÖ˝Ŕ´Ď´Ů\n" + +#: src/chfn.c:488 +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: ŔÔ·ÂąüŔ§°ˇ łĘą« ±é´Ď´Ů\n" + +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 +msgid "Cannot change ID to root.\n" +msgstr "·çĆ®·Î ľĆŔ̵𠺯°ćŔĚ şŇ°ˇ´É ÇŐ´Ď´Ů.\n" + +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 +msgid "Cannot lock the password file; try again later.\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎŔ» lockÇŇ Ľö ľř˝Ŕ´Ď´Ů; łŞÁßżˇ ´Ů˝Ă ˝ĂµµÇϽʽÿŔ.\n" + +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 +msgid "Cannot open the password file.\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎŔ» ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů.\n" + +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 +#, c-format +msgid "%s: %s not found in /etc/passwd\n" +msgstr "%s: %s°ˇ /etc/passwdżˇĽ­ ąß°ßµÇÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 +msgid "Error updating the password entry.\n" +msgstr "ĆĐ˝şżöµĺ ŔÔ·ÂŔ» ľ÷µĄŔĚĆ®ÇϴµĄ żŔ·ůąß»ý.\n" + +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 +msgid "Cannot commit password file changes.\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎ şŻ°ćŔ» Ăł¸®ÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/chfn.c:592 src/chsh.c:404 +msgid "Cannot unlock the password file.\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎŔ» lockÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/chpasswd.c:66 +#, c-format +msgid "usage: %s [-e]\n" +msgstr "»çżëąý: %s [-e]\n" + +#: src/chpasswd.c:171 src/pwconv.c:94 +#, c-format +msgid "%s: can't lock shadow file\n" +msgstr "%s: ˝¦µµżě ĆÄŔĎŔ» lockÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 +#, c-format +msgid "%s: can't open shadow file\n" +msgstr "%s: ˝¦µµżě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chpasswd.c:200 src/newusers.c:460 +#, c-format +msgid "%s: line %d: line too long\n" +msgstr "%s: line %d: łĘą« ±é´Ď´Ů\n" + +#: src/chpasswd.c:220 +#, c-format +msgid "%s: line %d: missing new password\n" +msgstr "%s: line %d: »ő·Îżî ĆĐ˝şżöµĺ°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/chpasswd.c:237 +#, c-format +msgid "%s: line %d: unknown user %s\n" +msgstr "%s: line %d: ľË Ľö ľř´Â »çżëŔÚ %s\n" + +#: src/chpasswd.c:290 +#, c-format +msgid "%s: line %d: cannot update password entry\n" +msgstr "%s: line %d: ĆĐ˝şżöµĺ ŔÔ·ÂŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/chpasswd.c:307 src/newusers.c:588 +#, c-format +msgid "%s: error detected, changes ignored\n" +msgstr "%s: żŔ·ůąß»ý, şŻ°ćŔĚ Ăł¸®µÇÁö ľĘľŇ˝Ŕ´Ď´Ů\n" + +#: src/chpasswd.c:319 +#, c-format +msgid "%s: error updating shadow file\n" +msgstr "%s: ˝¦µµżě ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇϴµĄ żŔ·ůąß»ý\n" + +#: src/chpasswd.c:328 +#, c-format +msgid "%s: error updating password file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇϴµĄ żŔ·ůąß»ý\n" + +#: src/chsh.c:75 +#, c-format +msgid "Usage: %s [-s shell] [name]\n" +msgstr "»çżëąý: %s [-s ˝©] [Ŕ̸§]\n" + +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "»ő·Îżî °ŞŔ» łÖ°ĹłŞ, µđĆúĆ®¸¦ żřÇĎ¸é żŁĹ͸¦ ġĽĽżä\n" + +#: src/chsh.c:90 +msgid "Login Shell" +msgstr "·Î±ä ˝©" + +#: src/chsh.c:239 src/chsh.c:253 +#, c-format +msgid "You may not change the shell for %s.\n" +msgstr "»çżëŔÚ´Â %sżˇ ´ëÇŃ ˝©Ŕ» şŻ°ćÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/chsh.c:282 +#, c-format +msgid "Changing the login shell for %s\n" +msgstr "%sżˇ ´ëÇŃ ·Î±ä ˝©Ŕ» şŻ°ćÇĎ°í ŔÖ˝Ŕ´Ď´Ů\n" + +#: src/chsh.c:294 +#, c-format +msgid "%s: Invalid entry: %s\n" +msgstr "%s: şÎŔűŔýÇŃ ŔÔ·Â: %s\n" + +#: src/chsh.c:301 +#, c-format +msgid "%s is an invalid shell.\n" +msgstr "%s´Â şÎŔűŔýÇŃ ˝©ŔÔ´Ď´Ů.\n" + +#: src/dpasswd.c:52 +#, c-format +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "»çżëąý: %s [-(a|d)] ˝©\n" + +#: src/dpasswd.c:115 +msgid "Shell password: " +msgstr "˝© ĆĐ˝şżöµĺ: " + +#: src/dpasswd.c:121 +msgid "re-enter Shell password: " +msgstr "˝© ĆĐ˝şżöµĺ¸¦ ´Ů˝Ă ŔÔ·Â: " + +#: src/dpasswd.c:129 +#, c-format +msgid "%s: Passwords do not match, try again.\n" +msgstr "%s: ĆĐ˝şżöµĺ°ˇ ¸ÂÁö ľĘ˝Ŕ´Ď´Ů. ´Ů˝Ă ˝ĂµµÇĎĽĽżä. \n" + +#: src/dpasswd.c:149 +#, c-format +msgid "%s: can't create %s" +msgstr "%s: %s¸¦ ¸¸µé Ľö ľř˝Ŕ´Ď´Ů" + +#: src/dpasswd.c:155 +#, c-format +msgid "%s: can't open %s" +msgstr "%s: %s¸¦ ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů" + +#: src/dpasswd.c:183 +#, c-format +msgid "%s: Shell %s not found.\n" +msgstr "%s: %sŔÇ ˝©ŔĚ ąß°ßµÇÁö ľř˝Ŕ´Ď´Ů.\n" + +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" +msgstr "»çżëąý: ¸¸±â { -f | -c }\n" + +#: src/expiry.c:113 +#, c-format +msgid "%s: WARNING! Must be set-UID root!\n" +msgstr "%s: °ć°í! ąÝµĺ˝Ă ·çĆ®ŔÇ UID¸¦ ¸ÂĂâ°Í!\n" + +#: src/expiry.c:124 +#, c-format +msgid "%s: unknown user\n" +msgstr "%s: ľËĽöľř´Â »çżëŔÚ\n" + +#: src/faillog.c:77 +#, c-format +msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" +msgstr "»çżëąý: %s [-a|-u »çżëŔÚ] [-m ĂÖ´ë] [-r] [-t łŻÂĄ] [-l locksecs]\n" + +#: src/faillog.c:131 src/lastlog.c:96 +#, c-format +msgid "Unknown User: %s\n" +msgstr "ľËĽöľř´Â »çżëŔÚ: %s\n" + +#: src/faillog.c:212 +msgid "Username Failures Maximum Latest\n" +msgstr "ĂÖ´ë ŔԷ½à ±îÁö »çżëŔÚ Ŕ̸§ ŔÎÁő ˝ÇĆĐ\n" + +#: src/faillog.c:229 +#, c-format +msgid " %s on %s" +msgstr "%s ŔÇ %s" + +#: src/faillog.c:233 +#, c-format +msgid " [%lds left]" +msgstr " [%lds left]" + +#: src/faillog.c:237 +#, c-format +msgid " [%lds lock]" +msgstr " [%lds lock]" + +#: src/gpasswd.c:78 +#, c-format +msgid "usage: %s [-r|-R] group\n" +msgstr "»çżëąý: %s [-r|-R] ±×·ě\n" + +#: src/gpasswd.c:79 +#, c-format +msgid " %s [-a user] group\n" +msgstr " %s [-a »çżëŔÚ] ±×·ě\n" + +#: src/gpasswd.c:80 +#, c-format +msgid " %s [-d user] group\n" +msgstr " %s [-d »çżëŔÚ] ±×·ě\n" + +#: src/gpasswd.c:83 +#, c-format +msgid " %s [-A user,...] [-M user,...] group\n" +msgstr " %s [-A »çżëŔÚ,...] [-M »çżëŔÚ,...] ±×·ě\n" + +#: src/gpasswd.c:85 +#, c-format +msgid " %s [-M user,...] group\n" +msgstr " %s [-M »çżëŔÚ,...] ±×·ě\n" + +#: src/gpasswd.c:146 src/gpasswd.c:230 +#, c-format +msgid "%s: unknown user %s\n" +msgstr "%s: ľË Ľö ľř´Â »çżëŔÚ %s\n" + +#: src/gpasswd.c:157 +msgid "Permission denied.\n" +msgstr "Á˘±Ů±ÇÇŃ ľřŔ˝.\n" + +#: src/gpasswd.c:243 +#, c-format +msgid "%s: shadow group passwords required for -A\n" +msgstr "%s: -Ażˇ ´ëÇĎż© ˝¦µµżě ±×·ě ĆĐ˝şżöµĺ°ˇ ÇĘżäÇŐ´Ď´Ů\n" + +#: src/gpasswd.c:294 +msgid "Who are you?\n" +msgstr "´ç˝ĹŔş ´©±¸˝Ę´Ď±î?\n" + +#: src/gpasswd.c:313 src/newgrp.c:297 +#, c-format +msgid "unknown group: %s\n" +msgstr "ľË Ľö ľř´Â ±×·ě: %s\n" + +#: src/gpasswd.c:422 +#, c-format +msgid "Adding user %s to group %s\n" +msgstr "%s ±×·ěżˇ %s »çżëŔÚ µî·ĎÁß\n" + +#: src/gpasswd.c:440 +#, c-format +msgid "Removing user %s from group %s\n" +msgstr "%s ±×·ě Ŕ¸·ÎşÎĹÍ %s »çżëŔÚ »čÁ¦Áß\n" + +#: src/gpasswd.c:454 +#, c-format +msgid "%s: unknown member %s\n" +msgstr "%s: ľË Ľö ľř´Â ±×·ě¸âąö %s\n" + +#: src/gpasswd.c:501 +#, c-format +msgid "%s: Not a tty\n" +msgstr "%s: tty °ˇ ľĆ´Ô\n" + +#. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. +#. +#: src/gpasswd.c:522 +#, c-format +msgid "Changing the password for group %s\n" +msgstr "%s ±×·ěżˇ ´ëÇĎż© ĆĐ˝şżöµĺ¸¦ şŻ°ćÁß\n" + +#: src/gpasswd.c:525 +msgid "New Password: " +msgstr "»ő·Îżî ĆĐ˝şżöµĺ: " + +#: src/gpasswd.c:530 src/passwd.c:365 +msgid "Re-enter new password: " +msgstr "»ő ĆĐ˝şżöµĺ¸¦ ´Ů˝Ă ŔÔ·ÂÇĎĽĽżä: " + +#: src/gpasswd.c:542 +msgid "They don't match; try again" +msgstr "ŔԷ°ŞŔĚ ŔĎġÇĎÁö ľĘ˝Ŕ´Ď´Ů; ´Ů˝Ă ˝ĂµµÇĎĽĽżä" + +#: src/gpasswd.c:546 +#, c-format +msgid "%s: Try again later\n" +msgstr "%s: łŞÁßżˇ ´Ů˝Ă ˝ĂµµÇĎĽĽżä\n" + +#: src/gpasswd.c:578 +#, c-format +msgid "%s: can't get lock\n" +msgstr "%s: Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:584 +#, c-format +msgid "%s: can't get shadow lock\n" +msgstr "%s: ˝¦µµżě Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:590 +#, c-format +msgid "%s: can't open file\n" +msgstr "%s: ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:602 +#, c-format +msgid "%s: can't update entry\n" +msgstr "%s: ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:608 +#, c-format +msgid "%s: can't update shadow entry\n" +msgstr "%s: ˝¦µµżě ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:615 +#, c-format +msgid "%s: can't re-write file\n" +msgstr "%s: ĆÄŔĎŔ» ´Ů˝Ă ľµ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:621 +#, c-format +msgid "%s: can't re-write shadow file\n" +msgstr "%s: ˝¦µµżě ĆÄŔĎŔ» ´Ů˝Ă ľµ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:630 +#, c-format +msgid "%s: can't unlock file\n" +msgstr "%s: ĆÄŔĎ Ŕá±ÝŔ» Ç® Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:635 +#, c-format +msgid "%s: can't update DBM files\n" +msgstr "%s: DBM ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/gpasswd.c:642 +#, c-format +msgid "%s: can't update DBM shadow files\n" +msgstr "%s: DBM ˝¦µµżě ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:101 +msgid "usage: groupadd [-g gid [-o]] group\n" +msgstr "»çżëąý: groupadd [-g gid(±×·ě ľĆŔ̵đ) [-o]] ±×·ě¸í\n" + +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 +#, c-format +msgid "%s: error adding new group entry\n" +msgstr "%s: »ő·Îżî ±×·ěŔ» Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 +#, c-format +msgid "%s: cannot add new dbm group entry\n" +msgstr "%s: »ő·Îżî dbm ±×·ě ŔԷ°ŞŔ» Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/groupadd.c:255 src/useradd.c:1034 +#, c-format +msgid "%s: name %s is not unique\n" +msgstr "%s: %s ¶ő Ŕ̸§Ŕş ŔűŔýÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s: uid(»çżëŔÚ ľĆŔ̵đ) %ld ´Â ŔűŔýÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:294 +#, c-format +msgid "%s: can't get unique gid\n" +msgstr "%s: ŔűŔýÇŃ gid(±×·ě ľĆŔ̵đ)¸¦ ľňŔ» Ľö ľř˝Ŕ´Ď´Ů\n" + +#. +#. * All invalid group names land here. +#. +#: src/groupadd.c:317 src/groupmod.c:341 +#, c-format +msgid "%s: %s is a not a valid group name\n" +msgstr "%s: %s ´Â ŔŻČżÇŃ ±×·ě¸íŔĚ ľĆ´Ő´Ď´Ů\n" + +#: src/groupadd.c:346 src/groupmod.c:366 +#, c-format +msgid "%s: invalid group %s\n" +msgstr "%s: ŔŻČżÇĎÁö ľĘŔş ±×·ě %s\n" + +#: src/groupadd.c:363 src/useradd.c:1313 +#, c-format +msgid "%s: -O requires NAME=VALUE\n" +msgstr "%s: NAME=VALUE ¸¦ Ŕ§ÇŘĽ­´Â -O żÉĽÇŔĚ ÇĘżäÇŐ´Ď´Ů\n" + +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 +#, c-format +msgid "%s: cannot rewrite group file\n" +msgstr "%s: ±×·ěĆÄŔĎŔ» ´Ů˝Ă ľµ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 +#, c-format +msgid "%s: cannot rewrite shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎŔ» ´Ů˝Ă ľµ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 +#, c-format +msgid "%s: unable to lock group file\n" +msgstr "%s: ±×·ě ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 +#, c-format +msgid "%s: unable to open group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 +#, c-format +msgid "%s: unable to lock shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 +#, c-format +msgid "%s: unable to open shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupadd.c:562 +#, c-format +msgid "%s: group %s exists\n" +msgstr "%s: ±×·ě %s ´Â Á¸ŔçÇŐ´Ď´Ů\n" + +#: src/groupdel.c:92 +msgid "usage: groupdel group\n" +msgstr "»çżëąý: groupdel ±×·ě¸í\n" + +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 +#, c-format +msgid "%s: error removing group entry\n" +msgstr "%s: ±×·ě ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/groupdel.c:122 src/groupmod.c:204 +#, c-format +msgid "%s: error removing group dbm entry\n" +msgstr "%s: ±×·ě dbm ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/groupdel.c:137 +#, c-format +msgid "%s: error removing shadow group entry\n" +msgstr "%s: ˝¦µµżě ±×·ě ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/groupdel.c:150 src/groupmod.c:254 +#, c-format +msgid "%s: error removing shadow group dbm entry\n" +msgstr "%s: ˝¦µµżě ±×·ě dbm ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#. +#. * Can't remove the group. +#. +#: src/groupdel.c:254 +#, c-format +msgid "%s: cannot remove user's primary group.\n" +msgstr "%s: »çżëŔÚŔÇ primary ±×·ěŔ» Á¦°ĹÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/groupdel.c:355 src/groupmod.c:550 +#, c-format +msgid "%s: group %s does not exist\n" +msgstr "%s: ±×·ě %s ´Â Á¸ŔçÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/groupdel.c:369 src/groupmod.c:566 +#, c-format +msgid "%s: group %s is a NIS group\n" +msgstr "%s: ±×·ě %s ´Â NIS ±×·ěŔÔ´Ď´Ů\n" + +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 +#, c-format +msgid "%s: %s is the NIS master\n" +msgstr "%s: %s ´Â NIS ¸¶˝şĹÍ(master)ŔÔ´Ď´Ů\n" + +#: src/groupmems.c:95 +msgid "Member already exists\n" +msgstr "" + +#: src/groupmems.c:125 +msgid "Member to remove could not be found\n" +msgstr "" + +#: src/groupmems.c:158 +msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" +msgstr "" + +#: src/groupmems.c:201 +msgid "Only root can add members to different groups\n" +msgstr "" + +#: src/groupmems.c:206 +msgid "Group access is required\n" +msgstr "" + +#: src/groupmems.c:210 +msgid "Not primary owner of current group\n" +msgstr "" + +#: src/groupmems.c:215 +#, fuzzy +msgid "Unable to lock group file\n" +msgstr "%s: ±×·ě ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupmems.c:220 +#, fuzzy +msgid "Unable to open group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/groupmems.c:240 +#, fuzzy +msgid "Cannot close group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupmod.c:103 +msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" +msgstr "»çżëąý: groupmod [-g gid(±×·ě ľĆŔ̵đ) [-o]] [-n Ŕ̸§] ±×·ě¸í\n" + +#: src/groupmod.c:161 +#, c-format +msgid "%s: %s not found in /etc/group\n" +msgstr "%s: %s ´Â /etc/group żˇĽ­ ąß°ßŔĚ µÇÁö ľĘľŇ˝Ŕ´Ď´Ů\n" + +#: src/groupmod.c:247 +#, c-format +msgid "%s: cannot add new dbm shadow group entry\n" +msgstr "%s: »ő·Îżî dbm ˝¦µµżě ±×·ě ŔԷ°ŞŔ» Ăß°ˇÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" +msgstr "%s: %ld ´Â ŔűŔýÇŃ gid(±×·ě ľĆŔ̵đ)°ˇ ľĆ´Ő´Ď´Ů\n" + +#: src/groupmod.c:330 +#, c-format +msgid "%s: %s is not a unique name\n" +msgstr "%s: %s ´Â ŔűŔýÇŃ Ŕ̸§ŔĚ ľĆ´Ő´Ď´Ů\n" + +#: src/groups.c:59 +#, c-format +msgid "unknown user %s\n" +msgstr "ľËĽöľř´Â »çżëŔÚ %s\n" + +#: src/grpck.c:87 +#, fuzzy, c-format +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "»çżëąý: %s [-s][-r] [group [gshadow]]\n" + +#: src/grpck.c:90 +#, fuzzy, c-format +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "»çżëąý: %s [-s] [-r] [group]\n" + +#: src/grpck.c:108 src/pwck.c:108 +msgid "No" +msgstr "ľĆ´ĎżŔ" + +#: src/grpck.c:192 src/pwck.c:175 +#, c-format +msgid "%s: -s and -r are incompatibile\n" +msgstr "" + +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 +#, c-format +msgid "%s: cannot lock file %s\n" +msgstr "%s: ĆÄŔĎ %s Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 +#, c-format +msgid "%s: cannot open file %s\n" +msgstr "%s: ĆÄŔĎ %s ¸¦ ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/grpck.c:311 +msgid "invalid group file entry\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş ±×·ěĆÄŔĎ ŔԷ°Ş\n" + +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 +#, c-format +msgid "delete line `%s'? " +msgstr "¶óŔÎ '%s'¸¦ Áöżď±îżä? " + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/grpck.c:374 +msgid "duplicate group entry\n" +msgstr "±×·ě ŔÔ·Â°Ş şąÁ¦\n" + +#: src/grpck.c:391 +#, c-format +msgid "invalid group name `%s'\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş ±×·ě¸í '%s'\n" + +#: src/grpck.c:418 +#, c-format +msgid "group %s: no user %s\n" +msgstr "±×·ě %s: »çżëŔÚ %s °ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:420 src/grpck.c:590 +#, c-format +msgid "delete member `%s'? " +msgstr "¸âąö '%s'¸¦ Áöżď±îżä? " + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/grpck.c:457 +msgid "invalid shadow group file entry\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş ˝¦µµżě ±×·ěĆÄŔĎ ŔԷ°Ş\n" + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/grpck.c:520 +msgid "duplicate shadow group entry\n" +msgstr "˝¦µµżě ±×·ě ŔÔ·Â°Ş şąÁ¦\n" + +#: src/grpck.c:537 +msgid "no matching group file entry\n" +msgstr "±×·ě ĆÄŔĎ ŔԷ°ŞŔĚ ŔĎġÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:558 +#, c-format +msgid "shadow group %s: no administrative user %s\n" +msgstr "˝¦µµżě ±×·ě %s: °ü¸®±ÇÇŃŔĚ ŔÖ´Â »çżëŔÚ %s °ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:560 +#, c-format +msgid "delete administrative member `%s'? " +msgstr "°ü¸® ±ÇÇŃŔĚ ŔÖ´Â ¸âąö '%s' ¸¦ Áöżď±îżä? " + +#: src/grpck.c:588 +#, c-format +msgid "shadow group %s: no user %s\n" +msgstr "˝¦µµżě ±×·ě %s: %s ¶ő »çżëŔÚ°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 +#, c-format +msgid "%s: cannot update file %s\n" +msgstr "%s: ĆÄŔĎ %s ¸¦ ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:647 src/pwck.c:612 +#, c-format +msgid "%s: the files have been updated; run mkpasswd\n" +msgstr "%s: ĆÄŔĎŔĚ ľ÷µĄŔĚĆ® µÇľú˝Ŕ´Ď´Ů; mkpasswd ¸¦ ˝ÇÇŕÇϽʽÿŔ\n" + +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 +#, c-format +msgid "%s: no changes\n" +msgstr "%s: şŻ°ćŔĚ ľČ µÇľú˝Ŕ´Ď´Ů\n" + +#: src/grpck.c:651 src/pwck.c:616 +#, c-format +msgid "%s: the files have been updated\n" +msgstr "%s: ĆÄŔĎŔĚ ľ÷µĄŔĚĆ® µÇľú˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:60 src/grpunconv.c:56 +#, c-format +msgid "%s: can't lock group file\n" +msgstr "%s: ±×·ě ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:65 src/grpunconv.c:61 +#, c-format +msgid "%s: can't open group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:70 src/grpunconv.c:66 +#, c-format +msgid "%s: can't lock shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:76 src/grpunconv.c:72 +#, c-format +msgid "%s: can't open shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:94 +#, c-format +msgid "%s: can't remove shadow group %s\n" +msgstr "%s: ˝¦µµżě ±×·ě %s ¸¦ Á¦°ĹÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:138 src/pwconv.c:153 +#, c-format +msgid "%s: can't update shadow entry for %s\n" +msgstr "%s: %s żˇ ´ëÇŃ ˝¦µµżě ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:148 src/grpunconv.c:91 +#, c-format +msgid "%s: can't update entry for group %s\n" +msgstr "%s: %s ±×·ěżˇ ´ëÇŃ ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:155 src/grpunconv.c:99 +#, c-format +msgid "%s: can't update shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:160 src/grpunconv.c:105 +#, c-format +msgid "%s: can't update group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/grpconv.c:175 src/grpunconv.c:127 +#, c-format +msgid "%s: not configured for shadow group support.\n" +msgstr "%s: ˝¦µµżě ±×·ě Áöżřżˇ ´ëÇĎż© ÇüĽşŔĚ µÇÁö ľĘľŇ˝Ŕ´Ď´Ů.\n" + +#: src/grpunconv.c:110 +#, c-format +msgid "%s: can't delete shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎŔ» ÁöżďĽö ľř˝Ŕ´Ď´Ů\n" + +#: src/id.c:53 +msgid "usage: id [-a]\n" +msgstr "»çżëąý: id [-a]\n" + +#: src/id.c:55 +msgid "usage: id\n" +msgstr "»çżëąý: id\n" + +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" +msgstr "uid(»çżëŔÚ ľĆŔ̵đ)=%d(%s)" + +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" +msgstr "uid(»çżëŔÚ ľĆŔ̵đ)=%d" + +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" +msgstr " gid(±×·ě ľĆŔ̵đ)=%d(%s)" + +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" +msgstr " gid(±×·ě ľĆŔ̵đ)=%d" + +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" +msgstr " euid=%d(%s)" + +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" +msgstr " euid=%d" + +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" +msgstr " egid=%d(%s)" + +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" +msgstr " egid=%d" + +#. +#. * Start off the group message. It will be of the format +#. * +#. * groups=###(aaa),###(aaa),###(aaa) +#. * +#. * where "###" is a numerical value and "aaa" is the +#. * corresponding name for each respective numerical value. +#. +#: src/id.c:169 +msgid " groups=" +msgstr " ±×·ěµé=" + +#: src/lastlog.c:110 src/lastlog.c:116 +#, c-format +msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" +msgstr "" + +#: src/lastlog.c:181 +msgid "Username Port From Latest\n" +msgstr "»çżëŔÚ¸í\tĆ÷Ć®\t~·ÎşÎĹÍ\t\tĂÖ±ŮÁ¤ş¸\n" + +#: src/lastlog.c:183 +msgid "Username Port Latest\n" +msgstr "»çżëŔÚ¸í\t\tĆ÷Ć®\tĂÖ±ŮÁ¤ş¸\n" + +#: src/lastlog.c:197 +msgid "**Never logged in**" +msgstr "**ÇŃąřµµ ·Î±äÇŃŔűŔĚ ľř˝Ŕ´Ď´Ů**" + +#: src/login.c:183 +#, c-format +msgid "usage: %s [-p] [name]\n" +msgstr "»çżëąý: %s [-p] [Ŕ̸§]\n" + +#: src/login.c:186 +#, c-format +msgid " %s [-p] [-h host] [-f name]\n" +msgstr "\t%s [-p][-h ČŁ˝şĆ®¸í][-f Ŕ̸§]\n" + +#: src/login.c:188 +#, c-format +msgid " %s [-p] -r host\n" +msgstr "\t%s [-p] -r ČŁ˝şĆ®\n" + +#: src/login.c:272 +msgid "Invalid login time\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş ·Î±ä ˝Ă°Ł(ÇöŔç˝Ă°ŁŔş ·Î±ä±ÇÇŃ ľřŔ˝)\n" + +#: src/login.c:327 +msgid "" +"\n" +"System closed for routine maintenance\n" +msgstr "" +"\n" +"±ŮżřÁöŔÇ Á¤şń¸¦ Ŕ§ÇŘ ˝Ă˝şĹŰŔĚ Áľ·áµÇľú˝Ŕ´Ď´Ů\n" + +#: src/login.c:338 +msgid "" +"\n" +"[Disconnect bypassed -- root login allowed.]\n" +msgstr "" +"\n" +"[Á˘ĽÓÇŘÁ¦°ˇ ą«˝ĂµÇľú˝Ŕ´Ď´Ů -- ·çĆ®¸¸ ·Î±äŔ» ÇŇ Ľö ŔÖ˝Ŕ´Ď´Ů]\n" + +#: src/login.c:375 +#, c-format +msgid "" +"\n" +"Login timed out after %d seconds.\n" +msgstr "" +"\n" +"%d ĂĘČÄżˇ ·Î±ä ˝Ă°ŁŔĚ żĎ·áµË´Ď´Ů.\n" + +#: src/login.c:687 +#, c-format +msgid " on `%.100s' from `%.200s'" +msgstr " on `%.100s' from `%.200s'" + +#: src/login.c:691 +#, c-format +msgid " on `%.100s'" +msgstr " on `%.100s'" + +#: src/login.c:850 +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s ·Î±ä: " + +#: src/login.c:853 +msgid "login: " +msgstr "·Î±ä: " + +#: src/login.c:1069 src/sulogin.c:233 +msgid "Login incorrect" +msgstr "·Î±ä¸íŔĚ ¸ÂÁö ľĘ˝Ŕ´Ď´Ů" + +#: src/login.c:1263 +msgid "Warning: login re-enabled after temporary lockout.\n" +msgstr "°ć°í: ŔĎ˝ĂŔűŔ¸·Î ĆäĽâµČµÚ ´Ů˝Ă ·Î±äÇŇ Ľö ŔÖ˝Ŕ´Ď´Ů.\n" + +#: src/login.c:1276 +#, c-format +msgid "Last login: %s on %s" +msgstr "¸¶Áö¸· ·Î±ä: %s on %s" + +#: src/login.c:1279 +#, c-format +msgid "Last login: %.19s on %s" +msgstr "¸¶Áö¸· ·Î±ä: %.19s on %s" + +#: src/login.c:1285 +#, c-format +msgid " from %.*s" +msgstr " from %.*s" + +#: src/login.c:1362 +msgid "Starting rad_login\n" +msgstr "rad_login Ŕ» ˝ĂŔŰÇĎ°í ŔÖ˝Ŕ´Ď´Ů\n" + +#: src/mkpasswd.c:47 +#, c-format +msgid "%s: no DBM database on system - no action performed\n" +msgstr "" +"%s: ˝Ă˝şĹŰżˇ DBM µĄŔĚĹÍşŁŔĚ˝ş°ˇ ľř˝Ŕ´Ď´Ů - µű¶óĽ­ ľî¶»ÇŃ °Íµµ ˝ÇÇŕµÇÁö ľĘľŇ˝Ŕ" +"´Ď´Ů\n" + +#: src/mkpasswd.c:232 src/mkpasswd.c:237 +#, c-format +msgid "%s: cannot overwrite file %s\n" +msgstr "%s: ĆÄŔĎ %s ¸¦ °ăĂÄľµ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/mkpasswd.c:252 +#, c-format +msgid "%s: cannot open DBM files for %s\n" +msgstr "%s: %s żˇ ´ëÇŃ DBM ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/mkpasswd.c:287 +#, c-format +msgid "%s: the beginning with " +msgstr "%s: ~żÍ ÇÔ˛˛ ˝ĂŔŰ " + +#: src/mkpasswd.c:288 +#, fuzzy +msgid " is too long\n" +msgstr "%s: ŔÔ·ÂąüŔ§°ˇ łĘą« ±é´Ď´Ů\n" + +#: src/mkpasswd.c:315 +#, c-format +msgid "%s: error parsing line \"%s\"\n" +msgstr "%s: ¶óŔÎ \"%s\" Ŕ» şĐĽ®ÇϴµĄ żŔ·ů\n" + +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 +msgid "adding record for name " +msgstr "Ŕ̸§żˇ ´ëÇŃ ±â·ĎŔ» Ăß°ˇÇĎ°í ŔÖ˝Ŕ´Ď´Ů " + +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 +msgid "\n" +msgstr "" + +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 +#, c-format +msgid "%s: error adding record for " +msgstr "%s: żˇ ´ëÇŃ ±â·ĎŔ» Ăß°ˇÇϴµĄ żŔ·ů " + +#: src/mkpasswd.c:378 +#, c-format +msgid "added %d entries, longest was %d\n" +msgstr "%d ŔԷ°ŞŔĚ Ăß°ˇ µÇľú˝Ŕ´Ď´Ů, °ˇŔĺ±ä°ÍŔş %d ŔÔ´Ď´Ů\n" + +#: src/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "»çżëąý: %s [-vf] [-p|sp|sg] ĆÄŔϸí\n" + +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "»çżëąý: %s [-vf][-p|g|sp] ĆÄŔϸí\n" + +#: src/mkpasswd.c:398 +#, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "»çżëąý: %s [-vf][-p|g] ĆÄŔϸí\n" + +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "»çżëąý: newgrp [-] [±×·ě]\n" + +#: src/newgrp.c:63 +msgid "usage: sg group [[-c] command]\n" +msgstr "»çżëąý: sg group [[-c] ¸í·É]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" +msgstr "ľËĽöľř´Â uid(»çżëŔÚ ľĆŔ̵đ): %d\n" + +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" +msgstr "ľËĽöľř´Â gid(±×·ě ľĆŔ̵đ): %ld\n" + +#: src/newgrp.c:365 src/newgrp.c:374 +msgid "Sorry.\n" +msgstr "ÁËĽŰÇŐ´Ď´Ů.\n" + +#: src/newgrp.c:472 +msgid "too many groups\n" +msgstr "±×·ěµéŔĚ łĘą«łŞ ¸ą˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:78 +#, c-format +msgid "Usage: %s [input]\n" +msgstr "»çżëąý:%s [ŔԷ°Ş]\n" + +#: src/newusers.c:407 +#, c-format +msgid "%s: can't lock /etc/passwd.\n" +msgstr "%s: /etc/passwd Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/newusers.c:419 +#, c-format +msgid "%s: can't lock files, try again later\n" +msgstr "%s: ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů, łŞÁßżˇ ´Ů˝Ă ˝ĂµµÇĎĽĽżä\n" + +#: src/newusers.c:435 +#, c-format +msgid "%s: can't open files\n" +msgstr "%s: ĆÄŔĎŔ» ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:480 +#, c-format +msgid "%s: line %d: invalid line\n" +msgstr "%s: ¶óŔÎ %d: ŔŻČżÇĎÁö ľĘŔş ¶óŔÎ\n" + +#: src/newusers.c:499 +#, c-format +msgid "%s: line %d: can't create GID\n" +msgstr "%s: ¶óŔÎ %d: GID(±×·ě ľĆŔ̵đ)¸¦ ¸¸µéĽö ľř˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:515 +#, c-format +msgid "%s: line %d: can't create UID\n" +msgstr "%s: ¶óŔÎ %d: UID(»çżëŔÚ ľĆŔ̵đ)¸¦ ¸¸µéĽö ľř˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:528 +#, c-format +msgid "%s: line %d: cannot find user %s\n" +msgstr "%s: ¶óŔÎ %d: »çżëŔÚ %s ¸¦ ąß°ßÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:537 +#, c-format +msgid "%s: line %d: can't update password\n" +msgstr "%s: ¶óŔÎ %d: ĆĐ˝şżöµĺ¸¦ ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:555 +#, c-format +msgid "%s: line %d: mkdir failed\n" +msgstr "%s: ¶óŔÎ %d: µđ·şĹ丮 ¸¸µé±â¸¦ ˝ÇĆĐÇß˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:561 +#, c-format +msgid "%s: line %d: chown failed\n" +msgstr "%s: ¶óŔÎ %d: chown Ŕ» ˝ÇĆĐÇß˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:571 +#, c-format +msgid "%s: line %d: can't update entry\n" +msgstr "%s: ¶óŔÎ %d: ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/newusers.c:603 +#, c-format +msgid "%s: error updating files\n" +msgstr "%s: ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇϴµĄ żŔ·ů\n" + +#: src/passwd.c:174 +#, c-format +msgid "usage: %s [-f|-s] [name]\n" +msgstr "»çżëąý: %s [-f|-s][Ŕ̸§]\n" + +#: src/passwd.c:178 +#, c-format +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr "\t%s [-x ĂÖ´ë][-n ĂÖĽŇ][-w °ć°í][-i şńČ°ĽşČ­] Ŕ̸§\n" + +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" +msgstr "\t%s { -l | -u | -d | -S | -e } Ŕ̸§\n" + +#: src/passwd.c:283 +#, c-format +msgid "User %s has a TCFS key, his old password is required.\n" +msgstr "" +"»çżëŔÚ %s ´Â TCFS Ĺ°¸¦ °ˇÁö°í ŔÖ˝Ŕ´Ď´Ů, ±×ŔÇ żąŔü ĆĐ˝şżöµĺ°ˇ żä±¸µË´Ď´Ů.\n" + +#: src/passwd.c:286 +msgid "You can use -t option to force the change.\n" +msgstr "°­Á¦·Î şŻ°ćŔ» Çϱâ Ŕ§ÇŘĽ­´Â -t żÉĽÇŔ» »çżëÇŇ Ľö ŔÖ˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:292 +msgid "Old password: " +msgstr "żąŔü ĆĐ˝şżöµĺ: " + +#: src/passwd.c:301 +#, c-format +msgid "Incorrect password for `%s'\n" +msgstr "`%s' żˇ ´ëÇĎż© ĆĐ˝şżöµĺ°ˇ ¸ÂÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/passwd.c:314 +#, c-format +msgid "Warning: user %s has a TCFS key.\n" +msgstr "°ć°í: »çżëŔÚ %s ´Â TCFS Ĺ°¸¦ °ˇÁö°í ŔÖ˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:333 +#, c-format +msgid "" +"Enter the new password (minimum of %d, maximum of %d characters)\n" +"Please use a combination of upper and lower case letters and numbers.\n" +msgstr "" +"»ő·Îżî ĆĐ˝şżöµĺ¸¦ ŔÔ·ÂÇĎĽĽżä (ĂÖĽŇ %d, ĂÖ´ë %d ±ŰŔÚ)\n" +"»óÇĎŔ§ ±ŰŔÚżÍ ĽýŔÚ¸¦ Á¶ÇŐÇĎż© »çżëÇĎĽĽżä.\n" + +#: src/passwd.c:339 +msgid "New password: " +msgstr "»ő·Îżî ĆĐ˝şżöµĺ: " + +#: src/passwd.c:350 +msgid "Try again.\n" +msgstr "´Ů˝Ă ˝ĂµµÇĎĽĽżä.\n" + +#: src/passwd.c:361 +msgid "" +"\n" +"Warning: weak password (enter it again to use it anyway).\n" +msgstr "" +"\n" +"°ć°í: ş¸ľČĽşŔĚ ľř´Â ĆĐ˝şżöµĺ (±×·ˇµµ »çżëÇĎ±ć żřÇŃ´Ů¸é ´Ů˝Ă ŔÔ·ÂÇĎĽĽżä).\n" + +#: src/passwd.c:371 +msgid "They don't match; try again.\n" +msgstr "ŔԷ°ŞŔĚ ŔĎġÇĎÁö ľĘ˝Ŕ´Ď´Ů; ´Ů˝Ă ˝ĂµµÇĎĽĽżä.\n" + +#: src/passwd.c:451 src/passwd.c:469 +#, c-format +msgid "The password for %s cannot be changed.\n" +msgstr "%s żˇ ´ëÇŃ ĆĐ˝şżöµĺ´Â şŻ°ćµÉ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:494 +#, c-format +msgid "Sorry, the password for %s cannot be changed yet.\n" +msgstr "ÁËĽŰÇŐ´Ď´Ů, %s żˇ ´ëÇŃ ĆĐ˝şżöµĺ°ˇ ľĆÁ÷ şŻ°ćŔĚ µÉ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:614 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: ¸Ţ¸đ¸® şÎÁ·\n" + +#: src/passwd.c:769 +msgid "Cannot lock the TCFS key database; try again later\n" +msgstr "TCFS Ĺ° µĄŔĚĹÍşŁŔĚ˝ş Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů; łŞÁßżˇ ´Ů˝Ă ˝ĂµµÇĎĽĽżä\n" + +#: src/passwd.c:777 +msgid "Cannot open the TCFS key database.\n" +msgstr "TCFS Ĺ° µĄŔĚĹÍşŁŔĚ˝ş¸¦ ż­Ľö°ˇ ľř˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:785 +msgid "Error updating the TCFS key database.\n" +msgstr "TCFs Ĺ° µĄŔĚĹÍşŁŔĚ˝ş ľ÷µĄŔĚĆ® Áß żŔ·ů.\n" + +#: src/passwd.c:792 +msgid "Cannot commit TCFS changes.\n" +msgstr "TCFS şŻ°ćŔ» ˝ÇÇŕÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:975 +#, c-format +msgid "%s: Cannot execute %s" +msgstr "%s: %s ¸¦ ˝ÇÇŕÇŇ Ľö ľř˝Ŕ´Ď´Ů" + +#: src/passwd.c:1077 +#, c-format +msgid "%s: repository %s not supported\n" +msgstr "%s: ŔúŔĺĽŇ %s ´Â ÁöżřŔĚ µÇÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/passwd.c:1152 +#, c-format +msgid "%s: Permission denied\n" +msgstr "%s: Á˘±Ů±ÇÇŃ ľřŔ˝\n" + +#: src/passwd.c:1176 +#, c-format +msgid "You may not change the password for %s.\n" +msgstr "%s żˇ ´ëÇŃ ĆĐ˝şżöµĺ¸¦ ´ç˝ĹŔş şŻ°ćÇŇ Ľö ľř˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:1242 +#, c-format +msgid "Changing password for %s\n" +msgstr "%s żˇ ´ëÇŃ ĆĐ˝şżöµĺ¸¦ şŻ°ćÁß\n" + +#: src/passwd.c:1246 +#, c-format +msgid "The password for %s is unchanged.\n" +msgstr "%s żˇ ´ëÇŃ ĆĐ˝şżöµĺ°ˇ şŻ°ćµÇÁö ľĘľŇ˝Ŕ´Ď´Ů.\n" + +#: src/passwd.c:1297 +msgid "Password changed.\n" +msgstr "ĆĐ˝şżöµĺ°ˇ şŻ°ćµÇľú˝Ŕ´Ď´Ů.\n" + +#: src/pwck.c:87 +#, fuzzy, c-format +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "»çżëąý: %s [-q] [-r] [-s] [passwd [shadow]]\n" + +#: src/pwck.c:90 +#, fuzzy, c-format +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "»çżëąý: %s [-q] [-r] [-s] [ĆĐ˝şżöµĺ]\n" + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/pwck.c:295 +msgid "invalid password file entry\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş ĆĐ˝şżöµĺ ĆÄŔĎ ŔÔ·Â\n" + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/pwck.c:357 +msgid "duplicate password entry\n" +msgstr "ĆĐ˝şżöµĺ ŔÔ·Â°Ş şąÁ¦\n" + +#: src/pwck.c:373 +#, c-format +msgid "invalid user name `%s'\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş »çżëŔÚ¸í `%s'\n" + +#. +#. * No primary group, just give a warning +#. +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" +msgstr "»çżëŔÚ %s: ±×·ěŔĚ ľř˝Ŕ´Ď´Ů %d\n" + +#: src/pwck.c:404 +#, c-format +msgid "user %s: directory %s does not exist\n" +msgstr "»çżëŔÚ %s: µđ·şĹ丮 %s ´Â Á¸ŔçÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#. +#. * Login shell doesn't exist, give a warning +#. +#: src/pwck.c:420 +#, c-format +msgid "user %s: program %s does not exist\n" +msgstr "»çżëŔÚ %s: ÇÁ·Î±×·Ą %s ´Â Á¸ŔçÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. +#. +#: src/pwck.c:456 +msgid "invalid shadow password file entry\n" +msgstr "ŔŻČżÇĎÁö ľĘŔş ˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎ ŔԷ°Ş\n" + +#. +#. * Tell the user this entry is a duplicate of +#. * another and ask them to delete it. +#. +#: src/pwck.c:518 +msgid "duplicate shadow password entry\n" +msgstr "˝¦µµżě ĆĐ˝şżöµĺ ŔÔ·Â°Ş şąÁ¦\n" + +#. +#. * Tell the user this entry has no matching +#. * /etc/passwd entry and ask them to delete it. +#. +#: src/pwck.c:542 +msgid "no matching password file entry\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎ ŔԷ°ŞŔĚ ŔĎġÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/pwck.c:560 +#, c-format +msgid "user %s: last password change in the future\n" +msgstr "»çżëŔÚ %s: ¸¶Áö¸· ĆĐ˝şżöµĺ´Â łŞÁßżˇ şŻ°ć\n" + +#: src/pwconv.c:84 src/pwunconv.c:93 +#, c-format +msgid "%s: can't lock passwd file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwconv.c:89 src/pwunconv.c:98 +#, c-format +msgid "%s: can't open passwd file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwconv.c:117 +#, c-format +msgid "%s: can't remove shadow entry for %s\n" +msgstr "%s: %s żˇ ´ëÇŃ ˝¦µµżě ŔԷ°ŞŔ» Á¦°ĹÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwconv.c:163 +#, c-format +msgid "%s: can't update passwd entry for %s\n" +msgstr "%s: %s żˇ ´ëÇŃ ĆĐ˝şżöµĺ ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwconv.c:170 +#, c-format +msgid "%s: can't update shadow file\n" +msgstr "%s: ˝¦µµżě ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwconv.c:175 +#, c-format +msgid "%s: can't update passwd file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwunconv.c:50 +#, c-format +msgid "%s: Shadow passwords are not configured.\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ°ˇ ÇüĽşµÇÁö ľĘľŇ˝Ŕ´Ď´Ů.\n" + +#: src/pwunconv.c:160 +#, c-format +msgid "%s: can't update entry for user %s\n" +msgstr "%s: »çżëŔÚ %s żˇ ´ëÇŃ ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/pwunconv.c:181 +#, c-format +msgid "%s: can't delete shadow password file\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» Áöżď Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/su.c:133 +msgid "Sorry." +msgstr "ÁËĽŰÇŐ´Ď´Ů." + +#: src/su.c:216 +#, c-format +msgid "%s: must be run from a terminal\n" +msgstr "%s: Ĺ͹̳οˇĽ­ ąŢµĺ˝Ă ˝ÇÇŕŔĚ µÇľîÁ®ľß ÇŐ´Ď´Ů\n" + +#: src/su.c:306 +#, c-format +msgid "%s: pam_start: error %d\n" +msgstr "%s: pam_start: żŔ·ů %d\n" + +#: src/su.c:336 +#, c-format +msgid "Unknown id: %s\n" +msgstr "ľËĽöľř´Â ľĆŔ̵đ: %s\n" + +#: src/su.c:373 src/su.c:390 +#, c-format +msgid "You are not authorized to su %s\n" +msgstr "´ç˝ĹŔş su %s żˇ°Ô ŔÎÁőŔĚ µÇÁö ľĘľŇ˝Ŕ´Ď´Ů\n" + +#. require own password +#: src/su.c:385 +msgid "(Enter your own password.)" +msgstr "(ŔÚ˝ĹŔÇ ĆĐ˝şżöµĺ¸¦ ŔÔ·ÂÇĎĽĽżä.)" + +#: src/su.c:419 +#, c-format +msgid "" +"%s: %s\n" +"(Ignored)\n" +msgstr "" +"%s: %s\n" +"(ą«˝ĂµĘ)\n" + +#: src/su.c:626 +msgid "No shell\n" +msgstr "˝©ŔĚ ľřŔ˝\n" + +#. must be a password file! +#: src/sulogin.c:132 +msgid "No password file\n" +msgstr "ĆĐ˝şżöµĺ ĆÄŔĎ ľřŔ˝\n" + +#. +#. * Fail secure +#. +#: src/sulogin.c:174 +msgid "No password entry for 'root'\n" +msgstr "'·çĆ®'żˇ ´ëÇŃ ĆĐ˝şżöµĺ ĆÄŔĎ ŔÔ·Â°Ş ľřŔ˝\n" + +#: src/sulogin.c:190 +msgid "" +"\n" +"Type control-d to proceed with normal startup,\n" +"(or give root password for system maintenance):" +msgstr "" +"\n" +"ŔĎąÝŔűŔ¸·Î ˝ĂŔŰ(normal startup)Ŕ» ÇĎ·Á¸é control-d ¸¦ ŔÔ·ÂÇĎĽĽżä,\n" +"(±×·¸Áö ľĘŔ¸¸é ˝Ă˝şĹŰ Á¤şń¸¦ Ŕ§ÇĎż© ·çĆ® ĆĐ˝şżöµĺ¸¦ ŔÔ·ÂÇĎĽĽżä)" + +#. make new environment active +#: src/sulogin.c:243 +msgid "Entering System Maintenance Mode\n" +msgstr "˝Ă˝şĹŰ Á¤şń ¸đµĺ·Î µéľî°ˇ°í ŔÖ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:251 +#, c-format +msgid "%s: rebuild the group database\n" +msgstr "%s: ±×·ě µĄŔĚĹÍşŁŔĚ˝ş¸¦ ´Ů˝Ă ¸¸µě´Ď´Ů\n" + +#: src/useradd.c:260 +#, c-format +msgid "%s: rebuild the shadow group database\n" +msgstr "%s: ˝¦µµżě ±×·ě µĄŔĚĹÍşŁŔĚ˝ş¸¦ ´Ů˝Ă ¸¸µě´Ď´Ů\n" + +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 +#, c-format +msgid "%s: invalid numeric argument `%s'\n" +msgstr "%s: ŔŻČżÇĎÁö ľĘŔş ĽýŔÚ ŔÔ·Â°Ş `%s'\n" + +#: src/useradd.c:365 +#, c-format +msgid "%s: unknown gid %s\n" +msgstr "%s: ľËĽöľř´Â gid(±×·ě ľĆŔ̵đ) %s\n" + +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 +#, c-format +msgid "%s: unknown group %s\n" +msgstr "%s: ľËĽöľř´Â ±×·ě %s\n" + +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" +msgstr "±×·ě=%s,%ld Ăʱ⠵đ·şĹ丮=%s skel=%s\n" + +#: src/useradd.c:444 +#, c-format +msgid "shell=%s " +msgstr "˝©=%s " + +#: src/useradd.c:446 +#, c-format +msgid "inactive=%ld expire=%s" +msgstr "şńČ°ĽşČ­=%ld ¸¸±â=%s" + +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" +msgstr "±×·ě=%ld\n" + +#: src/useradd.c:451 +#, c-format +msgid "HOME=%s\n" +msgstr "Ȩµđ·şĹ丮=%s\n" + +#: src/useradd.c:453 +#, c-format +msgid "INACTIVE=%ld\n" +msgstr "şńČ°ĽşČ­=%ld\n" + +#: src/useradd.c:454 +#, c-format +msgid "EXPIRE=%s\n" +msgstr "¸¸±â=%s\n" + +#: src/useradd.c:456 +#, c-format +msgid "SHELL=%s\n" +msgstr "˝©=%s\n" + +#: src/useradd.c:457 +#, c-format +msgid "SKEL=%s\n" +msgstr "SKEL=%s\n" + +#: src/useradd.c:498 +#, c-format +msgid "%s: cannot create new defaults file\n" +msgstr "%s: »ő·Îżî µđĆúĆ® ĆÄŔĎŔ» ¸¸µéĽö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:503 +#, fuzzy, c-format +msgid "%s: cannot open new defaults file\n" +msgstr "%s: »ő·Îżî µđĆúĆ® ĆÄŔĎŔ» ¸¸µéĽö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:596 src/useradd.c:608 +#, c-format +msgid "%s: rename: %s" +msgstr "%s: Ŕ̸§ Ŕç ĽłÁ¤: %s" + +#: src/useradd.c:697 src/usermod.c:281 +#, c-format +msgid "%s: group `%s' is a NIS group.\n" +msgstr "%s: ±×·ě `%s' ´Â NIS ±×·ěŔÔ´Ď´Ů.\n" + +#: src/useradd.c:706 src/usermod.c:290 +#, c-format +msgid "%s: too many groups specified (max %d).\n" +msgstr "%s: łĘą«łŞ ¸ąŔş ±×·ěŔĚ ¸í˝ĂµÇľú˝Ŕ´Ď´Ů (ĂÖ´ë %d).\n" + +#: src/useradd.c:738 src/usermod.c:322 +#, c-format +msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" +msgstr "»çżëąý: %s\t[-u uid(»çżëŔÚ ľĆŔ̵đ) [-o]] [-g ±×·ě¸í][-G ±×·ě,...]\n" + +#: src/useradd.c:742 +msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" +msgstr "\t\t[-d Ȩµđ·şĹ丮][-s ˝©][-c Ŕűżä»çÇ×][-m [-k template]]\n" + +#: src/useradd.c:745 src/usermod.c:329 +#, fuzzy +msgid "[-f inactive] [-e expire ] " +msgstr "[-f şńČ°ĽşČ­][-e ¸¸±â] " + +#: src/useradd.c:748 +msgid "[-A program] " +msgstr "[-A ÇÁ·Î±×·Ą] " + +#: src/useradd.c:750 +msgid "[-p passwd] name\n" +msgstr "[-p ĆĐ˝şżöµĺ] Ŕ̸§\n" + +#: src/useradd.c:753 +#, c-format +msgid " %s\t-D [-g group] [-b base] [-s shell]\n" +msgstr "\t%s\t-D [-g ±×·ě¸í][-b Ăʱâµđ·şĹ丮][-s ˝©]\n" + +#: src/useradd.c:756 +#, fuzzy +msgid "\t\t[-f inactive] [-e expire ]\n" +msgstr "\t\t[-f şńČ°ĽşČ­][-e ¸¸±â]\n" + +#: src/useradd.c:850 src/usermod.c:480 +#, c-format +msgid "%s: error locking group file\n" +msgstr "%s: ±×·ě ĆÄŔĎ Ŕá±ÝŔ» ÇϴµĄ żŔ·ů\n" + +#: src/useradd.c:855 src/usermod.c:486 +#, c-format +msgid "%s: error opening group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż©´ÂµĄ żŔ·ů\n" + +#: src/useradd.c:862 src/usermod.c:597 +#, c-format +msgid "%s: error locking shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ěŔ» Ŕá±×´ÂµĄ żŔ·ů\n" + +#: src/useradd.c:867 src/usermod.c:603 +#, c-format +msgid "%s: error opening shadow group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż©´ÂµĄ żŔ·ů\n" + +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s: uid(»çżëŔÚ ľĆŔ̵đ) %ld ´Â ŔűŔýÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1069 +#, c-format +msgid "%s: can't get unique uid\n" +msgstr "%s: ŔűŔýÇŃ uid(»çżëŔÚ ľĆŔ̵đ)¸¦ ľňŔ» Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 +#, c-format +msgid "%s: invalid field `%s'\n" +msgstr "%s: `%s' şÎşĐŔş ŔŻČżÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1189 +#, c-format +msgid "%s: invalid base directory `%s'\n" +msgstr "%s: ±âş» µđ·şĹ丮 `%s' ´Â ŔŻČżÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1199 +#, c-format +msgid "%s: invalid comment `%s'\n" +msgstr "%s: Ŕűżä»çÇ× `%s' Ŕş ŔŻČżÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1210 +#, c-format +msgid "%s: invalid home directory `%s'\n" +msgstr "%s: Ȩ µđ·şĹ丮 `%s' ´Â ŔŻČżÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1229 src/usermod.c:1110 +#, c-format +msgid "%s: invalid date `%s'\n" +msgstr "%s: łŻÂĄ `%s' ´Â ŔŻČżÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1242 +#, c-format +msgid "%s: shadow passwords required for -e\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ°ˇ -e żÉĽÇŔ» żä±¸ÇŐ´Ď´Ů\n" + +#: src/useradd.c:1258 +#, c-format +msgid "%s: shadow passwords required for -f\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ°ˇ -f żÉĽÇŔ» żä±¸ÇŐ´Ď´Ů\n" + +#: src/useradd.c:1336 +#, c-format +msgid "%s: invalid shell `%s'\n" +msgstr "%s: ŔŻČżÇĎÁö ľĘŔş ˝© `%s'\n" + +#: src/useradd.c:1377 +#, c-format +msgid "%s: invalid user name `%s'\n" +msgstr "%s: ŔŻČżÇĎÁö ľĘŔş »çżëŔÚ¸í `%s'\n" + +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 +#, c-format +msgid "%s: cannot rewrite password file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎŔ» ´Ů˝Ă ľµĽö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 +#, c-format +msgid "%s: cannot rewrite shadow password file\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» ´Ů˝Ă ľµĽö°ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 +#, c-format +msgid "%s: unable to lock password file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎ Ŕá±ÝŔ» ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 +#, c-format +msgid "%s: unable to open password file\n" +msgstr "%s: ĆĐ˝şżöµĺ ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 +#, c-format +msgid "%s: cannot lock shadow password file\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» Ŕá±Ű Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 +#, c-format +msgid "%s: cannot open shadow password file\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1580 src/usermod.c:1405 +#, c-format +msgid "%s: error adding authentication method\n" +msgstr "%s: ŔÎÁőąćąý Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/useradd.c:1604 +#, c-format +msgid "%s: error adding new password entry\n" +msgstr "%s: »ő·Îżî ĆĐ˝şżöµĺ ŔԷ°ŞŔ» Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/useradd.c:1618 +#, c-format +msgid "%s: error updating password dbm entry\n" +msgstr "%s: ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» ľ÷µĄŔĚĆ®ÇϴµĄ żŔ·ů\n" + +#: src/useradd.c:1634 src/usermod.c:1471 +#, c-format +msgid "%s: error adding new shadow password entry\n" +msgstr "%s: »ő·Îżî ˝¦µµżě ĆĐ˝şżöµĺ ŔԷ°ŞŔ» Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/useradd.c:1650 src/usermod.c:1488 +#, c-format +msgid "%s: error updating shadow passwd dbm entry\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇϴµĄ żŔ·ů\n" + +#: src/useradd.c:1682 +#, c-format +msgid "%s: cannot create directory %s\n" +msgstr "%s: µđ·şĹ丮 %s ¸¦ ¸¸µé Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/useradd.c:1806 src/usermod.c:1233 +#, c-format +msgid "%s: user %s exists\n" +msgstr "%s: »çżëŔÚ %s ´Â Á¸ŔçÇŐ´Ď´Ů\n" + +#: src/useradd.c:1821 +#, c-format +msgid "" +"%s: group %s exists - if you want to add this user to that group, use -g.\n" +msgstr "" + +#: src/useradd.c:1854 +#, c-format +msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" +msgstr "" +"%s:°ć°í: CREATE_HOME Ŕş ÁöżřµÇÁö ľĘ˝Ŕ´Ď´Ů, -m żÉĽÇŔ» ´ë˝Ĺ »çżëÇĎĽĽżä.\n" + +#: src/userdel.c:129 +#, c-format +msgid "usage: %s [-r] name\n" +msgstr "»çżëąý: %s [-r] Ŕ̸§\n" + +#: src/userdel.c:181 src/userdel.c:267 +#, c-format +msgid "%s: error updating group entry\n" +msgstr "%s: ±×·ě ŔԷ°ŞŔ» ľ÷µĄŔĚĆ®ÇϴµĄ żŔ·ů\n" + +#: src/userdel.c:191 src/userdel.c:276 +#, c-format +msgid "%s: cannot update dbm group entry\n" +msgstr "%s: dbm ±×·ě ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:219 +#, fuzzy, c-format +msgid "%s: cannot remove dbm group entry\n" +msgstr "%s: dbm ±×·ě ŔԷ°ŞŔ» ľ÷µĄŔĚĆ® ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:308 +#, c-format +msgid "%s: cannot rewrite TCFS key file\n" +msgstr "%s: TCFS Ĺ° ĆÄŔĎŔ» ´Ů˝Ă ľµ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:392 +#, c-format +msgid "%s: cannot lock TCFS key file\n" +msgstr "%s: TCFS Ĺ° ĆÄŔĎŔ» Ŕá±Ű Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:397 +#, c-format +msgid "%s: cannot open TCFS key file\n" +msgstr "%s: TCFS Ĺ° ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:408 +#, c-format +msgid "%s: cannot open group file\n" +msgstr "%s: ±×·ě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:419 +#, c-format +msgid "%s: cannot open shadow group file\n" +msgstr "%s: ˝¦µµżě ±×·ě ĆÄŔĎŔ» ż­ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:451 src/userdel.c:468 +#, c-format +msgid "%s: error deleting authentication\n" +msgstr "%s: ŔÎÁőŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/userdel.c:479 +#, c-format +msgid "%s: error deleting password entry\n" +msgstr "%s: ĆĐ˝şżöµĺ ŔԷ°ŞŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/userdel.c:485 +#, c-format +msgid "%s: error deleting shadow password entry\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ ŔԷ°ŞŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/userdel.c:496 +#, c-format +msgid "%s: error deleting TCFS entry\n" +msgstr "%s: TCFS ŔԷ°ŞŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/userdel.c:510 +#, c-format +msgid "%s: error deleting password dbm entry\n" +msgstr "%s: ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/userdel.c:533 +#, c-format +msgid "%s: error deleting shadow passwd dbm entry\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/userdel.c:569 +#, c-format +msgid "%s: user %s is currently logged in\n" +msgstr "%s: »çżëŔÚ %s ´Â ÇöŔç ·Î±äÇŃ »óĹ ŔÔ´Ď´Ů\n" + +#: src/userdel.c:659 +#, c-format +msgid "%s: warning: %s not owned by %s, not removing\n" +msgstr "" +"%s: °ć°í: %s ´Â %s żˇ ĽŇŔŻµÇľî ŔÖÁö ľĘ˝Ŕ´Ď´Ů, µű¶óĽ­ Á¦°ĹµÇÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:666 +#, c-format +msgid "%s: warning: can't remove " +msgstr "%s: °ć°í: Á¦°ĹÇŇ Ľö ľř˝Ŕ´Ď´Ů " + +#: src/userdel.c:758 src/usermod.c:1023 +#, c-format +msgid "%s: user %s does not exist\n" +msgstr "%s: »çżëŔÚ %s ´Â Á¸ŔçÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:770 src/usermod.c:1039 +#, c-format +msgid "%s: user %s is a NIS user\n" +msgstr "%s: »çżëŔÚ %s ´Â NIS »çżëŔÚ ŔÔ´Ď´Ů\n" + +#: src/userdel.c:799 +#, c-format +msgid "%s: %s not owned by %s, not removing\n" +msgstr "%s: %s ´Â %s żˇ ĽŇŔŻµÇľî ŔÖÁö ľĘ˝Ŕ´Ď´Ů, µű¶óĽ­ Á¦°ĹµÇÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/userdel.c:818 +#, c-format +msgid "%s: not removing directory %s (would remove home of user %s)\n" +msgstr "" +"%s: µđ·şĹ丮 %s ´Â Á¦°ĹµÇÁö ľĘ˝Ŕ´Ď´Ů (»çżëŔÚ %s ŔÇ Č¨ µđ·şĹ丮°ˇ ÁöżöÁú °ÍŔÔ" +"´Ď´Ů)\n" + +#: src/userdel.c:830 +#, c-format +msgid "%s: error removing directory %s\n" +msgstr "%s: µđ·şĹ丮 %s ¸¦ Áöżě´ÂµĄ żŔ·ů\n" + +#: src/usermod.c:326 +msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" +msgstr "\t\t[-d Ȩ µđ·şĹ丮 [-m]] [-s ˝©] [-c Ŕűżä»çÇ×] [-l »ő_Ŕ̸§]\n" + +#: src/usermod.c:332 +#, fuzzy +msgid "[-A {DEFAULT|program},... ] " +msgstr "[-A {µđĆúĆ®|ÇÁ·Î±×·Ą},...]" + +#: src/usermod.c:334 +#, fuzzy +msgid "[-p passwd] [-L|-U] name\n" +msgstr "[-p ĆĐ˝şżöµĺ] Ŕ̸§\n" + +#: src/usermod.c:514 +#, c-format +msgid "%s: out of memory in update_group\n" +msgstr "%s: ľ÷µĄŔĚĆ®_±×·ěżˇ ¸Ţ¸đ¸® şÎÁ·\n" + +#: src/usermod.c:641 +#, c-format +msgid "%s: out of memory in update_gshadow\n" +msgstr "%s: ľ÷µĄŔĚĆ®_±×·ě˝¦µµżěżˇ ¸Ţ¸đ¸® şÎÁ·\n" + +#: src/usermod.c:1210 +#, c-format +msgid "%s: no flags given\n" +msgstr "%s: ÁÖľîÁř flag °ˇ ľř˝Ŕ´Ď´Ů\n" + +#: src/usermod.c:1217 +#, c-format +msgid "%s: shadow passwords required for -e and -f\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ°ˇ -e żÉĽÇ°ú -f żÉĽÇŔ» żä±¸ÇŐ´Ď´Ů\n" + +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" +msgstr "%s: uid(»çżëŔÚ ľĆŔ̵đ) %ld ´Â ŔűŔýÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/usermod.c:1392 +#, c-format +msgid "%s: error deleting authentication method\n" +msgstr "%s: ŔÎÁőąćąýŔ» Áöżě´ÂµĄ żŔ·ů\n" + +#: src/usermod.c:1418 +#, c-format +msgid "%s: error changing authentication method\n" +msgstr "%s: ŔÎÁőąćąýŔ» şŻ°ćÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1436 +#, c-format +msgid "%s: error changing password entry\n" +msgstr "%s: ĆĐ˝şżöµĺ ŔԷ°ŞŔ» şŻ°ćÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1442 +#, c-format +msgid "%s: error removing password entry\n" +msgstr "%s: ĆĐ˝şżöµĺ ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1451 +#, c-format +msgid "%s: error adding password dbm entry\n" +msgstr "%s: ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» Ăß°ˇÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1459 +#, c-format +msgid "%s: error removing passwd dbm entry\n" +msgstr "%s: ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1478 +#, c-format +msgid "%s: error removing shadow password entry\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1495 +#, c-format +msgid "%s: error removing shadow passwd dbm entry\n" +msgstr "%s: ˝¦µµżě ĆĐ˝şżöµĺ dbm ŔԷ°ŞŔ» Á¦°ĹÇϴµĄ żŔ·ů\n" + +#: src/usermod.c:1524 +#, c-format +msgid "%s: directory %s exists\n" +msgstr "%s: µđ·şĹ丮 %s ´Â Á¸ŔçÇŐ´Ď´Ů\n" + +#: src/usermod.c:1533 +#, c-format +msgid "%s: can't create %s\n" +msgstr "%s: %s ¸¦ ¸¸µé Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/usermod.c:1539 +#, c-format +msgid "%s: can't chown %s\n" +msgstr "%s: %s ¸¦ chown ÇŇ Ľö ľř˝Ŕ´Ď´Ů\n" + +#: src/usermod.c:1556 +#, c-format +msgid "%s: cannot rename directory %s to %s\n" +msgstr "%s: µđ·şĹ丮 %s żˇĽ­ %s ·Î Ŕ̸§Ŕ» ąŮ˛ÜĽö ľř˝Ŕ´Ď´Ů\n" + +#. better leave it alone +#: src/usermod.c:1653 +#, c-format +msgid "%s: warning: %s not owned by %s\n" +msgstr "%s: °ć°í: %s ´Â %s żˇ ĽŇŔŻµÇľî ŔÖÁö ľĘ˝Ŕ´Ď´Ů\n" + +#: src/usermod.c:1659 +msgid "failed to change mailbox owner" +msgstr "¸ŢŔĎąÚ˝ş ĽŇŔŻŔÚ¸¦ şŻ°ćÇϴµĄ ˝ÇĆĐÇß˝Ŕ´Ď´Ů" + +#: src/usermod.c:1667 +msgid "failed to rename mailbox" +msgstr "¸ŢŔĎąÚ˝şŔÇ Ŕ̸§Ŕ» ąŮ˛Ů´ÂµĄ ˝ÇĆĐÇß˝Ŕ´Ď´Ů" + +#: src/vipw.c:104 +#, c-format +msgid "" +"\n" +"%s: %s is unchanged\n" +msgstr "" +"\n" +"%s: %s ´Â şŻ°ćµÇÁö ľĘľŇ˝Ŕ´Ď´Ů\n" + +#: src/vipw.c:132 +msgid "Couldn't lock file" +msgstr "ĆÄŔĎŔ» Ŕá±Ű Ľö ľř˝Ŕ´Ď´Ů" + +#: src/vipw.c:141 +msgid "Couldn't make backup" +msgstr "ąéľ÷Ŕ» ¸¸µé Ľö ľř˝Ŕ´Ď´Ů" + +#: src/vipw.c:206 +#, c-format +msgid "%s: can't restore %s: %s (your changes are in %s)\n" +msgstr "" +"%s: %s ¸¦ şą±¸˝ĂĹł Ľö ľř˝Ŕ´Ď´Ů: %s (´ç˝ĹŔÇ şŻ°ć»çÇ×Ŕş %s żˇ ŔÖ˝Ŕ´Ď´Ů)\n" + +#: src/vipw.c:244 +msgid "" +"Usage:\n" +"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" +"`vigr' edits /etc/group `vigr -s' edits /etc/gshadow\n" +msgstr "" +"»çżëąý:\n" +"`vipw' ´Â /etc/passwd ¸¦ ĆíÁýÇŐ´Ď´Ů\t`vipw -s' ´Â /etc/shadow¸¦ ĆíÁýÇŐ´Ď´Ů\n" +"`vigr' Ŕş /etc/group Ŕ» ĆíÁýÇŐ´Ď´Ů\t`vigr -s' ´Â /etc/gshadow¸¦ ĆíÁýÇŐ´Ď´Ů\n" + +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: gid(±×·ě ľĆŔ̵đ) %ld ´Â ŔűŔýÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "ľËĽöľř´Â gid: %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: uid(»çżëŔÚ ľĆŔ̵đ) %d ´Â ŔűŔýÇĎÁö ľĘ˝Ŕ´Ď´Ů\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "»çżëŔÚ %s: ÁÁÁö ľĘŔş UID(»çżëŔÚ ľĆŔ̵đ) (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s: ż¬·Éżˇ ´ëÇŃ ľî¶°ÇŃ Á¤ş¸µµ łŞĹ¸łŞÁö ľĘ˝Ŕ´Ď´Ů\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "±×·ě %s: ÁÁÁöľĘŔş GID(±×·ě ľĆŔ̵đ) (%d)\n" + +#~ msgid "%s: permission denied (shell).\n" +#~ msgstr "%s: Á˘±Ů±ÇÇŃ ľřŔ˝ (˝©).\n" diff --git a/po/pl.gmo b/po/pl.gmo index 7febab21..b85e316b 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index d2688a5d..adb6b9c8 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-981228\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: 1999-03-02 22:29+01:00\n" "Last-Translator: Arkadiusz Mi¶kiewicz \n" "Language-Team: PL \n" @@ -22,36 +22,36 @@ msgstr "Ostrze msgid "Warning: too many groups\n" msgstr "Ostrzeżenie: zbyt wiele grup\n" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "Twoje hasło straciło ważno¶ć." -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "Twoje hasło jest nieaktywne." -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "Twoje konto straciło ważno¶ć." -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr " Skontaktuj się z administratorem systemu.\n" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr " Wybierz nowe hasło.\n" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "Twoje hasło straci ważno¶ć w ci±gu %ld dni.\n" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "Jutro twoje hasło straci ważno¶ć.\n" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "Dzi¶ twoje hasło straci ważno¶ć.\n" @@ -110,7 +110,7 @@ msgstr "Nie masz poczty." msgid "You have mail." msgstr "Masz pocztę." -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "Złe hasło: %s. " @@ -125,12 +125,12 @@ msgstr "passwd: pam_start() nie powiod msgid "passwd: %s\n" msgstr "passwd: %s\n" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "Nie mogę zmienić katalogu na \"%s\"\n" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "Brak katalogu, loguję z HOME=/" @@ -180,25 +180,25 @@ msgstr "malloc(%d) nie powiod msgid "Dialup Password: " msgstr "Hasło dostępu modemowego: " -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "Nie mogę przydzielić miejsca dla informacji o konfiguracji.\n" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" "bł±d w konfiguracji - nieznana pozycja '%s' (powiadom administratora)\n" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "bł±d - wyszukiwanie '%s' niepowiodło się\n" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "%s nie znaleziony\n" @@ -207,7 +207,7 @@ msgstr "%s nie znaleziony\n" #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "Hasło: " @@ -218,118 +218,113 @@ msgstr "Has #: lib/pwauth.c:270 msgid "(Echo on) " -msgstr "" +msgstr "(Echo on) " #: lib/strerror.c:20 #, c-format msgid "Unknown error %d" msgstr "Nieznany bł±d %d" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -"Użycie: %s [ -l ] [ -m min_dni ] [ -M maks_dni ] [ -W ostrzeż ]\n" -" [ -I nieaktywne ] [ -E utrata_ważno¶ci ] [ -d ostatni_dzień ] użytkownik\n" +"Użycie: %s [-l] [-m min_dni] [-M maks_dni] [-W ostrzeż]\n" +"\t[-I nieaktywne] [-E utrata_ważno¶ci] [-d ostatni_dzień] użytkownik\n" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -"Użycie: %s [ -l ] [ -m min_dni ] [ -M maks_dni ] [ -d ostatni_dzień ] " -"użytkownik\n" +"Użycie: %s [-l] [-m min_dni] [-M maks_dni] [-d ostatni_dzień] użytkownik\n" -#: src/chage.c:199 +#: src/chage.c:157 +#, fuzzy msgid "" -"Enter the new value, or press return for the default\n" -"\n" -msgstr "" -"Wpisz now± warto¶ć lub wci¶nij return by przyj±c warto¶ć domy¶ln±\n" +"Enter the new value, or press ENTER for the default\n" "\n" +msgstr "Wpisz now± warto¶ć lub wci¶nij ENTER by przyj±c warto¶ć standardow±\n" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "Minimalny wiek hasła" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "Maksymalny wiek hasła" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "Ostatnia zmiana hasła (RRRR-MM-DD)" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "Ostrzeżenie o utracie ważno¶ci hasła" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "Hasło nieaktywne" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data utraty ważno¶ci konta (RRRR-MM-DD)" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minimum:\t%ld\n" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "Maksimim:\t%ld\n" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "Ostrzeżenie:\t%ld\n" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "Nieaktywne:\t%ld\n" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "Ostatnia zmiana:\t\t" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "Nigdy\n" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "Hasło traci ważno¶ć:\t" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 #, fuzzy msgid "Password Inactive:\t" msgstr "Hasło nieaktywne:\t" @@ -338,582 +333,585 @@ msgstr "Has #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 #, fuzzy msgid "Account Expires:\t" msgstr "Hasło traci ważno¶ć:\t" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, fuzzy, c-format -msgid "%s: PAM authentication failed\n" -msgstr "%s: bł±d podczas dodawania metody uwierzytelniania\n" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "%s: nie ł±cz \"l\" z innymi flagami\n" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "%s: odmowa dostępu\n" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s: bł±d podczas dodawania metody uwierzytelniania\n" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "%s: nie mogę zablokować pliku z hasłami\n" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "%s: nie mogę otworzyć pliku z hasłami\n" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "%s: nieznany użytkownik: %s\n" -#: src/chage.c:592 -#, c-format -msgid "%s: can't lock shadow password file\n" +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" msgstr "%s: nie mogę zablokować pliku z ukrytymi hasłami\n" -#: src/chage.c:599 -#, c-format -msgid "%s: can't open shadow password file\n" +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" msgstr "%s: nie mogę otworzyć pliku z ukrytymi hasłami\n" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "Zmieniam informację o użytkowniku %s\n" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "%s: bł±d podczas zmieniania pól\n" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "%s: nie mogę zaktualizować pliku z hasłami\n" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "%s: nie mogę zaktualizować pliku z ukrytymi hasłami\n" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "Bł±d podczas aktualizacki bazy haseł DBM.\n" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "%s: nie mogę przepisać pliku z ukrytymi hasłami\n" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "%s: nie mogę przepisać pliku z hasłami\n" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, fuzzy, c-format msgid "%s: PAM chauthtok failed\n" msgstr "%s: nie mogę usun±c blokady z pliku\n" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "%s: brak informacji\n" - -#: src/chfn.c:107 -#, c-format +#: src/chfn.c:83 +#, fuzzy, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -"Użycie: %s [ -f imię_nazwisko ] [ -r nr_pokoju ] [ -w tel_praca ]\n" -"\t[ -h tel_dom ] [ -o inne ] [ użytkownik ]\n" +"Użycie: %s [-f imię_nazwisko ] [-r nr_pokoju ] [-w tel_praca ]\n" +"\t[-h tel_dom ] [-o inne ] [użytkownik ]\n" -#: src/chfn.c:111 -#, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" +#: src/chfn.c:88 +#, fuzzy, c-format +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" msgstr "" -"Użycie: %s [ -f imię_nazwisko ] [ -r nr_pokoju ] [ -w tel_praca ] [ -h " +"Użycie: %s [-f imię_nazwisko ] [-r nr_pokoju ] [-w tel_praca ] [-h " "tel_dom ]\n" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" -msgstr "Wpisz now± warto¶ć lub wci¶nij return by przyj±c warto¶ć standardow±\n" +#: src/chfn.c:139 +#, fuzzy +msgid "Enter the new value, or press ENTER for the default\n" +msgstr "" +"Wpisz now± warto¶ć lub wci¶nij ENTER by przyj±c warto¶ć domy¶ln±\n" +"\n" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "Imię i nazwisko" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "\tImię i nazwisko: %s\n" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "Numer pokoju" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "\tNumer pokoju: %s\n" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "Telefon do pracy" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "\tTelefon do pracy: %s\n" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "Telefon domowy" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "\tTelefon domowy: %s\n" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "Inne" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "%s: Brak praw dostępu.\n" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "%s: Nieznany użytkownik %s\n" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "%s: Nie mogę ustalić twojej nazwy użytkownika.\n" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "%s: nie mogę zmienić użytkownika `%s' na kliencie NIS.\n" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "%s: `%s' jest nadrzędnym serwerm NIS dla tego klienta.\n" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "Zmieniam informację o użytkowniku %s\n" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "%s: nieprawidłowa nazwa: \"%s\"\n" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "%s: nieprawidłowy numer pokoju: \"%s\"\n" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "%s: nieprawidłowy numer telefonu do pracy: \"%s\"\n" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "%s: nieprawidłowy numer telefonu domowego: \"%s\"\n" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "%s: \"%s\" zawiera nieprawidłowe znaki\n" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "%s: pola zbyt długie\n" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "Nie mogę zmienić ID na root.\n" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "Nie mogę zablokować pliku z hasłami; spróbuj póĽniej.\n" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "Nie mogę otworzyć pliku z hasłami.\n" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "%s: %s nie znaleziony w /etc/passwd\n" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "Bł±d podczas aktualizacji wpisu do bazy haseł.\n" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "Wprowadzenie zmian do pliku passwd jest niemożliwe.\n" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "Nie mogę usun±c blokady z pliku z hasłami.\n" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "użycie: %s [-e]\n" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "%s: nie mogę zablokować pliku z ukrytymi hasłami\n" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "%s: nie mogę otworzyć pliku z ukrytymi hasłami\n" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "%s: linia %d: linia zbyt długa\n" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "%s: linia %d: brakuje nowego hasła\n" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "%s: linia %d: nieznany użytkownik %s\n" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "%s: linia %d: nie mogę zaktualizować wpisu do bazy haseł\n" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: wykryto bł±d, zignorowano modyfikacje\n" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "%s: bł±d podczas aktualizacji pliku z ukrytymi hasłami\n" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "%s: bł±d podczas aktualizacji pliku z hasłami\n" -#: src/chsh.c:105 -#, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" -msgstr "Użycie: %s [ -s powłoka ] [ nazwa ]\n" +#: src/chsh.c:75 +#, fuzzy, c-format +msgid "Usage: %s [-s shell] [name]\n" +msgstr "Użycie: %s [-s powłoka ] [nazwa ]\n" -#: src/chsh.c:120 +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"Wpisz now± warto¶ć lub wci¶nij ENTER by przyj±c warto¶ć domy¶ln±\n" +"\n" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "Powłoka logowania" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "Nie możesz zmieniać powłoki dla %s.\n" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "Zmieniam powłokę logowania dla %s\n" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "%s: Nieprawidłowy wpis: %s\n" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "%s jest nieprawidłow± powłok±.\n" -#: src/dpasswd.c:69 -#, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" -msgstr "Użycie: %s [ -(a|d) ] powłoka\n" +#: src/dpasswd.c:52 +#, fuzzy, c-format +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "Użycie: %s [-(a|d) ] powłoka\n" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "Hasło powłoki: " -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "Wpisz ponownie hasło powłoki: " -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "%s: Hasła nie pasuj±, spróbuj ponownie.\n" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "%s: nie mogę utworzyć %s" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "%s: nie mogę otworzyć %s" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "%s: Powłoka %s nie znaleziona.\n" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" msgstr "Użycie: expiry { -f | -c }\n" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "%s: OSTRZEŻENIE! Program musi posiadać SUID root!\n" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "%s: nieznany użytkownik\n" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "użycie: %s [-a|-u użytkownik] [-m maks] [-r] [-t dni] [-l bloksek]\n" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "Nieznany użytkownik: %s\n" -#: src/faillog.c:215 +#: src/faillog.c:212 msgid "Username Failures Maximum Latest\n" msgstr "Użytkownik Niepowodzenia Maksymalnie Ostatnio\n" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr " %s na %s" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr " [%lds pozostało]" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr " [%lds blokada]" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "użycie: %s [-r|-R] grupa\n" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr " %s [-a użytkownik] grupa\n" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr " %s [-d użytkownik] grupa\n" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr " %s [-A użytkownik,...] [-M użytkownik,...] grupa\n" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr " %s [-M użytkownik,...] grupa\n" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "%s: nieznany użytkownik %s\n" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "Dostęp zabroniony.\n" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "%s: plik z ukrytymi hasłami grup wymagany dla -A\n" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "Kim jeste¶?\n" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "nieznana grupa: %s\n" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "Dodaję nowego użytkownika %s do grupy %s\n" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "Usuwam użytkownika %s z grupy %s\n" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "%s: nieznany członek %s\n" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "%s: To nie tty\n" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "Zmieniam hasło dla grupy %s\n" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "Nowe hasło: " -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "Wpisz hasło ponownie: " -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "Nie pasuj±; spróbuj ponownie" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "%s: Spróbuj ponownie póĽniej\n" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "%s: nie mogę zablokować\n" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "%s: nie mogę zablokować pliku z ukrytymi hasłami\n" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "%s: nie mogę otworzyć pliku\n" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "%s: nie mogę zaktualizować wpisu\n" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "%s: nie mogę zaktualizować wpisu do pliku z ukrytymi hasłami\n" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "%s: nie mogę przepisać pliku\n" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "%s: nie mogę przepisać pliku z ukrytymi hasłami\n" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "%s: nie mogę usun±c blokady z pliku\n" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "%s: nie mogę zaktualizwoać plików DBM\n" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "%s: nie mogę zaktualizować pliku DBM z ukrytymi hasłami\n" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "użycie: groupadd [-g gid [-o]] grupa\n" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "%s: bł±d podczas dodawania nowej grupy\n" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "%s: nie mogę dodać nowego wpisu do bazy dbm grup\n" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "%s: nazwa %s nie jest niepowtarzalny\n" -#: src/groupadd.c:279 -#, c-format -msgid "%s: gid %ld is not unique\n" -msgstr "%s: gid %ld nie jest niepowtarzalny\n" +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s: uid %ld nie jest niepowtarzalny\n" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "%s: nie mogę uzyskać niepowtarzalnego gid\n" @@ -921,54 +919,54 @@ msgstr "%s: nie mog #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "%s: %s: nie jest prawidłow± nazw± grupy\n" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "%s: nieprawidłowa grupa %s\n" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "%s: -O wymaga ZMIENNA=WARTO¦Ć\n" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "%s: nie mogę przepisać pliku z grupami\n" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "%s: nie mogę przepisać pliku z ukrytymi grupami\n" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "%s: nie mogę zablokować pliku z grupami\n" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "%s: nie mogę otworzyć pliku z grupami\n" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "%s: nie mogę zablokować pliku z ukrytymi grupami\n" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "%s: nie mogę otworzyć pliku z ukrytymi grupami\n" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "%s: grupa %s istnieje\n" @@ -977,12 +975,12 @@ msgstr "%s: grupa %s istnieje\n" msgid "usage: groupdel group\n" msgstr "użycie: groupdel grupa\n" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "%s: bł±d podczas usuwania grupy\n" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "%s: bł±d podczas usuwania wpisu dbm o grupie\n" @@ -992,7 +990,7 @@ msgstr "%s: b msgid "%s: error removing shadow group entry\n" msgstr "%s: bł±d podczas usuwania wpisu o ukrytej grupie\n" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "%s: bł±d podczas usuwania wpisu dbm z pliku ukrytych grup\n" @@ -1005,130 +1003,130 @@ msgstr "%s: b msgid "%s: cannot remove user's primary group.\n" msgstr "%s: nie mogę usun±ć podstawowej grupy użytkowników.\n" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "%s: grupa %s nie isnieje\n" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "%s: grupa %s jest grup± NIS\n" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "%s: %s jest głównym serwerem NIS\n" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" -msgstr "" +msgstr "użycie groupmems -a użytkownik | -d użytkownik | -D | -l [-g grupa]\n" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 #, fuzzy msgid "Unable to lock group file\n" msgstr "%s: nie mogę zablokować pliku z grupami\n" -#: src/groupmems.c:209 +#: src/groupmems.c:220 #, fuzzy msgid "Unable to open group file\n" msgstr "%s: nie mogę otworzyć pliku z grupami\n" -#: src/groupmems.c:229 +#: src/groupmems.c:240 #, fuzzy msgid "Cannot close group file\n" msgstr "%s: nie mogę otworzyć pliku z grupami\n" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "użycie: groupmod [-g gid [-o]] [-n nazwa] grupa\n" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, fuzzy, c-format msgid "%s: %s not found in /etc/group\n" msgstr "%s: %s nie znaleziony w /etc/passwd\n" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "%s: nie mogę dodać nowego wpisu dbm do pliku z ukrytymi grupami\n" -#: src/groupmod.c:305 -#, c-format -msgid "%s: %ld is not a unique gid\n" +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" msgstr "%s: %ld nie jest niepowtarzalnym gid\n" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "%s: %s nie jest niepowtarzaln± nazw±\n" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "nieznany użytkownik %s\n" -#: src/grpck.c:98 +#: src/grpck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" -msgstr "Użycie: %s [ -r ] [ grupa [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "Użycie: %s [-r] [-s] [grupa [gshadow ] ]\n" -#: src/grpck.c:100 +#: src/grpck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" -msgstr "Użycie: %s [ -r ] [ grupa ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "Użycie: %s [-r] [-s] [grupa ]\n" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "Nie" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" -msgstr "" +msgstr "%s: -s i -r s± niekompatybilne\n" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "%s: nie mogę zablokować pliku %s\n" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "%s: nie mogę otworzyć pliku %s\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "nieprawidłowy wpis do pliku grup\n" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "usun±c linię `%s'? " @@ -1137,35 +1135,30 @@ msgstr "usun #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "duplikat wpisu grup\n" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "nieprawidłowa nazwa grupy `%s'\n" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "grupa %s: zły GID (%d)\n" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "grupa %s: nie ma użytkownika %s\n" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "skasować członka `%s'? " #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "nieprawidłowy wpis do pliku z ukrytymi hasłami\n" @@ -1173,204 +1166,202 @@ msgstr "nieprawid #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "duplikuj±cy się wpis w pliku ukrytych grup\n" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "brak pasuj±cego wpisu w pliku grup\n" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "ukryta grupa %s: brak użytkownika administracyjnego %s\n" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "usun±ć członka administracyjnego `%s'? " -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "ukryta grupa %s: nie ma użytkownika %s\n" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "%s: nie mogę zaktualizować pliku %s\n" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "%s: pliki zostały zaktualizowane; uruchom mkpasswd\n" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "%s: bez zmian\n" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "%s: pliku zostły zaktualizowane\n" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "%s: nie mogę zablokować pliku z grupami\n" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "%s: nie mogę otworzyć pliku z grupami\n" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "%s: nie mogę zablokować pliku z przesłoniętymi grupami\n" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "%s: nie mogę otworzyć pliku z przesłoniętymi grupami\n" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "%s: nie mogę usun±ć ukrytej grupy %s\n" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "%s: nie mogę zaktualizować wpisu ukrytej grupy dla %s\n" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "%s: nie mogę zaktualizować wpisu dla grupy %s\n" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "%s: nie mogę zaktualizować pliku z ukrytymi grupami\n" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "%s: nie mogę zaktualizować pliku z grupami\n" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "%s: nie skonfigurowany dla wsparcia ukrytych grup.\n" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "%s: nie mogę skasować pliku z ukrytymi grupami\n" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" -msgstr "użycie: id [ -a ]\n" +#: src/id.c:53 +#, fuzzy +msgid "usage: id [-a]\n" +msgstr "użycie: id [-a ]\n" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "użycie: id\n" -#: src/id.c:127 -#, c-format -msgid "uid=%d(%s)" +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" msgstr "uid=%d(%s)" -#: src/id.c:129 -#, c-format -msgid "uid=%d" +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" msgstr "uid=%d" -#: src/id.c:133 -#, c-format -msgid " gid=%d(%s)" +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" msgstr " gid=%d(%s)" -#: src/id.c:135 -#, c-format -msgid " gid=%d" +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" msgstr " gid=%d" -#: src/id.c:145 -#, c-format -msgid " euid=%d(%s)" +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" msgstr " euid=%d(%s)" -#: src/id.c:147 -#, c-format -msgid " euid=%d" +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" msgstr " euid=%d" -#: src/id.c:152 -#, c-format -msgid " egid=%d(%s)" +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" msgstr " egid=%d(%s)" -#: src/id.c:154 -#, c-format -msgid " egid=%d" +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" msgstr " egid=%d" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr " grupy=" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "Użytkownik Port Z Ostatnio\n" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "Użytkownik Port Ostatnio\n" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "**Nigdy nie zalogowany**" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "użycie: %s [-p] [nazwa]\n" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr " %s [-p] [-h host] [-f nazwa]\n" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr " %s [-p] -r host\n" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "Nieprawidłowy czas logowania\n" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" @@ -1378,7 +1369,7 @@ msgstr "" "\n" "System zamknięty do rutynowej konserwacji.\n" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1386,7 +1377,7 @@ msgstr "" "\n" "[Rozł±czenie pominięte -- zezwolenie na logowanie się root-a.]\n" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" @@ -1395,17 +1386,17 @@ msgstr "" "\n" "Limit czasu logowania przekroczony po %d sekundach.\n" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr " na `%s.100s' z `%.200s'" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr " na `%.100s'" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" @@ -1414,238 +1405,234 @@ msgstr "" "\n" "%s login: " -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "login: " -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "Nieprawidłowe logowanie" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "Ostrzeżenie: logowanie ponownie odblokowanie po czasowej blokadzie.\n" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "Ostatnie logowanie: %s na %s" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "Ostatnie logowanie: %s na %s" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr " z %.*s" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "Startuję rad_login\n" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "" "%s: nie ma bazy DBM na tym systemie - żadna akcja nie została podjęta\n" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "Użycie: %s [ -vf ] [ -p|g|sp|sg ] plik\n" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "Użycie: %s [ -vf ] [ -p|g|sp ] plik\n" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "Użycie: %s [ -vf ] [ -p|g ] plik\n" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "%s: nie mogę nadpisać pliku %s\n" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "%s: nie mogę otworzyć plików DBM dla %s\n" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "%s: rozpoczyna się od " -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 #, fuzzy msgid " is too long\n" msgstr "%s: pola zbyt długie\n" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "%s: bł±d podczas przetwarzania lini \"%s\"\n" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "dodaję rekord do nazwy " -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" -msgstr "" +msgstr "\n" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "%s: bł±d podczas dodawania rekordu dla " -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "dodano %d wpisów, najdłuższy był %d\n" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "użycie: newgrp [ - ] [ grupa ]\n" +#: src/mkpasswd.c:392 +#, fuzzy, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "Użycie: %s [-vf ] [-p|g|sp|sg ] plik\n" -#: src/newgrp.c:68 +#: src/mkpasswd.c:395 +#, fuzzy, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "Użycie: %s [-vf ] [-p|g|sp ] plik\n" + +#: src/mkpasswd.c:398 +#, fuzzy, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "Użycie: %s [-vf ] [-p|g ] plik\n" + +#: src/newgrp.c:61 #, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "użycie: sg grupa [ komenda ]\n" +msgid "usage: newgrp [-] [group]\n" +msgstr "użycie: newgrp [- ] [grupa ]\n" -#: src/newgrp.c:125 -#, c-format -msgid "unknown uid: %d\n" +#: src/newgrp.c:63 +#, fuzzy +msgid "usage: sg group [[-c] command]\n" +msgstr "użycie: sg grupa [komenda ]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" msgstr "nieznany uid: %d\n" -#: src/newgrp.c:201 -#, c-format -msgid "unknown gid: %ld\n" +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" msgstr "nieznany gid: %ld\n" -#: src/newgrp.c:245 -#, c-format -msgid "unknown gid: %d\n" -msgstr "nieznany gid: %d\n" - -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "Wybacz.\n" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "zbyt wiele grup\n" -#: src/newusers.c:82 -#, c-format -msgid "Usage: %s [ input ]\n" -msgstr "Użycie: %s [ wej¶cie ]\n" +#: src/newusers.c:78 +#, fuzzy, c-format +msgid "Usage: %s [input]\n" +msgstr "Użycie: %s [wej¶cie ]\n" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "%s: nie mogę zablokować /etc/passwd.\n" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "%s: nie mogę zablokować plików, spróbuj póĽniej\n" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "%s: nie mogę otworzyć plików\n" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linia %d: nieprawidłowa linia\n" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "%s: linia %d: nie mogę utworzyć GID\n" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "%s: linia %d: nie mogę utworzyć UID\n" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "%s: linia %d: nie mogę znale¶ć użytkownika %s\n" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linia %d: nie mogę zaktualizować pliku z hasłami\n" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "%s: linia %d: mkdir nie powiodło się\n" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "%s: linia %d: chown nie powiodło się\n" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "%s: linia %d: nie mogę zaktualizować wpisu\n" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "%s: bł±d podczas aktualizowania plików\n" -#: src/passwd.c:239 -#, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" -msgstr "użycie: %s [ -f | -s ] [ nazwa ]\n" +#: src/passwd.c:174 +#, fuzzy, c-format +msgid "usage: %s [-f|-s] [name]\n" +msgstr "użycie: %s [-f|-s ] [nazwa ]\n" -#: src/passwd.c:242 -#, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" -msgstr " %s [ -x maks ] [ -n min ] [ -w ostrz ] [ -i nieakty ] nazwa\n" +#: src/passwd.c:178 +#, fuzzy, c-format +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x maks ] [-n min ] [-w ostrz ] [-i nieakty ] nazwa\n" -#: src/passwd.c:245 -#, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" msgstr " %s { -l | -u | -d | -S | -e } nazwa\n" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "Użytkownik %s posiada klucz TCFS, jego stare hasło jest wymagane.\n" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "Nie możesz używać opcji -t by wymusić zmianę.\n" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "Stare hasło: " -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "Nieprawidłowe hasło `%s'\n" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "Ostrzeżenie: użytkownik %s posiada klucz TCFS.\n" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" @@ -1654,15 +1641,15 @@ msgstr "" "Wpisz nowe hasło (minimum %d, maksimum %d znaków)\n" "Proszę użyj kombinacji wielkich i małych znaków oraz cyfr.\n" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "Nowe hasło: " -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "Spróbuj ponownie.\n" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" @@ -1670,90 +1657,90 @@ msgstr "" "\n" "Ostrzeżenie: słabe hasło (jednak wpisz je ponowie je¶li chcesz go użyć).\n" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "Nie pasuj±; spróbuj ponownie.\n" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "Hasło dla %s nie może być zmienione.\n" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "Wybacz, hasło dla %s nie może być jeszcze zmienione.\n" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "%s: brak pamięci\n" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "Nie mogę zablokować bazy kluczy TCFS; spróbuj ponownie\n" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "Nie mogę otworzyć bazy kluczy TCFS.\n" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "Bł±d podczas aktualizacji bazy kluczy TCFS.\n" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "Nie mogę potwierdzić zmian TCFS.\n" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "%s: Nie mogę wykonać %s" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "%s: ropozytorium %s nie jest obsługiwane\n" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "%s: Dostęp zabroniony\n" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "Nie możesz zmieniać hasła dla %s.\n" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "Zmieniam hasło dla %s\n" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "Hasło dla %s pozostaje niezmienione.\n" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "Hasło zmienione.\n" -#: src/pwck.c:98 +#: src/pwck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" -msgstr "Użycie: %s [ -qr ] [ hasło [ shadow ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "Użycie: %s [-q] [-r] [-s] [hasło [shadow ] ]\n" -#: src/pwck.c:100 +#: src/pwck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" -msgstr "Użycie: %s [ -qr ] [ hasło ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "Użycie: %s [-q] [-r] [-s] [hasło ]\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "nieprawidłowy wpis do pliku z hasłami\n" @@ -1761,32 +1748,24 @@ msgstr "nieprawid #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "duplikuj±cy się wpis w pliku z hasłami\n" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "nieprawidłowa nazwa użytkownika `%s'\n" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "użytkownik %s: zły UID (%d)\n" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 -#, c-format -msgid "user %s: no group %d\n" +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" msgstr "użytkownik %s: brak grupy %d\n" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "użytkownik %s: katalog %s nie istnieje\n" @@ -1794,16 +1773,16 @@ msgstr "u #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "użytkownik %s: program %s nie istnieje\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "nieprawidłowy wpis w pliku z hasłami\n" @@ -1811,7 +1790,7 @@ msgstr "nieprawid #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "duplikuj±cy się wpis w pliku z ukrytymi hasłami\n" @@ -1819,70 +1798,70 @@ msgstr "duplikuj #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "brak pasuj±cego wpisu w pliku z hasłami\n" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "użytkownik %s: ostatnia zmiana hasła w przyszło¶ci\n" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "%s: nie mogę zablokować pliku z hasłami\n" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "%s: nie mogę otworzyć pliku z hasłami\n" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "%s: nie mogę usun±ć wpisu z pliku z ukrytymi hasłami dla %s\n" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "%s: nie mogę zaktualizować wpisu do pliku z hasłami dla %s\n" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "%s: nie mogę zaktualizować pliku z ukrytymi hasłami\n" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "%s: nie mogę zaktualizować pliku z hasłami\n" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "%s: Przesłonięte hasła nie s± skonfigurowane.\n" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "%s: nie mogę zaktualizować wpisu dla użytkownika %s\n" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "%s: nie mogę skasować pliku z ukrytymi hasłami\n" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "Wybacz." -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: musisz uruchamiać z terminala\n" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "%s: pam_start: bł±d %d\n" @@ -1892,18 +1871,17 @@ msgstr "%s: pam_start: b msgid "Unknown id: %s\n" msgstr "Nieznany id: %s\n" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, c-format msgid "You are not authorized to su %s\n" msgstr "Nie masz autoryzacji by używać su %s\n" #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "(Wpisz swoje własne hasło.)" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" @@ -1912,28 +1890,23 @@ msgstr "" "%s: %s\n" "(Zignorowano)\n" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "Brak powłoki\n" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "Brak pliku z hasłami\n" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "Brak wpisu do bazy haseł dla 'root'\n" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1944,7 +1917,7 @@ msgstr "" "(lub podaj hasło root-a by przej¶ć do trybu utrzymania systemu):" #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "Wchodzę w tryb utrzymania systemu\n" @@ -1953,507 +1926,507 @@ msgstr "Wchodz msgid "%s: rebuild the group database\n" msgstr "%s: przebuduj bazę grup\n" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "%s: przebuduj bazę przesłoniętych haseł\n" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "%s: nieprawidłowy argument numeryczny `%s'\n" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "%s: nieznany gid %s\n" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "%s: nieznana grupa %s\n" -#: src/useradd.c:426 -#, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "grupa=%s,%ld kat_baz=%s skel=%s\n" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "powłoka=%s " -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "nieaktywne=%ld wyga¶nięcie=%s" -#: src/useradd.c:435 -#, c-format -msgid "GROUP=%ld\n" +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" msgstr "GRUPA=%ld\n" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "KAT_DOM=%s\n" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "NIEAKTYWNE=%ld\n" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "WYGA¦NIĘCIE=%s\n" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "POWŁOKA=%s\n" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "SKEL=%s\n" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nie mogę utworzyć nowego pliku ze standardowymi ustawieniami\n" -#: src/useradd.c:488 +#: src/useradd.c:503 #, fuzzy, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nie mogę utworzyć nowego pliku ze standardowymi ustawieniami\n" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "%s: zmiana nazwy: %s" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "%s: grupa `%s' jest grup± NIS.\n" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: podano zbyt wiele grup (maks %d).\n" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "użycie: %s\t[-u uid [-o]] [-g grupa] [-G grupa,...] \n" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "\t\t[-d kat_dom] [-s powłoka] [-c komentarz] [-m [-k wzór]]\n" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 msgid "[-f inactive] [-e expire ] " msgstr "[-f nieaktywne] [-e utrata_ważno¶ci ]" -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "[-A program] " -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "[-p hasło] nazwa\n" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr " %s\t-D [-g grupa] [-b baza] [-s powłoka]\n" -#: src/useradd.c:736 +#: src/useradd.c:756 msgid "\t\t[-f inactive] [-e expire ]\n" msgstr "\t\t[-f nieaktywne] [-e utrata_ważno¶ci ]\n" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "%s: bł±d podczas blokowania pliku z grupami\n" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "%s: bł±d podczas otwierania pliku z grupami\n" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "%s: bł±d podczas blokowania pliku z ukrytymi hasłami\n" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "%s: bł±d podczas otwierania pliku z ukrytymi grupami\n" -#: src/useradd.c:1019 -#, c-format -msgid "%s: uid %d is not unique\n" -msgstr "%s: uid %d nie jest niepowtarzalny\n" +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s: uid %ld nie jest niepowtarzalny\n" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "%s: nie mogę uzyskać niepowtarzalnego uid\n" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "%s: nieprawidłowe pole `%s'\n" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "%s: nieprawidłowy katalog bazowy `%s'\n" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "%s: nieprawidłowy komentarz `%s'\n" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "%s: nieprawidłowy katalog domowy `%s'\n" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "%s: nieprawidłowa data `%s'\n" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "%s: ukryte hasła wymagane dla -e\n" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "%s: ukryte hasła wymagane dla -f\n" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "%s: nieprawidłowa powłoka `%s'\n" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "%s: nieprawidłowa nazwa użytkownika `%s'\n" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "%s: nie mogę przepisać pliku z hasłami\n" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "%s: nie mogę przepisać pliku z ukrytymi hasłami\n" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "%s: nie mogę zablokować pliku z hasłami\n" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "%s: nie mogę otworzyć pliku z hasłami\n" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "%s: nie mogę zablokować pliku z ukrytymi hasłami\n" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "%s: nie mogę otworzyć pliku z ukrytymi hasłami\n" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "%s: bł±d podczas dodawania metody uwierzytelniania\n" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "%s: bł±d podczas dodawania nowego wpisu do pliku z hasłami\n" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "%s: bł±d podczas aktualizacji wpisu dbm do pliku z hasłami\n" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "%s: bł±d podczas dodawania nowego wpisu do pliku z ukrytymi hasłami\n" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "%s: bł±d podczas aktualizacji wpisu dbm do pliku z ukrytymi hasłami\n" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s: nie mogę utworzyć katalogu %s\n" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "%s: użytkownik %s istnieje\n" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" msgstr "" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "użycie: %s [-r] nazwa\n" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "%s: bł±d podczas aktualizacji wpisu grupy\n" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "%s: nie mogę zaktualizować wpisu dbm do pliku z grupami\n" -#: src/userdel.c:221 +#: src/userdel.c:219 #, fuzzy, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "%s: nie mogę zaktualizować wpisu dbm do pliku z grupami\n" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "%s: nie mogę przepisać pliku klucza TCFS\n" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "%s: nie mogę zablokować pliku klucza TCFS\n" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "%s: nie mogę otworzyć pliku klucza TCFS\n" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "%s: nie mogę otworzyć pliku z grupami\n" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "%s: nie mogę otworzyć pliku z przesłoniętymi grupami\n" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "%s: bł±d podczas usuwania informacji uwierzytelniaj±cej\n" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "%s: bł±d podczas usuwania wpisu do pliku z hasłami\n" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "%s: bł±d podczas usuwania wpisu do pliku z ukrytymi hasłami\n" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "%s: bł±d podczas usuwania wpisu TCFS\n" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "%s: bł±d podczas usuwania wpisu dbm do pliku z hasłami\n" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "%s: bł±d podczas usuwania wpisy dbm z pliku z ukrytymi hasłami\n" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: użytkownik %s jest aktualnie zalogowany\n" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "%s: ostrzeżenie: wła¶cicielem %s nie jest %s, nie usuwam\n" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "%s: ostrzeżenie: nie mogę usun±ć " -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "%s: użytkownik %s nie istnieje\n" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "%s: użytkownik %s jest użytkownikiem NIS\n" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "%s: wła¶cicielem %s nie jest %s, nie usuwam\n" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "%s: nie usuwam katalogu %s (would remove home of user %s)\n" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "%s: bł±d podczas usuwania katalogu %s\n" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "\t\t[-d kat_dom [-m]] [-s powłoka] [-c komentarz] [-l nowa_nazwa]\n" -#: src/usermod.c:330 +#: src/usermod.c:332 msgid "[-A {DEFAULT|program},... ] " msgstr "[-A {DEFAULT|program},... ] " -#: src/usermod.c:332 +#: src/usermod.c:334 #, fuzzy msgid "[-p passwd] [-L|-U] name\n" msgstr "[-p hasło] nazwa\n" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "%s: zabrakło pamięci w pdate_group\n" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "%s: zabrakło pamięci w update_gshadow\n" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "%s: nie podano flag\n" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "%s: ukryte hasła wymagane dla -e i -f\n" -#: src/usermod.c:1215 -#, c-format -msgid "%s: uid %ld is not unique\n" +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" msgstr "%s: uid %ld nie jest niepowtarzalny\n" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "%s: bł±d podczas usuwania metody uwierzytelniania\n" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "%s: bł±d podczas zmiany metody uwierzytelniania\n" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "%s: bł±d podczas zmiany wpisu w pliku z hasłami\n" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "%s: bł±d podczas usuwania wpisu z pliku z hasłami\n" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "%s: bł±d podczas dodawania wpisu dbm do pliku z hasłami\n" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "%s: bł±d podczas usuwania wpisu dbm z pliku z hasłami\n" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "%s: bł±d podczas usuwania wpisu z pliku z ukrytymi hasłami\n" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "%s: bł±d podczas usuwania wpisu dbm z pliku z ukrytymi hasłami\n" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "%s: katalog %s isnieje\n" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "%s: nie mogę utworzyć %s\n" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "%s: nie mogę zmienić wła¶ciciela %s\n" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: nie mogę zmienić nazwy katalogu z %s na %s\n" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: ostrzeżenie: wła¶cicielem %s nie jest %s\n" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "nie powiodła się zmiana wła¶ciciela skrzynki pocztowej" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "zmiana nazwy skrzynki pocztowej nie powiodła się" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" @@ -2462,21 +2435,21 @@ msgstr "" "\n" "%s: %s jest niezmieniony\n" -#: src/vipw.c:127 +#: src/vipw.c:132 #, fuzzy msgid "Couldn't lock file" msgstr "%s: nie mogę usun±c blokady z pliku\n" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" -msgstr "" +msgstr "Nie można wykonać kopii zapasowej" -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "%s: nie mogę odzyskać %s: %s (twoje zmiany s± w %s)\n" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" @@ -2486,6 +2459,25 @@ msgstr "" "`vipw' edytuje /etc/passwd `vipw -s' edytuje /etc/shadow\n" "`vigr' edytuje /etc/group `vigr -s' edytuje /etc/gshadow\n" +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: gid %ld nie jest niepowtarzalny\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "nieznany gid: %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: uid %d nie jest niepowtarzalny\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "użytkownik %s: zły UID (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s: brak informacji\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "grupa %s: zły GID (%d)\n" + #~ msgid "%s: permission denied (shell).\n" #~ msgstr "%s: dostęp zabroniony (powłoka).\n" diff --git a/po/shadow.pot b/po/shadow.pot index b8e289b3..cd2a7560 100644 --- a/po/shadow.pot +++ b/po/shadow.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,36 +23,36 @@ msgstr "" msgid "Warning: too many groups\n" msgstr "" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "" -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "" -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "" -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr "" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr "" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "" @@ -109,7 +109,7 @@ msgstr "" msgid "You have mail." msgstr "" -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "" @@ -124,12 +124,12 @@ msgstr "" msgid "passwd: %s\n" msgstr "" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "" @@ -179,24 +179,24 @@ msgstr "" msgid "Dialup Password: " msgstr "" -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "" @@ -205,7 +205,7 @@ msgstr "" #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "" @@ -223,105 +223,102 @@ msgstr "" msgid "Unknown error %d" msgstr "" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -#: src/chage.c:199 +#: src/chage.c:157 msgid "" -"Enter the new value, or press return for the default\n" +"Enter the new value, or press ENTER for the default\n" "\n" msgstr "" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 msgid "Password Inactive:\t" msgstr "" @@ -329,577 +326,573 @@ msgstr "" #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 msgid "Account Expires:\t" msgstr "" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, c-format -msgid "%s: PAM authentication failed\n" -msgstr "" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, c-format +msgid "%s: PAM authentication failed\n" +msgstr "" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "" -#: src/chage.c:592 +#: src/chage.c:571 #, c-format -msgid "%s: can't lock shadow password file\n" +msgid "%s: can't lock shadow password file" msgstr "" -#: src/chage.c:599 +#: src/chage.c:579 #, c-format -msgid "%s: can't open shadow password file\n" +msgid "%s: can't open shadow password file" msgstr "" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, c-format msgid "%s: PAM chauthtok failed\n" msgstr "" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "" - -#: src/chfn.c:107 +#: src/chfn.c:83 #, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -#: src/chfn.c:111 +#: src/chfn.c:88 #, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" msgstr "" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" +#: src/chfn.c:139 +msgid "Enter the new value, or press ENTER for the default\n" msgstr "" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "" -#: src/chsh.c:105 +#: src/chsh.c:75 #, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" +msgid "Usage: %s [-s shell] [name]\n" msgstr "" -#: src/chsh.c:120 +#: src/chsh.c:89 +msgid "Enter the new value, or press return for the default\n" +msgstr "" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "" -#: src/dpasswd.c:69 +#: src/dpasswd.c:52 #, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" +msgid "Usage: %s [-(a|d)] shell\n" msgstr "" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "" -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "" -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +msgid "Usage: expiry {-f|-c}\n" msgstr "" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "" -#: src/faillog.c:215 +#: src/faillog.c:212 msgid "Username Failures Maximum Latest\n" msgstr "" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr "" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr "" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr "" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr "" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr "" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr "" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr "" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "" -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "" -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "" -#: src/groupadd.c:279 +#: src/groupadd.c:270 #, c-format -msgid "%s: gid %ld is not unique\n" +msgid "%s: gid %u is not unique\n" msgstr "" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "" @@ -907,54 +900,54 @@ msgstr "" #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "" @@ -963,12 +956,12 @@ msgstr "" msgid "usage: groupdel group\n" msgstr "" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "" @@ -978,7 +971,7 @@ msgstr "" msgid "%s: error removing shadow group entry\n" msgstr "" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "" @@ -991,127 +984,127 @@ msgstr "" msgid "%s: cannot remove user's primary group.\n" msgstr "" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" msgstr "" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 msgid "Unable to lock group file\n" msgstr "" -#: src/groupmems.c:209 +#: src/groupmems.c:220 msgid "Unable to open group file\n" msgstr "" -#: src/groupmems.c:229 +#: src/groupmems.c:240 msgid "Cannot close group file\n" msgstr "" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, c-format msgid "%s: %s not found in /etc/group\n" msgstr "" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "" -#: src/groupmod.c:305 +#: src/groupmod.c:300 #, c-format -msgid "%s: %ld is not a unique gid\n" +msgid "%s: %u is not a unique gid\n" msgstr "" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "" -#: src/grpck.c:98 +#: src/grpck.c:87 #, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" msgstr "" -#: src/grpck.c:100 +#: src/grpck.c:90 #, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" msgstr "" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" msgstr "" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "" @@ -1120,35 +1113,30 @@ msgstr "" #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "" @@ -1156,572 +1144,564 @@ msgstr "" #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "" -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" +#: src/id.c:53 +msgid "usage: id [-a]\n" msgstr "" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "" -#: src/id.c:127 +#: src/id.c:123 #, c-format -msgid "uid=%d(%s)" +msgid "uid=%u(%s)" +msgstr "" + +#: src/id.c:125 +#, c-format +msgid "uid=%u" msgstr "" #: src/id.c:129 #, c-format -msgid "uid=%d" +msgid " gid=%u(%s)" msgstr "" -#: src/id.c:133 +#: src/id.c:131 #, c-format -msgid " gid=%d(%s)" +msgid " gid=%u" msgstr "" -#: src/id.c:135 +#: src/id.c:141 #, c-format -msgid " gid=%d" +msgid " euid=%u(%s)" msgstr "" -#: src/id.c:145 +#: src/id.c:143 #, c-format -msgid " euid=%d(%s)" +msgid " euid=%u" msgstr "" -#: src/id.c:147 +#: src/id.c:148 #, c-format -msgid " euid=%d" +msgid " egid=%u(%s)" msgstr "" -#: src/id.c:152 +#: src/id.c:150 #, c-format -msgid " egid=%d(%s)" -msgstr "" - -#: src/id.c:154 -#, c-format -msgid " egid=%d" +msgid " egid=%u" msgstr "" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr "" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr "" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr "" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" msgstr "" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" msgstr "" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" "Login timed out after %d seconds.\n" msgstr "" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr "" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr "" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" "%s login: " msgstr "" -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "" -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr "" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 msgid " is too long\n" msgstr "" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" msgstr "" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "" -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "" - -#: src/newgrp.c:68 -msgid "usage: sg group [[-c] command ]\n" -msgstr "" - -#: src/newgrp.c:125 +#: src/mkpasswd.c:392 #, c-format -msgid "unknown uid: %d\n" +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" msgstr "" -#: src/newgrp.c:201 +#: src/mkpasswd.c:395 #, c-format -msgid "unknown gid: %ld\n" +msgid "Usage: %s [-vf] [-p|g|sp] file\n" msgstr "" -#: src/newgrp.c:245 +#: src/mkpasswd.c:398 #, c-format -msgid "unknown gid: %d\n" +msgid "Usage: %s [-vf] [-p|g] file\n" msgstr "" -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "" + +#: src/newgrp.c:63 +msgid "usage: sg group [[-c] command]\n" +msgstr "" + +#: src/newgrp.c:136 +#, c-format +msgid "unknown uid: %u\n" +msgstr "" + +#: src/newgrp.c:219 +#, c-format +msgid "unknown gid: %lu\n" +msgstr "" + +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "" -#: src/newusers.c:82 +#: src/newusers.c:78 #, c-format -msgid "Usage: %s [ input ]\n" +msgid "Usage: %s [input]\n" msgstr "" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "" -#: src/passwd.c:239 +#: src/passwd.c:174 #, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" +msgid "usage: %s [-f|-s] [name]\n" msgstr "" -#: src/passwd.c:242 +#: src/passwd.c:178 #, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" msgstr "" -#: src/passwd.c:245 +#: src/passwd.c:180 #, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" +msgid " %s {-l|-u|-d|-S|-e} name\n" msgstr "" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "" -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" "Please use a combination of upper and lower case letters and numbers.\n" msgstr "" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "" -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" msgstr "" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "" -#: src/pwck.c:98 +#: src/pwck.c:87 #, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" msgstr "" -#: src/pwck.c:100 +#: src/pwck.c:90 #, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" msgstr "" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "" @@ -1729,32 +1709,24 @@ msgstr "" #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 +#: src/pwck.c:388 #, c-format -msgid "user %s: no group %d\n" +msgid "user %s: no group %u\n" msgstr "" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "" @@ -1762,16 +1734,16 @@ msgstr "" #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "" @@ -1779,7 +1751,7 @@ msgstr "" #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "" @@ -1787,70 +1759,70 @@ msgstr "" #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "" -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "" @@ -1860,46 +1832,40 @@ msgstr "" msgid "Unknown id: %s\n" msgstr "" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, c-format msgid "You are not authorized to su %s\n" msgstr "" #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" "(Ignored)\n" msgstr "" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1907,7 +1873,7 @@ msgid "" msgstr "" #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "" @@ -1916,526 +1882,526 @@ msgstr "" msgid "%s: rebuild the group database\n" msgstr "" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "" -#: src/useradd.c:426 +#: src/useradd.c:440 #, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "" -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "" -#: src/useradd.c:435 +#: src/useradd.c:450 #, c-format -msgid "GROUP=%ld\n" +msgid "GROUP=%u\n" msgstr "" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" -#: src/useradd.c:488 +#: src/useradd.c:503 #, c-format msgid "%s: cannot open new defaults file\n" msgstr "" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 msgid "[-f inactive] [-e expire ] " msgstr "" -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "" -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr "" -#: src/useradd.c:736 +#: src/useradd.c:756 msgid "\t\t[-f inactive] [-e expire ]\n" msgstr "" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "" -#: src/useradd.c:1019 +#: src/useradd.c:1039 #, c-format -msgid "%s: uid %d is not unique\n" +msgid "%s: uid %u is not unique\n" msgstr "" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" msgstr "" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "" -#: src/userdel.c:221 +#: src/userdel.c:219 #, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "" -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "" -#: src/usermod.c:330 +#: src/usermod.c:332 msgid "[-A {DEFAULT|program},... ] " msgstr "" -#: src/usermod.c:332 +#: src/usermod.c:334 msgid "[-p passwd] [-L|-U] name\n" msgstr "" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "" -#: src/usermod.c:1215 +#: src/usermod.c:1239 #, c-format -msgid "%s: uid %ld is not unique\n" +msgid "%s: uid %lu is not unique\n" msgstr "" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" "%s: %s is unchanged\n" msgstr "" -#: src/vipw.c:127 +#: src/vipw.c:132 msgid "Couldn't lock file" msgstr "" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" msgstr "" -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" diff --git a/po/sv.gmo b/po/sv.gmo index 27340790..ab45c48a 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 26c2f8bc..cc896ae8 100644 --- a/po/sv.po +++ b/po/sv.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 19990709\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: 1999-08-16 21:20+0100\n" "Last-Translator: Kristoffer Brĺnemyr \n" "Language-Team: sv \n" @@ -23,36 +23,36 @@ msgstr "Varning: ok msgid "Warning: too many groups\n" msgstr "Varning: för mĺnga grupper\n" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "Ditt lösenord har upphört" -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "Ditt lösenord är inaktivt" -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "Din användare har upphört." -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr " Kontakta systemoperatören.\n" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr " Välj ett nytt lösenord.\n" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "Ditt lösenord upphör om %ld dagar.\n" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "Ditt lösenord upphör imorgon.\n" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "Ditt lösenord upphör idag.\n" @@ -110,7 +110,7 @@ msgstr "Ingen post." msgid "You have mail." msgstr "Du har post." -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "Felaktigt lösenord: %s. " @@ -125,12 +125,12 @@ msgstr "passwd: pam_start() misslyckades, fel %d\n" msgid "passwd: %s\n" msgstr "passwd: %s\n" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "Kunde inte byta aktuell katalog till \"%s\"\n" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "Ingen hemkatalog, loggar in med HOME=/" @@ -180,24 +180,24 @@ msgstr "malloc(%d) misslyckades\n" msgid "Dialup Password: " msgstr "Uppringningslösenord: " -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "Kunde inte allokera rum för konfigureringsinformation.\n" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "konfigurerings fel - okänt object \"%s\" (meddela systemoperatören)\n" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "fel - kunde inte hitta \"%s\"\n" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "%s hittades inte\n" @@ -206,7 +206,7 @@ msgstr "%s hittades inte\n" #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "Lösenord: " @@ -224,111 +224,107 @@ msgstr "" msgid "Unknown error %d" msgstr "Okänt fel %d" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -"Användning: %s [ -l ] [ -m min_dagar ] [ -M max_dagar ] [ -W varna ]\n" -" [ -I inaktiv ] [ -E utgĺng ] [ -d senaste_dag ] användare\n" +"Användning: %s [-l] [-m min_dagar] [-M max_dagar] [-W varna]\n" +"\t[-I inaktiv] [-E utgĺng] [-d senaste_dag] användare\n" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -"Användning: %s [ -l ] [ -m min_dagar ] [ -M max_dagar ] [ -d senaste_dag ] " +"Användning: %s [-l] [-m min_dagar] [-M max_dagar] [-d senaste_dag] " "användare\n" -#: src/chage.c:199 +#: src/chage.c:157 +#, fuzzy msgid "" -"Enter the new value, or press return for the default\n" -"\n" -msgstr "" -"Skriv in det nya värdet, eller tryck pĺ return för standardvärdet\n" +"Enter the new value, or press ENTER for the default\n" "\n" +msgstr "Skriv in det nya värdet, eller tryck ENTER för standardvärdet\n" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "Minsta lösenordsĺlder" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "Högsta lösenordsĺlder" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "Senaste lösenordsändring (ĹĹĹĹ-MM-DD)" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "Lösenords upphörningsvarning" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "Lösenord inaktivt" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Kontot upphör (ĹĹĹĹ-MM-DD)" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "Minst:\t%ld\n" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "Högst:\t%ld\n" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "Varning:\t%ld\n" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "Inaktivt:\t%ld\n" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "Senaste ändring:\t\t" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "Aldrig\n" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "Lösenordet upphör:\t" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 #, fuzzy msgid "Password Inactive:\t" msgstr "Lösenord inaktivt" @@ -337,583 +333,586 @@ msgstr "L #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 #, fuzzy msgid "Account Expires:\t" msgstr "Lösenordet upphör:\t" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, fuzzy, c-format -msgid "%s: PAM authentication failed\n" -msgstr "%s: fel under tillägning av metod för äkthetsbevisning\n" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "%s: inkludera inte \"l\" tillsammands med andra flaggor\n" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "%s: tillĺtelse nekas\n" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s: fel under tillägning av metod för äkthetsbevisning\n" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "%s: kan inte lĺsa lösenordsfilen\n" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "%s: kan inte öppna lösenordsfilen\n" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "%s: okänd användare: %s\n" -#: src/chage.c:592 -#, c-format -msgid "%s: can't lock shadow password file\n" +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" msgstr "%s: kan inte lĺsa skugglösenordsfilen\n" -#: src/chage.c:599 -#, c-format -msgid "%s: can't open shadow password file\n" +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" msgstr "%s: kan inte öppna skugglösenordsfilen\n" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "Ändrar ĺldringsinformation för %s\n" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "%s: fel uppstod under byte av fält\n" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "%s: kan inte uppdatera lösenordsfilen\n" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "%s: kan inte uppdatera skugglösenordsfilen\n" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "Fel under uppdatering av DBM-lösenordsnoteringen.\n" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "%s: kan inte skriva om skugglösenordsfilen\n" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "%s: kan inte skriva om lösenordsfilen\n" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, fuzzy, c-format msgid "%s: PAM chauthtok failed\n" msgstr "%s: kan inte lĺsa upp filen\n" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "%s: ingen ĺldringsinformation finns tillgänglig\n" - -#: src/chfn.c:107 +#: src/chfn.c:83 #, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -"%s [ -f hela_namnet ] [ -r rumsnummer ] [ -w arbetstele ]\n" -"\t[ -h hemtele ] [ -o övrigt ] [ användare ]\n" +"%s [-f hela_namnet] [-r rumsnummer] [-w arbetstele]\n" +"\t[-h hemtele] [-o övrigt] [användare]\n" -#: src/chfn.c:111 +#: src/chfn.c:88 #, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" msgstr "" -"Användning: %s [ -f hela_namnet ] [ -r rumsnummer ] [ -w arbetstele ] [ -h " -"hemtele ]\n" +"Användning: %s [-f hela_namnet] [-r rumsnummer] [-w arbetstele] [-h " +"hemtele]\n" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" -msgstr "Skriv in det nya värdet, eller tryck return för standardvärdet\n" +#: src/chfn.c:139 +#, fuzzy +msgid "Enter the new value, or press ENTER for the default\n" +msgstr "" +"Skriv in det nya värdet, eller tryck pĺ ENTER för standardvärdet\n" +"\n" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "Hela namnet" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "\tHela namnet: %s\n" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "Rumsnummer" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "\tRumsnummer: %s\n" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "Arbetstelefonnummer" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "\tArbetstelefonnummer: %s\n" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "Hemtelefonnummer" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "\tHemtelefonnummer: %s\n" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "Övrigt" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "%s: Tillĺtelse nekas.\n" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "%s: Okänd användare %s\n" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "%s: Kan inte avgöra ditt användarnamn.\n" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "%s: kan inte ändra användare \"%s\" pĺ NIS-klienten.\n" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "%s: \"%s\" är NIS-mästare för denna klient.\n" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "Ändrar användarinformation för %s\n" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "%s: felaktigt namn: \"%s\"\n" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "%s: felaktigt rumsnummer: \"%s\"\n" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "%s: felaktigt arbetstelefonnummer: \"%s\"\n" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "%s: felaktigt hemtelefonnummer: \"%s\"\n" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "%s: \"%s\" innehĺller otillĺtna tecken\n" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "%s: för lĺnga fält\n" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "Kan inte ändra ID till root.\n" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "Kan inte lĺsa lösenordsfilen; försök igen senare.\n" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "Kan inte öppna lösenordsfilen.\n" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "%s: %s hittades inte i /etc/passwd\n" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "Fel under uppdatering av lösenordsnoteringen.\n" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "Kan inte genomföra ändringar i lösenordsfilen.\n" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "Kan inte lĺsa upp lösenordsfilen.\n" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "Användning: %s [-e]\n" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "%s: kan inte lĺsa skuggfilen\n" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "%s: kan inte öppna skuggfilen\n" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "%s: rad %d: för lĺng rad\n" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "%s: rad %d: det nya lösenordet saknas\n" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "%s: rad %d: okänd användare %s\n" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "%s: rad %d: kan inte uppdatera lösenordsnoteringen\n" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: fel upptäcktes, ändringarna ignorerades\n" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "%s: fel under uppdatering av skuggfilen\n" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "%s: fel under uppdatering av lösenordsfilen\n" -#: src/chsh.c:105 +#: src/chsh.c:75 #, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" -msgstr "Användning: %s [ -s skal ] [ namn ]\n" +msgid "Usage: %s [-s shell] [name]\n" +msgstr "Användning: %s [-s skal] [namn]\n" -#: src/chsh.c:120 +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"Skriv in det nya värdet, eller tryck pĺ ENTER för standardvärdet\n" +"\n" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "Inloggningsskal" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "Du fĺr inte ändra skal ĺt %s.\n" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "Ändrar inloggningsskal ĺt %s\n" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "%s: Felaktig notering: %s\n" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "%s är ett felaktigt skal.\n" -#: src/dpasswd.c:69 +#: src/dpasswd.c:52 #, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" -msgstr "Användning: %s [ -(a|d) ] skal\n" +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "Användning: %s [-(a|d)] skal\n" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "Skallösenord: " -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "skriv in skallösenordet igen: " -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "%s: Lösenorden matchar inte varandra, försök igen.\n" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "%s: kan inte skapa %s" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "%s: kan inte öppna %s" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "%s: Hittade inte skalet %s.\n" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" msgstr "Användning: expiry { -f | -c }\n" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "%s: VARNING! Mĺste vara set-UID root!\n" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "%s: okänd användare\n" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "" "Användning: %s [-a|-u användare] [-m högst] [-r] [-t dagar] [-l lĺssek]\n" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "Okänd användare: %s\n" -#: src/faillog.c:215 +#: src/faillog.c:212 msgid "Username Failures Maximum Latest\n" msgstr "Användarnamn Felaktiga inloggningar Högsta Senaste\n" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr " %s pĺ %s" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr " [%lds kvar]" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr " [%lds lĺsning]" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "Användning: %s [-r|-R] grupp\n" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr " %s [-a användare] grupp\n" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr " %s [-d användare] grupp\n" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr " %s [-A användare,...] [-M användare,...] grupp\n" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr " %s [-M användare,...] grupp\n" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "%s: okänd användare %s\n" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "Tillĺtelse nekas.\n" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "%s: skuggrupplösenord krävs för -A\n" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "Vem är du?\n" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "okänd grupp: %s\n" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "Lägger till användare %s till grupp %s\n" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "Tar bort användare %s frĺn grupp %s\n" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "%s: okänd medlem %s\n" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "%s: Inte en tty\n" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "Ändrar lösenordet för grupp %s\n" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "Nytt lösenord: " -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "Skriv in det nya lösenordet igen: " -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "De matchar inte; försök igen" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "%s: Försök igen senare\n" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "%s: kan inte lĺsa\n" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "%s: kan inte lĺsa skuggfilen\n" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "%s: kan inte öppna filen\n" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "%s: kan inte uppdatera noteringen\n" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "%s: kan inte uppdatera noteringen i skuggfilen\n" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "%s: kan inte skriva om filen\n" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "%s: kan inte skriva om skuggfilen\n" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "%s: kan inte lĺsa upp filen\n" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "%s: kan inte uppdatera DBM-filer\n" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "%s: kan inte uppdatera DBM-skuggfiler\n" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "Användning: groupadd [-g gid [-o]] grupp\n" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "%s: gick inte att lägga till en ny gruppnotering\n" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "%s: kan inte lägga till en ny dbm-gruppnotering\n" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "%s: namnet %s är inte unikt\n" -#: src/groupadd.c:279 -#, c-format -msgid "%s: gid %ld is not unique\n" -msgstr "%s: gid %ld är inte unikt\n" +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s: uid %ld är inte unikt\n" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "%s: kan inte hitta ett unikt gid\n" @@ -921,54 +920,54 @@ msgstr "%s: kan inte hitta ett unikt gid\n" #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "%s: %s är inte ett giltigt gruppnamn\n" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "%s: ogiltig grupp %s\n" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "%s: -O kräver NAME=VÄRDE\n" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "%s: kan inte skriva om gruppfilen\n" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "%s: kan inte skriva om skuggruppfilen\n" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "%s: kan inte lĺsa gruppfilen\n" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "%s: kan inte öppna gruppfilen\n" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "%s: kan inte lĺsa skuggruppfilen\n" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "%s: kan inte öppna skuggruppfilen\n" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "%s: grupp %s existerar\n" @@ -977,12 +976,12 @@ msgstr "%s: grupp %s existerar\n" msgid "usage: groupdel group\n" msgstr "Användning: groupdel grupp\n" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "%s: fel under borttagning av gruppnotering\n" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "%s: fel under borttagning av dbm-gruppnotering\n" @@ -992,7 +991,7 @@ msgstr "%s: fel under borttagning av dbm-gruppnotering\n" msgid "%s: error removing shadow group entry\n" msgstr "%s: fel under borttagning av skuggruppnotering\n" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "%s: fel under borttagning av dbm-skuggruppnotering\n" @@ -1005,130 +1004,130 @@ msgstr "%s: fel under borttagning av dbm-skuggruppnotering\n" msgid "%s: cannot remove user's primary group.\n" msgstr "%s: kan inte ta bort användarens primära grupp.\n" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "%s: grupp %s existerar inte\n" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "%s: grupp %s är en NIS-grupp\n" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "%s: %s är NIS-mästeren\n" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" msgstr "" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 #, fuzzy msgid "Unable to lock group file\n" msgstr "%s: kan inte lĺsa gruppfilen\n" -#: src/groupmems.c:209 +#: src/groupmems.c:220 #, fuzzy msgid "Unable to open group file\n" msgstr "%s: kan inte öppna gruppfilen\n" -#: src/groupmems.c:229 +#: src/groupmems.c:240 #, fuzzy msgid "Cannot close group file\n" msgstr "%s: kan inte öppna gruppfilen\n" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "Användning: groupmod [-g gid [-o]] [-n namn] grupp\n" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, c-format msgid "%s: %s not found in /etc/group\n" msgstr "%s: %s hittades inte i /etc/group\n" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "%s: kunde inte lägga till en ny dbm-skuggruppnotering\n" -#: src/groupmod.c:305 -#, c-format -msgid "%s: %ld is not a unique gid\n" +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" msgstr "%s: %ld är inte ett unikt gid\n" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "%s: %s är inte ett unikt namn\n" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "okänd användare %s\n" -#: src/grpck.c:98 +#: src/grpck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" -msgstr "Användning: %s [ -r ] [ grupp [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "Användning: %s [-s][-r] [grupp [gshadow]]\n" -#: src/grpck.c:100 +#: src/grpck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" -msgstr "Användning: %s [ -r ] [ grupp ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "Användning: %s [-s][-r] [grupp]\n" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "Nej" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" msgstr "" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "%s: kan inte lĺsa filen %s\n" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "%s: kan inte öppna filen %s\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "felaktig gruppfilsnotering\n" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "ta bort rad \"%s\"? " @@ -1137,35 +1136,30 @@ msgstr "ta bort rad \"%s\"? " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "dubblett av gruppnotering\n" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "ogiltigt gruppnamn \"%s\"\n" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "grupp %s: felaktigt GID (%d)\n" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "grupp %s: användaren %s finns inte\n" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "ta bort medlem \"%s\"? " #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "felaktig skuggruppfilsnotering\n" @@ -1173,204 +1167,201 @@ msgstr "felaktig skuggruppfilsnotering\n" #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "dubblett av skuggruppfilsnotering\n" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "inga matchande gruppfilsnoteringar\n" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "skuggrupp %s: finns ingen administrativ användare %s\n" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "ta bort administrativa medlemmen \"%s\"? " -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "skuggrupp %s: finns ingen användare %s\n" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "%s: kan inte uppdatera filen %s\n" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "%s: filerna är uppdaterade; kör mkpasswd\n" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "%s: inga ändringar\n" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "%s: filerna är uppdaterade\n" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "%s: kan inte lĺsa gruppfilen\n" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "%s: kan inte öppna gruppfilen\n" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "%s: kan inte lĺsa skuggruppfilen\n" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "%s: kan inte öppna skuggruppfilen\n" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "%s: kan inte ta bort skuggruppen %s\n" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "%s: kan inte uppdatera skuggnoteringen för %s\n" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "%s: kan inte uppdatera noteringen för gruppen %s\n" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "%s: kan inte uppdatera skuggruppfilen\n" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "%s: kan inte uppdatera gruppfilen\n" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "%s: inte konfigurerad med stöd för skuggrupper.\n" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "%s: kan inte ta bort skuggruppfilen\n" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" -msgstr "Användning: id [ -a ]\n" +#: src/id.c:53 +msgid "usage: id [-a]\n" +msgstr "Användning: id [-a]\n" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "Användning: id\n" -#: src/id.c:127 -#, c-format -msgid "uid=%d(%s)" +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" msgstr "uid=%d(%s)" -#: src/id.c:129 -#, c-format -msgid "uid=%d" +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" msgstr "uid=%d" -#: src/id.c:133 -#, c-format -msgid " gid=%d(%s)" +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" msgstr " gid=%d(%s)" -#: src/id.c:135 -#, c-format -msgid " gid=%d" +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" msgstr " gid=%d" -#: src/id.c:145 -#, c-format -msgid " euid=%d(%s)" +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" msgstr " euid=%d(%s)" -#: src/id.c:147 -#, c-format -msgid " euid=%d" +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" msgstr " euid=%d" -#: src/id.c:152 -#, c-format -msgid " egid=%d(%s)" +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" msgstr " egid=%d(%s)" -#: src/id.c:154 -#, c-format -msgid " egid=%d" +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" msgstr " egid=%d" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr " grupper=" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "Användarnamn Port Frĺn Senaste\n" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "Användarnamn Port Senaste\n" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "**Aldrig inloggad**" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "Användning: %s [-p] [namn]\n" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr " %s [-p] [-h värd] [-f namn]\n" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr " %s [-p] -r värd\n" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "Felaktig inloggningstid\n" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" @@ -1378,7 +1369,7 @@ msgstr "" "\n" "Systemet är stängt för rutinunderhĺll\n" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1386,7 +1377,7 @@ msgstr "" "\n" "[Nerkoppling kringgicks -- root inloggning tillĺten.]\n" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" @@ -1395,17 +1386,17 @@ msgstr "" "\n" "Inloggningen avbröts efter %d sekunders inaktivitet.\n" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr " pĺ \"%.100s\" frĺn \"%.200s\"" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr " pĺ \"%.100s\"" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" @@ -1414,237 +1405,232 @@ msgstr "" "\n" "%s användare: " -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "användare: " -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "Felaktig inloggning" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "Varning: inloggning pĺ nytt aktiv efter den temporära utelĺsningen.\n" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "Senaste inloggning: %s pĺ %s" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "Senaste inloggning: %.19s pĺ %s" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr " frĺn %.*s" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "Startar rad_login\n" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "%s: ingen DBM-databas pĺ systemet - ingen ĺtgärd genomfördes\n" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "Användning: %s [ -vf ] [ -p|g|sp|sg ] fil\n" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "Användning: %s [ -vf ] [ -p|g|sp ] fil\n" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "Användning: %s [ -vf ] [ -p|g ] fil\n" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "%s: kan inte skriva över filen %s\n" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "%s: kan inte öppna DBM-filer för %s\n" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "%s: början med " -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 #, fuzzy msgid " is too long\n" msgstr "%s: för lĺnga fält\n" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "%s: fel under analysering av rad \"%s\"\n" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "lägger till notering för namn " -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" msgstr "" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "%s: fel under tillägg av notering för " -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "lade till %d noteringar, den längsta var %d\n" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "Användning: newgrp [ - ] [ grupp ]\n" - -#: src/newgrp.c:68 -#, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "Användning: sg grupp [ kommando ]\n" - -#: src/newgrp.c:125 +#: src/mkpasswd.c:392 #, c-format -msgid "unknown uid: %d\n" +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "Användning: %s [-vf] [-p|g|sp|sg] fil\n" + +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "Användning: %s [-vf] [-p|g|sp] fil\n" + +#: src/mkpasswd.c:398 +#, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "Användning: %s [-vf] [-p|g] fil\n" + +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "Användning: newgrp [-] [grupp]\n" + +#: src/newgrp.c:63 +#, fuzzy +msgid "usage: sg group [[-c] command]\n" +msgstr "Användning: sg grupp [kommando]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" msgstr "okänt uid: %d\n" -#: src/newgrp.c:201 -#, c-format -msgid "unknown gid: %ld\n" +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" msgstr "okänt gid: %ld\n" -#: src/newgrp.c:245 -#, c-format -msgid "unknown gid: %d\n" -msgstr "okänt gid: %d\n" - -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "Tyvärr.\n" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "för mĺnga grupper\n" -#: src/newusers.c:82 +#: src/newusers.c:78 #, c-format -msgid "Usage: %s [ input ]\n" -msgstr "Användning: %s [ indata ]\n" +msgid "Usage: %s [input]\n" +msgstr "Användning: %s [indata]\n" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "%s: kan inte lĺsa /etc/passwd.\n" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "%s: kan inte lĺsa filerna, försök igen senare\n" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "%s: kan inte öppna filerna\n" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: rad %d: ogiltig rad\n" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "%s: rad %d: kan inte skapa GID\n" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "%s: rad %d: kan inte skapa UID\n" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "%s: rad %d: kan inte hitta användaren %s\n" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: rad %d: kan inte uppdatera lösenordet\n" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "%s: rad %d: mkdir misslyckades\n" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "%s: rad %d: chown misslyckades\n" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "%s: rad %d: kan inte uppdatera notering\n" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "%s: kunde inte uppdatera filerna\n" -#: src/passwd.c:239 +#: src/passwd.c:174 #, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" -msgstr "Användning: %s [ -f | -s ] [ namn ]\n" +msgid "usage: %s [-f|-s] [name]\n" +msgstr "Användning: %s [-f|-s] [namn]\n" -#: src/passwd.c:242 +#: src/passwd.c:178 #, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" -msgstr " %s [ -x högst ] [ -n minst ] [ -w varna ] [ -i inaktiv ] namn\n" +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x högst] [-n minst] [-w varna] [-i inaktiv] namn\n" -#: src/passwd.c:245 +#: src/passwd.c:180 #, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" -msgstr " %s { -l | -u | -d | -S | -e } namn\n" +msgid " %s {-l|-u|-d|-S|-e} name\n" +msgstr " %s {-l|-u|-d|-S|-e} namn\n" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "Användare %s har en TCFS-nyckel, hans förra lösenord krävs.\n" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "Du kan använda flaggan -t för att pĺtvinga ändringen.\n" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "Förra lösenordet: " -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "Felaktigt lösenord för \"%s\"\n" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "Varning: användare %s har en TCFS-nyckel.\n" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" @@ -1653,15 +1639,15 @@ msgstr "" "Skriv in det nya lösenordet (minst %d, högst %d tecken)\n" "Var god använd en kombination av versaler, gemener och siffror.\n" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "Nytt lösenord: " -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "Försök igen.\n" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" @@ -1669,90 +1655,90 @@ msgstr "" "\n" "Varning: svagt lösenord (skriv in det igen för att använda det ändĺ).\n" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "De matchar inte; försök igen.\n" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "Lösenordet för %s kan inte bytas.\n" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "Tyvärr, lösenordet för %s kan inte ändras än.\n" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "%s: slut pĺ minne\n" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "Kan inte lĺsa TCFS-nyckeldatabasen; försök igen senare\n" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "Kan inte öppna TCFS-nyckeldatabasen.\n" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "Fel under uppdatering av TCFS-nyckeldatabasen.\n" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "Kan inte utföra TCFS ändringar.\n" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "%s: Kan inte starta %s" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "%s: förvaringsplatsen %s stöds ej\n" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "%s: Tillĺtelse nekas\n" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "Du fĺr inte ändra lösenordet för %s.\n" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "Ändrar lösenord för %s\n" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "Lösenordet för %s är oförändrat.\n" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "Lösenordet ändrat.\n" -#: src/pwck.c:98 +#: src/pwck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" -msgstr "Användning: %s [ -qr ] [ passwd [ shadow ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "Användning: %s [-qr] [passwd [shadow]]\n" -#: src/pwck.c:100 +#: src/pwck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" -msgstr "Användning: %s [ -qr ] [ passwd ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "Användning: %s [-qr] [passwd]\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "felaktig notering i lösenordsfilen\n" @@ -1760,32 +1746,24 @@ msgstr "felaktig notering i l #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "dubblett av lösenords notering\n" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "ogiltigt användarnamn \"%s\"\n" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "användare %s: felaktigt UID (%d)\n" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 -#, c-format -msgid "user %s: no group %d\n" +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" msgstr "användare %s: ingen grupp %d\n" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "användare %s: katalogen %s finns inte\n" @@ -1793,16 +1771,16 @@ msgstr "anv #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "användare %s: programmet %s finns inte\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "felaktig notering i skugglösenordsfilen\n" @@ -1810,7 +1788,7 @@ msgstr "felaktig notering i skuggl #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "dubblett av notering i skugglösenordsfilen\n" @@ -1818,70 +1796,70 @@ msgstr "dubblett av notering i skuggl #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "ingen matchande notering i lösenordsfilen\n" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "användare %s: senaste lösenordsändring i framtiden\n" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "%s: kan inte lĺsa lösenordsfilen\n" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "%s: kan inte öppna lösenordsfilen\n" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "%s: kan inte ta bort notering i skugglösenordsfilen för %s\n" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "%s: kan inte uppdatera noteringen i lösenordsfilen för %s\n" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "%s: kan inte uppdatera skuggfilen\n" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "%s: kan inte uppdatera lösenordsfilen\n" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "%s: Shadowlösenord är inte konfigurerade.\n" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "%s: kan inte uppdatera noteringen för användaren %s\n" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "%s: kan inte ta bort skugglösenordsfilen\n" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "Tyvärr." -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: mĺste köras frĺn en terminal\n" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "%s: pam_start: fel %d\n" @@ -1891,18 +1869,17 @@ msgstr "%s: pam_start: fel %d\n" msgid "Unknown id: %s\n" msgstr "Okänt id: %s\n" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, c-format msgid "You are not authorized to su %s\n" msgstr "Du har inte tillĺtelse att köra su till %s\n" #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "(Skriv in ditt eget lösenord.)" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" @@ -1911,28 +1888,23 @@ msgstr "" "%s: %s\n" "(Ignorerad)\n" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "Inget skal\n" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "Ingen lösenordsfil\n" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "Ingen lösenordsnotering för \"root\"\n" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1943,7 +1915,7 @@ msgstr "" "(eller skriv in lösenordet för root för systemunderhĺll):" #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "Gĺr in i systemunderhĺllsläge\n" @@ -1952,507 +1924,510 @@ msgstr "G msgid "%s: rebuild the group database\n" msgstr "%s: bygg om gruppdatabasen\n" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "%s: bygg om skuggruppdatabasen\n" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "%s: ogiltigt numeriskt argument \"%s\"\n" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "%s: okänt gid %s\n" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "%s: okänd grupp %s\n" -#: src/useradd.c:426 -#, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "grupp=%s,%ld baskatalog=%s skel=%s\n" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "skal=%s " -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "inaktiv=%ld upphör=%s" -#: src/useradd.c:435 -#, c-format -msgid "GROUP=%ld\n" +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" msgstr "GRUPP=%ld\n" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "HEM=%s\n" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "INAKTIV=%ld\n" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "UPPHÖR=%s\n" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "SKAL=%s\n" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "SKEL=%s\n" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: kan inte skapa en ny standardfil\n" -#: src/useradd.c:488 +#: src/useradd.c:503 #, fuzzy, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: kan inte skapa en ny standardfil\n" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "%s: rename: %s" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "%s: grupp \"%s\" är en NIS-grupp.\n" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: för mĺnga grupper speciferade (max %d).\n" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "Användning: %s\t[-u uid [-o]] [-g grupp] [-G grupp,...] \n" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "\t\t[-d hem] [-s skal] [-c kommentar] [-m [-k mall]]\n" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 +#, fuzzy msgid "[-f inactive] [-e expire ] " -msgstr "[-f inaktiv] [-e upphör ] " +msgstr "[-f inaktiv] [-e upphör] " -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "[-A program] " -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "[-p passwd] namn\n" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr " %s\t-D [-g grupp] [-b bas] [-s skal]\n" -#: src/useradd.c:736 +#: src/useradd.c:756 +#, fuzzy msgid "\t\t[-f inactive] [-e expire ]\n" -msgstr "\t\t[-f inaktiv] [-e utgĺng ]\n" +msgstr "\t\t[-f inaktiv] [-e utgĺng]\n" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "%s: fel under lĺsning av gruppfilen\n" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "%s: fel under öppning av gruppfilen\n" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "%s: fel under lĺsning av skuggruppfilen\n" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "%s: fel under öppning av skuggruppfilen\n" -#: src/useradd.c:1019 -#, c-format -msgid "%s: uid %d is not unique\n" -msgstr "%s: uid %d är inte unikt\n" +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s: uid %ld är inte unikt\n" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "%s: kan inte hitta ett unikt uid\n" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "%s: felaktigt fält \"%s\"\n" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "%s: felaktig baskatalog \"%s\"\n" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "%s: felaktig kommentar \"%s\"\n" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "%s: felaktig hemkatalog \"%s\"\n" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "%s: felaktigt datum \"%s\"\n" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "%s: skugglösenord krävs för -e\n" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "%s: skugglösenord krävs för -f\n" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "%s: felaktigt skal \"%s\"\n" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "%s: felaktigt användar namn \"%s\"\n" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "%s: kan inte skriva om lösenordsfilen\n" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "%s: kan inte skriva om skugglösenordsfilen\n" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "%s: kan inte lĺsa lösenordsfilen\n" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "%s: kan inte öppna lösenordsfilen\n" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "%s: kan inte lĺsa skugglösenordsfilen\n" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "%s: kan inte öppna skugglösenordsfilen\n" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "%s: fel under tillägning av metod för äkthetsbevisning\n" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "%s: fel under tilläggning av ny lösenordsnotering\n" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "%s: fel under uppdatering av dbm-lösenordsnotering\n" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "%s: fel under tilläggning av ny skugglösenordsnotering\n" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "%s: fel under uppdatering av dbm-skugglösenordsnotering\n" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s: kan inte skapa katalog %s\n" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "%s: användare %s existerar\n" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" msgstr "" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "%s: varning: CREATE_HOME stöds inte, använd -m istället.\n" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "Användning: %s [-r] namn\n" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "%s: fel under uppdatering av gruppnotering\n" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "%s: kan inte uppdatera dbm-gruppnotering\n" -#: src/userdel.c:221 +#: src/userdel.c:219 #, fuzzy, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "%s: kan inte uppdatera dbm-gruppnotering\n" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "%s: kan inte skriva om TCFS-nyckelfilen\n" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "%s: kan inte lĺsa TCFS-nyckelfilen\n" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "%s: kan inte öppna TCFS-nyckelfilen\n" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "%s: kan inte öppna gruppfilen\n" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "%s: kan inte öppna skuggruppfilen\n" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "%s: fel under borttagning av metod för äkthetsbevisning\n" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "%s: fel under borttagning av lösenordsnotering\n" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "%s: fel under borttagning av skugglösenordsnotering\n" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "%s: fel under borttagning av TCFS-notering\n" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "%s: fel under borttagning av dbm-lösenordsnotering\n" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "%s: fel under borttagning av dbm-skugglösenordsnotering\n" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: användare %s är inloggad\n" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "%s: varning: %s ägs inte av %s, tar inte bort\n" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "%s: varning: kan inte ta bort " -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "%s: användare %s finns inte\n" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "%s: användare %s är en NIS-användare\n" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "%s: %s ägs inte av %s, tar inte bort\n" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "%s: tar inte bort katalogen %s (skulle ta bort hemkatalogen för %s)\n" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "%s: fel under borttagning av katalogen %s\n" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "\t\t[-d hem [-m]] [-s skal] [-c kommentar] [-l nytt_namn]\n" -#: src/usermod.c:330 -msgid "[-A {DEFAULT|program},... ] " -msgstr "[-A {DEFAULT|program},... ] " - #: src/usermod.c:332 #, fuzzy +msgid "[-A {DEFAULT|program},... ] " +msgstr "[-A {DEFAULT|program},...] " + +#: src/usermod.c:334 +#, fuzzy msgid "[-p passwd] [-L|-U] name\n" msgstr "[-p passwd] namn\n" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "%s: slut pĺ minne i update_group\n" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "%s: slut pĺ minne i update_gshadow\n" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "%s: inga flaggor givna\n" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "%s: skugglösenord krävs för -e och -f\n" -#: src/usermod.c:1215 -#, c-format -msgid "%s: uid %ld is not unique\n" +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" msgstr "%s: uid %ld är inte unikt\n" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "%s: fel under borttagning av metod för äkthetsbevisning\n" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "%s: fel under ändring av metod för äkthetsbevisning\n" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "%s: fel under ändring av lösenordsnotering\n" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "%s: fel under borttagning av lösenordsnotering\n" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "%s: fel under tilläggning av dbm-lösenordsnotering\n" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "%s: fel under borttagning av dbm-lösenordsnotering\n" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "%s: fel under borttagning av skugglösenordsnotering\n" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "%s: fel under borttagning av dbm-skugglösenordsnotering\n" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "%s: katalogen %s existerar\n" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "%s: kan inte skapa %s\n" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "%s: kan inte byta ägare pĺ %s\n" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: kan inte byta namn pĺ katalogen %s till %s\n" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: varning: %s ägs inte av %s\n" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "kunde inte byta ägare av brevlĺdan" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "kunde inte byta namn pĺ brevlĺdan" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" @@ -2461,20 +2436,20 @@ msgstr "" "\n" "%s: %s är oförändrad\n" -#: src/vipw.c:127 +#: src/vipw.c:132 msgid "Couldn't lock file" msgstr "Kunde inte lĺsa filen" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" msgstr "Kunde inte göra en backup" -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "%s: kan inte ĺterställa %s: %s (dina ändringar är i %s)\n" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" @@ -2484,5 +2459,24 @@ msgstr "" "\"vipw\" editerar /etc/passwd \"vipw -w\" editerar /etc/shadow\n" "\"vipg\" editerar /etc/group \"vipg -w\" editerar /etc/gshadow\n" +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: gid %ld är inte unikt\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "okänt gid: %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: uid %d är inte unikt\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "användare %s: felaktigt UID (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s: ingen ĺldringsinformation finns tillgänglig\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "grupp %s: felaktigt GID (%d)\n" + #~ msgid "%s: permission denied (shell).\n" #~ msgstr "%s: tillĺtelse nekas (skal).\n" diff --git a/po/uk.gmo b/po/uk.gmo index e3798427..3db16d1d 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 18153c47..59b06ad1 100644 --- a/po/uk.po +++ b/po/uk.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-20001016\n" -"POT-Creation-Date: 2001-09-08 07:36+0200\n" +"POT-Creation-Date: 2002-01-06 16:13+0100\n" "PO-Revision-Date: 2001-08-04 19:45+0200\n" "Last-Translator: Roman Festchook \n" "Language-Team: Roman Festchook \n" @@ -21,36 +21,36 @@ msgstr " msgid "Warning: too many groups\n" msgstr "úÁÓÔĹŇĹÖĹÎÎŃ: ÚÁÎÁÄÔĎ ÂÁÇÁÔĎ ÇŇŐĐ\n" -#: libmisc/age.c:104 +#: libmisc/age.c:77 msgid "Your password has expired." msgstr "÷ÁŰ ĐÁŇĎĚŘ ĐŇĎÓÔŇĎŢĹÎĎ." -#: libmisc/age.c:107 +#: libmisc/age.c:80 msgid "Your password is inactive." msgstr "÷ÁŰ ĐÁŇĎĚŘ ¤ ÎĹÁËÔÉ×ÎÉÍ." -#: libmisc/age.c:110 +#: libmisc/age.c:83 msgid "Your login has expired." msgstr "÷ÁŰ ĚĎǦΠĐŇĎÓÔŇĎŢĹÎĎ." -#: libmisc/age.c:127 +#: libmisc/age.c:96 msgid " Contact the system administrator.\n" msgstr " ú'×ŃÖ¦ÔŘÓŃ Ú ÓÉÓÔĹÍÎÉÍ ÁÄͦΦÓÔŇÁÔĎŇĎÍ.\n" -#: libmisc/age.c:130 +#: libmisc/age.c:99 msgid " Choose a new password.\n" msgstr " ÷ÉÂĹҦÔŘ ÎĎ×ÉĘ ĐÁŇĎĚŘ.\n" -#: libmisc/age.c:228 +#: libmisc/age.c:176 #, c-format msgid "Your password will expire in %ld days.\n" msgstr "÷ÁŰ ĐÁŇĎĚŘ ÂŐÄĹ ĐŇĎÓÔĎŇĎŢĹÎĎ ÚÁ %ld ÄΦ×.\n" -#: libmisc/age.c:230 +#: libmisc/age.c:178 msgid "Your password will expire tomorrow.\n" msgstr "÷ÁŰ ĐÁŇĎĚŘ ÂŐÄĹ ĐŇĎÓÔŇĎŢĹÎĎ ÚÁ×ÔŇÁ.\n" -#: libmisc/age.c:232 +#: libmisc/age.c:180 msgid "Your password will expire today.\n" msgstr "÷ÁŰ ĐÁŇĎĚŘ ÂŐÄĹ ĐŇĎÓÔŇĎŢĹÎĎ ÓŘĎÇĎÄΦ.\n" @@ -107,7 +107,7 @@ msgstr " msgid "You have mail." msgstr "÷É ÍÁ¤ÔĹ ĐĎŢÔŐ." -#: libmisc/obscure.c:281 src/passwd.c:309 +#: libmisc/obscure.c:281 src/passwd.c:244 #, c-format msgid "Bad password: %s. " msgstr "đĎÇÁÎÉĘ ĐÁŇĎĚŘ: %s. " @@ -122,12 +122,12 @@ msgstr "passwd: pam_start() msgid "passwd: %s\n" msgstr "passwd: %s\n" -#: libmisc/setupenv.c:205 +#: libmisc/setupenv.c:211 #, c-format msgid "Unable to cd to \"%s\"\n" msgstr "îĹ ÍĎÖŐ ĐĹŇĹĘÔÉ ÄĎ ÔĹËÉ \"%s\"\n" -#: libmisc/setupenv.c:213 +#: libmisc/setupenv.c:219 msgid "No directory, logging in with HOME=/" msgstr "îĹÍÁ ÔĹËÉ, צÄËŇÉ×Á¤ÍĎ ÓĹÓÓ¦Ŕ Ú HOME=/" @@ -177,25 +177,25 @@ msgstr "malloc(%d) msgid "Dialup Password: " msgstr "đÁŇĎĚŘ ÎÁ ÍĎÄĹÍΊЦÄËĚŔŢĹÎÎŃ: " -#: lib/getdef.c:253 +#: lib/getdef.c:276 msgid "Could not allocate space for config info.\n" msgstr "îĹ ÍĎÖŐ ×ÉĦĚÉÔÉ ŇĹÓŐŇÓÉ ÄĚŃ ËĎÎƦÇŐŇÁæĘÎÉČ ÄÁÎÎÉČ.\n" #. #. * Item was never found. #. -#: lib/getdef.c:307 +#: lib/getdef.c:330 #, c-format msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" "ĐĎÍÉĚËÁ Ő ËĎÎƦÇŐŇÁæ§ - ÎĹצÄĎÍÁ ĐĎÚÉĂ¦Ń '%s' (ĐĎצÄĎÍÔĹ ÁÄͦΦÓÔŇÁÔĎŇÁ)\n" -#: lib/getdef.c:394 +#: lib/getdef.c:417 #, c-format msgid "error - lookup '%s' failed\n" msgstr "ĐĎÍÉĚËÁ - ĐĎŰŐË '%s' ÎĹ ×ÉËĎÎÁÎĎ\n" -#: lib/getdef.c:402 +#: lib/getdef.c:425 #, c-format msgid "%s not found\n" msgstr "%s ÎĹ ÚÎÁĘÄĹÎĎ\n" @@ -204,7 +204,7 @@ msgstr "%s #. * get the password from her, and set the salt for #. * the decryption from the group file. #. -#: lib/pwauth.c:54 src/newgrp.c:305 +#: lib/pwauth.c:54 src/newgrp.c:348 msgid "Password: " msgstr "đÁŇĎĚŘ: " @@ -222,112 +222,108 @@ msgstr "" msgid "Unknown error %d" msgstr "îĹצÄĎÍÁ ĐĎÍÉĚËÁ %d" -#: src/chage.c:162 +#: src/chage.c:116 #, c-format msgid "" -"Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n" -" [ -I inactive ] [ -E expire ] [ -d last_day ] user\n" +"Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" +"\t[-I inactive] [-E expire] [-d last_day] user\n" msgstr "" -"÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -l ] [ -m ͦÎ_ÄÎ¦× ] [ -M ÍÁËÓ_ÄÎ¦× ] [ -W " -"ÚÁÓÔĹŇĹÖĹÎÎŃ ]\n" -" [ -I ÎĹÁËÔÉ×ΦÓÔŘ ] [ -E ĐŇĎÓÔŇĎŢĹÎÎĎ ] [ -d ĎÓÔÁÎΦĘ_ÄĹÎŘ ] ËĎŇÉÓÔŐ×ÁŢ\n" +"÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-l] [-m ͦÎ_ÄΦ×] [-M ÍÁËÓ_ÄΦ×] [-W ÚÁÓÔĹŇĹÖĹÎÎŃ]\n" +"\t[-I ÎĹÁËÔÉ×ΦÓÔŘ] [-E ĐŇĎÓÔŇĎŢĹÎÎĎ] [-d ĎÓÔÁÎΦĘ_ÄĹÎŘ] ËĎŇÉÓÔŐ×ÁŢ\n" -#: src/chage.c:164 +#: src/chage.c:122 #, c-format -msgid "Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n" +msgid "Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n" msgstr "" -"÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -l ] [ -m ͦÎ_ÄÎ¦× ] [ -M ÍÁËÓ_ÄÎ¦× ] [ -d " -"ĎÓÔÁÎΦĘ_ÄĹÎŘ ] ËĎŇÉÓÔŐ×ÁŢ\n" +"÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-l] [-m ͦÎ_ÄΦ×] [-M ÍÁËÓ_ÄΦ×] [-d ĎÓÔÁÎΦĘ_ÄĹÎŘ] " +"ËĎŇÉÓÔŐ×ÁŢ\n" -#: src/chage.c:199 +#: src/chage.c:157 +#, fuzzy msgid "" -"Enter the new value, or press return for the default\n" +"Enter the new value, or press ENTER for the default\n" "\n" msgstr "" -"÷×ĹĦÔŘ ÎĎ×Ĺ ÚÎÁŢĹÎÎŃ, ÁÂĎ ÎÁÖͦÔŘ Enter, ÄĚŃ ÚÎÁŢĹÎÎŃ ĐĎ ÚÁÍĎ×ŢŐ×ÁÎÎŔ\n" -"\n" +"÷×ĹĦÔŘ ÎĎ×Ĺ ÚÎÁŢĹÎÎŃ, ÁÂĎ ÎÁÖͦÔŘ ENTER ÄĚŃ ÚÎÁŢĹÎÎŃ ĐĎ ÚÁÍĎ×ŢŐ×ÁÎÎŔ\n" -#: src/chage.c:202 +#: src/chage.c:160 msgid "Minimum Password Age" msgstr "í¦Î¦ÍÁĚŘÎÉĘ ×¦Ë ĐÁŇĎĚŃ" -#: src/chage.c:207 +#: src/chage.c:166 msgid "Maximum Password Age" msgstr "íÁËÓ¦ÍÁĚŘÎÉĘ ×¦Ë ĐÁŇĎĚŃ" -#: src/chage.c:213 +#: src/chage.c:174 msgid "Last Password Change (YYYY-MM-DD)" msgstr "ďÓÔÁÎÎŃ ÚͦÎÁ ĐÁŇĎĚŃ (ňňňň-íí-ää)" -#: src/chage.c:222 +#: src/chage.c:183 msgid "Password Expiration Warning" msgstr "úÁÓÔĹŇĹÖĹÎÎŃ ĐŇĎ ĐŇĎÓÔŇĎŢĹÎÎŃ ĐÁŇĎĚŃ" -#: src/chage.c:227 +#: src/chage.c:189 msgid "Password Inactive" msgstr "đÁŇĎĚŘ ÎĹÁËÔÉ×ÎÉĘ" -#: src/chage.c:233 +#: src/chage.c:197 msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "äÁÔÁ ĐŇĎÓÔŇĎŢĹÎÎŃ ŇÁČŐÎËŐ (ňňňň-íí-ää)" #. #. * Start with the easy numbers - the number of days before the #. * password can be changed, the number of days after which the -#. * password must be chaged, the number of days before the -#. * password expires that the user is told, and the number of -#. * days after the password expires that the account becomes -#. * unusable. +#. * password must be chaged, the number of days before the password +#. * expires that the user is told, and the number of days after the +#. * password expires that the account becomes unusable. #. -#: src/chage.c:287 +#: src/chage.c:248 #, c-format msgid "Minimum:\t%ld\n" msgstr "í¦Î¦ÍŐÍ:\t%ld\n" -#: src/chage.c:288 +#: src/chage.c:249 #, c-format msgid "Maximum:\t%ld\n" msgstr "íÁËÓ¦ÍŐÍ:\t%ld\n" -#: src/chage.c:290 +#: src/chage.c:251 #, c-format msgid "Warning:\t%ld\n" msgstr "úÁÓÔĹŇĹÖĹÎÎŃ:\t%ld\n" -#: src/chage.c:291 +#: src/chage.c:252 #, c-format msgid "Inactive:\t%ld\n" msgstr "îĹÁËÔÉ×ÎÉĘ:\t%ld\n" #. -#. * The "last change" date is either "Never" or the date the -#. * password was last modified. The date is the number of -#. * days since 1/1/1970. +#. * The "last change" date is either "Never" or the date the password +#. * was last modified. The date is the number of days since 1/1/1970. #. -#: src/chage.c:300 +#: src/chage.c:260 msgid "Last Change:\t\t" msgstr "ďÓÔÁÎÎŃ ÚͦÎÁ:\t\t" -#: src/chage.c:302 src/chage.c:316 src/chage.c:333 src/chage.c:346 +#: src/chage.c:262 src/chage.c:276 src/chage.c:293 src/chage.c:306 msgid "Never\n" msgstr "î¦ËĎĚÉ\n" #. -#. * The password expiration date is determined from the last -#. * change date plus the number of days the password is valid -#. * for. +#. * The password expiration date is determined from the last change +#. * date plus the number of days the password is valid for. #. -#: src/chage.c:314 +#: src/chage.c:273 msgid "Password Expires:\t" msgstr "đÁŇĎĚŘ ĐŇĎÓÔŇĎŢĹÎÎĎ:\t" #. -#. * The account becomes inactive if the password is expired -#. * for more than "inactdays". The expiration date is calculated -#. * and the number of inactive days is added. The resulting date -#. * is when the active will be disabled. +#. * The account becomes inactive if the password is expired for more +#. * than "inactdays". The expiration date is calculated and the +#. * number of inactive days is added. The resulting date is when the +#. * active will be disabled. #. -#: src/chage.c:330 +#: src/chage.c:290 #, fuzzy msgid "Password Inactive:\t" msgstr "đÁŇĎĚŘ ÎĹÁËÔÉ×ÎÉĘ:\t" @@ -336,588 +332,587 @@ msgstr " #. * The account will expire on the given date regardless of the #. * password expiring or not. #. -#: src/chage.c:344 +#: src/chage.c:304 #, fuzzy msgid "Account Expires:\t" msgstr "ňÁČŐÎĎË ĐŇĎÓÔŇĎŢĹÎĎ:\t" -#: src/chage.c:453 src/chpasswd.c:139 src/groupadd.c:536 src/groupdel.c:322 -#: src/groupmod.c:522 src/newusers.c:389 src/useradd.c:1721 src/userdel.c:738 -#: src/usermod.c:1687 -#, fuzzy, c-format -msgid "%s: PAM authentication failed\n" -msgstr "%s: PAM ÁŐÔĹÎÔÉƦËÁĂ¦Ń ÎĹ ĐŇĎĘŰĚÁ\n" - -#: src/chage.c:536 +#: src/chage.c:468 #, c-format msgid "%s: do not include \"l\" with other flags\n" msgstr "%s: ÎĹ ×ÉËĎŇÉÓÔĎ×ŐĘÔĹ \"l\" Ú ¦ÎۦÍÉ ĆĚÁÇÁÍÉ\n" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format msgid "%s: permission denied\n" msgstr "%s: Ő ÄĎÓÔŐЦ צÄÍĎ×ĚĹÎĎ\n" -#: src/chage.c:560 src/chpasswd.c:157 +#: src/chage.c:512 src/chpasswd.c:139 src/groupadd.c:529 src/groupdel.c:322 +#: src/groupmod.c:520 src/newusers.c:381 src/useradd.c:1754 src/userdel.c:717 +#: src/usermod.c:1732 +#, fuzzy, c-format +msgid "%s: PAM authentication failed\n" +msgstr "%s: PAM ÁŐÔĹÎÔÉƦËÁĂ¦Ń ÎĹ ĐŇĎĘŰĚÁ\n" + +#: src/chage.c:533 src/chpasswd.c:157 #, c-format msgid "%s: can't lock password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:566 src/chpasswd.c:161 +#: src/chage.c:544 src/chpasswd.c:162 #, c-format msgid "%s: can't open password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:573 +#: src/chage.c:552 #, c-format msgid "%s: unknown user: %s\n" msgstr "%s: ÎĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ: %s\n" -#: src/chage.c:592 -#, c-format -msgid "%s: can't lock shadow password file\n" +#: src/chage.c:571 +#, fuzzy, c-format +msgid "%s: can't lock shadow password file" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:599 -#, c-format -msgid "%s: can't open shadow password file\n" +#: src/chage.c:579 +#, fuzzy, c-format +msgid "%s: can't open shadow password file" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:681 +#: src/chage.c:674 #, c-format msgid "Changing the aging information for %s\n" msgstr "úͦÎŔŔ צËĎ×Ő ¦ÎĆĎŇÍÁæŔ ÄĚŃ %s\n" -#: src/chage.c:683 +#: src/chage.c:677 #, c-format msgid "%s: error changing fields\n" msgstr "%s: ĐĎÍÉĚËÁ ÚÁͦÎÉ ĐĎĚŃ\n" -#: src/chage.c:710 src/chage.c:773 src/pwunconv.c:174 +#: src/chage.c:705 src/chage.c:771 src/pwunconv.c:174 #, c-format msgid "%s: can't update password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:740 src/pwunconv.c:169 +#: src/chage.c:737 src/pwunconv.c:168 #, c-format msgid "%s: can't update shadow password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:789 src/chage.c:804 src/chfn.c:570 src/chsh.c:409 -#: src/passwd.c:825 src/passwd.c:926 +#: src/chage.c:789 src/chage.c:805 src/chfn.c:570 src/chsh.c:382 +#: src/passwd.c:747 src/passwd.c:859 msgid "Error updating the DBM password entry.\n" msgstr "đĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ÚÁĐÉÓŐ ĐÁŇĎĚŃ Ő DBM.\n" -#: src/chage.c:821 +#: src/chage.c:823 #, c-format msgid "%s: can't rewrite shadow password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:835 +#: src/chage.c:838 #, c-format msgid "%s: can't rewrite password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/chage.c:853 src/chpasswd.c:333 src/groupadd.c:595 src/groupdel.c:409 -#: src/groupmod.c:606 src/newusers.c:625 src/useradd.c:1830 src/userdel.c:903 -#: src/usermod.c:1765 +#: src/chage.c:857 src/chpasswd.c:343 src/groupadd.c:590 src/groupdel.c:409 +#: src/groupmod.c:604 src/newusers.c:628 src/useradd.c:1869 src/userdel.c:849 +#: src/usermod.c:1811 #, fuzzy, c-format msgid "%s: PAM chauthtok failed\n" msgstr "%s: ÎĹ ÍĎÖŐ ŇÁÚÂĚĎËŐ×ÁÔÉ ĆÁĘĚ\n" -#: src/chage.c:905 -#, c-format -msgid "%s: no aging information present\n" -msgstr "%s: ÎĹÍÁ¤ ¦ÎĆĎŇÍÁæ§ ĐŇĎ ×¦Ë\n" - -#: src/chfn.c:107 +#: src/chfn.c:83 #, c-format msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n" -"\t[ -h home_ph ] [ -o other ] [ user ]\n" +"Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n" +"\t[-h home_ph] [-o other] [user]\n" msgstr "" -"÷ÉËĎŇÉÓÔĎ×ŐĘÔ¤: %s [ -f ĐĎ×ÎĹ_¦Í'Ń ] [ -r ÎĎÍĹŇ_˦ÍÎÁÔÉ ]\n" -"\t[ -w ŇĎÂĎަĘ_ÔĹĚĹĆĎÎ ]\n" -" [ -h ÄĎÍÁŰΦĘ_ÔĹĚĹĆĎÎ ] [ -o ¦ÎŰĹ ]\n" -"\t[ ËĎŇÉÓÔŐ×ÁŢ ]\n" +"÷ÉËĎŇÉÓÔĎ×ŐĘÔ¤: %s [-f ĐĎ×ÎĹ_¦Í'Ń] [-r ÎĎÍĹŇ_˦ÍÎÁÔÉ] [-w ŇĎÂĎަĘ_ÔĹĚĹĆĎÎ]\n" +"\t[-h ÄĎÍÁŰΦĘ_ÔĹĚĹĆĎÎ] [-o ¦ÎŰĹ] [ËĎŇÉÓÔŐ×ÁŢ]\n" -#: src/chfn.c:111 +#: src/chfn.c:88 #, c-format -msgid "" -"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n" +msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n" msgstr "" -"÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -f ĐĎ×ÎĹ_¦Í'Ń ] [ -r ÎĎÍĹŇ_˦ÍÎÁÔÉ ]\n" -"\t[ -w ŇĎÂĎަĘ_ÔĹĚĹĆĎÎ ]\n" -" [ -h ÄĎÍÁŰΦĘ_ÔĹĚĹĆĎÎ ]\n" +"÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-f ĐĎ×ÎĹ_¦Í'Ń] [-r ÎĎÍĹŇ_˦ÍÎÁÔÉ]\n" +"\t[-w ŇĎÂĎަĘ_ÔĹĚĹĆĎÎ] [-h ÄĎÍÁŰΦĘ_ÔĹĚĹĆĎÎ]\n" -#: src/chfn.c:163 src/chsh.c:119 -msgid "Enter the new value, or press return for the default\n" +#: src/chfn.c:139 +#, fuzzy +msgid "Enter the new value, or press ENTER for the default\n" msgstr "" -"÷×ĹĦÔŘ ÎĎ×Ĺ ÚÎÁŢĹÎÎŃ, ÁÂĎ ÎÁÖͦÔŘ Enter ÄĚŃ ÚÎÁŢĹÎÎŃ ĐĎ ÚÁÍĎ×ŢŐ×ÁÎÎŔ\n" +"÷×ĹĦÔŘ ÎĎ×Ĺ ÚÎÁŢĹÎÎŃ, ÁÂĎ ÎÁÖͦÔŘ ENTER, ÄĚŃ ÚÎÁŢĹÎÎŃ ĐĎ ÚÁÍĎ×ŢŐ×ÁÎÎŔ\n" +"\n" -#: src/chfn.c:166 +#: src/chfn.c:142 msgid "Full Name" msgstr "đĎ×ÎĹ ¦Í'Ń" -#: src/chfn.c:168 +#: src/chfn.c:144 #, c-format msgid "\tFull Name: %s\n" msgstr "\tđĎ×ÎĹ ¦Í'Ń: %s\n" -#: src/chfn.c:171 +#: src/chfn.c:147 msgid "Room Number" msgstr "îĎÍĹŇ Ë¦ÍÎÁÔÉ" -#: src/chfn.c:173 +#: src/chfn.c:149 #, c-format msgid "\tRoom Number: %s\n" msgstr "\tîĎÍĹŇ Ë¦ÍÎÁÔÉ: %s\n" -#: src/chfn.c:176 +#: src/chfn.c:152 msgid "Work Phone" msgstr "ňĎÂĎŢ¦Ę ÔĹĚĹĆĎÎ" -#: src/chfn.c:178 +#: src/chfn.c:154 #, c-format msgid "\tWork Phone: %s\n" msgstr "\tňĎÂĎŢ¦Ę ÔĹĚĹĆĎÎ: %s\n" -#: src/chfn.c:181 +#: src/chfn.c:157 msgid "Home Phone" msgstr "äĎÍÁŰÎ¦Ę ÔĹĚĹĆĎÎ" -#: src/chfn.c:183 +#: src/chfn.c:159 #, c-format msgid "\tHome Phone: %s\n" msgstr "\täĎÍÁŰÎ¦Ę ÔĹĚĹĆĎÎ: %s\n" -#: src/chfn.c:186 +#: src/chfn.c:162 msgid "Other" msgstr "¶ÎŰĹ" -#: src/chfn.c:298 src/chfn.c:306 src/chfn.c:314 src/chfn.c:322 src/chfn.c:330 -#: src/chfn.c:391 src/passwd.c:1226 +#: src/chfn.c:271 src/chfn.c:281 src/chfn.c:291 src/chfn.c:301 src/chfn.c:311 +#: src/chfn.c:379 src/passwd.c:1115 #, c-format msgid "%s: Permission denied.\n" msgstr "%s: ő ÄĎÓÔŐЦ צÄÍĎ×ĚĹÎĎ.\n" -#: src/chfn.c:351 src/chsh.c:224 src/passwd.c:1277 +#: src/chfn.c:332 src/chsh.c:190 src/passwd.c:1165 #, c-format msgid "%s: Unknown user %s\n" msgstr "%s: îĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ %s\n" -#: src/chfn.c:357 src/chsh.c:232 src/passwd.c:1207 +#: src/chfn.c:341 src/chsh.c:198 src/passwd.c:1096 #, c-format msgid "%s: Cannot determine your user name.\n" msgstr "%s: îĹ ÍĎÖŐ ×ÉÚÎÁŢÉÔÉ ×ÁŰĹ ¦Í'Ń ËĎŇÉÓÔŐ×ÁŢÁ.\n" -#: src/chfn.c:373 src/chsh.c:250 +#: src/chfn.c:358 src/chsh.c:215 #, c-format msgid "%s: cannot change user `%s' on NIS client.\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚͦÎÉÔÉ ËĎŇÉÓÔŐ×ÁŢÁ `%s' Ő Ë̦¤ÎÔ¦ NIS.\n" -#: src/chfn.c:378 src/chsh.c:257 +#: src/chfn.c:366 src/chsh.c:223 #, c-format msgid "%s: `%s' is the NIS master for this client.\n" msgstr "%s: `%s' ¤ NIS ÓĹŇ×ĹŇ ÄĚŃ ĂŘĎÇĎ Ë̦¤ÎÔÁ.\n" -#: src/chfn.c:453 +#: src/chfn.c:441 #, c-format msgid "Changing the user information for %s\n" msgstr "úͦÎÁ ¦ÎĆĎŇÍÁæ§ ĐŇĎ ËĎŇÉÓÔŐ×ÁŢÁ %s\n" -#: src/chfn.c:462 +#: src/chfn.c:450 #, c-format msgid "%s: invalid name: \"%s\"\n" msgstr "%s: ÎĹצŇÎĹ ¦Í'Ń: \"%s\"\n" -#: src/chfn.c:467 +#: src/chfn.c:456 #, c-format msgid "%s: invalid room number: \"%s\"\n" msgstr "%s: ÎĹצŇÎÉĘ ÎĎÍĹŇ Ë¦ÍÎÁÔÉ: \"%s\"\n" -#: src/chfn.c:472 +#: src/chfn.c:462 #, c-format msgid "%s: invalid work phone: \"%s\"\n" msgstr "%s: ÎĹצŇÎÉĘ ŇĎÂĎŢÉĘ ÔĹĚĹĆĎÎ: \"%s\"\n" -#: src/chfn.c:477 +#: src/chfn.c:468 #, c-format msgid "%s: invalid home phone: \"%s\"\n" msgstr "%s: ÎĹצŇÎÉĘ ÄĎÍÁŰÎ¦Ę ÔĹĚĹĆĎÎ: \"%s\"\n" -#: src/chfn.c:482 +#: src/chfn.c:475 #, c-format msgid "%s: \"%s\" contains illegal characters\n" msgstr "%s: \"%s\" ×ËĚŔŢÁ¤ ÚÁÂĎŇĎÎĹΦ ÓÉÍ×ĎĚÉ\n" -#: src/chfn.c:494 +#: src/chfn.c:488 #, c-format msgid "%s: fields too long\n" msgstr "%s: ĐĎĚŃ ÚÁÎÁÄÔĎ ÄĎ×Ǧ\n" -#: src/chfn.c:509 src/chsh.c:347 src/gpasswd.c:582 src/passwd.c:1388 +#: src/chfn.c:504 src/chsh.c:316 src/gpasswd.c:570 src/passwd.c:1277 msgid "Cannot change ID to root.\n" msgstr "îĹ ÍĎÖŐ ÚͦÎÉÔÉ ID ÎÁ root.\n" -#: src/chfn.c:522 src/chsh.c:361 src/passwd.c:735 src/passwd.c:880 +#: src/chfn.c:519 src/chsh.c:331 src/passwd.c:656 src/passwd.c:811 msgid "Cannot lock the password file; try again later.\n" msgstr "îĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ; ÓĐŇĎÂŐĘÔŠЦÚΦŰĹ.\n" -#: src/chfn.c:528 src/chsh.c:367 src/passwd.c:740 src/passwd.c:885 +#: src/chfn.c:525 src/chsh.c:337 src/passwd.c:661 src/passwd.c:816 msgid "Cannot open the password file.\n" msgstr "îĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ.\n" -#: src/chfn.c:545 src/chsh.c:382 src/passwd.c:746 src/usermod.c:1320 +#: src/chfn.c:542 src/chsh.c:352 src/passwd.c:667 src/usermod.c:1348 #, c-format msgid "%s: %s not found in /etc/passwd\n" msgstr "%s: %s ÎĹ ÚÎÁĘÄĹÎĎ Ő /etc/passwd\n" -#: src/chfn.c:562 src/chsh.c:401 src/passwd.c:819 src/passwd.c:920 -#: src/passwd.c:960 +#: src/chfn.c:561 src/chsh.c:373 src/passwd.c:740 src/passwd.c:852 msgid "Error updating the password entry.\n" msgstr "îĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐÁŇĎĚĹĘ.\n" -#: src/chfn.c:585 src/chsh.c:424 src/passwd.c:832 src/passwd.c:933 +#: src/chfn.c:585 src/chsh.c:397 src/passwd.c:755 src/passwd.c:867 msgid "Cannot commit password file changes.\n" msgstr "îĹ ÍĎÖŐ ÚÁĐÉÓÁÔÉ ÚͦÎÉ ÄĎ ĆÁĘĚŐ ĐÁŇĎĚĹĘ.\n" -#: src/chfn.c:592 src/chsh.c:431 +#: src/chfn.c:592 src/chsh.c:404 msgid "Cannot unlock the password file.\n" msgstr "îĹ ÍĎÖŐ ŇÁÚÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ.\n" -#: src/chpasswd.c:69 +#: src/chpasswd.c:66 #, c-format msgid "usage: %s [-e]\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-e]\n" -#: src/chpasswd.c:169 src/pwconv.c:104 +#: src/chpasswd.c:171 src/pwconv.c:94 #, c-format msgid "%s: can't lock shadow file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ Ú ĐŇÉČĎ×ÁÎÉÍÉ ĐÁŇĎĚŃÍÉ\n" -#: src/chpasswd.c:174 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:109 -#: src/pwunconv.c:114 +#: src/chpasswd.c:177 src/gpasswd.c:596 src/pwconv.c:99 src/pwunconv.c:103 +#: src/pwunconv.c:108 #, c-format msgid "%s: can't open shadow file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ Ú ĐŇÉČĎ×ÁÎÉÍÉ ĐÁŇĎĚŃÍÉ\n" -#: src/chpasswd.c:196 src/newusers.c:465 +#: src/chpasswd.c:200 src/newusers.c:460 #, c-format msgid "%s: line %d: line too long\n" msgstr "%s: ŇŃÄĎË %d: ŇŃÄĎË ÚÁÎÁÄÔĎ ÄĎ×ÇÉĘ\n" -#: src/chpasswd.c:216 +#: src/chpasswd.c:220 #, c-format msgid "%s: line %d: missing new password\n" msgstr "%s: ŇŃÄĎË %d: ÂŇÁËŐ¤ ÎĎ×ĎÇĎ ĐÁŇĎĚŃ\n" -#: src/chpasswd.c:232 +#: src/chpasswd.c:237 #, c-format msgid "%s: line %d: unknown user %s\n" msgstr "%s: ŇŃÄĎË %d: ÎĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ %s\n" -#: src/chpasswd.c:284 +#: src/chpasswd.c:290 #, c-format msgid "%s: line %d: cannot update password entry\n" msgstr "%s: ŇŃÄĎË %d: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ Ő ÂÁÚ¦ ĐÁŇĎĚĹĘ\n" -#: src/chpasswd.c:300 src/newusers.c:585 +#: src/chpasswd.c:307 src/newusers.c:588 #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: ×ÉŃ×ĚĹÎĎ ĐĎÍÉĚËŐ, ÚͦÎÉ ¦ÇÎĎŇŐŔÔŘÓŃ\n" -#: src/chpasswd.c:311 +#: src/chpasswd.c:319 #, c-format msgid "%s: error updating shadow file\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ĆÁĘĚŐ Ú ĐŇÉČĎ×ÁÎÉÍÉ ĐÁŇĎĚŃÍÉ\n" -#: src/chpasswd.c:319 +#: src/chpasswd.c:328 #, c-format msgid "%s: error updating password file\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ĆÁĘĚŐ Ú ĐÁŇĎĚŃÍÉ\n" -#: src/chsh.c:105 +#: src/chsh.c:75 #, c-format -msgid "Usage: %s [ -s shell ] [ name ]\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -s shell ] [ ¦Í'Ń ]\n" +msgid "Usage: %s [-s shell] [name]\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-s shell] [¦Í'Ń]\n" -#: src/chsh.c:120 +#: src/chsh.c:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"÷×ĹĦÔŘ ÎĎ×Ĺ ÚÎÁŢĹÎÎŃ, ÁÂĎ ÎÁÖͦÔŘ ENTER, ÄĚŃ ÚÎÁŢĹÎÎŃ ĐĎ ÚÁÍĎ×ŢŐ×ÁÎÎŔ\n" +"\n" + +#: src/chsh.c:90 msgid "Login Shell" msgstr "Login Shell" -#: src/chsh.c:273 src/chsh.c:286 +#: src/chsh.c:239 src/chsh.c:253 #, c-format msgid "You may not change the shell for %s.\n" msgstr "îĹ ÍĎÖÎÁ ÚͦÎÉÔÉ shell ÄĚŃ %s.\n" -#: src/chsh.c:315 +#: src/chsh.c:282 #, c-format msgid "Changing the login shell for %s\n" msgstr "úͦÎŔŔ shell ÄĚŃ %s\n" -#: src/chsh.c:327 +#: src/chsh.c:294 #, c-format msgid "%s: Invalid entry: %s\n" msgstr "%s: îĹצŇÎÉĘ ÚÁĐÉÓ: %s\n" -#: src/chsh.c:332 +#: src/chsh.c:301 #, c-format msgid "%s is an invalid shell.\n" msgstr "%s ¤ ÎĹצŇÎÉĘ shell.\n" -#: src/dpasswd.c:69 +#: src/dpasswd.c:52 #, c-format -msgid "Usage: %s [ -(a|d) ] shell\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -(a|d) ] shell\n" +msgid "Usage: %s [-(a|d)] shell\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-(a|d)] shell\n" -#: src/dpasswd.c:134 +#: src/dpasswd.c:115 msgid "Shell password: " msgstr "Shell ĐÁŇĎĚŘ: " -#: src/dpasswd.c:140 +#: src/dpasswd.c:121 msgid "re-enter Shell password: " msgstr "đĎ×ÔĎҦÔŘ ĐÁŇĎĚŘ ÄĚŃ shell: " -#: src/dpasswd.c:147 +#: src/dpasswd.c:129 #, c-format msgid "%s: Passwords do not match, try again.\n" msgstr "%s: đÁŇĎĚŘ ÎĹ ÓЦ×ĐÁÄÁ¤, ÓĐŇĎÂŐĘÔĹ ÚÎĎ×Ő.\n" -#: src/dpasswd.c:167 +#: src/dpasswd.c:149 #, c-format msgid "%s: can't create %s" msgstr "%s: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ %s" -#: src/dpasswd.c:172 +#: src/dpasswd.c:155 #, c-format msgid "%s: can't open %s" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ %s" -#: src/dpasswd.c:200 +#: src/dpasswd.c:183 #, c-format msgid "%s: Shell %s not found.\n" msgstr "%s: Shell %s ÎĹ ÚÎÁĘÄĹÎĎ.\n" -#: src/expiry.c:84 -msgid "Usage: expiry { -f | -c }\n" +#: src/expiry.c:59 +#, fuzzy +msgid "Usage: expiry {-f|-c}\n" msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: expiry { -f | -c }\n" -#: src/expiry.c:137 +#: src/expiry.c:113 #, c-format msgid "%s: WARNING! Must be set-UID root!\n" msgstr "%s: úáóôĺňĺöĺîîń! đŇĎÇŇÁÍÁ ĐĎ×ÉÎÁ ÂŐÔÉ SUID root!\n" -#: src/expiry.c:148 +#: src/expiry.c:124 #, c-format msgid "%s: unknown user\n" msgstr "%s: ÎĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ\n" -#: src/faillog.c:79 +#: src/faillog.c:77 #, c-format msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n" msgstr "" "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-a|-u ËĎŇÉÓÔŐ×ÁŢ] [-m ÍÁËÓ] [-r] [-t ÄΦ×] [-l ĚĎË_ÓĹË]\n" -#: src/faillog.c:134 src/lastlog.c:103 +#: src/faillog.c:131 src/lastlog.c:96 #, c-format msgid "Unknown User: %s\n" msgstr "îĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ: %s\n" -#: src/faillog.c:215 +#: src/faillog.c:212 #, fuzzy msgid "Username Failures Maximum Latest\n" msgstr "ëĎŇÉÓÔŐ×ÁŢ đĎÍÉĚĎË íÁËÓ¦ÍŐÍ ďÓÔÁÎÎŃ\n" -#: src/faillog.c:232 +#: src/faillog.c:229 #, c-format msgid " %s on %s" msgstr " %s ÎÁ %s" -#: src/faillog.c:236 +#: src/faillog.c:233 #, c-format msgid " [%lds left]" msgstr " [%lds ÚÁĚÉŰÉĚĎÓŘ]" -#: src/faillog.c:239 +#: src/faillog.c:237 #, c-format msgid " [%lds lock]" msgstr " [%lds ÂĚĎËĎ×ÁÎĎ]" -#: src/gpasswd.c:89 +#: src/gpasswd.c:78 #, c-format msgid "usage: %s [-r|-R] group\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-r|-R] ÇŇŐĐÁ\n" -#: src/gpasswd.c:90 +#: src/gpasswd.c:79 #, c-format msgid " %s [-a user] group\n" msgstr " %s [-a ËĎŇÉÓÔŐ×ÁŢ] ÇŇŐĐÁ\n" -#: src/gpasswd.c:91 +#: src/gpasswd.c:80 #, c-format msgid " %s [-d user] group\n" msgstr " %s [-d ËĎŇÉÓÔŐ×ÁŢ] ÇŇŐĐÁ\n" -#: src/gpasswd.c:93 +#: src/gpasswd.c:83 #, c-format msgid " %s [-A user,...] [-M user,...] group\n" msgstr " %s [-A ËĎŇÉÓÔŐ×ÁŢ,...] [-M ËĎŇÉÓÔŐ×ÁŢ,...] ÇŇŐĐÁ\n" -#: src/gpasswd.c:96 +#: src/gpasswd.c:85 #, c-format msgid " %s [-M user,...] group\n" msgstr " %s [-M ËĎŇÉÓÔŐ×ÁŢ,...] ÇŇŐĐÁ\n" -#: src/gpasswd.c:160 src/gpasswd.c:245 +#: src/gpasswd.c:146 src/gpasswd.c:230 #, c-format msgid "%s: unknown user %s\n" msgstr "%s: ÎĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ %s\n" -#: src/gpasswd.c:172 +#: src/gpasswd.c:157 msgid "Permission denied.\n" msgstr "äĎÓÔŐĐ ÚÁÂĎŇĎÎĹÎĎ.\n" -#: src/gpasswd.c:257 +#: src/gpasswd.c:243 #, c-format msgid "%s: shadow group passwords required for -A\n" msgstr "%s: ĐŇÉČĎ×ÁΦ ĐÁŇĎ̦ ÇŇŐĐ ĐĎÔҦÂΦ ÄĚŃ -A\n" -#: src/gpasswd.c:308 +#: src/gpasswd.c:294 msgid "Who are you?\n" msgstr "÷É ČÔĎ?\n" -#: src/gpasswd.c:328 src/newgrp.c:251 +#: src/gpasswd.c:313 src/newgrp.c:297 #, c-format msgid "unknown group: %s\n" msgstr "ÎĹצÄĎÍÁ ÇŇŐĐÁ: %s\n" -#: src/gpasswd.c:436 +#: src/gpasswd.c:422 #, c-format msgid "Adding user %s to group %s\n" msgstr "äĎÄÁÎĎ ÎĎ×ĎÇĎ ËĎŇÉÓÔŐ×ÁŢÁ %s ÄĎ ÇŇŐĐÉ %s\n" -#: src/gpasswd.c:453 +#: src/gpasswd.c:440 #, c-format msgid "Removing user %s from group %s\n" msgstr "÷ÉÄÁĚĹÎĎ ËĎŇÉÓÔŐ×ÁŢÁ %s Ú ÇŇŐĐÉ %s\n" -#: src/gpasswd.c:466 +#: src/gpasswd.c:454 #, c-format msgid "%s: unknown member %s\n" msgstr "%s: ÎĹצÄĎÍÉĘ ŢĚĹÎ %s\n" -#: src/gpasswd.c:513 +#: src/gpasswd.c:501 #, c-format msgid "%s: Not a tty\n" msgstr "%s: îĹ ¤ tty\n" #. -#. * A new password is to be entered and it must be encrypted, -#. * etc. The password will be prompted for twice, and both -#. * entries must be identical. There is no need to validate -#. * the old password since the invoker is either the group -#. * owner, or root. +#. * A new password is to be entered and it must be encrypted, etc. +#. * The password will be prompted for twice, and both entries must be +#. * identical. There is no need to validate the old password since +#. * the invoker is either the group owner, or root. #. -#: src/gpasswd.c:535 +#: src/gpasswd.c:522 #, c-format msgid "Changing the password for group %s\n" msgstr "úͦÎÁ ĐÁŇĎĚŃ ÄĚŃ ÇŇŐĐÉ %s\n" -#: src/gpasswd.c:538 +#: src/gpasswd.c:525 msgid "New Password: " msgstr "îĎ×ÉĘ ĐÁŇĎĚŘ: " -#: src/gpasswd.c:543 src/passwd.c:422 +#: src/gpasswd.c:530 src/passwd.c:365 msgid "Re-enter new password: " msgstr "đĎ×ÔĎҦÔŘ ÎĎ×ÉĘ ĐÁŇĎĚŘ: " -#: src/gpasswd.c:555 +#: src/gpasswd.c:542 msgid "They don't match; try again" msgstr "ÎĹ ÓЦ×ĐÁÄÁ¤; ÓĐŇĎÂŐĘÔĹ ÚÎĎ×Ő" -#: src/gpasswd.c:559 +#: src/gpasswd.c:546 #, c-format msgid "%s: Try again later\n" msgstr "%s: óĐŇĎÂŐĘÔĹ ÚÎĎ×Ő Đ¦ÚΦŰĹ\n" -#: src/gpasswd.c:590 +#: src/gpasswd.c:578 #, c-format msgid "%s: can't get lock\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ\n" -#: src/gpasswd.c:596 +#: src/gpasswd.c:584 #, c-format msgid "%s: can't get shadow lock\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ÂÁÚŐ ĐŇÉČĎ×ÁÎÉĘ ĐÁŇĎĚĹĘ\n" -#: src/gpasswd.c:602 +#: src/gpasswd.c:590 #, c-format msgid "%s: can't open file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ\n" -#: src/gpasswd.c:614 +#: src/gpasswd.c:602 #, c-format msgid "%s: can't update entry\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ\n" -#: src/gpasswd.c:620 +#: src/gpasswd.c:608 #, c-format msgid "%s: can't update shadow entry\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ Ő ÂÁÚ¦ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/gpasswd.c:626 +#: src/gpasswd.c:615 #, c-format msgid "%s: can't re-write file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ\n" -#: src/gpasswd.c:632 +#: src/gpasswd.c:621 #, c-format msgid "%s: can't re-write shadow file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉĘ ĐÁŇĎĚĹĘ\n" -#: src/gpasswd.c:640 +#: src/gpasswd.c:630 #, c-format msgid "%s: can't unlock file\n" msgstr "%s: ÎĹ ÍĎÖŐ ŇÁÚÂĚĎËŐ×ÁÔÉ ĆÁĘĚ\n" -#: src/gpasswd.c:645 +#: src/gpasswd.c:635 #, c-format msgid "%s: can't update DBM files\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ DBM ĆÁĘĚ\n" -#: src/gpasswd.c:652 +#: src/gpasswd.c:642 #, c-format msgid "%s: can't update DBM shadow files\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ DBM ĆÁĘĚ Ú ĐŇÉČĎ×ÁÎÉÍÉ ĐÁŇĎĚŃÍÉ\n" -#: src/groupadd.c:111 +#: src/groupadd.c:101 msgid "usage: groupadd [-g gid [-o]] group\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: groupadd [-g gid [-o]] ÇŇŐĐÁ\n" -#: src/groupadd.c:179 src/groupadd.c:202 src/groupmod.c:189 src/groupmod.c:236 -#: src/useradd.c:949 src/usermod.c:546 src/usermod.c:682 +#: src/groupadd.c:167 src/groupadd.c:192 src/groupmod.c:179 src/groupmod.c:228 +#: src/useradd.c:970 src/usermod.c:552 src/usermod.c:695 #, c-format msgid "%s: error adding new group entry\n" msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÎĎ×ĎÇĎ ÚÁĐÉÓŐ Ő ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupadd.c:189 src/groupadd.c:212 src/groupmod.c:205 src/useradd.c:960 -#: src/usermod.c:558 src/usermod.c:694 +#: src/groupadd.c:178 src/groupadd.c:203 src/groupmod.c:197 src/useradd.c:981 +#: src/usermod.c:564 src/usermod.c:708 #, c-format msgid "%s: cannot add new dbm group entry\n" msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÎĎ×ĎÇĎ ÚÁĐÉÓŐ Ő ĆÁĘĚ ÇŇŐĐ dbm\n" -#: src/groupadd.c:264 src/useradd.c:1014 +#: src/groupadd.c:255 src/useradd.c:1034 #, c-format msgid "%s: name %s is not unique\n" msgstr "%s: ¦Í'Ń %s ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" -#: src/groupadd.c:279 -#, c-format -msgid "%s: gid %ld is not unique\n" -msgstr "%s: gid %ld ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" +#: src/groupadd.c:270 +#, fuzzy, c-format +msgid "%s: gid %u is not unique\n" +msgstr "%s: uid %ld ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" -#: src/groupadd.c:303 +#: src/groupadd.c:294 #, c-format msgid "%s: can't get unique gid\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÔŇÉÍÁÔÉ ŐΦËÁĚŘÎÉĘ gid\n" @@ -925,54 +920,54 @@ msgstr "%s: #. #. * All invalid group names land here. #. -#: src/groupadd.c:327 src/groupmod.c:347 +#: src/groupadd.c:317 src/groupmod.c:341 #, c-format msgid "%s: %s is a not a valid group name\n" msgstr "%s: %s: ÔĎ ÎĹ ¤ צŇÎĹ ¦Í'Ń ÇŇŐĐÉ\n" -#: src/groupadd.c:356 src/groupmod.c:373 +#: src/groupadd.c:346 src/groupmod.c:366 #, c-format msgid "%s: invalid group %s\n" msgstr "%s: ÎĹצŇÎÁ ÇŇŐĐÁ %s\n" -#: src/groupadd.c:373 src/useradd.c:1290 +#: src/groupadd.c:363 src/useradd.c:1313 #, c-format msgid "%s: -O requires NAME=VALUE\n" msgstr "%s: -O ×ÉÍÁÇÁ¤ úí¶îîá=úîáţĺîîń\n" -#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1399 -#: src/userdel.c:309 src/usermod.c:570 +#: src/groupadd.c:407 src/groupdel.c:173 src/groupmod.c:401 src/useradd.c:1428 +#: src/userdel.c:312 src/usermod.c:576 #, c-format msgid "%s: cannot rewrite group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupadd.c:424 src/groupdel.c:179 src/groupmod.c:415 src/useradd.c:1407 -#: src/userdel.c:315 src/usermod.c:707 +#: src/groupadd.c:415 src/groupdel.c:179 src/groupmod.c:409 src/useradd.c:1437 +#: src/userdel.c:319 src/usermod.c:722 #, c-format msgid "%s: cannot rewrite shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/groupadd.c:443 src/groupdel.c:198 src/groupmod.c:434 src/userdel.c:395 +#: src/groupadd.c:433 src/groupdel.c:198 src/groupmod.c:427 src/userdel.c:403 #, c-format msgid "%s: unable to lock group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 +#: src/groupadd.c:438 src/groupdel.c:202 src/groupmod.c:432 #, c-format msgid "%s: unable to open group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443 src/userdel.c:404 +#: src/groupadd.c:445 src/groupdel.c:207 src/groupmod.c:439 src/userdel.c:414 #, c-format msgid "%s: unable to lock shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/groupadd.c:457 src/groupdel.c:212 src/groupmod.c:448 +#: src/groupadd.c:451 src/groupdel.c:212 src/groupmod.c:445 #, c-format msgid "%s: unable to open shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/groupadd.c:568 +#: src/groupadd.c:562 #, c-format msgid "%s: group %s exists\n" msgstr "%s: ÇŇŐĐÁ %s ¦ÓÎŐ¤\n" @@ -981,12 +976,12 @@ msgstr "%s: msgid "usage: groupdel group\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: groupdel ÇŇŐĐÁ\n" -#: src/groupdel.c:110 src/groupmod.c:193 src/groupmod.c:240 +#: src/groupdel.c:110 src/groupmod.c:184 src/groupmod.c:233 #, c-format msgid "%s: error removing group entry\n" msgstr "%s: ĐĎÍÉĚËÁ צÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ÇŇŐĐ\n" -#: src/groupdel.c:122 src/groupmod.c:212 +#: src/groupdel.c:122 src/groupmod.c:204 #, c-format msgid "%s: error removing group dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ צÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ÇŇŐĐ dbm\n" @@ -996,7 +991,7 @@ msgstr "%s: msgid "%s: error removing shadow group entry\n" msgstr "%s: ĐĎÍÉĚËÁ צÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/groupdel.c:150 src/groupmod.c:258 +#: src/groupdel.c:150 src/groupmod.c:254 #, c-format msgid "%s: error removing shadow group dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ צÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ dbm\n" @@ -1009,130 +1004,130 @@ msgstr "%s: msgid "%s: cannot remove user's primary group.\n" msgstr "%s: ÎĹ ÍĎÖŐ ×ÉÄÁĚÉÔÉ ÇĎĚĎ×ÎŐ ÇŇŐĐŐ ËĎŇÉÓÔŐ×ÁŢÁ.\n" -#: src/groupdel.c:355 src/groupmod.c:551 +#: src/groupdel.c:355 src/groupmod.c:550 #, c-format msgid "%s: group %s does not exist\n" msgstr "%s: ÇŇŐĐÁ %s ÎĹ ¦ÓÎŐ¤\n" -#: src/groupdel.c:369 src/groupmod.c:567 +#: src/groupdel.c:369 src/groupmod.c:566 #, c-format msgid "%s: group %s is a NIS group\n" msgstr "%s: ÇŇŐĐÁ %s ¤ ÇŇŐĐĎŔ NIS\n" -#: src/groupdel.c:375 src/groupmod.c:573 src/userdel.c:811 src/usermod.c:1023 +#: src/groupdel.c:375 src/groupmod.c:571 src/userdel.c:776 src/usermod.c:1045 #, c-format msgid "%s: %s is the NIS master\n" msgstr "%s: %s ¤ ÓĹŇ×ĹŇ NIS\n" -#: src/groupmems.c:92 +#: src/groupmems.c:95 msgid "Member already exists\n" msgstr "" -#: src/groupmems.c:121 +#: src/groupmems.c:125 msgid "Member to remove could not be found\n" msgstr "" -#: src/groupmems.c:151 +#: src/groupmems.c:158 msgid "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n" msgstr "" -#: src/groupmems.c:191 +#: src/groupmems.c:201 msgid "Only root can add members to different groups\n" msgstr "" -#: src/groupmems.c:196 +#: src/groupmems.c:206 msgid "Group access is required\n" msgstr "" -#: src/groupmems.c:199 +#: src/groupmems.c:210 msgid "Not primary owner of current group\n" msgstr "" -#: src/groupmems.c:204 +#: src/groupmems.c:215 #, fuzzy msgid "Unable to lock group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupmems.c:209 +#: src/groupmems.c:220 #, fuzzy msgid "Unable to open group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupmems.c:229 +#: src/groupmems.c:240 #, fuzzy msgid "Cannot close group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/groupmod.c:111 +#: src/groupmod.c:103 msgid "usage: groupmod [-g gid [-o]] [-n name] group\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: groupmod [-g gid [-o]] [-n ¦Í'Ń] ÇŇŐĐÁ\n" -#: src/groupmod.c:171 +#: src/groupmod.c:161 #, fuzzy, c-format msgid "%s: %s not found in /etc/group\n" msgstr "%s: %s ÎĹ ÚÎÁĘÄĹÎĎ Ő /etc/passwd\n" -#: src/groupmod.c:252 +#: src/groupmod.c:247 #, c-format msgid "%s: cannot add new dbm shadow group entry\n" msgstr "%s: ÎĹ ÍĎÖŐ ÄĎÄÁÔÉ ÚÁĐÉÓ Ő ÂÁÚŐ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ dbm\n" -#: src/groupmod.c:305 -#, c-format -msgid "%s: %ld is not a unique gid\n" +#: src/groupmod.c:300 +#, fuzzy, c-format +msgid "%s: %u is not a unique gid\n" msgstr "%s: %ld ÎĹ ¤ ŐΦËÁĚŘÎÉĘ gid\n" -#: src/groupmod.c:336 +#: src/groupmod.c:330 #, c-format msgid "%s: %s is not a unique name\n" msgstr "%s: %s ÎĹ ¤ ŐΦËÁĚŘÎĹ ¦Í'Ń\n" -#: src/groups.c:62 +#: src/groups.c:59 #, c-format msgid "unknown user %s\n" msgstr "ÎĹצÄĎÍÉĘ ËĎŇÉÓÔŐ×ÁŢ %s\n" -#: src/grpck.c:98 +#: src/grpck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group [ gshadow ] ]\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -r ] [ ÇŇŐĐÁ [ gshadow ] ]\n" +msgid "Usage: %s [-r] [-s] [group [gshadow]]\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-r] [-s] [ÇŇŐĐÁ [gshadow]]\n" -#: src/grpck.c:100 +#: src/grpck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sr ] [ group ]\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -r ] [ ÇŇŐĐÁ ]\n" +msgid "Usage: %s [-r] [-s] [group]\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-r] [-s] [ÇŇŐĐÁ]\n" -#: src/grpck.c:119 src/pwck.c:119 +#: src/grpck.c:108 src/pwck.c:108 msgid "No" msgstr "î¦" -#: src/grpck.c:204 src/pwck.c:186 +#: src/grpck.c:192 src/pwck.c:175 #, c-format msgid "%s: -s and -r are incompatibile\n" msgstr "" -#: src/grpck.c:244 src/grpck.c:252 src/pwck.c:226 src/pwck.c:235 +#: src/grpck.c:232 src/grpck.c:242 src/pwck.c:215 src/pwck.c:225 #, c-format msgid "%s: cannot lock file %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ %s\n" -#: src/grpck.c:267 src/grpck.c:275 src/mkpasswd.c:216 src/pwck.c:251 -#: src/pwck.c:260 +#: src/grpck.c:259 src/grpck.c:268 src/mkpasswd.c:202 src/pwck.c:242 +#: src/pwck.c:251 #, c-format msgid "%s: cannot open file %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ %s\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:317 +#: src/grpck.c:311 msgid "invalid group file entry\n" msgstr "ÎĹצŇÎÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ÇŇŐĐ\n" -#: src/grpck.c:318 src/grpck.c:381 src/grpck.c:473 src/grpck.c:536 -#: src/grpck.c:553 src/pwck.c:305 src/pwck.c:367 src/pwck.c:474 src/pwck.c:536 -#: src/pwck.c:560 +#: src/grpck.c:312 src/grpck.c:375 src/grpck.c:458 src/grpck.c:521 +#: src/grpck.c:538 src/pwck.c:296 src/pwck.c:358 src/pwck.c:457 src/pwck.c:519 +#: src/pwck.c:543 #, c-format msgid "delete line `%s'? " msgstr "×ÉÄÁĚÉÔÉ ÚÁĐÉÓ `%s'? " @@ -1141,35 +1136,30 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:380 +#: src/grpck.c:374 msgid "duplicate group entry\n" msgstr "ĐĎ×ÔĎŇŔŔŢÉÓŃ ÚÁĐÉÓÉ Ő ÂÁÚ¦ ÇŇŐĐ\n" -#: src/grpck.c:397 +#: src/grpck.c:391 #, c-format msgid "invalid group name `%s'\n" msgstr "ÎĹצŇÎĹ ¦Í'Ń ÇŇŐĐÉ `%s'\n" -#: src/grpck.c:407 -#, c-format -msgid "group %s: bad GID (%d)\n" -msgstr "ÇŇŐĐÁ %s: ÍÁ¤ ÎĹצŇÎÉĘ GID (%d)\n" - -#: src/grpck.c:433 +#: src/grpck.c:418 #, c-format msgid "group %s: no user %s\n" msgstr "ÇŇŐĐÁ %s: ÎĹ ÍÁ¤ ËĎŇÉÓÔŐ×ÁŢ¦× %s\n" -#: src/grpck.c:435 src/grpck.c:604 +#: src/grpck.c:420 src/grpck.c:590 #, c-format msgid "delete member `%s'? " msgstr "×ÉÄÁĚÉÔÉ ŢĚĹÎÁ `%s'? " #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/grpck.c:472 +#: src/grpck.c:457 msgid "invalid shadow group file entry\n" msgstr "ÎĹצŇÎÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" @@ -1177,204 +1167,201 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/grpck.c:535 +#: src/grpck.c:520 msgid "duplicate shadow group entry\n" msgstr "ĐĎ×ÔĎŇŔŔŢÉĘÓŃ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/grpck.c:552 +#: src/grpck.c:537 msgid "no matching group file entry\n" msgstr "צÄÓŐÔÎ¦Ę ×¦ÄĐĎצÄÎÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ÇŇŐĐ\n" -#: src/grpck.c:572 +#: src/grpck.c:558 #, c-format msgid "shadow group %s: no administrative user %s\n" msgstr "ĐŇÉČĎ×ÁÎÁ ÇŇŐĐÁ %s: ÎĹ ÍÁ¤ ÁÄͦΦÓÔŇÁÔĎŇÁ %s\n" -#: src/grpck.c:574 +#: src/grpck.c:560 #, c-format msgid "delete administrative member `%s'? " msgstr "×ÉÄÁĚÉÔÉ ÁÄͦΦÓÔŇÁÔĎŇÁ `%s'? " -#: src/grpck.c:602 +#: src/grpck.c:588 #, c-format msgid "shadow group %s: no user %s\n" msgstr "ĐŇÉČĎ×ÁÎÁ ÇŇŐĐÁ %s: ÎĹ ÍÁ¤ ËĎŇÉÓÔŐ×ÁŢ¦× %s\n" -#: src/grpck.c:630 src/grpck.c:636 src/pwck.c:592 src/pwck.c:600 +#: src/grpck.c:616 src/grpck.c:622 src/pwck.c:577 src/pwck.c:585 #, c-format msgid "%s: cannot update file %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ %s\n" -#: src/grpck.c:660 src/pwck.c:626 +#: src/grpck.c:647 src/pwck.c:612 #, c-format msgid "%s: the files have been updated; run mkpasswd\n" msgstr "%s: ĆÁĘĚÉ ÂŐĚĎ ĎÎĎ×ĚĹÎĎ; ×ÉËĎÎÁĘÔĹ mkpasswd\n" -#: src/grpck.c:661 src/grpck.c:665 src/pwck.c:627 src/pwck.c:631 +#: src/grpck.c:648 src/grpck.c:652 src/pwck.c:613 src/pwck.c:617 #, c-format msgid "%s: no changes\n" msgstr "%s: ÂĹÚ ÚͦÎ\n" -#: src/grpck.c:664 src/pwck.c:630 +#: src/grpck.c:651 src/pwck.c:616 #, c-format msgid "%s: the files have been updated\n" msgstr "%s: ĆÁĘĚÉ ÂŐĚĎ ĎÎĎ×ĚĹÎĎ\n" -#: src/grpconv.c:62 src/grpunconv.c:63 +#: src/grpconv.c:60 src/grpunconv.c:56 #, c-format msgid "%s: can't lock group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/grpconv.c:67 src/grpunconv.c:68 +#: src/grpconv.c:65 src/grpunconv.c:61 #, c-format msgid "%s: can't open group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/grpconv.c:72 src/grpunconv.c:73 +#: src/grpconv.c:70 src/grpunconv.c:66 #, c-format msgid "%s: can't lock shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/grpconv.c:77 src/grpunconv.c:78 +#: src/grpconv.c:76 src/grpunconv.c:72 #, c-format msgid "%s: can't open shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#. -#. * This shouldn't happen (the entry exists) but... -#. -#: src/grpconv.c:93 +#: src/grpconv.c:94 #, c-format msgid "%s: can't remove shadow group %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ×ÉÄÁĚÉÔÉ ĐŇÉČĎ×ÁÎŐ ÇŇŐĐŐ %s\n" -#: src/grpconv.c:134 src/pwconv.c:160 +#: src/grpconv.c:138 src/pwconv.c:153 #, c-format msgid "%s: can't update shadow entry for %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĐŇÉČĎ×ÁÎÉĘ ÚÁĐÉÓ ÄĚŃ %s\n" -#: src/grpconv.c:143 src/grpunconv.c:94 +#: src/grpconv.c:148 src/grpunconv.c:91 #, c-format msgid "%s: can't update entry for group %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ ÄĚŃ ÇŇŐĐÉ %s\n" -#: src/grpconv.c:150 src/grpunconv.c:102 +#: src/grpconv.c:155 src/grpunconv.c:99 #, c-format msgid "%s: can't update shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/grpconv.c:154 src/grpunconv.c:107 +#: src/grpconv.c:160 src/grpunconv.c:105 #, c-format msgid "%s: can't update group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/grpconv.c:169 src/grpunconv.c:128 +#: src/grpconv.c:175 src/grpunconv.c:127 #, c-format msgid "%s: not configured for shadow group support.\n" msgstr "%s: ÎĹ ÚËĎÎƦÇŐŇĎ×ÁÎĎ ÄĚŃ Đ¦ÄÔŇÉÍËÉ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ.\n" -#: src/grpunconv.c:112 +#: src/grpunconv.c:110 #, c-format msgid "%s: can't delete shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×ÉÄÁĚÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/id.c:56 -msgid "usage: id [ -a ]\n" -msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: id [ -a ]\n" +#: src/id.c:53 +msgid "usage: id [-a]\n" +msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: id [-a]\n" -#: src/id.c:58 +#: src/id.c:55 msgid "usage: id\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: id\n" -#: src/id.c:127 -#, c-format -msgid "uid=%d(%s)" +#: src/id.c:123 +#, fuzzy, c-format +msgid "uid=%u(%s)" msgstr "uid=%d(%s)" -#: src/id.c:129 -#, c-format -msgid "uid=%d" +#: src/id.c:125 +#, fuzzy, c-format +msgid "uid=%u" msgstr "uid=%d" -#: src/id.c:133 -#, c-format -msgid " gid=%d(%s)" +#: src/id.c:129 +#, fuzzy, c-format +msgid " gid=%u(%s)" msgstr " gid=%d(%s)" -#: src/id.c:135 -#, c-format -msgid " gid=%d" +#: src/id.c:131 +#, fuzzy, c-format +msgid " gid=%u" msgstr " gid=%d" -#: src/id.c:145 -#, c-format -msgid " euid=%d(%s)" +#: src/id.c:141 +#, fuzzy, c-format +msgid " euid=%u(%s)" msgstr " euid=%d(%s)" -#: src/id.c:147 -#, c-format -msgid " euid=%d" +#: src/id.c:143 +#, fuzzy, c-format +msgid " euid=%u" msgstr " euid=%d" -#: src/id.c:152 -#, c-format -msgid " egid=%d(%s)" +#: src/id.c:148 +#, fuzzy, c-format +msgid " egid=%u(%s)" msgstr " egid=%d(%s)" -#: src/id.c:154 -#, c-format -msgid " egid=%d" +#: src/id.c:150 +#, fuzzy, c-format +msgid " egid=%u" msgstr " egid=%d" #. -#. * Start off the group message. It will be of the format +#. * Start off the group message. It will be of the format #. * -#. * groups=###(aaa),###(aaa),###(aaa) +#. * groups=###(aaa),###(aaa),###(aaa) #. * #. * where "###" is a numerical value and "aaa" is the #. * corresponding name for each respective numerical value. #. -#: src/id.c:175 +#: src/id.c:169 msgid " groups=" msgstr " ÇŇŐĐÉ=" -#: src/lastlog.c:116 src/lastlog.c:120 +#: src/lastlog.c:110 src/lastlog.c:116 #, c-format msgid "Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n" msgstr "" -#: src/lastlog.c:184 +#: src/lastlog.c:181 msgid "Username Port From Latest\n" msgstr "ëĎŇÉÓÔŐ×ÁŢ ëĎÎÓĎĚŘ úצÄËÉ ďÓÔÁÎÎ¦Ę ×ȦÄ\n" -#: src/lastlog.c:186 +#: src/lastlog.c:183 msgid "Username Port Latest\n" msgstr "ëĎŇÉÓÔŐ×ÁŢ đĎŇÔ ďÓÔÁÎÎ¦Ę ×ȦÄ\n" -#: src/lastlog.c:200 +#: src/lastlog.c:197 msgid "**Never logged in**" msgstr "**î¦ËĎĚÉ ÎĹ ×ČĎÄÉ×**" -#: src/login.c:201 +#: src/login.c:183 #, c-format msgid "usage: %s [-p] [name]\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-p] [¦Í'Ń]\n" -#: src/login.c:204 +#: src/login.c:186 #, c-format msgid " %s [-p] [-h host] [-f name]\n" msgstr " %s [-p] [-h ČĎÓÔ] [-f ¦Í'Ń]\n" -#: src/login.c:206 +#: src/login.c:188 #, c-format msgid " %s [-p] -r host\n" msgstr " %s [-p] -r ČĎÓÔ\n" -#: src/login.c:289 +#: src/login.c:272 msgid "Invalid login time\n" msgstr "îĹצŇÎÉĘ ŢÁÓ ÄĚŃ ×ČĎÄŐ\n" -#: src/login.c:344 +#: src/login.c:327 msgid "" "\n" "System closed for routine maintenance\n" @@ -1382,7 +1369,7 @@ msgstr "" "\n" "óÉÓÔĹÍŐ ÚÁËŇÉÔĎ ÄĚŃ ĐŇĎƦĚÁËÔÉËÉ.\n" -#: src/login.c:354 +#: src/login.c:338 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1390,7 +1377,7 @@ msgstr "" "\n" "[đŇĎĘŰĚĎ ×¦ÄËĚŔŢĹÎÎŃ -- ÄĎÚ×ĎĚĹÎĎ ĚÉŰĹ ×Č¦Ä root-a.]\n" -#: src/login.c:393 +#: src/login.c:375 #, c-format msgid "" "\n" @@ -1399,17 +1386,17 @@ msgstr "" "\n" "ţÁÓ ĚĎǦÎŐ ×ÉŢĹŇĐÁÎĎ ÚÁ %d ÓĹËŐÎÄ.\n" -#: src/login.c:695 +#: src/login.c:687 #, c-format msgid " on `%.100s' from `%.200s'" msgstr " ÎÁ `%s.100s' Ú `%.200s'" -#: src/login.c:697 +#: src/login.c:691 #, c-format msgid " on `%.100s'" msgstr " ÎÁ `%.100s'" -#: src/login.c:837 +#: src/login.c:850 #, c-format msgid "" "\n" @@ -1418,238 +1405,232 @@ msgstr "" "\n" "%s login: " -#: src/login.c:839 +#: src/login.c:853 msgid "login: " msgstr "login: " -#: src/login.c:1029 src/sulogin.c:231 +#: src/login.c:1069 src/sulogin.c:233 msgid "Login incorrect" msgstr "îĹצŇÎÉĘ ĚĎǦÎ" -#: src/login.c:1217 +#: src/login.c:1263 msgid "Warning: login re-enabled after temporary lockout.\n" msgstr "úÁÓÔĹŇĹÖĹÎÎŃ: login ĐĎÎĎ×ĚĹÎĎ Đ¦ÓĚŃ ÔÉÍŢÁÓĎ×ĎÇĎ ÂĚĎËŐ×ÁÎÎŃ.\n" -#: src/login.c:1227 +#: src/login.c:1276 #, c-format msgid "Last login: %s on %s" msgstr "ďÓÔÁÎÎ¦Ę ×Č¦Ä × ÓÉÓÔĹÍŐ: %s ÎÁ %s" -#: src/login.c:1230 +#: src/login.c:1279 #, c-format msgid "Last login: %.19s on %s" msgstr "ďÓÔÁÎÎ¦Ę ×Č¦Ä × ÓÉÓÔĹÍŐ: %s ÎÁ %s" -#: src/login.c:1235 +#: src/login.c:1285 #, c-format msgid " from %.*s" msgstr " Ú %.*s" -#: src/login.c:1307 +#: src/login.c:1362 msgid "Starting rad_login\n" msgstr "óÔÁŇÔŐ¤ÍĎ rad_login\n" -#: src/mkpasswd.c:49 +#: src/mkpasswd.c:47 #, c-format msgid "%s: no DBM database on system - no action performed\n" msgstr "%s: ÎĹ ÍÁ¤ DBM ÂÁÚÉ ÄÁÎÎÉČ Ő ÓÉÓÔĹͦ - ΦŃËÉČ Ä¦Ę ÎĹ ×ÉËĎÎÁÎĎ\n" -#: src/mkpasswd.c:74 src/mkpasswd.c:382 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -vf ] [ -p|g|sp|sg ] ĆÁĘĚ\n" - -#: src/mkpasswd.c:76 src/mkpasswd.c:384 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -vf ] [ -p|g|sp ] ĆÁĘĚ\n" - -#: src/mkpasswd.c:79 src/mkpasswd.c:387 -#, c-format -msgid "Usage: %s [ -vf ] [ -p|g ] file\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -vf ] [ -p|g ] ĆÁĘĚ\n" - -#: src/mkpasswd.c:245 src/mkpasswd.c:249 +#: src/mkpasswd.c:232 src/mkpasswd.c:237 #, c-format msgid "%s: cannot overwrite file %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹÚÁĐÉÓÁÔÉ ĆÁĘĚ %s\n" -#: src/mkpasswd.c:263 +#: src/mkpasswd.c:252 #, c-format msgid "%s: cannot open DBM files for %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚÉ DBM ÄĚŃ %s\n" -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:287 #, c-format msgid "%s: the beginning with " msgstr "%s: ŇĎÚĐĎŢÉÎÁ¤ÍĎ Ú " -#: src/mkpasswd.c:296 +#: src/mkpasswd.c:288 #, fuzzy msgid " is too long\n" msgstr "%s: ĐĎĚŃ ÚÁÎÁÄÔĎ ÄĎ×Ǧ\n" -#: src/mkpasswd.c:321 +#: src/mkpasswd.c:315 #, c-format msgid "%s: error parsing line \"%s\"\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÂŇĎÂËÉ ŇŃÄËŐ \"%s\"\n" -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 +#: src/mkpasswd.c:323 src/mkpasswd.c:328 src/mkpasswd.c:333 src/mkpasswd.c:338 msgid "adding record for name " msgstr "ÄĎÄÁÎĎ ÚÁĐÉÓ ÄĚŃ ¦ÍĹΦ " -#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332 -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:324 src/mkpasswd.c:329 src/mkpasswd.c:334 src/mkpasswd.c:339 +#: src/mkpasswd.c:345 src/mkpasswd.c:351 src/mkpasswd.c:356 src/mkpasswd.c:361 msgid "\n" msgstr "" -#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349 +#: src/mkpasswd.c:344 src/mkpasswd.c:350 src/mkpasswd.c:355 src/mkpasswd.c:360 #, c-format msgid "%s: error adding record for " msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÚÁĐÉÓŐ " -#: src/mkpasswd.c:367 +#: src/mkpasswd.c:378 #, c-format msgid "added %d entries, longest was %d\n" msgstr "ÄĎÄÁÎĎ %d ÚÁĐÉÓ¦×, ÄĎ×ÖÉÎĎŔ %d\n" -#: src/newgrp.c:66 -msgid "usage: newgrp [ - ] [ group ]\n" -msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: newgrp [ - ] [ ÇŇŐĐÁ ]\n" - -#: src/newgrp.c:68 -#, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: sg ÇŇŐĐÁ [ ËĎÍÁÎÄÁ ]\n" - -#: src/newgrp.c:125 +#: src/mkpasswd.c:392 #, c-format -msgid "unknown uid: %d\n" +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-vf] [-p|g|sp|sg] ĆÁĘĚ\n" + +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-vf] [-p|g|sp] ĆÁĘĚ\n" + +#: src/mkpasswd.c:398 +#, c-format +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-vf] [-p|g] ĆÁĘĚ\n" + +#: src/newgrp.c:61 +msgid "usage: newgrp [-] [group]\n" +msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: newgrp [-] [ÇŇŐĐÁ]\n" + +#: src/newgrp.c:63 +#, fuzzy +msgid "usage: sg group [[-c] command]\n" +msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: sg ÇŇŐĐÁ [ËĎÍÁÎÄÁ]\n" + +#: src/newgrp.c:136 +#, fuzzy, c-format +msgid "unknown uid: %u\n" msgstr "ÎĹצÄĎÍÉĘ uid: %d\n" -#: src/newgrp.c:201 -#, c-format -msgid "unknown gid: %ld\n" +#: src/newgrp.c:219 +#, fuzzy, c-format +msgid "unknown gid: %lu\n" msgstr "ÎĹצÄĎÍÉĘ gid: %ld\n" -#: src/newgrp.c:245 -#, c-format -msgid "unknown gid: %d\n" -msgstr "ÎĹצÄĎÍÉĘ gid: %d\n" - -#: src/newgrp.c:323 src/newgrp.c:332 +#: src/newgrp.c:365 src/newgrp.c:374 msgid "Sorry.\n" msgstr "÷ÉÂÁŢÔĹ.\n" -#: src/newgrp.c:364 +#: src/newgrp.c:472 msgid "too many groups\n" msgstr "ÚÁÎÁÄÔĎ ÂÁÇÁÔĎ ÇŇŐĐ\n" -#: src/newusers.c:82 +#: src/newusers.c:78 #, c-format -msgid "Usage: %s [ input ]\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ input ]\n" +msgid "Usage: %s [input]\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [input]\n" -#: src/newusers.c:414 +#: src/newusers.c:407 #, c-format msgid "%s: can't lock /etc/passwd.\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ /etc/passwd.\n" -#: src/newusers.c:425 +#: src/newusers.c:419 #, c-format msgid "%s: can't lock files, try again later\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚÉ, ÓĐŇĎÂŐĘÔŠЦÚΦŰĹ\n" -#: src/newusers.c:440 +#: src/newusers.c:435 #, c-format msgid "%s: can't open files\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ\n" -#: src/newusers.c:485 +#: src/newusers.c:480 #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: ŇŃÄĎË %d: ÎĹצŇÎÉĘ ŇŃÄĎË\n" -#: src/newusers.c:503 +#: src/newusers.c:499 #, c-format msgid "%s: line %d: can't create GID\n" msgstr "%s: ŇŃÄĎË %d: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ GID\n" -#: src/newusers.c:519 +#: src/newusers.c:515 #, c-format msgid "%s: line %d: can't create UID\n" msgstr "%s: ŇŃÄĎË %d: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ UID\n" -#: src/newusers.c:531 +#: src/newusers.c:528 #, c-format msgid "%s: line %d: cannot find user %s\n" msgstr "%s: ŇŃÄĎË %d: ÎĹ ÍĎÖŐ ÚÎÁĘÔÉ ËĎŇÉÓÔŐ×ÁŢÁ %s\n" -#: src/newusers.c:539 +#: src/newusers.c:537 #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: ŇŃÄĎË %d: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĐÁŇĎĚŘ\n" -#: src/newusers.c:556 +#: src/newusers.c:555 #, c-format msgid "%s: line %d: mkdir failed\n" msgstr "%s: ŇŃÄĎË %d: mkdir ÎĹ ×ÉËĎÎÁ×ÓŃ\n" -#: src/newusers.c:560 +#: src/newusers.c:561 #, c-format msgid "%s: line %d: chown failed\n" msgstr "%s: ŇŃÄĎË %d: chown ÎĹ ×ÉËĎÎÁ×ÓŃ\n" -#: src/newusers.c:569 +#: src/newusers.c:571 #, c-format msgid "%s: line %d: can't update entry\n" msgstr "%s: ŇŃÄĎË %d: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ\n" -#: src/newusers.c:600 +#: src/newusers.c:603 #, c-format msgid "%s: error updating files\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ĆÁĘĚŐ\n" -#: src/passwd.c:239 +#: src/passwd.c:174 #, c-format -msgid "usage: %s [ -f | -s ] [ name ]\n" -msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -f | -s ] [ ¦Í'Ń ]\n" +msgid "usage: %s [-f|-s] [name]\n" +msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-f|-s] [¦Í'Ń]\n" -#: src/passwd.c:242 +#: src/passwd.c:178 #, c-format -msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n" -msgstr "" -" %s [ -x ÍÁËÓ ] [ -n ÍÉÎ ] [ -w ÚÁÓÔĹŇĹÖĹÎÎŃ ] [ -i ÎĹÁËÔÉ×ÎÉĘ ] ¦Í'Ń\n" +msgid " %s [-x max] [-n min] [-w warn] [-i inact] name\n" +msgstr " %s [-x ÍÁËÓ] [-n ÍÉÎ] [-w ÚÁÓÔĹŇĹÖĹÎÎŃ] [-i ÎĹÁËÔÉ×ÎÉĘ] ¦Í'Ń\n" -#: src/passwd.c:245 -#, c-format -msgid " %s { -l | -u | -d | -S | -e } name\n" +#: src/passwd.c:180 +#, fuzzy, c-format +msgid " %s {-l|-u|-d|-S|-e} name\n" msgstr " %s { -l | -u | -d | -S | -e } ¦Í'Ń\n" -#: src/passwd.c:347 +#: src/passwd.c:283 #, c-format msgid "User %s has a TCFS key, his old password is required.\n" msgstr "ëĎŇÉÓÔŐ×ÁŢ %s ÍÁ¤ TCFS ËĚŔŢ, ĐĎÔҦÂĹÎ ĘĎÇĎ ÓÔÁŇÉĘ ĐÁŇĎĚŘ.\n" -#: src/passwd.c:348 +#: src/passwd.c:286 msgid "You can use -t option to force the change.\n" msgstr "÷É ÍÁ¤ÔĹ ÚÍĎÇŐ ×ÉËĎŇÉÓÔĎ×Ő×ÁÔÉ ËĚŔŢ -t ÄĚŃ ĐŇÉÓËĎŇĹÎÎŃ ÚͦÎ.\n" -#: src/passwd.c:354 +#: src/passwd.c:292 msgid "Old password: " msgstr "óÔÁŇÉĘ ĐÁŇĎĚŘ: " -#: src/passwd.c:361 +#: src/passwd.c:301 #, c-format msgid "Incorrect password for `%s'\n" msgstr "îĹצŇÎÉĘ ĐÁŇĎĚŘ ÄĚŃ `%s'\n" -#: src/passwd.c:374 +#: src/passwd.c:314 #, c-format msgid "Warning: user %s has a TCFS key.\n" msgstr "úÁÓÔĹŇĹÖĹÎÎŃ: ËĎŇÉÓÔŐ×ÁŢ %s ÍÁ¤ TCFS ËĚŔŢ.\n" -#: src/passwd.c:392 +#: src/passwd.c:333 #, c-format msgid "" "Enter the new password (minimum of %d, maximum of %d characters)\n" @@ -1658,15 +1639,15 @@ msgstr "" "÷×ĹĦÔŘ ÎĎ×ÉĘ ĐÁŇĎĚŘ (×¦Ä %d ÄĎ %d ÚÎÁ˦×)\n" "úͦŰŐĘÔĹ ×ĹĚÉ˦ ÔÁ ÍÁ̦ ̦ÔĹŇÉ ÔÁ ĂÉĆŇÉ.\n" -#: src/passwd.c:399 +#: src/passwd.c:339 msgid "New password: " msgstr "îĎ×ÉĘ ĐÁŇĎĚŘ: " -#: src/passwd.c:409 +#: src/passwd.c:350 msgid "Try again.\n" msgstr "óĐŇĎÂŐĘ ÝĹ.\n" -#: src/passwd.c:418 +#: src/passwd.c:361 msgid "" "\n" "Warning: weak password (enter it again to use it anyway).\n" @@ -1675,90 +1656,90 @@ msgstr "" "úÁÓÔĹŇĹÖĹÎÎŃ: đĎÇÁÎÉĘ ĐÁŇĎĚŘ (××ĹĦÔŘ ĘĎÇĎ ÚÎĎ×Ő, ŃËÝĎ ×ÓĹ ĎÄÎĎ ÂÁÖÁ¤ÔĹ ĘĎÇĎ " "×ÉËĎŇÉÓÔĎ×Ő×ÁÔÉ).\n" -#: src/passwd.c:427 +#: src/passwd.c:371 msgid "They don't match; try again.\n" msgstr "îĹ ÓЦ×ĐÁÄÁ¤; ÓĐŇĎÂŐĘÔĹ ÚÎĎ×Ő.\n" -#: src/passwd.c:512 src/passwd.c:528 +#: src/passwd.c:451 src/passwd.c:469 #, c-format msgid "The password for %s cannot be changed.\n" msgstr "đÁŇĎĚŘ ÄĚŃ %s ÎĹ ÍĎÖĹ ÂŐÔÉ ÚͦÎĹÎÉĘ.\n" -#: src/passwd.c:556 +#: src/passwd.c:494 #, c-format msgid "Sorry, the password for %s cannot be changed yet.\n" msgstr "÷ÉÂÁŢÔĹ, ĐÁŇĎĚŘ ÄĚŃ %s ÎÇĹ ÍĎÖĹ ÂŐÔÉ ÚͦÎĹÎĎ ÚÁŇÁÚ.\n" -#: src/passwd.c:693 +#: src/passwd.c:614 #, c-format msgid "%s: out of memory\n" msgstr "%s: ÂŇÁË ĐÁÍ'ŃÔ¦\n" -#: src/passwd.c:845 +#: src/passwd.c:769 msgid "Cannot lock the TCFS key database; try again later\n" msgstr "îĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ÂÁÚŐ ËĚŔŢĹĘ TCFS; ÓĐŇĎÂŐĘÔŠЦÚΦŰĹ\n" -#: src/passwd.c:851 +#: src/passwd.c:777 msgid "Cannot open the TCFS key database.\n" msgstr "îĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ÂÁÚŐ ËĚŔŢĹĘ TCFS.\n" -#: src/passwd.c:857 +#: src/passwd.c:785 msgid "Error updating the TCFS key database.\n" msgstr "îĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÂÁÚŐ ËĚŔŢĹĘ TCFS.\n" -#: src/passwd.c:862 +#: src/passwd.c:792 msgid "Cannot commit TCFS changes.\n" msgstr "îĹ ÍĎÖŐ ×ÎĹÓÔÉ ÚͦÎÉ Ő ÂÁÚŐ ËĚŔŢĹĘ TCFS.\n" -#: src/passwd.c:1069 +#: src/passwd.c:975 #, c-format msgid "%s: Cannot execute %s" msgstr "%s: îĹ ÍĎÖŐ ×ÉËĎÎÁÔÉ %s" -#: src/passwd.c:1176 +#: src/passwd.c:1077 #, c-format msgid "%s: repository %s not supported\n" msgstr "%s: ŇĹĐĎÚÉÔĎŇ¦Ę %s ΊЦÄÔŇÉÍŐ¤ÔŘÓŃ\n" -#: src/passwd.c:1263 +#: src/passwd.c:1152 #, c-format msgid "%s: Permission denied\n" msgstr "%s: äĎÓÔŐĐ ÚÁÂĎŇĎÎĹÎĎ\n" -#: src/passwd.c:1287 +#: src/passwd.c:1176 #, c-format msgid "You may not change the password for %s.\n" msgstr "÷É ÎĹ ÍĎÖĹÔĹ ÚͦÎÉÔÉ ĐÁŇĎĚŘ ÄĚŃ %s.\n" -#: src/passwd.c:1352 +#: src/passwd.c:1242 #, c-format msgid "Changing password for %s\n" msgstr "úͦÎÁ ĐÁŇĎĚŃ ÄĚŃ %s\n" -#: src/passwd.c:1356 +#: src/passwd.c:1246 #, c-format msgid "The password for %s is unchanged.\n" msgstr "đÁŇĎĚŘ ÄĚŃ %s ÎĹ ÚͦÎĹÎĎ.\n" -#: src/passwd.c:1412 +#: src/passwd.c:1297 msgid "Password changed.\n" msgstr "đÁŇĎĚŘ ÚͦÎĹÎĎ.\n" -#: src/pwck.c:98 +#: src/pwck.c:87 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -qr ] [ ĐÁŇĎĚŘ [ shadow ] ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-q] [-r] [-s] [ĐÁŇĎĚŘ [shadow]]\n" -#: src/pwck.c:100 +#: src/pwck.c:90 #, fuzzy, c-format -msgid "Usage: %s [ -sqr ] [ passwd ]\n" -msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [ -qr ] [ ĐÁŇĎĚŘ ]\n" +msgid "Usage: %s [-q] [-r] [-s] [passwd]\n" +msgstr "÷ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-q] [-r] [-s] [ĐÁŇĎĚŘ]\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:304 +#: src/pwck.c:295 msgid "invalid password file entry\n" msgstr "ÎĹצŇÎÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐÁŇĎĚĹĘ\n" @@ -1766,32 +1747,24 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:366 +#: src/pwck.c:357 msgid "duplicate password entry\n" msgstr "ÄŐÂĚŔŔŢÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐÁŇĎĚĹĘ\n" -#: src/pwck.c:382 +#: src/pwck.c:373 #, c-format msgid "invalid user name `%s'\n" msgstr "ÎĹצŇÎĹ ¦Í'Ń ËĎŇÉÓÔŐ×ÁŢÁ `%s'\n" -#: src/pwck.c:392 -#, c-format -msgid "user %s: bad UID (%d)\n" -msgstr "ËĎŇÉÓÔŐ×ÁŢ %s: ĐĎÇÁÎÉĘ UID (%d)\n" - #. #. * No primary group, just give a warning #. -#: src/pwck.c:407 -#, c-format -msgid "user %s: no group %d\n" +#: src/pwck.c:388 +#, fuzzy, c-format +msgid "user %s: no group %u\n" msgstr "ËĎŇÉÓÔŐ×ÁŢ %s: ÎĹ ÍÁ¤ ÇŇŐĐÉ %d\n" -#. -#. * Home directory doesn't exist, give a warning -#. -#: src/pwck.c:422 +#: src/pwck.c:404 #, c-format msgid "user %s: directory %s does not exist\n" msgstr "ËĎŇÉÓÔŐ×ÁŢ %s: ÔĹËÁ %s ÎĹ ¦ÓÎŐ¤\n" @@ -1799,16 +1772,16 @@ msgstr " #. #. * Login shell doesn't exist, give a warning #. -#: src/pwck.c:437 +#: src/pwck.c:420 #, c-format msgid "user %s: program %s does not exist\n" msgstr "ËĎŇÉÓÔŐ×ÁŢ %s: ĐŇĎÇŇÁÍÁ %s ÎĹ ¦ÓÎŐ¤\n" #. -#. * Tell the user this entire line is bogus and -#. * ask them to delete it. +#. * Tell the user this entire line is bogus and ask +#. * them to delete it. #. -#: src/pwck.c:473 +#: src/pwck.c:456 msgid "invalid shadow password file entry\n" msgstr "ÎĹצŇÎÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" @@ -1816,7 +1789,7 @@ msgstr " #. * Tell the user this entry is a duplicate of #. * another and ask them to delete it. #. -#: src/pwck.c:535 +#: src/pwck.c:518 msgid "duplicate shadow password entry\n" msgstr "ÄŐÂĚŔŔŢÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" @@ -1824,70 +1797,70 @@ msgstr " #. * Tell the user this entry has no matching #. * /etc/passwd entry and ask them to delete it. #. -#: src/pwck.c:559 +#: src/pwck.c:542 msgid "no matching password file entry\n" msgstr "צÄÓŐÔÎ¦Ę ×¦ÄĐĎצÄÎÉĘ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐÁŇĎĚĹĘ\n" -#: src/pwck.c:576 +#: src/pwck.c:560 #, c-format msgid "user %s: last password change in the future\n" msgstr "ËĎŇÉÓÔŐ×ÁŢ %s: ĎÓÔÁÎÎŃ ÚͦÎÁ ĐÁŇĎĚŃ Ő ÍÁĘÂŐÔÎŘĎÍŐ\n" -#: src/pwconv.c:94 src/pwunconv.c:99 +#: src/pwconv.c:84 src/pwunconv.c:93 #, c-format msgid "%s: can't lock passwd file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/pwconv.c:99 src/pwunconv.c:104 +#: src/pwconv.c:89 src/pwunconv.c:98 #, c-format msgid "%s: can't open passwd file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/pwconv.c:126 +#: src/pwconv.c:117 #, c-format msgid "%s: can't remove shadow entry for %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄÁĚÉÔÉ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ ÄĚŃ %s\n" -#: src/pwconv.c:169 +#: src/pwconv.c:163 #, c-format msgid "%s: can't update passwd entry for %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ Ő ĆÁĘ̦ ĐÁŇĎĚĹĘ ÄĚŃ %s\n" -#: src/pwconv.c:176 +#: src/pwconv.c:170 #, c-format msgid "%s: can't update shadow file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/pwconv.c:180 +#: src/pwconv.c:175 #, c-format msgid "%s: can't update passwd file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/pwunconv.c:53 +#: src/pwunconv.c:50 #, c-format msgid "%s: Shadow passwords are not configured.\n" msgstr "%s: đŇÉČĎ×ÁΦ ĐÁŇĎ̦ ÎĹ ÚËĎÎƦÇŐŇĎ×ÁÎĎ.\n" -#: src/pwunconv.c:162 +#: src/pwunconv.c:160 #, c-format msgid "%s: can't update entry for user %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÎĎ×ÉÔÉ ÚÁĐÉÓ ÄĚŃ ËĎŇÉÓÔŐ×ÁŢÁ %s\n" -#: src/pwunconv.c:179 +#: src/pwunconv.c:181 #, c-format msgid "%s: can't delete shadow password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×ÉÄÁĚÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/su.c:140 +#: src/su.c:133 msgid "Sorry." msgstr "÷ÉÂÁŢÔĹ." -#: src/su.c:222 +#: src/su.c:216 #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: ĐĎ×ÉÎĎ ÂŐÔÉ ÚÁĐŐÝĹÎĎ Ú ÔĹŇͦÎÁĚŐ\n" -#: src/su.c:310 +#: src/su.c:306 #, c-format msgid "%s: pam_start: error %d\n" msgstr "%s: pam_start: ĐĎÍÉĚËÁ %d\n" @@ -1897,18 +1870,17 @@ msgstr "%s: pam_start: msgid "Unknown id: %s\n" msgstr "îĹצÄĎÍÉĘ id: %s\n" -#. access denied (-1) or unexpected value -#: src/su.c:371 src/su.c:386 +#: src/su.c:373 src/su.c:390 #, c-format msgid "You are not authorized to su %s\n" msgstr "÷É ÎĹ Á×ÔĎŇÉÚĎ×ÁΦ ÄĚŃ su %s\n" #. require own password -#: src/su.c:382 +#: src/su.c:385 msgid "(Enter your own password.)" msgstr "(÷×ĹĦÔŘ ×ÁŰ ĐÁŇĎĚŘ.)" -#: src/su.c:413 +#: src/su.c:419 #, c-format msgid "" "%s: %s\n" @@ -1917,28 +1889,23 @@ msgstr "" "%s: %s\n" "(¶ÇÎĎŇŐŔ)\n" -#: src/su.c:615 +#: src/su.c:626 msgid "No shell\n" msgstr "îĹÍÁ¤ shell\n" #. must be a password file! -#: src/sulogin.c:136 +#: src/sulogin.c:132 msgid "No password file\n" msgstr "îĹÍÁ¤ ĆÁĘĚÁ ĐÁŇĎĚĹĘ\n" #. #. * Fail secure #. -#: src/sulogin.c:178 +#: src/sulogin.c:174 msgid "No password entry for 'root'\n" msgstr "âŇÁËŐ¤ ÚÁĐÉÓŐ Ő ÂÁÚ¦ ĐÁŇĎĚĹĘ ÄĚŃ 'root'\n" -#. -#. * Here we prompt for the root password, or if no password is -#. * given we just exit. -#. -#. get a password for root -#: src/sulogin.c:192 +#: src/sulogin.c:190 msgid "" "\n" "Type control-d to proceed with normal startup,\n" @@ -1949,7 +1916,7 @@ msgstr "" "(ÁÂĎ ××ĹĦÔŘ ĐÁŇĎĚŘ ÁÄͦΦÓÔŇÁÔĎŇÁ ÄĚŃ ×¦ÄÎĎ×ĚĹÎÎŃ ÓÉÓÔĹÍÉ):" #. make new environment active -#: src/sulogin.c:241 +#: src/sulogin.c:243 msgid "Entering System Maintenance Mode\n" msgstr "÷ČĎÄÉÍĎ Ő ŇĹÖÉÍ ×¦ÄÎĎ×ĚĹÎÎŃ ÓÉÓÔĹÍÉ\n" @@ -1958,269 +1925,271 @@ msgstr " msgid "%s: rebuild the group database\n" msgstr "%s: ĐĹŇĹÓÔŇĎŔŔ ÂÁÚŐ ÇŇŐĐ\n" -#: src/useradd.c:258 +#: src/useradd.c:260 #, c-format msgid "%s: rebuild the shadow group database\n" msgstr "%s: ĐĹŇĹÓÔŇĎŔŔ ÂÁÚŐ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/useradd.c:295 src/usermod.c:974 +#: src/useradd.c:295 src/useradd.c:309 src/usermod.c:981 src/usermod.c:995 #, c-format msgid "%s: invalid numeric argument `%s'\n" msgstr "%s: ÎĹצŇÎÉĘ ŢÉÓĚĎ×ÉĘ ÁŇÇŐÍĹÎÔ `%s'\n" -#: src/useradd.c:351 +#: src/useradd.c:365 #, c-format msgid "%s: unknown gid %s\n" msgstr "%s: ÎĹצÄĎÍÉĘ gid %s\n" -#: src/useradd.c:358 src/useradd.c:660 src/useradd.c:1246 src/usermod.c:261 -#: src/usermod.c:1105 +#: src/useradd.c:373 src/useradd.c:676 src/useradd.c:1269 src/usermod.c:260 +#: src/usermod.c:1128 #, c-format msgid "%s: unknown group %s\n" msgstr "%s: ÎĹצÄĎÍÁ ÇŇŐĐÁ %s\n" -#: src/useradd.c:426 -#, c-format -msgid "group=%s,%ld basedir=%s skel=%s\n" +#: src/useradd.c:440 +#, fuzzy, c-format +msgid "group=%s,%u basedir=%s skel=%s\n" msgstr "ÇŇŐĐÁ=%s,%ld ÇĎĚĎ×ÎÁ_ÔĹËÁ=%s skel=%s\n" -#: src/useradd.c:429 +#: src/useradd.c:444 #, c-format msgid "shell=%s " msgstr "shell=%s " -#: src/useradd.c:431 +#: src/useradd.c:446 #, c-format msgid "inactive=%ld expire=%s" msgstr "ÎĹÁËÔÉ×ÎÉĘ=%ld ĐŇĎÓÔĎŇĎŢĹÎÉĘ=%s" -#: src/useradd.c:435 -#, c-format -msgid "GROUP=%ld\n" +#: src/useradd.c:450 +#, fuzzy, c-format +msgid "GROUP=%u\n" msgstr "çňőđá=%ld\n" -#: src/useradd.c:436 +#: src/useradd.c:451 #, c-format msgid "HOME=%s\n" msgstr "äďíáűîń_ôĺëá=%s\n" -#: src/useradd.c:438 +#: src/useradd.c:453 #, c-format msgid "INACTIVE=%ld\n" msgstr "îĺáëôé÷îéę=%ld\n" -#: src/useradd.c:439 +#: src/useradd.c:454 #, c-format msgid "EXPIRE=%s\n" msgstr "đňďóôňďţĺîéę=%s\n" -#: src/useradd.c:441 +#: src/useradd.c:456 #, c-format msgid "SHELL=%s\n" msgstr "SHELL=%s\n" -#: src/useradd.c:442 +#: src/useradd.c:457 #, c-format msgid "SKEL=%s\n" msgstr "SKEL=%s\n" -#: src/useradd.c:482 +#: src/useradd.c:498 #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ ÎĎ×ÉĘ ĆÁĘĚ ¦Ú ÚÎÁŢĹÎÎŃÍÉ ĐĎ ÚÁÍĎ×ŢĹ×ÁÎÎŔ\n" -#: src/useradd.c:488 +#: src/useradd.c:503 #, fuzzy, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ ÎĎ×ÉĘ ĆÁĘĚ ¦Ú ÚÎÁŢĹÎÎŃÍÉ ĐĎ ÚÁÍĎ×ŢĹ×ÁÎÎŔ\n" -#: src/useradd.c:582 src/useradd.c:593 +#: src/useradd.c:596 src/useradd.c:608 #, c-format msgid "%s: rename: %s" msgstr "%s: ĐĹŇĹĘÍĹÎŐ×ÁÎÎŃ: %s" -#: src/useradd.c:680 src/usermod.c:281 +#: src/useradd.c:697 src/usermod.c:281 #, c-format msgid "%s: group `%s' is a NIS group.\n" msgstr "%s: ÇŇŐĐÁ `%s' ¤ ÇŇŐĐĎŔ NIS.\n" -#: src/useradd.c:688 src/usermod.c:289 +#: src/useradd.c:706 src/usermod.c:290 #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: ÚÁÎÁÄÔĎ ÂÁÇÁÔĎ ÇŇŐĐ ×ËÁÚÁÎÎĎ (ÍÁËÓ %d).\n" -#: src/useradd.c:720 src/usermod.c:321 +#: src/useradd.c:738 src/usermod.c:322 #, c-format msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s\t[-u uid [-o]] [-g ÇŇŐĐÁ] [-G ÇŇŐĐÁ,...] \n" -#: src/useradd.c:723 +#: src/useradd.c:742 msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n" msgstr "\t\t[-d ÄĎÍÁŰÎŃ_ÔĹËÁ] [-s shell] [-c ËĎÍĹÎÔÁŇ] [-m [-k wzór]]\n" -#: src/useradd.c:726 src/usermod.c:327 +#: src/useradd.c:745 src/usermod.c:329 +#, fuzzy msgid "[-f inactive] [-e expire ] " -msgstr "[-f ÎĹÁËÔÉ×ÎÉĘ] [-e ĐŇĎÓÔŇĎŢĹÎÉĘ ]" +msgstr "[-f ÎĹÁËÔÉ×ÎÉĘ] [-e ĐŇĎÓÔŇĎŢĹÎÉĘ]" -#: src/useradd.c:729 +#: src/useradd.c:748 msgid "[-A program] " msgstr "[-A ĐŇĎÇŇÁÍÁ] " -#: src/useradd.c:731 +#: src/useradd.c:750 msgid "[-p passwd] name\n" msgstr "[-p ĐÁŇĎĚŘ] ¦Í'Ń\n" -#: src/useradd.c:733 +#: src/useradd.c:753 #, c-format msgid " %s\t-D [-g group] [-b base] [-s shell]\n" msgstr " %s\t-D [-g ÇŇŐĐÁ] [-b ÂÁÚĎ×Á_ÔĹËÁ] [-s shell]\n" -#: src/useradd.c:736 +#: src/useradd.c:756 +#, fuzzy msgid "\t\t[-f inactive] [-e expire ]\n" -msgstr "\t\t[-f ÎĹÁËÔÉ×ÎÉĘ] [-e ĐŇĎÓÔŇĎŢĹÎÉĘ ]\n" +msgstr "\t\t[-f ÎĹÁËÔÉ×ÎÉĘ] [-e ĐŇĎÓÔŇĎŢĹÎÉĘ]\n" -#: src/useradd.c:833 src/usermod.c:479 +#: src/useradd.c:850 src/usermod.c:480 #, c-format msgid "%s: error locking group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/useradd.c:837 src/usermod.c:484 +#: src/useradd.c:855 src/usermod.c:486 #, c-format msgid "%s: error opening group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/useradd.c:842 src/usermod.c:591 +#: src/useradd.c:862 src/usermod.c:597 #, c-format msgid "%s: error locking shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚÁÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/useradd.c:847 src/usermod.c:597 +#: src/useradd.c:867 src/usermod.c:603 #, c-format msgid "%s: error opening shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/useradd.c:1019 -#, c-format -msgid "%s: uid %d is not unique\n" -msgstr "%s: uid %d ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" +#: src/useradd.c:1039 +#, fuzzy, c-format +msgid "%s: uid %u is not unique\n" +msgstr "%s: uid %ld ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" -#: src/useradd.c:1049 +#: src/useradd.c:1069 #, c-format msgid "%s: can't get unique uid\n" msgstr "%s: ÎĹ ÍĎÖŐ ĎÔŇÉÍÁÔÉ ŐΦËÁĚŘÎ¦Ę uid\n" -#: src/useradd.c:1157 src/useradd.c:1301 src/usermod.c:1053 src/usermod.c:1064 -#: src/usermod.c:1074 src/usermod.c:1120 src/usermod.c:1164 +#: src/useradd.c:1174 src/useradd.c:1325 src/usermod.c:1075 src/usermod.c:1086 +#: src/usermod.c:1096 src/usermod.c:1143 src/usermod.c:1187 #, c-format msgid "%s: invalid field `%s'\n" msgstr "%s: ÎĹצŇÎĹ ĐĎĚĹ `%s'\n" -#: src/useradd.c:1171 +#: src/useradd.c:1189 #, c-format msgid "%s: invalid base directory `%s'\n" msgstr "%s: ÎĹצŇÎÁ ÂÁÚĎ×Á ÔĹËÁ `%s'\n" -#: src/useradd.c:1181 +#: src/useradd.c:1199 #, c-format msgid "%s: invalid comment `%s'\n" msgstr "%s: ÎĹצŇÎÉĘ ËĎÍĹÎÔÁŇ `%s'\n" -#: src/useradd.c:1191 +#: src/useradd.c:1210 #, c-format msgid "%s: invalid home directory `%s'\n" msgstr "%s: ÎĹצŇÎÁ ÄĎÍÁŰÎŃ ÔĹËÁ `%s'\n" -#: src/useradd.c:1209 src/usermod.c:1087 +#: src/useradd.c:1229 src/usermod.c:1110 #, c-format msgid "%s: invalid date `%s'\n" msgstr "%s: ÎĹצŇÎÁ ÄÁÔÁ `%s'\n" -#: src/useradd.c:1221 +#: src/useradd.c:1242 #, c-format msgid "%s: shadow passwords required for -e\n" msgstr "%s: ĐŇÉČĎ×ÁΦ ĐÁŇĎ̦ ĐĎÔҦÂΦ ÄĚŃ -e\n" -#: src/useradd.c:1236 +#: src/useradd.c:1258 #, c-format msgid "%s: shadow passwords required for -f\n" msgstr "%s: ĐŇÉČĎ×ÁΦ ĐÁŇĎ̦ ĐĎÔҦÂΦ ÄĚŃ -f\n" -#: src/useradd.c:1310 +#: src/useradd.c:1336 #, c-format msgid "%s: invalid shell `%s'\n" msgstr "%s: ÎĹצŇÎÉĘ shell `%s'\n" -#: src/useradd.c:1351 +#: src/useradd.c:1377 #, c-format msgid "%s: invalid user name `%s'\n" msgstr "%s: ÎĹצŇÎĹ ¦Í'Ń ËĎŇÉÓÔŐ×ÁŢÁ `%s'\n" -#: src/useradd.c:1387 src/userdel.c:298 src/usermod.c:1232 +#: src/useradd.c:1413 src/userdel.c:298 src/usermod.c:1255 #, c-format msgid "%s: cannot rewrite password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1392 src/userdel.c:301 src/usermod.c:1237 +#: src/useradd.c:1420 src/userdel.c:303 src/usermod.c:1262 #, c-format msgid "%s: cannot rewrite shadow password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1432 src/userdel.c:365 src/usermod.c:1272 +#: src/useradd.c:1461 src/userdel.c:367 src/usermod.c:1296 #, c-format msgid "%s: unable to lock password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1436 src/userdel.c:369 src/usermod.c:1276 +#: src/useradd.c:1466 src/userdel.c:372 src/usermod.c:1301 #, c-format msgid "%s: unable to open password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1442 src/userdel.c:374 src/usermod.c:1281 +#: src/useradd.c:1474 src/userdel.c:379 src/usermod.c:1308 #, c-format msgid "%s: cannot lock shadow password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1448 src/userdel.c:379 src/usermod.c:1286 +#: src/useradd.c:1481 src/userdel.c:385 src/usermod.c:1314 #, c-format msgid "%s: cannot open shadow password file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1547 src/usermod.c:1373 +#: src/useradd.c:1580 src/usermod.c:1405 #, c-format msgid "%s: error adding authentication method\n" msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÍĹÔĎÄŐ ÁŐÔĹÎÔÉƦËÁæ§\n" -#: src/useradd.c:1570 +#: src/useradd.c:1604 #, c-format msgid "%s: error adding new password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÎĎ×ĎÇĎ ÚÁĐÉÓŐ Ő ÂÁÚŐ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1585 +#: src/useradd.c:1618 #, c-format msgid "%s: error updating password dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ÚÁĐÉÓŐ Ő ÂÁÚ¦ ĐÁŇĎĚĹĘ dbm\n" -#: src/useradd.c:1601 src/usermod.c:1432 +#: src/useradd.c:1634 src/usermod.c:1471 #, c-format msgid "%s: error adding new shadow password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÎĎ×ĎÇĎ ÚÁĐÉÓŐ Ő ÂÁÚŐ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/useradd.c:1617 src/usermod.c:1447 +#: src/useradd.c:1650 src/usermod.c:1488 #, c-format msgid "%s: error updating shadow passwd dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ÚÁĐÉÓŐ Ő ÂÁÚ¦ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ dbm\n" -#: src/useradd.c:1649 +#: src/useradd.c:1682 #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ ÔĹËŐ %s\n" -#: src/useradd.c:1772 src/usermod.c:1210 +#: src/useradd.c:1806 src/usermod.c:1233 #, c-format msgid "%s: user %s exists\n" msgstr "%s: ËĎŇÉÓÔŐ×ÁŢ %s ¦ÓÎŐ¤\n" -#: src/useradd.c:1784 +#: src/useradd.c:1821 #, c-format msgid "" "%s: group %s exists - if you want to add this user to that group, use -g.\n" @@ -2228,239 +2197,240 @@ msgstr "" "%s: ÇŇŐĐÁ %s ¦ÓÎŐ¤ - ŃËÝĎ ×É ÂÁÖÁ¤ÔĹ ÄĎÄÁÔÉ ËĎŇÉÓÔŐ×ÁŢÁ ÄĎ Ă¦¤§ ÇŇŐĐÉ, " "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ -g.\n" -#: src/useradd.c:1815 +#: src/useradd.c:1854 #, c-format msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n" msgstr "%s: ÚÁÓÔĹŇĹÖĹÎÎŃ: CREATE_HOME ΊЦÄÔŇÉÍŐ¤ÔŘÓŃ, ËĎŇÉÓÔŐĘÔĹÓŘ -m.\n" -#: src/userdel.c:133 +#: src/userdel.c:129 #, c-format msgid "usage: %s [-r] name\n" msgstr "×ÉËĎŇÉÓÔĎ×ŐĘÔĹ: %s [-r] ¦Í'Ń\n" -#: src/userdel.c:184 src/userdel.c:266 +#: src/userdel.c:181 src/userdel.c:267 #, c-format msgid "%s: error updating group entry\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ÚÁĐÉÓŐ Ő ÂÁÚ¦ ÇŇŐĐ\n" -#: src/userdel.c:194 src/userdel.c:275 +#: src/userdel.c:191 src/userdel.c:276 #, c-format msgid "%s: cannot update dbm group entry\n" msgstr "%s: ĐĎÍÉĚËÁ ĎÎĎ×ĚĹÎÎŃ ÚÁĐÉÓŐ Ő ÂÁÚ¦ ÇŇŐĐ dbm\n" -#: src/userdel.c:221 +#: src/userdel.c:219 #, fuzzy, c-format msgid "%s: cannot remove dbm group entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ő ÂÁÚ¦ ÇŇŐĐ dbm\n" -#: src/userdel.c:306 +#: src/userdel.c:308 #, c-format msgid "%s: cannot rewrite TCFS key file\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĐÉÓÁÔÉ ĆÁĘĚ ËĚŔŢĹĘ TCFS\n" -#: src/userdel.c:386 +#: src/userdel.c:392 #, c-format msgid "%s: cannot lock TCFS key file\n" msgstr "%s: ÎĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ ËĚŔŢĹĘ TCFS\n" -#: src/userdel.c:390 +#: src/userdel.c:397 #, c-format msgid "%s: cannot open TCFS key file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ËĚŔŢĹĘ TCFS\n" -#: src/userdel.c:399 +#: src/userdel.c:408 #, c-format msgid "%s: cannot open group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ÇŇŐĐ\n" -#: src/userdel.c:409 +#: src/userdel.c:419 #, c-format msgid "%s: cannot open shadow group file\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄËŇÉÔÉ ĆÁĘĚ ĐŇÉČĎ×ÁÎÉČ ÇŇŐĐ\n" -#: src/userdel.c:440 src/userdel.c:455 +#: src/userdel.c:451 src/userdel.c:468 #, c-format msgid "%s: error deleting authentication\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÍĹÔĎÄŐ ÁŐÔĹÎÔÉƦËÁæ§\n" -#: src/userdel.c:464 +#: src/userdel.c:479 #, c-format msgid "%s: error deleting password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ĐÁŇĎĚĹĘ\n" -#: src/userdel.c:467 +#: src/userdel.c:485 #, c-format msgid "%s: error deleting shadow password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/userdel.c:476 +#: src/userdel.c:496 #, c-format msgid "%s: error deleting TCFS entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ TCFS\n" -#: src/userdel.c:489 +#: src/userdel.c:510 #, c-format msgid "%s: error deleting password dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ dbm Ú ÂÁÚÉ ĐÁŇĎĚĹĘ\n" -#: src/userdel.c:508 +#: src/userdel.c:533 #, c-format msgid "%s: error deleting shadow passwd dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ dbm Ú ÂÁÚÉ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/userdel.c:549 +#: src/userdel.c:569 #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: ËĎŇÉÓÔŐ×ÁŢ %s ÎÁ ÄÁÎÎÉĘ ÍĎÍĹÎÔ Ő ÓÉÓÔĹͦ\n" -#: src/userdel.c:666 +#: src/userdel.c:659 #, c-format msgid "%s: warning: %s not owned by %s, not removing\n" msgstr "%s: ÚÁÓÔĹŇĹÖĹÎÎŃ: %s ÎĹ ÎÁĚĹÖÉÔŘ %s, ÎĹ ×ÉÄÁĚĹÎĎ\n" -#: src/userdel.c:672 +#: src/userdel.c:666 #, c-format msgid "%s: warning: can't remove " msgstr "%s: ÚÁÓÔĹŇĹÖĹÎÎŃ: ÎĹ ÍĎÖŐ ×ÉÄÁĚÉÔÉ " -#: src/userdel.c:791 src/usermod.c:1001 +#: src/userdel.c:758 src/usermod.c:1023 #, c-format msgid "%s: user %s does not exist\n" msgstr "%s: ËĎŇÉÔÓÔŐ×ÁŢ %s ÎĹ ¦ÓÎŐ¤\n" -#: src/userdel.c:805 src/usermod.c:1017 +#: src/userdel.c:770 src/usermod.c:1039 #, c-format msgid "%s: user %s is a NIS user\n" msgstr "%s: ËĎŇÉÓÔŐ×ÁŢ %s ¤ ËĎŇÉÓÔŐ×ÁŢ NIS\n" -#: src/userdel.c:842 +#: src/userdel.c:799 #, c-format msgid "%s: %s not owned by %s, not removing\n" msgstr "%s: %s ÎĹ ÎÁĚĹÖÉÔŘ %s, ÎĹ ×ÉÄÁĚĹÎĎ\n" -#: src/userdel.c:865 +#: src/userdel.c:818 #, c-format msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "%s: ÎĹ ×ÉÄÁĚĹÎĎ ÔĹËŐ %s (ÍĎÖÎÁ ×ÉÄÁĚÉÔÉ ÄĎÍÁŰÎŔ ÔĹËŐ ËĎŇÉÓÔŐ×ÁŢÁ %s)\n" -#: src/userdel.c:878 +#: src/userdel.c:830 #, c-format msgid "%s: error removing directory %s\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÔĹËÉ %s\n" -#: src/usermod.c:324 +#: src/usermod.c:326 msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n" msgstr "\t\t[-d ÄĎÍÁŰÎŃ_ÔĹËÁ [-m]] [-s shell] [-c ËĎÍĹÎÔÁŇ] [-l ÎĎ×Ĺ_¦Í'Ń]\n" -#: src/usermod.c:330 -msgid "[-A {DEFAULT|program},... ] " -msgstr "[-A {DEFAULT|program},... ] " - #: src/usermod.c:332 #, fuzzy +msgid "[-A {DEFAULT|program},... ] " +msgstr "[-A {DEFAULT|program},...] " + +#: src/usermod.c:334 +#, fuzzy msgid "[-p passwd] [-L|-U] name\n" msgstr "[-p ĐÁŇĎĚŘ] ¦Í'Ń\n" -#: src/usermod.c:511 +#: src/usermod.c:514 #, c-format msgid "%s: out of memory in update_group\n" msgstr "%s: ÂŇÁËŐ¤ ĐÁÍŃÔ¦ Ő pdate_group\n" -#: src/usermod.c:634 +#: src/usermod.c:641 #, c-format msgid "%s: out of memory in update_gshadow\n" msgstr "%s: ÂŇÁËŐ¤ ĐÁÍŃÔ¦ Ő update_gshadow\n" -#: src/usermod.c:1187 +#: src/usermod.c:1210 #, c-format msgid "%s: no flags given\n" msgstr "%s: ÎĹ ĐĎÄÁÎĎ ĆĚÁǦ×\n" -#: src/usermod.c:1194 +#: src/usermod.c:1217 #, c-format msgid "%s: shadow passwords required for -e and -f\n" msgstr "%s: ĐŇÉČĎ×ÁΦ ĐÁŇĎ̦ ĐĎÔҦÂΦ ÄĚŃ -e ¦ -f\n" -#: src/usermod.c:1215 -#, c-format -msgid "%s: uid %ld is not unique\n" +#: src/usermod.c:1239 +#, fuzzy, c-format +msgid "%s: uid %lu is not unique\n" msgstr "%s: uid %ld ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" -#: src/usermod.c:1363 +#: src/usermod.c:1392 #, c-format msgid "%s: error deleting authentication method\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÍĹÔĎÄŐ ÁŐÔĹÎÔÉƦËÁæ§\n" -#: src/usermod.c:1383 +#: src/usermod.c:1418 #, c-format msgid "%s: error changing authentication method\n" msgstr "%s: ĐĎÍÉĚËÁ ÚÁͦÎÉ ÍĹÔĎÄŐ ÁŐÔĹÎÔÉƦËÁæ§\n" -#: src/usermod.c:1400 +#: src/usermod.c:1436 #, c-format msgid "%s: error changing password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ÚͦÎÉ ÚÁĐÉÓŐ × ÂÁÚ¦ ĐÁŇĎĚĹĘ\n" -#: src/usermod.c:1406 +#: src/usermod.c:1442 #, c-format msgid "%s: error removing password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ĐÁŇĎĚĹĘ\n" -#: src/usermod.c:1414 +#: src/usermod.c:1451 #, c-format msgid "%s: error adding password dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ÄĎÄÁÎÎŃ ÚÁĐÉÓŐ dbm Ő ÂÁÚŐ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/usermod.c:1421 +#: src/usermod.c:1459 #, c-format msgid "%s: error removing passwd dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ dbm Ú ÂÁÚÉ ĐÁŇĎĚĹĘ\n" -#: src/usermod.c:1438 +#: src/usermod.c:1478 #, c-format msgid "%s: error removing shadow password entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ Ú ÂÁÚÉ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/usermod.c:1453 +#: src/usermod.c:1495 #, c-format msgid "%s: error removing shadow passwd dbm entry\n" msgstr "%s: ĐĎÍÉĚËÁ ×ÉÄÁĚĹÎÎŃ ÚÁĐÉÓŐ dbm Ú ÂÁÚÉ ĐŇÉČĎ×ÁÎÉČ ĐÁŇĎĚĹĘ\n" -#: src/usermod.c:1484 +#: src/usermod.c:1524 #, c-format msgid "%s: directory %s exists\n" msgstr "%s: ÔĹËÁ %s ¦ÓÎŐ¤\n" -#: src/usermod.c:1491 +#: src/usermod.c:1533 #, c-format msgid "%s: can't create %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ÓÔ×ĎŇÉÔÉ %s\n" -#: src/usermod.c:1497 +#: src/usermod.c:1539 #, c-format msgid "%s: can't chown %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ÚͦÎÉÔÉ ×ĎĚĎÄÁŇŃ %s\n" -#: src/usermod.c:1513 +#: src/usermod.c:1556 #, c-format msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: ÎĹ ÍĎÖŐ ĐĹŇĹĘÍĹÎŐ×ÁÔÉ ÔĹËŐ Ú %s ÎÁ %s\n" #. better leave it alone -#: src/usermod.c:1610 +#: src/usermod.c:1653 #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: ÚÁÓÔĹŇĹÖĹÎÎŃ: %s ÎĹ ÎÁĚĹÖÉÔŘ %s\n" -#: src/usermod.c:1616 +#: src/usermod.c:1659 msgid "failed to change mailbox owner" msgstr "ÎĹ ÍĎÖŐ ÚͦÎÉÔÉ ×ĎĚĎÄÁŇŃ ĐĎŰÔĎ×ϧ ÓËŇÉÎŘËÉ" -#: src/usermod.c:1623 +#: src/usermod.c:1667 msgid "failed to rename mailbox" msgstr "ÎĹ ÍĎÖŐ ĐĹŇĹĘÍĹÎŐ×ÁÔÉ ĐĎŰÔĎ×Ő ÓËŇÉÎŘËŐ" -#: src/vipw.c:102 +#: src/vipw.c:104 #, c-format msgid "" "\n" @@ -2469,21 +2439,21 @@ msgstr "" "\n" "%s: %s ¤ ÎĹÚͦÎĹÎÉĘ\n" -#: src/vipw.c:127 +#: src/vipw.c:132 #, fuzzy msgid "Couldn't lock file" msgstr "%s: îĹ ÍĎÖŐ ÂĚĎËŐ×ÁÔÉ ĆÁĘĚ\n" -#: src/vipw.c:134 +#: src/vipw.c:141 msgid "Couldn't make backup" msgstr "îĹ ÍĎÖŐ ÚŇĎÂÉÔÉ ŇĹÚĹŇ×ÎŐ ËĎЦŔ" -#: src/vipw.c:187 +#: src/vipw.c:206 #, c-format msgid "%s: can't restore %s: %s (your changes are in %s)\n" msgstr "%s: ÎĹ ÍĎÖŐ ×¦ÄÎĎ×ÉÔÉ %s: %s (×Áۦ ÚͦÎÉ Ő %s)\n" -#: src/vipw.c:226 +#: src/vipw.c:244 msgid "" "Usage:\n" "`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n" @@ -2493,6 +2463,25 @@ msgstr "" "`vipw' ŇĹÄÁÇŐ¤ /etc/passwd `vipw -s' ŇĹÄÁÇŐ¤ /etc/shadow\n" "`vigr' ŇĹÄÁÇŐ¤ /etc/group `vigr -s' ŇĹÄÁÇŐ¤ /etc/gshadow\n" +#~ msgid "%s: gid %ld is not unique\n" +#~ msgstr "%s: gid %ld ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" + +#, fuzzy +#~ msgid "unknown gid: %u\n" +#~ msgstr "ÎĹצÄĎÍÉĘ gid: %d\n" + +#~ msgid "%s: uid %d is not unique\n" +#~ msgstr "%s: uid %d ÎĹ ¤ ŐΦËÁĚŘÎÉÍ\n" + +#~ msgid "user %s: bad UID (%d)\n" +#~ msgstr "ËĎŇÉÓÔŐ×ÁŢ %s: ĐĎÇÁÎÉĘ UID (%d)\n" + +#~ msgid "%s: no aging information present\n" +#~ msgstr "%s: ÎĹÍÁ¤ ¦ÎĆĎŇÍÁæ§ ĐŇĎ ×¦Ë\n" + +#~ msgid "group %s: bad GID (%d)\n" +#~ msgstr "ÇŇŐĐÁ %s: ÍÁ¤ ÎĹצŇÎÉĘ GID (%d)\n" + #~ msgid "%s: permission denied (shell).\n" #~ msgstr "%s: ÄĎÓÔŐĐ ÚÁÂĎŇĎÎĹÎĎ (shell).\n" diff --git a/src/Makefile.am b/src/Makefile.am index 9a6c4bd6..55370cf1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,8 +29,7 @@ usbin_PROGRAMS = chpasswd dpasswd groupadd groupdel groupmod \ noinst_PROGRAMS = id sulogin -# id and groups are from gnu, sulogin from sysvinit, -# also suid programs are installed by hand. +# id and groups are from gnu, sulogin from sysvinit suidbins = su suidubins = chage chfn chsh expiry gpasswd newgrp passwd @@ -54,6 +53,8 @@ userdel_LDADD = $(LDADD) $(LIBPAM) usermod_LDADD = $(LDADD) $(LIBPAM) install-exec-hook: + $(LN_S) newgrp $(DESTDIR)$(bindir)/sg + $(LN_S) vigr $(DESTDIR)$(bindir)/vipw for i in $(suidbins); do \ chmod 4755 $(DESTDIR)$(bindir)/$$i; \ done @@ -62,5 +63,3 @@ install-data-hook: for i in $(suidubins); do \ chmod 4755 $(DESTDIR)$(ubindir)/$$i; \ done - rm -f $(DESTDIR)$(ubindir)/sg - ln -s newgrp $(DESTDIR)$(ubindir)/sg diff --git a/src/Makefile.in b/src/Makefile.in index ad3b8435..744a2788 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -140,8 +140,7 @@ usbin_PROGRAMS = chpasswd dpasswd groupadd groupdel groupmod \ noinst_PROGRAMS = id sulogin -# id and groups are from gnu, sulogin from sysvinit, -# also suid programs are installed by hand. +# id and groups are from gnu, sulogin from sysvinit suidbins = su suidubins = chage chfn chsh expiry gpasswd newgrp passwd @@ -795,6 +794,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ install-exec-hook: + $(LN_S) newgrp $(DESTDIR)$(bindir)/sg + $(LN_S) vigr $(DESTDIR)$(bindir)/vipw for i in $(suidbins); do \ chmod 4755 $(DESTDIR)$(bindir)/$$i; \ done @@ -803,8 +804,6 @@ install-data-hook: for i in $(suidubins); do \ chmod 4755 $(DESTDIR)$(ubindir)/$$i; \ done - rm -f $(DESTDIR)$(ubindir)/sg - ln -s newgrp $(DESTDIR)$(ubindir)/sg # 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/src/chage.c b/src/chage.c index 7932356b..bea066c9 100644 --- a/src/chage.c +++ b/src/chage.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: chage.c,v 1.19 2000/10/09 18:39:50 kloczek Exp $") - +RCSID (PKG_VER "$Id: chage.c,v 1.27 2002/01/05 15:41:43 kloczek Exp $") #include #include #include @@ -40,54 +39,34 @@ RCSID(PKG_VER "$Id: chage.c,v 1.19 2000/10/09 18:39:50 kloczek Exp $") #include #include "prototypes.h" #include "defines.h" - -#include - #ifdef USE_PAM #include #include +#endif /* USE_PAM */ #include -#endif /* USE_PAM */ - -/* - * chage depends on some form of aging being present. It makes no sense - * to have a program that has no input. - */ - -#ifdef SHADOWPWD -#ifndef AGING -#define AGING -#endif /* AGING */ -#else /* !SHADOWPWD */ -#if !defined(ATT_AGE) && defined(AGING) -#undef AGING -#endif /* !ATT_AGE && AGING */ -#endif /* SHADOWPWD */ - -static char *Prog; -static int amroot; - -#ifdef AGING /*{*/ - /* * Global variables */ +static char *Prog; + +static int locks; + +static long mindays; +static long maxdays; +static long lastday; -static long mindays; -static long maxdays; -static long lastday; #ifdef SHADOWPWD -static long warndays; -static long inactdays; -static long expdays; +static long warndays; +static long inactdays; +static long expdays; #endif /* * External identifiers */ -extern long a64l(); -extern char *l64a(); +extern long a64l (); +extern char *l64a (); #include "pwio.h" @@ -95,56 +74,31 @@ extern char *l64a(); #include "shadowio.h" #endif -extern int optind; -extern char *optarg; #ifdef NDBM -extern int pw_dbm_mode; +extern int pw_dbm_mode; + #ifdef SHADOWPWD -extern int sp_dbm_mode; +extern int sp_dbm_mode; #endif #endif -/* - * #defines for messages. This facilitates foreign language conversion - * since all messages are defined right here. - */ - -/* - * xgettext doesn't like #defines, so now we only leave untranslated - * messages here. -MM - */ - -#define AGE_CHANGED "changed password expiry for %s\n" -#define LOCK_FAIL "failed locking %s\n" -#define OPEN_FAIL "failed opening %s\n" -#define WRITE_FAIL "failed updating %s\n" -#define CLOSE_FAIL "failed rewriting %s\n" - #define EPOCH "1969-12-31" -#ifdef SHADOWPWD -#define DBMERROR2 "error updating DBM shadow entry.\n" -#else -#define DBMERROR2 "error updating DBM passwd entry.\n" -#endif - /* local function prototypes */ -static void usage(void); -static void date_to_str(char *, size_t, time_t); -static int new_fields(void); -static void print_date(time_t); -static void list_fields(void); -static void cleanup(int); - +static void usage (void); +static void date_to_str (char *, size_t, time_t); +static int new_fields (void); +static void print_date (time_t); +static void list_fields (void); +static void cleanup (int); /* * isnum - determine whether or not a string is a number */ -int -isnum(const char *s) +int isnum (const char *s) { while (*s) { - if (!isdigit(*s)) + if (!isdigit (*s)) return 0; s++; } @@ -155,62 +109,69 @@ isnum(const char *s) * usage - print command line syntax and exit */ -static void -usage(void) +static void usage (void) { #ifdef SHADOWPWD - fprintf(stderr, _("Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -W warn ]\n [ -I inactive ] [ -E expire ] [ -d last_day ] user\n"), Prog); + fprintf (stderr, + _("Usage: %s [-l] [-m min_days] [-M max_days] [-W warn]\n" + "\t[-I inactive] [-E expire] [-d last_day] user\n"), + Prog); #else - fprintf(stderr, _("Usage: %s [ -l ] [ -m min_days ] [ -M max_days ] [ -d last_day ] user\n"), Prog); + fprintf (stderr, + _ + ("Usage: %s [-l] [-m min_days] [-M max_days] [-d last_day] user\n"), + Prog); #endif - exit(1); + exit (1); } -static void -date_to_str(char *buf, size_t maxsize, time_t date) +static void date_to_str (char *buf, size_t maxsize, time_t date) { struct tm *tp; - tp = gmtime(&date); + tp = gmtime (&date); #ifdef HAVE_STRFTIME - strftime(buf, maxsize, "%Y-%m-%d", tp); + strftime (buf, maxsize, "%Y-%m-%d", tp); #else - snprintf(buf, maxsize, "%04d-%02d-%02d", - tp->tm_year + 1900, tp->tm_mon + 1, tp->tm_mday); -#endif /* HAVE_STRFTIME */ + 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. * - * prompt the user for all of the password age values. set the fields - * from the user's response, or leave alone if nothing was entered. the + * prompt the user for all of the password age values. set the fields + * from the user's response, or leave alone if nothing was entered. The * value (-1) is used to indicate the field should be removed if possible. - * any other negative value is an error. very large positive values will + * any other negative value is an error. very large positive values will * be handled elsewhere. */ -static int -new_fields(void) +static int new_fields (void) { - char buf[200]; - char *cp; + char buf[200]; + char *cp; - printf(_("Enter the new value, or press return for the default\n\n")); + printf (_ + ("Enter the new value, or press ENTER for the default\n\n")); - snprintf(buf, sizeof buf, "%ld", mindays); - change_field(buf, sizeof buf, _("Minimum Password Age")); - if (((mindays = strtol (buf, &cp, 10)) == 0 && *cp) || mindays < -1) + snprintf (buf, sizeof buf, "%ld", mindays); + change_field (buf, sizeof buf, _("Minimum Password Age")); + if (((mindays = strtol (buf, &cp, 10)) == 0 && *cp) + || mindays < -1) return 0; - snprintf(buf, sizeof buf, "%ld", maxdays); - change_field(buf, sizeof buf, _("Maximum Password Age")); - if (((maxdays = strtol (buf, &cp, 10)) == 0 && *cp) || maxdays < -1) + snprintf (buf, sizeof buf, "%ld", maxdays); + change_field (buf, sizeof buf, _("Maximum Password Age")); + if (((maxdays = strtol (buf, &cp, 10)) == 0 && *cp) + || maxdays < -1) return 0; - date_to_str(buf, sizeof buf, lastday * SCALE); + date_to_str (buf, sizeof buf, lastday * SCALE); - change_field(buf, sizeof buf, _("Last Password Change (YYYY-MM-DD)")); + change_field (buf, sizeof buf, + _("Last Password Change (YYYY-MM-DD)")); if (strcmp (buf, EPOCH) == 0) lastday = -1; @@ -218,59 +179,60 @@ new_fields(void) return 0; #ifdef SHADOWPWD - snprintf(buf, sizeof buf, "%ld", warndays); + snprintf (buf, sizeof buf, "%ld", warndays); change_field (buf, sizeof buf, _("Password Expiration Warning")); - if (((warndays = strtol (buf, &cp, 10)) == 0 && *cp) || warndays < -1) + if (((warndays = strtol (buf, &cp, 10)) == 0 && *cp) + || warndays < -1) return 0; - snprintf(buf, sizeof buf, "%ld", inactdays); - change_field(buf, sizeof buf, _("Password Inactive")); - if (((inactdays = strtol (buf, &cp, 10)) == 0 && *cp) || inactdays < -1) + snprintf (buf, sizeof buf, "%ld", inactdays); + change_field (buf, sizeof buf, _("Password Inactive")); + if (((inactdays = strtol (buf, &cp, 10)) == 0 && *cp) + || inactdays < -1) return 0; - date_to_str(buf, sizeof buf, expdays * SCALE); + date_to_str (buf, sizeof buf, expdays * SCALE); - change_field(buf, sizeof buf, _("Account Expiration Date (YYYY-MM-DD)")); + change_field (buf, sizeof buf, + _("Account Expiration Date (YYYY-MM-DD)")); if (strcmp (buf, EPOCH) == 0) expdays = -1; else if ((expdays = strtoday (buf)) == -1) return 0; -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ return 1; } -static void -print_date(time_t date) +static void print_date (time_t date) { #ifdef HAVE_STRFTIME struct tm *tp; char buf[80]; - tp = gmtime(&date); - strftime(buf, sizeof buf, "%b %d, %Y", tp); - puts(buf); + tp = gmtime (&date); + strftime (buf, sizeof buf, "%b %d, %Y", tp); + puts (buf); #else struct tm *tp; char *cp; - tp = gmtime(&date); - cp = asctime(tp); - printf("%6.6s, %4.4s\n", cp + 4, cp + 20); + tp = gmtime (&date); + cp = asctime (tp); + printf ("%6.6s, %4.4s\n", cp + 4, cp + 20); #endif } /* * list_fields - display the current values of the expiration fields * - * display the password age information from the password fields. date + * display the password age information from the password fields. Date * values will be displayed as a calendar date, or the word "Never" if * the date is 1/1/70, which is day number 0. */ -static void -list_fields(void) +static void list_fields (void) { long changed = 0; long expires; @@ -278,62 +240,60 @@ list_fields(void) /* * Start with the easy numbers - the number of days before the * password can be changed, the number of days after which the - * password must be chaged, the number of days before the - * password expires that the user is told, and the number of - * days after the password expires that the account becomes - * unusable. + * password must be chaged, the number of days before the password + * expires that the user is told, and the number of days after the + * password expires that the account becomes unusable. */ - printf(_("Minimum:\t%ld\n"), mindays); - printf(_("Maximum:\t%ld\n"), maxdays); + printf (_("Minimum:\t%ld\n"), mindays); + printf (_("Maximum:\t%ld\n"), maxdays); #ifdef SHADOWPWD - printf(_("Warning:\t%ld\n"), warndays); - printf(_("Inactive:\t%ld\n"), inactdays); + printf (_("Warning:\t%ld\n"), warndays); + printf (_("Inactive:\t%ld\n"), inactdays); #endif /* - * The "last change" date is either "Never" or the date the - * password was last modified. The date is the number of - * days since 1/1/1970. + * The "last change" date is either "Never" or the date the password + * was last modified. The date is the number of days since 1/1/1970. */ - printf(_("Last Change:\t\t")); + printf (_("Last Change:\t\t")); if (lastday <= 0) { - printf(_("Never\n")); + printf (_("Never\n")); } else { changed = lastday * SCALE; - print_date(changed); + print_date (changed); } /* - * The password expiration date is determined from the last - * change date plus the number of days the password is valid - * for. + * The password expiration date is determined from the last change + * date plus the number of days the password is valid for. */ - printf(_("Password Expires:\t")); - if (lastday <= 0 || maxdays >= 10000*(DAY/SCALE) || maxdays <= 0) { + printf (_("Password Expires:\t")); + if (lastday <= 0 || maxdays >= 10000 * (DAY / SCALE) + || maxdays <= 0) { printf (_("Never\n")); } else { expires = changed + maxdays * SCALE; - print_date(expires); + print_date (expires); } #ifdef SHADOWPWD /* - * The account becomes inactive if the password is expired - * for more than "inactdays". The expiration date is calculated - * and the number of inactive days is added. The resulting date - * is when the active will be disabled. + * The account becomes inactive if the password is expired for more + * than "inactdays". The expiration date is calculated and the + * number of inactive days is added. The resulting date is when the + * active will be disabled. */ - printf(_("Password Inactive:\t")); + printf (_("Password Inactive:\t")); if (lastday <= 0 || inactdays <= 0 || - maxdays >= 10000*(DAY/SCALE) || maxdays <= 0) { + maxdays >= 10000 * (DAY / SCALE) || maxdays <= 0) { printf (_("Never\n")); } else { expires = changed + (maxdays + inactdays) * SCALE; - print_date(expires); + print_date (expires); } /* @@ -341,22 +301,22 @@ list_fields(void) * password expiring or not. */ - printf(_("Account Expires:\t")); + printf (_("Account Expires:\t")); if (expdays <= 0) { printf (_("Never\n")); } else { expires = expdays * SCALE; - print_date(expires); + print_date (expires); } #endif } #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* * chage - change a user's password aging information @@ -375,87 +335,58 @@ static struct pam_conv conv = { * * (*) requires root permission to execute. * - * All of the time fields are entered in the internal format - * which is either seconds or days. + * All of the time fields are entered in the internal format which is + * either seconds or days. * - * The options -W, -I and -E all depend on the SHADOWPWD - * macro being defined. + * The options -W, -I and -E all depend on the SHADOWPWD macro being + * defined. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int flag; - int lflg = 0; - int mflg = 0; - int Mflg = 0; - int dflg = 0; + int flag; + int lflg = 0; + int mflg = 0; + int Mflg = 0; + int dflg = 0; + #ifdef SHADOWPWD - int Wflg = 0; - int Iflg = 0; - int Eflg = 0; + int Wflg = 0; + int Iflg = 0; + int Eflg = 0; const struct spwd *sp; struct spwd spwd; #else - char new_age[5]; + char new_age[5]; #endif uid_t ruid; + int amroot, pwrw; const struct passwd *pw; struct passwd pwent; - char name[BUFSIZ]; + char name[BUFSIZ]; + #ifdef USE_PAM pam_handle_t *pamh = NULL; struct passwd *pampw; int retval; #endif - sanitize_env(); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + sanitize_env (); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - ruid = getuid(); + ruid = getuid (); amroot = (ruid == 0); /* * Get the program name so that error messages can use it. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); -#ifdef USE_PAM - retval = PAM_SUCCESS; + OPENLOG ("chage"); - pampw = getpwuid(getuid()); - if (pampw == NULL) { - retval = PAM_USER_UNKNOWN; - } - - if (retval == PAM_SUCCESS) { - retval = pam_start("chage", pampw->pw_name, &conv, &pamh); - } - - if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); - if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); - } - } - - if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); - if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); - } - } - - if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); - exit (1); - } -#endif /* USE_PAM */ - - OPENLOG("chage"); #ifdef NDBM #ifdef SHADOWPWD sp_dbm_mode = O_RDWR; @@ -464,11 +395,11 @@ main(int argc, char **argv) #endif /* - * Parse the flags. The difference between password file - * formats includes the number of fields, and whether the - * dates are entered as days or weeks. Shadow password - * file info =must= be entered in days, while regular - * password file info =must= be entered in weeks. + * Parse the flags. The difference between password file formats + * includes the number of fields, and whether the dates are entered + * as days or weeks. Shadow password file info =must= be entered in + * days, while regular password file info =must= be entered in + * weeks. */ #ifdef SHADOWPWD @@ -476,52 +407,52 @@ main(int argc, char **argv) #else #define FLAGS "lm:M:d:" #endif - while ((flag = getopt(argc, argv, FLAGS)) != EOF) { + while ((flag = getopt (argc, argv, FLAGS)) != EOF) { #undef FLAGS switch (flag) { - case 'l': - lflg++; - break; - case 'm': - mflg++; - mindays = strtol (optarg, 0, 10); - break; - case 'M': - Mflg++; - maxdays = strtol (optarg, 0, 10); - break; - case 'd': - dflg++; - if (!isnum(optarg)) - lastday = strtoday (optarg); - else - lastday = strtol (optarg, 0, 10); - break; + case 'l': + lflg++; + break; + case 'm': + mflg++; + mindays = strtol (optarg, 0, 10); + break; + case 'M': + Mflg++; + maxdays = strtol (optarg, 0, 10); + break; + case 'd': + dflg++; + if (!isnum (optarg)) + lastday = strtoday (optarg); + else + lastday = strtol (optarg, 0, 10); + break; #ifdef SHADOWPWD - case 'W': - Wflg++; - warndays = strtol (optarg, 0, 10); - break; - case 'I': - Iflg++; - inactdays = strtol (optarg, 0, 10); - break; - case 'E': - Eflg++; - if (!isnum(optarg)) - expdays = strtoday (optarg); - else - expdays = strtol (optarg, 0, 10); - break; + case 'W': + Wflg++; + warndays = strtol (optarg, 0, 10); + break; + case 'I': + Iflg++; + inactdays = strtol (optarg, 0, 10); + break; + case 'E': + Eflg++; + if (!isnum (optarg)) + expdays = strtoday (optarg); + else + expdays = strtol (optarg, 0, 10); + break; #endif - default: - usage (); + default: + usage (); } } /* - * Make certain the flags do not conflict and that there is - * a user name on the command line. + * Make certain the flags do not conflict and that there is a user + * name on the command line. */ if (argc != optind + 1) @@ -533,200 +464,265 @@ main(int argc, char **argv) if (lflg && (mflg || Mflg || dflg)) #endif { - fprintf (stderr, _("%s: do not include \"l\" with other flags\n"), Prog); - closelog(); + fprintf (stderr, + _("%s: do not include \"l\" with other flags\n"), + Prog); + closelog (); usage (); } /* - * An unprivileged user can ask for their own aging information, - * but only root can change it, or list another user's aging + * An unprivileged user can ask for their own aging information, but + * only root can change it, or list another user's aging * information. */ if (!amroot && !lflg) { fprintf (stderr, _("%s: permission denied\n"), Prog); - closelog(); + closelog (); + exit (1); + } +#ifdef USE_PAM + retval = PAM_SUCCESS; + + pampw = getpwuid (getuid ()); + if (pampw == NULL) { + retval = PAM_USER_UNKNOWN; + } + + if (retval == PAM_SUCCESS) { + retval = pam_start ("chage", pampw->pw_name, &conv, &pamh); + } + + if (retval == PAM_SUCCESS) { + retval = pam_authenticate (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval); + } + } + + if (retval == PAM_SUCCESS) { + retval = pam_acct_mgmt (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval); + } + } + + if (retval != PAM_SUCCESS) { + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } + OPENLOG ("chage"); +#endif /* USE_PAM */ + /* - * Lock and open the password file. This loads all of the - * password file entries into memory. Then we get a pointer - * to the password file entry for the requested user. + * We use locks for read-write accesses only (locks implies amroot, + * but amroot doesn't imply locks). */ - /* We don't lock the password file if we are not root */ - if (amroot && !pw_lock()) { - fprintf(stderr, _("%s: can't lock password file\n"), Prog); - SYSLOG((LOG_ERR, LOCK_FAIL, PASSWD_FILE)); - closelog(); - exit(1); + locks = !lflg; + + /* + * Lock and open the password file. This loads all of the password + * file entries into memory. Then we get a pointer to the password + * file entry for the requested user. + */ +#ifndef SHADOWPWD + if (locks && !pw_lock ()) { + fprintf (stderr, _("%s: can't lock password file\n"), + Prog); + SYSLOG ((LOG_ERR, "failed locking %s", PASSWD_FILE)); + closelog (); + exit (1); } - if (!pw_open((!amroot || lflg) ? O_RDONLY:O_RDWR)) { - fprintf(stderr, _("%s: can't open password file\n"), Prog); - cleanup(1); - SYSLOG((LOG_ERR, OPEN_FAIL, PASSWD_FILE)); - closelog(); - exit(1); + pwrw = locks; +#else + pwrw = 0; +#endif + if (!pw_open (pwrw ? O_RDWR : O_RDONLY)) { + fprintf (stderr, _("%s: can't open password file\n"), + Prog); + cleanup (1); + SYSLOG ((LOG_ERR, "failed opening %s", PASSWD_FILE)); + closelog (); + exit (1); } - if (!(pw = pw_locate(argv[optind]))) { - fprintf(stderr, _("%s: unknown user: %s\n"), Prog, argv[optind]); - cleanup(1); - closelog(); - exit(1); + if (!(pw = pw_locate (argv[optind]))) { + fprintf (stderr, _("%s: unknown user: %s\n"), Prog, + argv[optind]); + cleanup (1); + closelog (); + exit (1); } pwent = *pw; - STRFCPY(name, pwent.pw_name); + STRFCPY (name, pwent.pw_name); #ifdef SHADOWPWD /* - * For shadow password files we have to lock the file and - * read in the entries as was done for the password file. - * The user entries does not have to exist in this case; - * a new entry will be created for this user if one does - * not exist already. + * For shadow password files we have to lock the file and read in + * the entries as was done for the password file. The user entries + * does not have to exist in this case; a new entry will be created + * for this user if one does not exist already. */ - /* We don't lock the shadow file if we are not root */ - if (amroot && !spw_lock()) { - fprintf(stderr, _("%s: can't lock shadow password file\n"), Prog); - cleanup(1); - SYSLOG((LOG_ERR, LOCK_FAIL, SHADOW_FILE)); - closelog(); - exit(1); + if (locks && !spw_lock ()) { + fprintf (stderr, + _("%s: can't lock shadow password file"), Prog); + cleanup (1); + SYSLOG ((LOG_ERR, "failed locking %s", SHADOW_FILE)); + closelog (); + exit (1); } - if (!spw_open((!amroot || lflg) ? O_RDONLY : O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow password file\n"), Prog); - cleanup(2); - SYSLOG((LOG_ERR, OPEN_FAIL, SHADOW_FILE)); - closelog(); - exit(1); + if (!spw_open (locks ? O_RDWR : O_RDONLY)) { + fprintf (stderr, + _("%s: can't open shadow password file"), Prog); + cleanup (2); + SYSLOG ((LOG_ERR, "failed opening %s", SHADOW_FILE)); + closelog (); + exit (1); } - sp = spw_locate(argv[optind]); + if (lflg && (setgid (getgid ()) || setuid (ruid))) { + fprintf (stderr, "%s: failed to drop privileges (%s)\n", + Prog, strerror (errno)); + exit (1); + } + + sp = spw_locate (argv[optind]); /* - * Set the fields that aren't being set from the command line - * from the password file. + * Set the fields that aren't being set from the command line from + * the password file. */ if (sp) { spwd = *sp; - if (! Mflg) + if (!Mflg) maxdays = spwd.sp_max; - if (! mflg) + if (!mflg) mindays = spwd.sp_min; - if (! dflg) + if (!dflg) lastday = spwd.sp_lstchg; - if (! Wflg) + if (!Wflg) warndays = spwd.sp_warn; - if (! Iflg) + if (!Iflg) inactdays = spwd.sp_inact; - if (! Eflg) + if (!Eflg) expdays = spwd.sp_expire; } #ifdef ATT_AGE else -#endif /* ATT_AGE */ -#endif /* SHADOWPWD */ +#endif /* ATT_AGE */ +#endif /* SHADOWPWD */ #ifdef ATT_AGE { if (pwent.pw_age && strlen (pwent.pw_age) >= 2) { - if (! Mflg) - maxdays = c64i (pwent.pw_age[0]) * (WEEK/SCALE); - if (! mflg) - mindays = c64i (pwent.pw_age[1]) * (WEEK/SCALE); - if (! dflg && strlen (pwent.pw_age) == 4) - lastday = a64l (pwent.pw_age+2) * (WEEK/SCALE); + if (!Mflg) + maxdays = + c64i (pwent.pw_age[0]) * (WEEK / + SCALE); + if (!mflg) + mindays = + c64i (pwent.pw_age[1]) * (WEEK / + SCALE); + if (!dflg && strlen (pwent.pw_age) == 4) + lastday = + a64l (pwent.pw_age + + 2) * (WEEK / SCALE); } else { mindays = 0; - maxdays = 10000L * (DAY/SCALE); + maxdays = 10000L * (DAY / SCALE); lastday = -1; } #ifdef SHADOWPWD warndays = inactdays = expdays = -1; -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ } -#endif /* ATT_AGE */ +#endif /* ATT_AGE */ /* - * Print out the expiration fields if the user has - * requested the list option. + * Print out the expiration fields if the user has requested the + * list option. */ if (lflg) { if (!amroot && (ruid != pwent.pw_uid)) { - fprintf(stderr, _("%s: permission denied\n"), Prog); - closelog(); - exit(1); + fprintf (stderr, _("%s: permission denied\n"), + Prog); + closelog (); + exit (1); } - list_fields(); - cleanup(2); - closelog(); - exit(0); + list_fields (); + cleanup (2); + closelog (); + exit (0); } /* - * If none of the fields were changed from the command line, - * let the user interactively change them. + * If none of the fields were changed from the command line, let the + * user interactively change them. */ #ifdef SHADOWPWD - if (! mflg && ! Mflg && ! dflg && ! Wflg && ! Iflg && ! Eflg) + if (!mflg && !Mflg && !dflg && !Wflg && !Iflg && !Eflg) #else - if (! mflg && ! Mflg && ! dflg) + if (!mflg && !Mflg && !dflg) #endif { - printf(_("Changing the aging information for %s\n"), name); - if (!new_fields()) { - fprintf(stderr, _("%s: error changing fields\n"), Prog); - cleanup(2); - closelog(); - exit(1); + printf (_("Changing the aging information for %s\n"), + name); + if (!new_fields ()) { + fprintf (stderr, _("%s: error changing fields\n"), + Prog); + cleanup (2); + closelog (); + exit (1); } } - #ifdef SHADOWPWD /* - * There was no shadow entry. The new entry will have the - * encrypted password transferred from the normal password - * file along with the aging information. + * There was no shadow entry. The new entry will have the encrypted + * password transferred from the normal password file along with the + * aging information. */ if (sp == 0) { sp = &spwd; - memzero(&spwd, sizeof spwd); + memzero (&spwd, sizeof spwd); spwd.sp_namp = xstrdup (pwent.pw_name); spwd.sp_pwdp = xstrdup (pwent.pw_passwd); spwd.sp_flag = -1; - pwent.pw_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ + pwent.pw_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ #ifdef ATT_AGE pwent.pw_age = ""; #endif - if (!pw_update(&pwent)) { - fprintf(stderr, _("%s: can't update password file\n"), Prog); - cleanup(2); - SYSLOG((LOG_ERR, WRITE_FAIL, PASSWD_FILE)); - closelog(); - exit(1); + if (!pw_update (&pwent)) { + fprintf (stderr, + _("%s: can't update password file\n"), + Prog); + cleanup (2); + SYSLOG ((LOG_ERR, "failed updating %s", + PASSWD_FILE)); + closelog (); + exit (1); } #ifdef NDBM (void) pw_dbm_update (&pwent); endpwent (); #endif } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ #ifdef SHADOWPWD /* - * Copy the fields back to the shadow file entry and - * write the modified entry back to the shadow file. - * Closing the shadow and password files will commit - * any changes that have been made. + * Copy the fields back to the shadow file entry and write the + * modified entry back to the shadow file. Closing the shadow and + * password files will commit any changes that have been made. */ spwd.sp_max = maxdays; @@ -736,14 +732,16 @@ main(int argc, char **argv) spwd.sp_inact = inactdays; spwd.sp_expire = expdays; - if (!spw_update(&spwd)) { - fprintf(stderr, _("%s: can't update shadow password file\n"), Prog); - cleanup(2); - SYSLOG((LOG_ERR, WRITE_FAIL, SHADOW_FILE)); - closelog(); - exit(1); + if (!spw_update (&spwd)) { + fprintf (stderr, + _("%s: can't update shadow password file\n"), + Prog); + cleanup (2); + SYSLOG ((LOG_ERR, "failed updating %s", SHADOW_FILE)); + closelog (); + exit (1); } -#else /* !SHADOWPWD */ +#else /* !SHADOWPWD */ /* * fill in the new_age string with the new values @@ -769,14 +767,15 @@ main(int argc, char **argv) } pwent.pw_age = new_age; - if (!pw_update(&pwent)) { - fprintf(stderr, _("%s: can't update password file\n"), Prog); - cleanup(2); - SYSLOG((LOG_ERR, WRITE_FAIL, PASSWD_FILE)); - closelog(); - exit(1); + if (!pw_update (&pwent)) { + fprintf (stderr, _("%s: can't update password file\n"), + Prog); + cleanup (2); + SYSLOG ((LOG_ERR, "failed updating %s", PASSWD_FILE)); + closelog (); + exit (1); } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ #ifdef NDBM #ifdef SHADOWPWD @@ -785,126 +784,108 @@ main(int argc, char **argv) * See if the shadow DBM file exists and try to update it. */ - if (sp_dbm_present() && !sp_dbm_update(&spwd)) { - fprintf(stderr, _("Error updating the DBM password entry.\n")); - cleanup(2); - SYSLOG((LOG_ERR, DBMERROR2)); - closelog(); - exit(1); + if (sp_dbm_present () && !sp_dbm_update (&spwd)) { + fprintf (stderr, + _("Error updating the DBM password entry.\n")); + cleanup (2); + SYSLOG ((LOG_ERR, "error updating DBM passwd entry")); + closelog (); + exit (1); } - endspent(); + endspent (); -#else /* !SHADOWPWD */ +#else /* !SHADOWPWD */ /* * See if the password DBM file exists and try to update it. */ - if (pw_dbm_present() && !pw_dbm_update(&pwent)) { - fprintf(stderr, _("Error updating the DBM password entry.\n")); - cleanup(2); - SYSLOG((LOG_ERR, DBMERROR2)); - closelog(); - exit(1); + if (pw_dbm_present () && !pw_dbm_update (&pwent)) { + fprintf (stderr, + _("Error updating the DBM password entry.\n")); + cleanup (2); + SYSLOG ((LOG_ERR, "error updating DBM passwd entry")); + closelog (); + exit (1); } endpwent (); -#endif /* SHADOWPWD */ -#endif /* NDBM */ +#endif /* SHADOWPWD */ +#endif /* NDBM */ #ifdef SHADOWPWD /* - * Now close the shadow password file, which will cause all - * of the entries to be re-written. + * Now close the shadow password file, which will cause all of the + * entries to be re-written. */ - if (!spw_close()) { - fprintf(stderr, _("%s: can't rewrite shadow password file\n"), Prog); - cleanup(2); - SYSLOG((LOG_ERR, CLOSE_FAIL, SHADOW_FILE)); - closelog(); - exit(1); + if (!spw_close ()) { + fprintf (stderr, + _("%s: can't rewrite shadow password file\n"), + Prog); + cleanup (2); + SYSLOG ((LOG_ERR, "failed rewriting %s", SHADOW_FILE)); + closelog (); + exit (1); } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ /* - * Close the password file. If any entries were modified, the - * file will be re-written. + * Close the password file. If any entries were modified, the file + * will be re-written. */ - if (!pw_close()) { - fprintf(stderr, _("%s: can't rewrite password file\n"), Prog); - cleanup(2); - SYSLOG((LOG_ERR, CLOSE_FAIL, PASSWD_FILE)); - closelog(); - exit(1); + if (!pw_close ()) { + fprintf (stderr, _("%s: can't rewrite password file\n"), + Prog); + cleanup (2); + SYSLOG ((LOG_ERR, "failed rewriting %s", PASSWD_FILE)); + closelog (); + exit (1); } - cleanup(2); - SYSLOG((LOG_INFO, AGE_CHANGED, name)); + cleanup (2); + SYSLOG ((LOG_INFO, "changed password expiry for %s", name)); #ifdef USE_PAM if (!lflg) { if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog); + fprintf (stderr, _("%s: PAM chauthtok failed\n"), + Prog); exit (1); } } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ - closelog(); - exit(0); - /*NOTREACHED*/ -} + closelog (); + exit (0); + /*NOTREACHED*/} /* * cleanup - unlock any locked password files */ -static void -cleanup(int state) +static void cleanup (int state) { switch (state) { case 2: #ifdef SHADOWPWD - if (amroot) - spw_unlock(); + if (locks) + spw_unlock (); #endif case 1: - if (amroot) - pw_unlock(); +#ifndef SHADOWPWD + if (locks) + pw_unlock (); +#endif case 0: break; } } - -#else /*} !AGING {*/ - -/* - * chage - but there is no age info! - */ - -int -main(int argc, char **argv) -{ - char *Prog; - - Prog = Basename(argv[0]); - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - - fprintf (stderr, _("%s: no aging information present\n"), Prog); - exit(1); -} - -#endif /*} AGING */ - diff --git a/src/chfn.c b/src/chfn.c index 413ff33f..ae57e09d 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,32 +30,26 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: chfn.c,v 1.17 2000/09/02 18:40:43 marekm Exp $") - +RCSID (PKG_VER "$Id: chfn.c,v 1.20 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include #include "prototypes.h" #include "defines.h" - #include #include "pwio.h" #include "getdef.h" #include "pwauth.h" - #ifdef HAVE_SHADOW_H #include #endif - #ifdef USE_PAM #include "pam_defs.h" #endif - /* * Global variables. */ - static char *Prog; static char fullnm[BUFSIZ]; static char roomno[BUFSIZ]; @@ -68,84 +62,66 @@ static int amroot; * External identifiers */ -extern int optind; -extern char *optarg; #ifdef NDBM -extern int pw_dbm_mode; +extern int pw_dbm_mode; #endif -/* - * #defines for messages. This facilitates foreign language conversion - * since all messages are defined right here. - */ - -#define WRONGPWD2 "incorrect password for `%s'" -#define PWDBUSY2 "can't lock /etc/passwd\n" -#define OPNERROR2 "can't open /etc/passwd\n" -#define UPDERROR2 "error updating passwd entry\n" -#define DBMERROR2 "error updating DBM passwd entry.\n" -#define NOTROOT2 "can't setuid(0).\n" -#define CLSERROR2 "can't rewrite /etc/passwd.\n" -#define UNLKERROR2 "can't unlock /etc/passwd.\n" -#define CHGGECOS "changed user `%s' information.\n" - /* local function prototypes */ -static void usage(void); -static int may_change_field(int); -static void new_fields(void); -static char *copy_field(char *, char *, char *); +static void usage (void); +static int may_change_field (int); +static void new_fields (void); +static char *copy_field (char *, char *, char *); /* * usage - print command line syntax and exit */ -static void -usage(void) +static void usage (void) { if (amroot) - fprintf(stderr, - _("Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n\t[ -h home_ph ] [ -o other ] [ user ]\n"), - Prog); + fprintf (stderr, + _("Usage: %s [-f full_name] [-r room_no] " + "[-w work_ph]\n" + "\t[-h home_ph] [-o other] [user]\n"), Prog); else - fprintf(stderr, - _("Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n"), - Prog); - exit(1); + fprintf (stderr, + _("Usage: %s [-f full_name] [-r room_no] " + "[-w work_ph] [-h home_ph]\n"), Prog); + exit (1); } -static int -may_change_field(int field) +static int may_change_field (int field) { const char *cp; /* - * CHFN_RESTRICT can now specify exactly which fields may be - * changed by regular users, by using any combination of the - * following letters: + * CHFN_RESTRICT can now specify exactly which fields may be changed + * by regular users, by using any combination of the following + * letters: * f - full name * r - room number * w - work phone * h - home phone * * This makes it possible to disallow changing the room number - * information, for example - this feature was suggested by - * Maciej 'Tycoon' Majchrowski. + * information, for example - this feature was suggested by Maciej + * 'Tycoon' Majchrowski. * * For backward compatibility, "yes" is equivalent to "rwh", - * "no" is equivalent to "frwh". Only root can change anything + * "no" is equivalent to "frwh". Only root can change anything * if the string is empty or not defined at all. */ if (amroot) return 1; - cp = getdef_str("CHFN_RESTRICT"); + cp = getdef_str ("CHFN_RESTRICT"); if (!cp) cp = ""; - else if (strcmp(cp, "yes") == 0) + else if (strcmp (cp, "yes") == 0) cp = "rwh"; - else if (strcmp(cp, "no") == 0) + else if (strcmp (cp, "no") == 0) cp = "frwh"; - if (strchr(cp, field)) + if (strchr (cp, field)) return 1; return 0; } @@ -153,53 +129,51 @@ may_change_field(int field) /* * new_fields - change the user's GECOS information interactively * - * prompt the user for each of the four fields and fill in the fields - * from the user's response, or leave alone if nothing was entered. + * prompt the user for each of the four fields and fill in the fields from + * the user's response, or leave alone if nothing was entered. */ -static void -new_fields(void) +static void new_fields (void) { - printf(_("Enter the new value, or press return for the default\n")); + printf (_ + ("Enter the new value, or press ENTER for the default\n")); - if (may_change_field('f')) - change_field(fullnm, sizeof fullnm, _("Full Name")); + if (may_change_field ('f')) + change_field (fullnm, sizeof fullnm, _("Full Name")); else - printf(_("\tFull Name: %s\n"), fullnm); + printf (_("\tFull Name: %s\n"), fullnm); - if (may_change_field('r')) - change_field(roomno, sizeof roomno, _("Room Number")); + if (may_change_field ('r')) + change_field (roomno, sizeof roomno, _("Room Number")); else - printf(_("\tRoom Number: %s\n"), roomno); + printf (_("\tRoom Number: %s\n"), roomno); - if (may_change_field('w')) - change_field(workph, sizeof workph, _("Work Phone")); + if (may_change_field ('w')) + change_field (workph, sizeof workph, _("Work Phone")); else - printf(_("\tWork Phone: %s\n"), workph); + printf (_("\tWork Phone: %s\n"), workph); - if (may_change_field('h')) - change_field(homeph, sizeof homeph, _("Home Phone")); + if (may_change_field ('h')) + change_field (homeph, sizeof homeph, _("Home Phone")); else - printf(_("\tHome Phone: %s\n"), homeph); + printf (_("\tHome Phone: %s\n"), homeph); if (amroot) - change_field(slop, sizeof slop, _("Other")); + change_field (slop, sizeof slop, _("Other")); } /* * copy_field - get the next field from the gecos field * * copy_field copies the next field from the gecos field, returning a - * pointer to the field which follows, or NULL if there are no more - * fields. + * pointer to the field which follows, or NULL if there are no more fields. * * in - the current GECOS field * out - where to copy the field to * extra - fields with '=' get copied here */ -static char * -copy_field(char *in, char *out, char *extra) +static char *copy_field (char *in, char *out, char *extra) { char *cp = NULL; @@ -207,7 +181,7 @@ copy_field(char *in, char *out, char *extra) if ((cp = strchr (in, ','))) *cp++ = '\0'; - if (! strchr (in, '=')) + if (!strchr (in, '=')) break; if (extra) { @@ -228,8 +202,8 @@ copy_field(char *in, char *out, char *extra) /* * chfn - change a user's password file information * - * This command controls the GECOS field information in the - * password file entry. + * This command controls the GECOS field information in the password + * file entry. * * The valid options are * @@ -242,26 +216,25 @@ copy_field(char *in, char *out, char *extra) * (*) requires root permission to execute. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - char *cp; /* temporary character pointer */ + char *cp; /* temporary character pointer */ const struct passwd *pw; /* password file entry */ - struct passwd pwent; /* modified password file entry */ - char old_gecos[BUFSIZ]; /* buffer for old GECOS fields */ - char new_gecos[BUFSIZ]; /* buffer for new GECOS fields */ - int flag; /* flag currently being processed */ - int fflg = 0; /* -f - set full name */ - int rflg = 0; /* -r - set room number */ - int wflg = 0; /* -w - set work phone number */ - int hflg = 0; /* -h - set home phone number */ - int oflg = 0; /* -o - set other information */ + struct passwd pwent; /* modified password file entry */ + char old_gecos[BUFSIZ]; /* buffer for old GECOS fields */ + char new_gecos[BUFSIZ]; /* buffer for new GECOS fields */ + int flag; /* flag currently being processed */ + int fflg = 0; /* -f - set full name */ + int rflg = 0; /* -r - set room number */ + int wflg = 0; /* -w - set work phone number */ + int hflg = 0; /* -h - set home phone number */ + int oflg = 0; /* -o - set other information */ char *user; - sanitize_env(); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + sanitize_env (); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* * This command behaves different for root and non-root @@ -274,164 +247,179 @@ main(int argc, char **argv) #endif /* - * Get the program name. The program name is used as a + * Get the program name. The program name is used as a * prefix to most error messages. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - OPENLOG("chfn"); + OPENLOG ("chfn"); /* - * 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 environment and must agree with the - * real UID. Also, the UID will be checked for any commands - * which are restricted to root only. + * 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 + * environment and must agree with the real UID. Also, the UID will + * be checked for any commands which are restricted to root only. */ while ((flag = getopt (argc, argv, "f:r:w:h:o:")) != EOF) { switch (flag) { - case 'f': - if (!may_change_field('f')) { - fprintf(stderr, _("%s: Permission denied.\n"), Prog); - exit(1); - } - fflg++; - STRFCPY(fullnm, optarg); - break; - case 'r': - if (!may_change_field('r')) { - fprintf(stderr, _("%s: Permission denied.\n"), Prog); - exit(1); - } - rflg++; - STRFCPY(roomno, optarg); - break; - case 'w': - if (!may_change_field('w')) { - fprintf(stderr, _("%s: Permission denied.\n"), Prog); - exit(1); - } - wflg++; - STRFCPY(workph, optarg); - break; - case 'h': - if (!may_change_field('h')) { - fprintf(stderr, _("%s: Permission denied.\n"), Prog); - exit(1); - } - hflg++; - STRFCPY(homeph, optarg); - break; - case 'o': - if (!amroot) { - fprintf(stderr, _("%s: Permission denied.\n"), Prog); - exit(1); - } - oflg++; - STRFCPY(slop, optarg); - break; - default: - usage(); + case 'f': + if (!may_change_field ('f')) { + fprintf (stderr, + _("%s: Permission denied.\n"), + Prog); + exit (1); + } + fflg++; + STRFCPY (fullnm, optarg); + break; + case 'r': + if (!may_change_field ('r')) { + fprintf (stderr, + _("%s: Permission denied.\n"), + Prog); + exit (1); + } + rflg++; + STRFCPY (roomno, optarg); + break; + case 'w': + if (!may_change_field ('w')) { + fprintf (stderr, + _("%s: Permission denied.\n"), + Prog); + exit (1); + } + wflg++; + STRFCPY (workph, optarg); + break; + case 'h': + if (!may_change_field ('h')) { + fprintf (stderr, + _("%s: Permission denied.\n"), + Prog); + exit (1); + } + hflg++; + STRFCPY (homeph, optarg); + break; + case 'o': + if (!amroot) { + fprintf (stderr, + _("%s: Permission denied.\n"), + Prog); + exit (1); + } + oflg++; + STRFCPY (slop, optarg); + break; + default: + usage (); } } /* - * Get the name of the user to check. It is either - * the command line name, or the name getlogin() - * returns. + * Get the name of the user to check. It is either the command line + * name, or the name getlogin() returns. */ if (optind < argc) { user = argv[optind]; - pw = getpwnam(user); + pw = getpwnam (user); if (!pw) { - fprintf(stderr, _("%s: Unknown user %s\n"), Prog, user); - exit(1); + fprintf (stderr, _("%s: Unknown user %s\n"), Prog, + user); + exit (1); } } else { - pw = get_my_pwent(); + pw = get_my_pwent (); if (!pw) { - fprintf(stderr, _("%s: Cannot determine your user name.\n"), Prog); - exit(1); + fprintf (stderr, + _ + ("%s: Cannot determine your user name.\n"), + Prog); + exit (1); } - user = xstrdup(pw->pw_name); + user = xstrdup (pw->pw_name); } #ifdef USE_NIS /* - * Now we make sure this is a LOCAL password entry for - * this user ... + * Now we make sure this is a LOCAL password entry for this user ... */ if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; + char *nis_domain; + char *nis_master; - fprintf (stderr, _("%s: cannot change user `%s' on NIS client.\n"), Prog, user); + fprintf (stderr, + _("%s: cannot change user `%s' on NIS client.\n"), + Prog, user); - if (! yp_get_default_domain (&nis_domain) && - ! yp_master (nis_domain, "passwd.byname", + if (!yp_get_default_domain (&nis_domain) && + !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf (stderr, _("%s: `%s' is the NIS master for this client.\n"), Prog, nis_master); + fprintf (stderr, + _ + ("%s: `%s' is the NIS master for this client.\n"), + Prog, nis_master); } exit (1); } #endif /* - * Non-privileged users are only allowed to change the - * gecos field if the UID of the user matches the current - * real UID. + * Non-privileged users are only allowed to change the gecos field + * if the UID of the user matches the current real UID. */ - if (!amroot && pw->pw_uid != getuid()) { + if (!amroot && pw->pw_uid != getuid ()) { fprintf (stderr, _("%s: Permission denied.\n"), Prog); - closelog(); - exit(1); + closelog (); + exit (1); } /* - * 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. --marekm + * 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. + * --marekm */ - if (!amroot && getdef_bool("CHFN_AUTH")) - passwd_check(pw->pw_name, pw->pw_passwd, "chfn"); - + if (!amroot && getdef_bool ("CHFN_AUTH")) + passwd_check (pw->pw_name, pw->pw_passwd, "chfn"); + /* - * Now get the full name. It is the first comma separated field - * in the GECOS field. + * Now get the full name. It is the first comma separated field in + * the GECOS field. */ - STRFCPY(old_gecos, pw->pw_gecos); - cp = copy_field (old_gecos, fflg ? (char *) 0:fullnm, slop); + STRFCPY (old_gecos, pw->pw_gecos); + cp = copy_field (old_gecos, fflg ? (char *) 0 : fullnm, slop); /* - * Now get the room number. It is the next comma separated field, + * Now get the room number. It is the next comma separated field, * if there is indeed one. */ if (cp) - cp = copy_field (cp, rflg ? (char *) 0:roomno, slop); + cp = copy_field (cp, rflg ? (char *) 0 : roomno, slop); /* - * Now get the work phone number. It is the third field. + * Now get the work phone number. It is the third field. */ if (cp) - cp = copy_field (cp, wflg ? (char *) 0:workph, slop); + cp = copy_field (cp, wflg ? (char *) 0 : workph, slop); /* - * Now get the home phone number. It is the fourth field. + * Now get the home phone number. It is the fourth field. */ if (cp) - cp = copy_field (cp, hflg ? (char *) 0:homeph, slop); + cp = copy_field (cp, hflg ? (char *) 0 : homeph, slop); /* * Anything left over is "slop". @@ -445,43 +433,49 @@ main(int argc, char **argv) } /* - * If none of the fields were changed from the command line, - * let the user interactively change them. + * If none of the fields were changed from the command line, let the + * user interactively change them. */ if (!fflg && !rflg && !wflg && !hflg && !oflg) { - printf(_("Changing the user information for %s\n"), user); - new_fields(); + printf (_("Changing the user information for %s\n"), user); + new_fields (); } /* * Check all of the fields for valid information */ - if (valid_field(fullnm, ":,=")) { - fprintf(stderr, _("%s: invalid name: \"%s\"\n"), Prog, fullnm); - closelog(); - exit(1); + if (valid_field (fullnm, ":,=")) { + fprintf (stderr, _("%s: invalid name: \"%s\"\n"), Prog, + fullnm); + closelog (); + exit (1); } - if (valid_field(roomno, ":,=")) { - fprintf(stderr, _("%s: invalid room number: \"%s\"\n"), Prog, roomno); - closelog(); - exit(1); + if (valid_field (roomno, ":,=")) { + fprintf (stderr, _("%s: invalid room number: \"%s\"\n"), + Prog, roomno); + closelog (); + exit (1); } - if (valid_field(workph, ":,=")) { - fprintf(stderr, _("%s: invalid work phone: \"%s\"\n"), Prog, workph); - closelog(); - exit(1); + if (valid_field (workph, ":,=")) { + fprintf (stderr, _("%s: invalid work phone: \"%s\"\n"), + Prog, workph); + closelog (); + exit (1); } if (valid_field (homeph, ":,=")) { - fprintf(stderr, _("%s: invalid home phone: \"%s\"\n"), Prog, homeph); - closelog(); - exit(1); + fprintf (stderr, _("%s: invalid home phone: \"%s\"\n"), + Prog, homeph); + closelog (); + exit (1); } - if (valid_field(slop, ":")) { - fprintf(stderr, _("%s: \"%s\" contains illegal characters\n"), Prog, slop); - closelog(); - exit(1); + if (valid_field (slop, ":")) { + fprintf (stderr, + _("%s: \"%s\" contains illegal characters\n"), + Prog, slop); + closelog (); + exit (1); } /* @@ -489,112 +483,118 @@ main(int argc, char **argv) * if they will fit ... */ - if (strlen(fullnm) + strlen(roomno) + strlen(workph) + - strlen(homeph) + strlen(slop) > (unsigned int) 80) { - fprintf(stderr, _("%s: fields too long\n"), Prog); - closelog(); - exit(1); + if (strlen (fullnm) + strlen (roomno) + strlen (workph) + + strlen (homeph) + strlen (slop) > (unsigned int) 80) { + fprintf (stderr, _("%s: fields too long\n"), Prog); + closelog (); + exit (1); } - snprintf(new_gecos, sizeof new_gecos, "%s,%s,%s,%s%s%s", - fullnm, roomno, workph, homeph, slop[0] ? "," : "", slop); + snprintf (new_gecos, sizeof new_gecos, "%s,%s,%s,%s%s%s", + fullnm, roomno, workph, homeph, slop[0] ? "," : "", + slop); /* - * Before going any further, raise the ulimit to prevent - * colliding into a lowered ulimit, and set the real UID - * to root to protect against unexpected signals. Any - * keyboard signals are set to be ignored. + * Before going any further, raise the ulimit to prevent colliding + * into a lowered ulimit, and set the real UID to root to protect + * against unexpected signals. Any keyboard signals are set to be + * ignored. */ - if (setuid(0)) { - fprintf(stderr, _("Cannot change ID to root.\n")); - SYSLOG((LOG_ERR, NOTROOT2)); - closelog(); - exit(1); + if (setuid (0)) { + fprintf (stderr, _("Cannot change ID to root.\n")); + SYSLOG ((LOG_ERR, "can't setuid(0)")); + closelog (); + exit (1); } - pwd_init(); + pwd_init (); /* - * The passwd entry is now ready to be committed back to - * the password file. Get a lock on the file and open it. + * The passwd entry is now ready to be committed back to the + * password file. Get a lock on the file and open it. */ - if (!pw_lock()) { - fprintf(stderr, _("Cannot lock the password file; try again later.\n")); - SYSLOG((LOG_WARN, PWDBUSY2)); - closelog(); - exit(1); + if (!pw_lock ()) { + fprintf (stderr, + _ + ("Cannot lock the password file; try again later.\n")); + SYSLOG ((LOG_WARN, "can't lock /etc/passwd")); + closelog (); + exit (1); } - if (!pw_open(O_RDWR)) { - fprintf(stderr, _("Cannot open the password file.\n")); - pw_unlock(); - SYSLOG((LOG_ERR, OPNERROR2)); - closelog(); - exit(1); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("Cannot open the password file.\n")); + pw_unlock (); + SYSLOG ((LOG_ERR, "can't open /etc/passwd")); + closelog (); + exit (1); } /* - * Get the entry to update using pw_locate() - we want the real - * one from /etc/passwd, not the one from getpwnam() which could - * contain the shadow password if (despite the warnings) someone - * enables AUTOSHADOW (or SHADOW_COMPAT in libc). --marekm + * Get the entry to update using pw_locate() - we want the real one + * from /etc/passwd, not the one from getpwnam() which could contain + * the shadow password if (despite the warnings) someone enables + * AUTOSHADOW (or SHADOW_COMPAT in libc). --marekm */ - pw = pw_locate(user); + pw = pw_locate (user); if (!pw) { - pw_unlock(); - fprintf(stderr, - _("%s: %s not found in /etc/passwd\n"), Prog, user); - exit(1); + pw_unlock (); + fprintf (stderr, + _("%s: %s not found in /etc/passwd\n"), Prog, + user); + exit (1); } /* - * Make a copy of the entry, then change the gecos field. The other + * Make a copy of the entry, then change the gecos field. The other * fields remain unchanged. */ pwent = *pw; pwent.pw_gecos = new_gecos; /* - * Update the passwd file entry. If there is a DBM file, - * update that entry as well. + * Update the passwd file entry. If there is a DBM file, update that + * entry as well. */ - if (!pw_update(&pwent)) { - fprintf(stderr, _("Error updating the password entry.\n")); - pw_unlock(); - SYSLOG((LOG_ERR, UPDERROR2)); - closelog(); - exit(1); + if (!pw_update (&pwent)) { + fprintf (stderr, + _("Error updating the password entry.\n")); + pw_unlock (); + SYSLOG ((LOG_ERR, "error updating passwd entry")); + closelog (); + exit (1); } #ifdef NDBM - if (pw_dbm_present() && !pw_dbm_update(&pwent)) { - fprintf(stderr, _("Error updating the DBM password entry.\n")); + if (pw_dbm_present () && !pw_dbm_update (&pwent)) { + fprintf (stderr, + _("Error updating the DBM password entry.\n")); pw_unlock (); - SYSLOG((LOG_ERR, DBMERROR2)); - closelog(); - exit(1); + SYSLOG ((LOG_ERR, "error updating DBM passwd entry")); + closelog (); + exit (1); } - endpwent(); + endpwent (); #endif /* - * Changes have all been made, so commit them and unlock the - * file. + * Changes have all been made, so commit them and unlock the file. */ - if (!pw_close()) { - fprintf(stderr, _("Cannot commit password file changes.\n")); - pw_unlock(); - SYSLOG((LOG_ERR, CLSERROR2)); - closelog(); - exit(1); + if (!pw_close ()) { + fprintf (stderr, + _("Cannot commit password file changes.\n")); + pw_unlock (); + SYSLOG ((LOG_ERR, "can't rewrite /etc/passwd")); + closelog (); + exit (1); } - if (!pw_unlock()) { - fprintf(stderr, _("Cannot unlock the password file.\n")); - SYSLOG((LOG_ERR, UNLKERROR2)); - closelog(); - exit(1); + if (!pw_unlock ()) { + fprintf (stderr, _("Cannot unlock the password file.\n")); + SYSLOG ((LOG_ERR, "can't unlock /etc/passwd")); + closelog (); + exit (1); } - SYSLOG((LOG_INFO, CHGGECOS, user)); - closelog(); + SYSLOG ((LOG_INFO, "changed user `%s' information", user)); + closelog (); exit (0); } diff --git a/src/chpasswd.c b/src/chpasswd.c index a423fd49..0f9400b0 100644 --- a/src/chpasswd.c +++ b/src/chpasswd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: chpasswd.c,v 1.13 2001/01/25 10:36:07 kloczek Exp $") - +RCSID (PKG_VER "$Id: chpasswd.c,v 1.14 2002/01/05 15:41:43 kloczek Exp $") #include #include "prototypes.h" #include "defines.h" @@ -41,151 +40,156 @@ RCSID(PKG_VER "$Id: chpasswd.c,v 1.13 2001/01/25 10:36:07 kloczek Exp $") #ifdef SHADOWPWD #include "shadowio.h" #endif - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ static char *Prog; static int eflg = 0; + #ifdef SHADOWPWD static int is_shadow_pwd; #endif -extern char *l64a(); +extern char *l64a (); /* local function prototypes */ -static void usage(void); +static void usage (void); /* * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("usage: %s [-e]\n"), Prog); - exit(1); + fprintf (stderr, _("usage: %s [-e]\n"), Prog); + exit (1); } #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - char buf[BUFSIZ]; - char *name; - char *newpwd; - char *cp; + char buf[BUFSIZ]; + char *name; + char *newpwd; + char *cp; + #ifdef SHADOWPWD const struct spwd *sp; - struct spwd newsp; + struct spwd newsp; #endif const struct passwd *pw; - struct passwd newpw; + struct passwd newpw; + #ifdef ATT_AGE - char newage[5]; + char newage[5]; #endif - int errors = 0; - int line = 0; - long now = time ((long *) 0) / (24L*3600L); + int errors = 0; + int line = 0; + long now = time ((long *) 0) / (24L * 3600L); int ok; + #ifdef USE_PAM pam_handle_t *pamh = NULL; struct passwd *pampw; int retval; #endif - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM retval = PAM_SUCCESS; - pampw = getpwuid(getuid()); + pampw = getpwuid (getuid ()); if (pampw == NULL) { retval = PAM_USER_UNKNOWN; } if (retval == PAM_SUCCESS) { - retval = pam_start("shadow", pampw->pw_name, &conv, &pamh); + retval = + pam_start ("shadow", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); + retval = pam_authenticate (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); + retval = pam_acct_mgmt (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* XXX - use getopt() */ - if (!(argc == 1 || (argc == 2 && !strcmp(argv[1], "-e")))) - usage(); + if (!(argc == 1 || (argc == 2 && !strcmp (argv[1], "-e")))) + usage (); if (argc == 2) eflg = 1; /* - * Lock the password file and open it for reading. This will - * bring all of the entries into memory where they may be - * updated. + * Lock the password file and open it for reading. This will bring + * all of the entries into memory where they may be updated. */ - if (!pw_lock()) { - fprintf(stderr, _("%s: can't lock password file\n"), Prog); - exit(1); + if (!pw_lock ()) { + fprintf (stderr, _("%s: can't lock password file\n"), + Prog); + exit (1); } - if (! pw_open (O_RDWR)) { - fprintf(stderr, _("%s: can't open password file\n"), Prog); - pw_unlock(); - exit(1); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open password file\n"), + Prog); + pw_unlock (); + exit (1); } #ifdef SHADOWPWD - is_shadow_pwd = spw_file_present(); + is_shadow_pwd = spw_file_present (); if (is_shadow_pwd) { - if (!spw_lock()) { - fprintf(stderr, _("%s: can't lock shadow file\n"), Prog); - pw_unlock(); - exit(1); + if (!spw_lock ()) { + fprintf (stderr, _("%s: can't lock shadow file\n"), + Prog); + pw_unlock (); + exit (1); } - if (!spw_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow file\n"), Prog); - pw_unlock(); - spw_unlock(); - exit(1); + if (!spw_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open shadow file\n"), + Prog); + pw_unlock (); + spw_unlock (); + exit (1); } } #endif /* - * Read each line, separating the user name from the password. - * The password entry for each user will be looked up in the - * appropriate file (shadow or passwd) and the password changed. - * For shadow files the last change date is set directly, for - * passwd files the last change date is set in the age only if - * aging information is present. + * Read each line, separating the user name from the password. The + * password entry for each user will be looked up in the appropriate + * file (shadow or passwd) and the password changed. For shadow + * files the last change date is set directly, for passwd files the + * last change date is set in the age only if aging information is + * present. */ while (fgets (buf, sizeof buf, stdin) != (char *) 0) { @@ -193,59 +197,59 @@ main(int argc, char **argv) if ((cp = strrchr (buf, '\n'))) { *cp = '\0'; } else { - fprintf(stderr, _("%s: line %d: line too long\n"), - Prog, line); + fprintf (stderr, _("%s: line %d: line too long\n"), + Prog, line); errors++; continue; } /* - * The username is the first field. It is separated - * from the password with a ":" character which is - * replaced with a NUL to give the new password. The - * new password will then be encrypted in the normal - * fashion with a new salt generated, unless the '-e' - * is given, in which case it is assumed to already be - * encrypted. + * The username is the first field. It is separated from the + * password with a ":" character which is replaced with a + * NUL to give the new password. The new password will then + * be encrypted in the normal fashion with a new salt + * generated, unless the '-e' is given, in which case it is + * assumed to already be encrypted. */ name = buf; if ((cp = strchr (name, ':'))) { *cp++ = '\0'; } else { - fprintf(stderr, _("%s: line %d: missing new password\n"), - Prog, line); + fprintf (stderr, + _("%s: line %d: missing new password\n"), + Prog, line); errors++; continue; } newpwd = cp; if (!eflg) - cp = pw_encrypt(newpwd, crypt_make_salt()); + cp = pw_encrypt (newpwd, crypt_make_salt ()); /* - * Get the password file entry for this user. The user - * must already exist. + * Get the password file entry for this user. The user must + * already exist. */ - pw = pw_locate(name); + pw = pw_locate (name); if (!pw) { - fprintf (stderr, _("%s: line %d: unknown user %s\n"), - Prog, line, name); + fprintf (stderr, + _("%s: line %d: unknown user %s\n"), Prog, + line, name); errors++; continue; } - #ifdef SHADOWPWD if (is_shadow_pwd) - sp = spw_locate(name); + sp = spw_locate (name); else sp = NULL; #endif /* - * The freshly encrypted new password is merged into - * the user's password file entry and the last password - * change date is set to the current date. + * The freshly encrypted new password is merged into the + * user's password file entry and the last password change + * date is set to the current date. */ #ifdef SHADOWPWD @@ -260,72 +264,78 @@ main(int argc, char **argv) newpw.pw_passwd = cp; #ifdef ATT_AGE if (newpw.pw_age[0]) { - strcpy(newage, newpw.pw_age); - strcpy(newage + 2, l64a(now / 7)); + strcpy (newage, newpw.pw_age); + strcpy (newage + 2, l64a (now / 7)); newpw.pw_age = newage; } #endif } /* - * 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. + * 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. */ #ifdef SHADOWPWD if (sp) - ok = spw_update(&newsp); + ok = spw_update (&newsp); else #endif - ok = pw_update(&newpw); + ok = pw_update (&newpw); if (!ok) { - fprintf(stderr, _("%s: line %d: cannot update password entry\n"), - Prog, line); + fprintf (stderr, + _ + ("%s: line %d: cannot update password entry\n"), + Prog, line); errors++; continue; } } /* - * Any detected errors will cause the entire set of changes - * to be aborted. Unlocking the password file will cause - * all of the changes to be ignored. Otherwise the file is - * closed, causing the changes to be written out all at - * once, and then unlocked afterwards. + * Any detected errors will cause the entire set of changes to be + * aborted. Unlocking the password file will cause all of the + * changes to be ignored. Otherwise the file is closed, causing the + * changes to be written out all at once, and then unlocked + * afterwards. */ if (errors) { - fprintf(stderr, _("%s: error detected, changes ignored\n"), Prog); + fprintf (stderr, + _("%s: error detected, changes ignored\n"), Prog); #ifdef SHADOWPWD if (is_shadow_pwd) - spw_unlock(); + spw_unlock (); #endif - pw_unlock(); - exit(1); + pw_unlock (); + exit (1); } #ifdef SHADOWPWD if (is_shadow_pwd) { - if (!spw_close()) { - fprintf(stderr, _("%s: error updating shadow file\n"), Prog); - pw_unlock(); - exit(1); + if (!spw_close ()) { + fprintf (stderr, + _("%s: error updating shadow file\n"), + Prog); + pw_unlock (); + exit (1); } - spw_unlock(); + spw_unlock (); } #endif - if (!pw_close()) { - fprintf(stderr, _("%s: error updating password file\n"), Prog); - exit(1); + if (!pw_close ()) { + fprintf (stderr, _("%s: error updating password file\n"), + Prog); + exit (1); } - pw_unlock(); + pw_unlock (); #ifdef USE_PAM if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } @@ -335,8 +345,8 @@ main(int argc, char **argv) } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ return (0); } diff --git a/src/chsh.c b/src/chsh.c index fa4a7273..54636095 100644 --- a/src/chsh.c +++ b/src/chsh.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,80 +30,50 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: chsh.c,v 1.17 2000/09/02 18:40:43 marekm Exp $") - +RCSID (PKG_VER "$Id: chsh.c,v 1.20 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include #include "prototypes.h" #include "defines.h" - #include #include "pwio.h" #include "getdef.h" #include "pwauth.h" - #ifdef HAVE_SHADOW_H #include #endif - #ifdef USE_PAM #include "pam_defs.h" #endif - #ifndef SHELLS_FILE #define SHELLS_FILE "/etc/shells" #endif +/* global variables */ +static char *Prog; /* Program name */ +static int amroot; /* Real UID is root */ +static char loginsh[BUFSIZ]; /* Name of new login shell */ -/* - * Global variables. - */ +/* external identifiers */ -static char *Prog; /* Program name */ -static int amroot; /* Real UID is root */ -static char loginsh[BUFSIZ]; /* Name of new login shell */ - -/* - * External identifiers - */ - -extern int optind; -extern char *optarg; #ifdef NDBM -extern int pw_dbm_mode; +extern int pw_dbm_mode; #endif -/* - * #defines for messages. This facilitates foreign language conversion - * since all messages are defined right here. - */ - -#define WRONGPWD2 "incorrect password for `%s'" -#define NOPERM2 "can't change shell for `%s'\n" -#define PWDBUSY2 "can't lock /etc/passwd\n" -#define OPNERROR2 "can't open /etc/passwd\n" -#define UPDERROR2 "error updating passwd entry\n" -#define DBMERROR2 "error updating DBM passwd entry.\n" -#define NOTROOT2 "can't setuid(0).\n" -#define CLSERROR2 "can't rewrite /etc/passwd.\n" -#define UNLKERROR2 "can't unlock /etc/passwd.\n" -#define CHGSHELL "changed user `%s' shell to `%s'\n" - /* local function prototypes */ -static void usage(void); -static void new_fields(void); -static int restricted_shell(const char *); +static void usage (void); +static void new_fields (void); +static int restricted_shell (const char *); /* * usage - print command line syntax and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("Usage: %s [ -s shell ] [ name ]\n"), Prog); - exit(1); + fprintf (stderr, _("Usage: %s [-s shell] [name]\n"), Prog); + exit (1); } /* @@ -113,11 +83,11 @@ usage(void) * response, or leave it alone if nothing was entered. */ -static void -new_fields(void) +static void new_fields (void) { - printf(_("Enter the new value, or press return for the default\n")); - change_field(loginsh, sizeof loginsh, _("Login Shell")); + printf (_ + ("Enter the new value, or press return for the default\n")); + change_field (loginsh, sizeof loginsh, _("Login Shell")); } /* @@ -127,20 +97,19 @@ new_fields(void) * considered to be restricted. */ -static int -restricted_shell(const char *sh) +static int restricted_shell (const char *sh) { #if 0 - char *cp = Basename((char *) sh); + char *cp = Basename ((char *) sh); + return *cp == 'r' || *cp == 'R'; #else /* - * Shells not listed in /etc/shells are considered to be - * restricted. Changed this to avoid confusion with "rc" - * (the plan9 shell - not restricted despite the name - * starting with 'r'). --marekm + * Shells not listed in /etc/shells are considered to be restricted. + * Changed this to avoid confusion with "rc" (the plan9 shell - not + * restricted despite the name starting with 'r'). --marekm */ - return !check_shell(sh); + return !check_shell (sh); #endif } @@ -148,28 +117,26 @@ restricted_shell(const char *sh) /* * chsh - this command controls changes to the user's shell * - * The only supported option is -s which permits the - * the login shell to be set from the command line. + * The only supported option is -s which permits the the login shell to + * be set from the command line. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - char *user; /* User name */ - int flag; /* Current command line flag */ - int sflg = 0; /* -s - set shell from command line */ + char *user; /* User name */ + int flag; /* Current command line flag */ + int sflg = 0; /* -s - set shell from command line */ const struct passwd *pw; /* Password entry from /etc/passwd */ - struct passwd pwent; /* New password entry */ + struct passwd pwent; /* New password entry */ - sanitize_env(); + sanitize_env (); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* - * This command behaves different for root and non-root - * users. + * This command behaves different for root and non-root users. */ amroot = getuid () == 0; @@ -178,13 +145,13 @@ main(int argc, char **argv) #endif /* - * Get the program name. The program name is used as a - * prefix to most error messages. + * Get the program name. The program name is used as a prefix to + * most error messages. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - OPENLOG("chsh"); + OPENLOG ("chsh"); /* * There is only one option, but use getopt() anyway to @@ -193,180 +160,183 @@ main(int argc, char **argv) while ((flag = getopt (argc, argv, "s:")) != EOF) { switch (flag) { - case 's': - sflg++; - STRFCPY(loginsh, optarg); - break; - default: - usage (); + case 's': + sflg++; + STRFCPY (loginsh, optarg); + break; + default: + usage (); } } /* - * There should be only one remaining argument at most - * and it should be the user's name. + * There should be only one remaining argument at most and it should + * be the user's name. */ if (argc > optind + 1) usage (); /* - * Get the name of the user to check. It is either - * the command line name, or the name getlogin() - * returns. + * Get the name of the user to check. It is either the command line + * name, or the name getlogin() returns. */ if (optind < argc) { user = argv[optind]; - pw = getpwnam(user); + pw = getpwnam (user); if (!pw) { - fprintf(stderr, - _("%s: Unknown user %s\n"), - Prog, user); - exit(1); + fprintf (stderr, + _("%s: Unknown user %s\n"), Prog, user); + exit (1); } } else { - pw = get_my_pwent(); + pw = get_my_pwent (); if (!pw) { - fprintf(stderr, - _("%s: Cannot determine your user name.\n"), - Prog); - exit(1); + fprintf (stderr, + _ + ("%s: Cannot determine your user name.\n"), + Prog); + exit (1); } - user = xstrdup(pw->pw_name); + user = xstrdup (pw->pw_name); } #ifdef USE_NIS /* - * Now we make sure this is a LOCAL password entry for - * this user ... + * Now we make sure this is a LOCAL password entry for this user ... */ if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; + char *nis_domain; + char *nis_master; - fprintf(stderr, - _("%s: cannot change user `%s' on NIS client.\n"), - Prog, user); + fprintf (stderr, + _("%s: cannot change user `%s' on NIS client.\n"), + Prog, user); - if (! yp_get_default_domain (&nis_domain) && - ! yp_master (nis_domain, "passwd.byname", + if (!yp_get_default_domain (&nis_domain) && + !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf(stderr, - _("%s: `%s' is the NIS master for this client.\n"), - Prog, nis_master); + fprintf (stderr, + _ + ("%s: `%s' is the NIS master for this client.\n"), + Prog, nis_master); } exit (1); } #endif /* - * Non-privileged users are only allowed to change the - * shell if the UID of the user matches the current - * real UID. + * Non-privileged users are only allowed to change the shell if the + * UID of the user matches the current real UID. */ - if (! amroot && pw->pw_uid != getuid()) { - SYSLOG((LOG_WARN, NOPERM2, user)); - closelog(); - fprintf(stderr, _("You may not change the shell for %s.\n"), - user); - exit(1); + if (!amroot && pw->pw_uid != getuid ()) { + SYSLOG ((LOG_WARN, "can't change shell for `%s'", user)); + closelog (); + fprintf (stderr, + _("You may not change the shell for %s.\n"), + user); + exit (1); } /* - * Non-privileged users are only allowed to change the - * shell if it is not a restricted one. + * Non-privileged users are only allowed to change the shell if it + * is not a restricted one. */ - if (! amroot && restricted_shell(pw->pw_shell)) { - SYSLOG((LOG_WARN, NOPERM2, user)); - closelog(); - fprintf(stderr, _("You may not change the shell for %s.\n"), - user); - exit(1); + if (!amroot && restricted_shell (pw->pw_shell)) { + SYSLOG ((LOG_WARN, "can't change shell for `%s'", user)); + closelog (); + fprintf (stderr, + _("You may not change the shell for %s.\n"), + user); + exit (1); } /* - * 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. --marekm - */ + * 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. --marekm + */ - if (!amroot && getdef_bool("CHFN_AUTH")) - passwd_check(pw->pw_name, pw->pw_passwd, "chsh"); + if (!amroot && getdef_bool ("CHFN_AUTH")) + passwd_check (pw->pw_name, pw->pw_passwd, "chsh"); /* - * Now get the login shell. Either get it from the password + * Now get the login shell. Either get it from the password * file, or use the value from the command line. */ - if (! sflg) - STRFCPY(loginsh, pw->pw_shell); + if (!sflg) + STRFCPY (loginsh, pw->pw_shell); /* - * If the login shell was not set on the command line, - * let the user interactively change it. + * If the login shell was not set on the command line, let the user + * interactively change it. */ - if (! sflg) { - printf(_("Changing the login shell for %s\n"), user); - new_fields(); + if (!sflg) { + printf (_("Changing the login shell for %s\n"), user); + new_fields (); } /* - * Check all of the fields for valid information. The shell - * field may not contain any illegal characters. Non-privileged + * Check all of the fields for valid information. The shell + * field may not contain any illegal characters. Non-privileged * users are restricted to using the shells in /etc/shells. * The shell must be executable by the user. */ if (valid_field (loginsh, ":,=")) { - fprintf(stderr, _("%s: Invalid entry: %s\n"), Prog, loginsh); - closelog(); - exit(1); + fprintf (stderr, _("%s: Invalid entry: %s\n"), Prog, + loginsh); + closelog (); + exit (1); } - if (!amroot && (!check_shell(loginsh) || access(loginsh, X_OK) != 0)) { - fprintf(stderr, _("%s is an invalid shell.\n"), loginsh); - closelog(); - exit(1); + if (!amroot + && (!check_shell (loginsh) || access (loginsh, X_OK) != 0)) { + fprintf (stderr, _("%s is an invalid shell.\n"), loginsh); + closelog (); + exit (1); } /* * Before going any further, raise the ulimit to prevent * colliding into a lowered ulimit, and set the real UID - * to root to protect against unexpected signals. Any + * to root to protect against unexpected signals. Any * keyboard signals are set to be ignored. */ - if (setuid(0)) { - SYSLOG((LOG_ERR, NOTROOT2)); - closelog(); + if (setuid (0)) { + SYSLOG ((LOG_ERR, "can't setuid(0)")); + closelog (); fprintf (stderr, _("Cannot change ID to root.\n")); - exit(1); + exit (1); } - pwd_init(); + pwd_init (); /* * The passwd entry is now ready to be committed back to - * the password file. Get a lock on the file and open it. + * the password file. Get a lock on the file and open it. */ - if (!pw_lock()) { - SYSLOG((LOG_WARN, PWDBUSY2)); - closelog(); - fprintf(stderr, - _("Cannot lock the password file; try again later.\n")); - exit(1); + if (!pw_lock ()) { + SYSLOG ((LOG_WARN, "can't lock /etc/passwd")); + closelog (); + fprintf (stderr, + _ + ("Cannot lock the password file; try again later.\n")); + exit (1); } - if (! pw_open (O_RDWR)) { - SYSLOG((LOG_ERR, OPNERROR2)); - closelog(); - fprintf(stderr, _("Cannot open the password file.\n")); - pw_unlock(); - exit(1); + if (!pw_open (O_RDWR)) { + SYSLOG ((LOG_ERR, "can't open /etc/passwd")); + closelog (); + fprintf (stderr, _("Cannot open the password file.\n")); + pw_unlock (); + exit (1); } /* @@ -375,63 +345,67 @@ main(int argc, char **argv) * contain the shadow password if (despite the warnings) someone * enables AUTOSHADOW (or SHADOW_COMPAT in libc). --marekm */ - pw = pw_locate(user); + pw = pw_locate (user); if (!pw) { - pw_unlock(); - fprintf(stderr, - _("%s: %s not found in /etc/passwd\n"), Prog, user); - exit(1); + pw_unlock (); + fprintf (stderr, + _("%s: %s not found in /etc/passwd\n"), Prog, + user); + exit (1); } /* - * Make a copy of the entry, then change the shell field. The other + * Make a copy of the entry, then change the shell field. The other * fields remain unchanged. */ pwent = *pw; pwent.pw_shell = loginsh; /* - * Update the passwd file entry. If there is a DBM file, - * update that entry as well. + * Update the passwd file entry. If there is a DBM file, update + * that entry as well. */ - if (!pw_update(&pwent)) { - SYSLOG((LOG_ERR, UPDERROR2)); - closelog(); - fprintf(stderr, _("Error updating the password entry.\n")); - pw_unlock(); - exit(1); + if (!pw_update (&pwent)) { + SYSLOG ((LOG_ERR, "error updating passwd entry")); + closelog (); + fprintf (stderr, + _("Error updating the password entry.\n")); + pw_unlock (); + exit (1); } #ifdef NDBM - if (pw_dbm_present() && ! pw_dbm_update (&pwent)) { - SYSLOG((LOG_ERR, DBMERROR2)); - closelog(); - fprintf (stderr, _("Error updating the DBM password entry.\n")); - pw_unlock(); - exit(1); + if (pw_dbm_present () && !pw_dbm_update (&pwent)) { + SYSLOG ((LOG_ERR, "error updating DBM passwd entry")); + closelog (); + fprintf (stderr, + _("Error updating the DBM password entry.\n")); + pw_unlock (); + exit (1); } - endpwent(); + endpwent (); #endif /* - * Changes have all been made, so commit them and unlock the - * file. + * Changes have all been made, so commit them and unlock the file. */ - if (!pw_close()) { - SYSLOG((LOG_ERR, CLSERROR2)); - closelog(); - fprintf(stderr, _("Cannot commit password file changes.\n")); - pw_unlock(); - exit(1); + if (!pw_close ()) { + SYSLOG ((LOG_ERR, "can't rewrite /etc/passwd")); + closelog (); + fprintf (stderr, + _("Cannot commit password file changes.\n")); + pw_unlock (); + exit (1); } - if (!pw_unlock()) { - SYSLOG((LOG_ERR, UNLKERROR2)); - closelog(); - fprintf(stderr, _("Cannot unlock the password file.\n")); - exit(1); + if (!pw_unlock ()) { + SYSLOG ((LOG_ERR, "can't unlock /etc/passwd")); + closelog (); + fprintf (stderr, _("Cannot unlock the password file.\n")); + exit (1); } - SYSLOG((LOG_INFO, CHGSHELL, user, loginsh)); - closelog(); + SYSLOG ((LOG_INFO, "changed user `%s' shell to `%s'", user, + loginsh)); + closelog (); exit (0); } diff --git a/src/dpasswd.c b/src/dpasswd.c index 6de5ea20..4e65dbeb 100644 --- a/src/dpasswd.c +++ b/src/dpasswd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: dpasswd.c,v 1.12 2000/09/02 18:40:43 marekm Exp $") - +RCSID (PKG_VER "$Id: dpasswd.c,v 1.15 2002/01/05 15:41:43 kloczek Exp $") #include #include #include @@ -40,76 +39,59 @@ RCSID(PKG_VER "$Id: dpasswd.c,v 1.12 2000/09/02 18:40:43 marekm Exp $") #include "prototypes.h" #include "defines.h" #include "dialup.h" - #define DTMP "/etc/d_passwd.tmp" - -/* - * Prompts and messages go here. - */ - -#define DIALCHG "changed password for %s\n" -#define DIALADD "added password for %s\n" -#define DIALREM "removed password for %s\n" - static int aflg = 0; static int dflg = 0; static char *Prog; -extern int optind; -extern char *optarg; - -extern char *getpass(); - /* local function prototypes */ -static void usage(void); +static void usage (void); -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("Usage: %s [ -(a|d) ] shell\n"), Prog); - exit(1); + fprintf (stderr, _("Usage: %s [-(a|d)] shell\n"), Prog); + exit (1); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { - struct dialup *dial; - struct dialup dent; - struct stat sb; - FILE *fp; - char *sh = 0; - char *cp; - char pass[BUFSIZ]; - int fd; - int found = 0; - int opt; + struct dialup *dial; + struct dialup dent; + struct stat sb; + FILE *fp; + char *sh = 0; + char *cp; + char pass[BUFSIZ]; + int fd; + int found = 0; + int opt; - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - OPENLOG(Prog); + OPENLOG (Prog); while ((opt = getopt (argc, argv, "a:d:")) != EOF) { switch (opt) { - case 'a': - aflg++; - sh = optarg; - break; - case 'd': - dflg++; - sh = optarg; - break; - default: - usage (); + case 'a': + aflg++; + sh = optarg; + break; + case 'd': + dflg++; + sh = optarg; + break; + default: + usage (); } } - if (! aflg && ! dflg) + if (!aflg && !dflg) aflg++; - if (! sh) { + if (!sh) { if (optind >= argc) usage (); else @@ -120,65 +102,67 @@ main(int argc, char **argv) /* * Add a new shell to the password file, or update an existing - * entry. Begin by getting an encrypted password for this - * shell. + * entry. Begin by getting an encrypted password for this shell. */ if (aflg) { - int tries = 3; + int tries = 3; dent.du_shell = sh; - dent.du_passwd = ""; /* XXX warning: const */ + dent.du_passwd = ""; /* XXX warning: const */ -again: - if (! (cp = getpass(_("Shell password: ")))) + again: + if (!(cp = getpass (_("Shell password: ")))) exit (1); - STRFCPY(pass, cp); - strzero(cp); + STRFCPY (pass, cp); + strzero (cp); - if (! (cp = getpass(_("re-enter Shell password: ")))) + if (!(cp = getpass (_("re-enter Shell password: ")))) exit (1); if (strcmp (pass, cp)) { - strzero(pass); - strzero(cp); - fprintf(stderr, - _("%s: Passwords do not match, try again.\n"), - Prog); + strzero (pass); + strzero (cp); + fprintf (stderr, + _ + ("%s: Passwords do not match, try again.\n"), + Prog); if (--tries) goto again; - exit(1); + exit (1); } - strzero(cp); - dent.du_passwd = pw_encrypt(pass, crypt_make_salt()); - strzero(pass); + strzero (cp); + dent.du_passwd = pw_encrypt (pass, crypt_make_salt ()); + strzero (pass); } /* * Create the temporary file for the updated dialup password - * information to be placed into. Turn it into a (FILE *) - * for use by putduent(). + * information to be placed into. Turn it into a (FILE *) for use by + * putduent(). */ - if ((fd = open (DTMP, O_CREAT|O_EXCL|O_RDWR, 0600)) < 0) { - snprintf(pass, sizeof pass, _("%s: can't create %s"), Prog, DTMP); + if ((fd = open (DTMP, O_CREAT | O_EXCL | O_RDWR, 0600)) < 0) { + snprintf (pass, sizeof pass, _("%s: can't create %s"), + Prog, DTMP); perror (pass); exit (1); } - if (! (fp = fdopen (fd, "r+"))) { - snprintf(pass, sizeof pass, _("%s: can't open %s"), Prog, DTMP); + if (!(fp = fdopen (fd, "r+"))) { + snprintf (pass, sizeof pass, _("%s: can't open %s"), Prog, + DTMP); perror (pass); unlink (DTMP); exit (1); } /* - * Scan the dialup password file for the named entry, - * copying out other entries along the way. Copying - * stops when a match is found or the file runs out. + * Scan the dialup password file for the named entry, copying out + * other entries along the way. Copying stops when a match is found + * or the file runs out. */ while ((dial = getduent ())) { @@ -191,13 +175,12 @@ again: } /* - * To delete the entry, just don't copy it. To update - * the entry, output the modified version - works with - * new entries as well. + * To delete the entry, just don't copy it. To update the entry, + * output the modified version - works with new entries as well. */ - if (dflg && ! found) { - fprintf(stderr, _("%s: Shell %s not found.\n"), Prog, sh); + if (dflg && !found) { + fprintf (stderr, _("%s: Shell %s not found.\n"), Prog, sh); goto failure; } if (aflg) @@ -205,9 +188,8 @@ again: goto failure; /* - * Now copy out the remaining entries. Flush and close the - * new file before doing anything nasty to the existing - * file. + * Now copy out the remaining entries. Flush and close the new file + * before doing anything nasty to the existing file. */ @@ -221,16 +203,16 @@ again: fclose (fp); /* - * If the original file did not exist, we must create a new - * file with owner "root" and mode 400. Otherwise we copy - * the modes from the existing file to the new file. + * If the original file did not exist, we must create a new file + * with owner "root" and mode 400. Otherwise we copy the modes from + * the existing file to the new file. * * After this is done the new file will replace the old file. */ - pwd_init(); + pwd_init (); - if (! stat (DIALPWD, &sb)) { + if (!stat (DIALPWD, &sb)) { chown (DTMP, sb.st_uid, sb.st_gid); chmod (DTMP, sb.st_mode); unlink (DIALPWD); @@ -238,22 +220,22 @@ again: chown (DTMP, 0, 0); chmod (DTMP, 0400); } - if (! link (DTMP, DIALPWD)) + if (!link (DTMP, DIALPWD)) unlink (DTMP); - if (aflg && ! found) - SYSLOG((LOG_INFO, DIALADD, sh)); + if (aflg && !found) + SYSLOG ((LOG_INFO, "added password for %s", sh)); else if (aflg && found) - SYSLOG((LOG_INFO, DIALCHG, sh)); + SYSLOG ((LOG_INFO, "changed password for %s", sh)); else if (dflg) - SYSLOG((LOG_INFO, DIALREM, sh)); + SYSLOG ((LOG_INFO, "removed password for %s", sh)); - closelog(); + closelog (); sync (); exit (0); -failure: + failure: unlink (DTMP); - closelog(); + closelog (); exit (1); } diff --git a/src/expiry.c b/src/expiry.c index b8d09b50..aaa507fe 100644 --- a/src/expiry.c +++ b/src/expiry.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,46 +30,22 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: expiry.c,v 1.9 2000/08/26 18:27:18 marekm Exp $") - +RCSID (PKG_VER "$Id: expiry.c,v 1.12 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include "prototypes.h" #include "defines.h" #include - -#ifndef AGING -#if defined(HAVE_USERSEC_H) || defined(SHADOWPWD) -#define AGING 1 -#endif -#endif - - -#if !defined(SHADOWPWD) && !defined(AGING) /*{*/ - -/* - * Not much to do here ... - */ - -int -main(int argc, char **argv) -{ - exit (0); -} - -#else /*} AGING || SHADOWPWD {*/ - /* local function prototypes */ -static RETSIGTYPE catch(int); -static void usage(void); +static RETSIGTYPE catch (int); +static void usage (void); /* * catch - signal catcher */ -static RETSIGTYPE -catch(int sig) +static RETSIGTYPE catch (int sig) { exit (10); } @@ -78,31 +54,29 @@ catch(int sig) * usage - print syntax message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("Usage: expiry { -f | -c }\n")); - exit(10); + fprintf (stderr, _("Usage: expiry {-f|-c}\n")); + exit (10); } /* * expiry - check and enforce password expiration policy * - * expiry checks (-c) the current password expiraction and - * forces (-f) changes when required. It is callable as a - * normal user command. + * expiry checks (-c) the current password expiraction and forces (-f) + * changes when required. It is callable as a normal user command. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - struct passwd *pwd; + struct passwd *pwd; + #ifdef SHADOWPWD - struct spwd *spwd; + struct spwd *spwd; #endif char *Prog = argv[0]; - sanitize_env(); + sanitize_env (); /* * Start by disabling all of the keyboard signals. @@ -116,27 +90,29 @@ main(int argc, char **argv) #endif /* - * expiry takes one of two arguments. The default action - * is to give the usage message. + * expiry takes one of two arguments. The default action is to give + * the usage message. */ - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - if (argc != 2 || (strcmp (argv[1], "-f") && strcmp (argv[1], "-c"))) + if (argc != 2 + || (strcmp (argv[1], "-f") && strcmp (argv[1], "-c"))) usage (); -#if 0 /* could be setgid shadow with /etc/shadow mode 0640 */ +#if 0 /* could be setgid shadow with /etc/shadow mode 0640 */ /* - * Make sure I am root. Can't open /etc/shadow without root + * Make sure I am root. Can't open /etc/shadow without root * authority. */ if (geteuid () != 0) { - fprintf(stderr, _("%s: WARNING! Must be set-UID root!\n"), - argv[0]); - exit(10); + fprintf (stderr, + _("%s: WARNING! Must be set-UID root!\n"), + argv[0]); + exit (10); } #endif @@ -144,12 +120,12 @@ main(int argc, char **argv) * Get user entries for /etc/passwd and /etc/shadow */ - if (!(pwd = get_my_pwent())) { - fprintf(stderr, _("%s: unknown user\n"), Prog); - exit(10); + if (!(pwd = get_my_pwent ())) { + fprintf (stderr, _("%s: unknown user\n"), Prog); + exit (10); } #ifdef SHADOWPWD - spwd = getspnam(pwd->pw_name); + spwd = getspnam (pwd->pw_name); #endif /* @@ -169,7 +145,7 @@ main(int argc, char **argv) #endif /* - * Exit with status indicating state of account -- + * Exit with status indicating state of account. */ #ifdef SHADOWPWD @@ -186,10 +162,9 @@ main(int argc, char **argv) if (strcmp (argv[1], "-f") == 0) { /* - * Just call expire(). It will force the change - * or give a message indicating what to do. And - * it doesn't return at all unless the account - * is unexpired. + * Just call expire(). It will force the change or give a + * message indicating what to do. And it doesn't return at + * all unless the account is unexpired. */ #ifdef SHADOWPWD @@ -207,4 +182,3 @@ main(int argc, char **argv) usage (); exit (1); } -#endif /*}*/ diff --git a/src/faillog.c b/src/faillog.c index beb418ba..fb5987a9 100644 --- a/src/faillog.c +++ b/src/faillog.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: faillog.c,v 1.10 2000/08/26 18:27:18 marekm Exp $") - +RCSID (PKG_VER "$Id: faillog.c,v 1.11 2002/01/05 15:41:43 kloczek Exp $") #include #include #include @@ -40,242 +39,239 @@ RCSID(PKG_VER "$Id: faillog.c,v 1.10 2000/08/26 18:27:18 marekm Exp $") #include "prototypes.h" #include "defines.h" #include "faillog.h" - -static char *Prog; /* program name */ -static FILE *fail; /* failure file stream */ -static uid_t user; /* one single user, specified on command line */ -static int days; /* number of days to consider for print command */ -static time_t seconds; /* that number of days in seconds */ +static char *Prog; /* program name */ +static FILE *fail; /* failure file stream */ +static uid_t user; /* one single user, specified on command line */ +static int days; /* number of days to consider for print command */ +static time_t seconds; /* that number of days in seconds */ static int - aflg = 0, /* set if all users are to be printed always */ - uflg = 0, /* set if user is a valid user id */ - tflg = 0; /* print is restricted to most recent days */ + aflg = 0, /* set if all users are to be printed always */ + uflg = 0, /* set if user is a valid user id */ + tflg = 0; /* print is restricted to most recent days */ static struct stat statbuf; /* fstat buffer for file size */ #if !defined(UNISTD_H) && !defined(STDLIB_H) -extern char *optarg; +extern char *optarg; #endif #define NOW (time((time_t *) 0)) /* local function prototypes */ -static void usage(void); -static void print(void); -static void print_one(const struct faillog *, uid_t); -static void reset(void); -static int reset_one(uid_t); -static void setmax(int); -static void setmax_one(uid_t, int); -static void set_locktime(long); -static void set_locktime_one(uid_t, long); +static void usage (void); +static void print (void); +static void print_one (const struct faillog *, uid_t); +static void reset (void); +static int reset_one (uid_t); +static void setmax (int); +static void setmax_one (uid_t, int); +static void set_locktime (long); +static void set_locktime_one (uid_t, long); -static void -usage(void) +static void usage (void) { - fprintf(stderr, - _("usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"), - Prog); - exit(1); + fprintf (stderr, + _ + ("usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"), + Prog); + exit (1); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { int c, anyflag = 0; struct passwd *pwent; - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* try to open for read/write, if that fails - read only */ - fail = fopen(FAILLOG_FILE, "r+"); + fail = fopen (FAILLOG_FILE, "r+"); if (!fail) - fail = fopen(FAILLOG_FILE, "r"); + fail = fopen (FAILLOG_FILE, "r"); if (!fail) { - perror(FAILLOG_FILE); - exit(1); + perror (FAILLOG_FILE); + exit (1); } - while ((c = getopt(argc, argv, "al:m:pru:t:")) != EOF) { + while ((c = getopt (argc, argv, "al:m:pru:t:")) != EOF) { switch (c) { - case 'a': - aflg++; - if (uflg) - usage(); - break; - case 'l': - set_locktime((long) atoi(optarg)); - anyflag++; - break; - case 'm': - setmax(atoi(optarg)); - anyflag++; - break; - case 'p': - print(); - anyflag++; - break; - case 'r': - reset(); - anyflag++; - break; - case 'u': - if (aflg) - usage(); + case 'a': + aflg++; + if (uflg) + usage (); + break; + case 'l': + set_locktime ((long) atoi (optarg)); + anyflag++; + break; + case 'm': + setmax (atoi (optarg)); + anyflag++; + break; + case 'p': + print (); + anyflag++; + break; + case 'r': + reset (); + anyflag++; + break; + case 'u': + if (aflg) + usage (); - pwent = getpwnam(optarg); - if (!pwent) { - fprintf(stderr, _("Unknown User: %s\n"), optarg); - exit(1); - } - uflg++; - user = pwent->pw_uid; - break; - case 't': - days = atoi(optarg); - seconds = days * DAY; - tflg++; - break; - default: - usage(); + pwent = getpwnam (optarg); + if (!pwent) { + fprintf (stderr, _("Unknown User: %s\n"), + optarg); + exit (1); + } + uflg++; + user = pwent->pw_uid; + break; + case 't': + days = atoi (optarg); + seconds = days * DAY; + tflg++; + break; + default: + usage (); } } /* no flags implies -a -p (= print information for all users) */ if (!(anyflag || aflg || tflg || uflg)) aflg++; /* (-a or -t days or -u user) and no other flags implies -p - (= print information for selected users) */ + (= print information for selected users) */ if (!anyflag && (aflg || tflg || uflg)) - print(); - fclose(fail); + print (); + fclose (fail); return 0; - /*NOTREACHED*/ -} + /*NOTREACHED*/} -static void -print(void) +static void print (void) { - uid_t uid; - off_t offset; - struct faillog faillog; + uid_t uid; + off_t offset; + struct faillog faillog; if (uflg) { offset = user * sizeof faillog; - if (fstat(fileno(fail), &statbuf)) { - perror(FAILLOG_FILE); + if (fstat (fileno (fail), &statbuf)) { + perror (FAILLOG_FILE); return; } if (offset >= statbuf.st_size) return; - fseek(fail, (off_t) user * sizeof faillog, SEEK_SET); - if (fread((char *) &faillog, sizeof faillog, 1, fail) == 1) - print_one(&faillog, user); + fseek (fail, (off_t) user * sizeof faillog, SEEK_SET); + if (fread ((char *) &faillog, sizeof faillog, 1, fail) == + 1) + print_one (&faillog, user); else - perror(FAILLOG_FILE); + perror (FAILLOG_FILE); } else { for (uid = 0; - fread((char *) &faillog, sizeof faillog, 1, fail) == 1; - uid++) { + fread ((char *) &faillog, sizeof faillog, 1, + fail) == 1; uid++) { if (aflg == 0 && faillog.fail_cnt == 0) continue; if (aflg == 0 && tflg && - NOW - faillog.fail_time > seconds) + NOW - faillog.fail_time > seconds) continue; if (aflg && faillog.fail_time == 0) continue; - print_one(&faillog, uid); + print_one (&faillog, uid); } } } -static void -print_one(const struct faillog *fl, uid_t uid) +static void print_one (const struct faillog *fl, uid_t uid) { - static int once; - char *cp; - struct tm *tm; + static int once; + char *cp; + struct tm *tm; time_t now; - struct passwd *pwent; + struct passwd *pwent; + #ifdef HAVE_STRFTIME char ptime[80]; #endif if (!once) { - printf(_("Username Failures Maximum Latest\n")); + printf (_("Username Failures Maximum Latest\n")); once++; } - pwent = getpwuid(uid); - time(&now); - tm = localtime(&fl->fail_time); + pwent = getpwuid (uid); + time (&now); + tm = localtime (&fl->fail_time); #ifdef HAVE_STRFTIME - strftime(ptime, sizeof(ptime), "%a %b %e %H:%M:%S %z %Y",tm); + strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm); cp = ptime; #else - cp = asctime(tm); + cp = asctime (tm); cp[24] = '\0'; #endif if (pwent) { - printf("%-12s %4d %4d", + printf ("%-12s %4d %4d", pwent->pw_name, fl->fail_cnt, fl->fail_max); if (fl->fail_time) { - printf(_(" %s on %s"), cp, fl->fail_line); - if (fl->fail_locktime) { - if (fl->fail_time + fl->fail_locktime > now - && fl->fail_cnt) - printf(_(" [%lds left]"), - fl->fail_time + fl->fail_locktime - now); - else - printf(_(" [%lds lock]"), fl->fail_locktime); - } + printf (_(" %s on %s"), cp, fl->fail_line); + if (fl->fail_locktime) { + if (fl->fail_time + fl->fail_locktime > now + && fl->fail_cnt) + printf (_(" [%lds left]"), + fl->fail_time + + fl->fail_locktime - now); + else + printf (_(" [%lds lock]"), + fl->fail_locktime); + } } - putchar('\n'); + putchar ('\n'); } } -static void -reset(void) +static void reset (void) { uid_t uid; if (uflg) - reset_one(user); + reset_one (user); else - for (uid = 0; reset_one(uid); uid++) - ; + for (uid = 0; reset_one (uid); uid++); } -static int -reset_one(uid_t uid) +static int reset_one (uid_t uid) { - off_t offset; - struct faillog faillog; + off_t offset; + struct faillog faillog; offset = uid * sizeof faillog; - if (fstat(fileno(fail), &statbuf)) { - perror(FAILLOG_FILE); + if (fstat (fileno (fail), &statbuf)) { + perror (FAILLOG_FILE); return 0; } if (offset >= statbuf.st_size) return 0; - if (fseek(fail, offset, SEEK_SET) != 0) { - perror(FAILLOG_FILE); + if (fseek (fail, offset, SEEK_SET) != 0) { + perror (FAILLOG_FILE); return 0; } - if (fread((char *) &faillog, sizeof faillog, 1, fail) != 1) { - if (!feof(fail)) - perror(FAILLOG_FILE); + if (fread ((char *) &faillog, sizeof faillog, 1, fail) != 1) { + if (!feof (fail)) + perror (FAILLOG_FILE); return 0; } @@ -284,96 +280,92 @@ reset_one(uid_t uid) faillog.fail_cnt = 0; - if (fseek(fail, offset, SEEK_SET) == 0 - && fwrite((char *) &faillog, sizeof faillog, 1, fail) == 1) { - fflush(fail); + if (fseek (fail, offset, SEEK_SET) == 0 + && fwrite ((char *) &faillog, sizeof faillog, 1, fail) == 1) { + fflush (fail); return 1; } else { - perror(FAILLOG_FILE); + perror (FAILLOG_FILE); } return 0; } -static void -setmax(int max) +static void setmax (int max) { - struct passwd *pwent; + struct passwd *pwent; if (uflg) { - setmax_one(user, max); + setmax_one (user, max); } else { - setpwent(); - while ((pwent = getpwent())) - setmax_one(pwent->pw_uid, max); + setpwent (); + while ((pwent = getpwent ())) + setmax_one (pwent->pw_uid, max); } } -static void -setmax_one(uid_t uid, int max) +static void setmax_one (uid_t uid, int max) { - off_t offset; - struct faillog faillog; + off_t offset; + struct faillog faillog; offset = uid * sizeof faillog; - if (fseek(fail, offset, SEEK_SET) != 0) { - perror(FAILLOG_FILE); + if (fseek (fail, offset, SEEK_SET) != 0) { + perror (FAILLOG_FILE); return; } - if (fread((char *) &faillog, sizeof faillog, 1, fail) != 1) { - if (!feof(fail)) - perror(FAILLOG_FILE); - memzero(&faillog, sizeof faillog); + if (fread ((char *) &faillog, sizeof faillog, 1, fail) != 1) { + if (!feof (fail)) + perror (FAILLOG_FILE); + memzero (&faillog, sizeof faillog); } faillog.fail_max = max; - if (fseek(fail, offset, SEEK_SET) == 0 - && fwrite((char *) &faillog, sizeof faillog, 1, fail) == 1) - fflush(fail); + if (fseek (fail, offset, SEEK_SET) == 0 + && fwrite ((char *) &faillog, sizeof faillog, 1, fail) == 1) + fflush (fail); else - perror(FAILLOG_FILE); + perror (FAILLOG_FILE); } /* * XXX - this needs to be written properly some day, right now it is * a quick cut-and-paste hack from the above two functions. --marekm */ -static void -set_locktime(long locktime) +static void set_locktime (long locktime) { - struct passwd *pwent; + struct passwd *pwent; if (uflg) { - set_locktime_one(user, locktime); + set_locktime_one (user, locktime); } else { - setpwent(); - while ((pwent = getpwent())) - set_locktime_one(pwent->pw_uid, locktime); + setpwent (); + while ((pwent = getpwent ())) + set_locktime_one (pwent->pw_uid, locktime); } } -static void -set_locktime_one(uid_t uid, long locktime) +static void set_locktime_one (uid_t uid, long locktime) { - off_t offset; - struct faillog faillog; + off_t offset; + struct faillog faillog; offset = uid * sizeof faillog; - if (fseek(fail, offset, SEEK_SET) != 0) { - perror(FAILLOG_FILE); + if (fseek (fail, offset, SEEK_SET) != 0) { + perror (FAILLOG_FILE); return; } - if (fread((char *) &faillog, sizeof faillog, 1, fail) != 1) { - if (!feof(fail)) - perror(FAILLOG_FILE); - memzero(&faillog, sizeof faillog); + if (fread ((char *) &faillog, sizeof faillog, 1, fail) != 1) { + if (!feof (fail)) + perror (FAILLOG_FILE); + memzero (&faillog, sizeof faillog); } faillog.fail_locktime = locktime; - if (fseek(fail, offset, SEEK_SET) == 0 - && fwrite((char *) &faillog, sizeof faillog, 1, fail) == 1) - fflush(fail); + if (fseek (fail, offset, SEEK_SET) == 0 + && fwrite ((char *) &faillog, sizeof faillog, 1, fail) == 1) + fflush (fail); else - perror(FAILLOG_FILE); + perror (FAILLOG_FILE); } diff --git a/src/gpasswd.c b/src/gpasswd.c index d1bb023c..ee862c74 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: gpasswd.c,v 1.17 2000/09/02 18:40:43 marekm Exp $") - +RCSID (PKG_VER "$Id: gpasswd.c,v 1.19 2002/01/05 15:41:43 kloczek Exp $") #include #include #include @@ -39,61 +38,51 @@ RCSID(PKG_VER "$Id: gpasswd.c,v 1.17 2000/09/02 18:40:43 marekm Exp $") #include #include #include - #include "prototypes.h" #include "defines.h" - #include "groupio.h" #ifdef SHADOWGRP #include "sgroupio.h" #endif - static char *Prog; + #ifdef SHADOWGRP static int is_shadowgrp; #endif static int - aflg = 0, - Aflg = 0, - dflg = 0, - Mflg = 0, - rflg = 0, - Rflg = 0; + aflg = 0, Aflg = 0, dflg = 0, Mflg = 0, rflg = 0, Rflg = 0; #ifndef RETRIES #define RETRIES 3 #endif -extern int optind; -extern char *optarg; #ifdef NDBM #ifdef SHADOWGRP -extern int sg_dbm_mode; +extern int sg_dbm_mode; #endif -extern int gr_dbm_mode; +extern int gr_dbm_mode; #endif /* local function prototypes */ -static void usage(void); -static RETSIGTYPE die(int); -static int check_list(const char *); +static void usage (void); +static RETSIGTYPE die (int); +static int check_list (const char *); /* * usage - display usage message */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("usage: %s [-r|-R] group\n"), Prog); - fprintf(stderr, _(" %s [-a user] group\n"), Prog); - fprintf(stderr, _(" %s [-d user] group\n"), Prog); + fprintf (stderr, _("usage: %s [-r|-R] group\n"), Prog); + fprintf (stderr, _(" %s [-a user] group\n"), Prog); + fprintf (stderr, _(" %s [-d user] group\n"), Prog); #ifdef SHADOWGRP - fprintf(stderr, _(" %s [-A user,...] [-M user,...] group\n"), - Prog); + fprintf (stderr, + _(" %s [-A user,...] [-M user,...] group\n"), Prog); #else - fprintf(stderr, _(" %s [-M user,...] group\n"), Prog); + fprintf (stderr, _(" %s [-M user,...] group\n"), Prog); #endif exit (1); } @@ -101,21 +90,19 @@ usage(void) /* * die - set or reset termio modes. * - * die() is called before processing begins. signal() is then - * called with die() as the signal handler. If signal later - * calls die() with a signal number, the terminal modes are - * then reset. + * die() is called before processing begins. signal() is then called + * with die() as the signal handler. If signal later calls die() with a + * signal number, the terminal modes are then reset. */ -static RETSIGTYPE -die(int killed) +static RETSIGTYPE die (int killed) { static TERMIO sgtty; if (killed) - STTY(0, &sgtty); + STTY (0, &sgtty); else - GTTY(0, &sgtty); + GTTY (0, &sgtty); if (killed) { putchar ('\n'); @@ -131,34 +118,33 @@ die(int killed) * that each listed name exists. */ -static int -check_list(const char *users) +static int check_list (const char *users) { const char *start, *end; char username[32]; - int errors = 0; - int len; + int errors = 0; + int len; for (start = users; start && *start; start = end) { if ((end = strchr (start, ','))) { len = end - start; end++; } else { - len = strlen(start); + len = strlen (start); } - if (len > sizeof(username) - 1) - len = sizeof(username) - 1; - strncpy(username, start, len); + if (len > sizeof (username) - 1) + len = sizeof (username) - 1; + strncpy (username, start, len); username[len] = '\0'; /* * This user must exist. */ - if (!getpwnam(username)) { - fprintf(stderr, _("%s: unknown user %s\n"), - Prog, username); + if (!getpwnam (username)) { + fprintf (stderr, _("%s: unknown user %s\n"), + Prog, username); errors++; } } @@ -166,13 +152,11 @@ check_list(const char *users) } -static void -failure(void) +static void failure (void) { - fprintf(stderr, _("Permission denied.\n")); - exit(1); - /*NOTREACHED*/ -} + fprintf (stderr, _("Permission denied.\n")); + exit (1); + /*NOTREACHED*/} /* @@ -186,19 +170,19 @@ failure(void) * -M user,... make list of users the group members */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int flag; - char *cp; - int amroot; - int retries; + int flag; + char *cp; + int amroot; + int retries; struct group *gr = NULL; - struct group grent; + struct group grent; static char pass[BUFSIZ]; + #ifdef SHADOWGRP struct sgrp *sg = NULL; - struct sgrp sgent; + struct sgrp sgent; char *admins = NULL; #endif struct passwd *pw = NULL; @@ -207,17 +191,17 @@ main(int argc, char **argv) char *group = NULL; char *members = NULL; - sanitize_env(); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + sanitize_env (); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* - * Make a note of whether or not this command was invoked - * by root. This will be used to bypass certain checks - * later on. Also, set the real user ID to match the - * effective user ID. This will prevent the invoker from - * issuing signals which would interfer with this command. + * Make a note of whether or not this command was invoked by root. + * This will be used to bypass certain checks later on. Also, set + * the real user ID to match the effective user ID. This will + * prevent the invoker from issuing signals which would interfer + * with this command. */ amroot = getuid () == 0; @@ -228,39 +212,41 @@ main(int argc, char **argv) gr_dbm_mode = O_RDWR; #endif - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - OPENLOG("gpasswd"); - setbuf(stdout, NULL); - setbuf(stderr, NULL); + OPENLOG ("gpasswd"); + setbuf (stdout, NULL); + setbuf (stderr, NULL); #ifdef SHADOWGRP - is_shadowgrp = sgr_file_present(); + is_shadowgrp = sgr_file_present (); #endif while ((flag = getopt (argc, argv, "a:d:grRA:M:")) != EOF) { switch (flag) { case 'a': /* add a user */ user = optarg; - if (!getpwnam(user)) { - fprintf(stderr, _("%s: unknown user %s\n"), - Prog, user); - exit(1); + if (!getpwnam (user)) { + fprintf (stderr, + _("%s: unknown user %s\n"), Prog, + user); + exit (1); } aflg++; break; #ifdef SHADOWGRP case 'A': if (!amroot) - failure(); + failure (); if (!is_shadowgrp) { - fprintf(stderr, - _("%s: shadow group passwords required for -A\n"), - Prog); - exit(2); + fprintf (stderr, + _ + ("%s: shadow group passwords required for -A\n"), + Prog); + exit (2); } admins = optarg; - if (check_list(admins)) - exit(1); + if (check_list (admins)) + exit (1); Aflg++; break; #endif @@ -272,10 +258,10 @@ main(int argc, char **argv) break; case 'M': if (!amroot) - failure(); + failure (); members = optarg; - if (check_list(members)) - exit(1); + if (check_list (members)) + exit (1); Mflg++; break; case 'r': /* remove group password */ @@ -285,7 +271,7 @@ main(int argc, char **argv) Rflg++; break; default: - usage(); + usage (); } } @@ -297,61 +283,60 @@ main(int argc, char **argv) usage (); /* - * Determine the name of the user that invoked this command. - * This is really hit or miss because there are so many ways - * that command can be executed and so many ways to trip up - * the routines that report the user name. + * Determine the name of the user that invoked this command. This + * is really hit or miss because there are so many ways that command + * can be executed and so many ways to trip up the routines that + * report the user name. */ - pw = get_my_pwent(); + pw = get_my_pwent (); if (!pw) { - fprintf(stderr, _("Who are you?\n")); - exit(1); + fprintf (stderr, _("Who are you?\n")); + exit (1); } - myname = xstrdup(pw->pw_name); + myname = xstrdup (pw->pw_name); /* - * Get the name of the group that is being affected. The group - * entry will be completely replicated so it may be modified - * later on. + * Get the name of the group that is being affected. The group entry + * will be completely replicated so it may be modified later on. */ /* - * XXX - should get the entry using gr_locate() and modify - * that, getgrnam() could give us a NIS group. --marekm + * XXX - should get the entry using gr_locate() and modify that, + * getgrnam() could give us a NIS group. --marekm */ - if (! (group = argv[optind])) + if (!(group = argv[optind])) usage (); - if (! (gr = getgrnam (group))) { + if (!(gr = getgrnam (group))) { fprintf (stderr, _("unknown group: %s\n"), group); exit (1); } grent = *gr; - grent.gr_name = xstrdup(gr->gr_name); - grent.gr_passwd = xstrdup(gr->gr_passwd); + grent.gr_name = xstrdup (gr->gr_name); + grent.gr_passwd = xstrdup (gr->gr_passwd); - grent.gr_mem = dup_list(gr->gr_mem); + grent.gr_mem = dup_list (gr->gr_mem); #ifdef SHADOWGRP if ((sg = getsgnam (group))) { sgent = *sg; - sgent.sg_name = xstrdup(sg->sg_name); - sgent.sg_passwd = xstrdup(sg->sg_passwd); + sgent.sg_name = xstrdup (sg->sg_name); + sgent.sg_passwd = xstrdup (sg->sg_passwd); - sgent.sg_mem = dup_list(sg->sg_mem); - sgent.sg_adm = dup_list(sg->sg_adm); + sgent.sg_mem = dup_list (sg->sg_mem); + sgent.sg_adm = dup_list (sg->sg_adm); } else { - sgent.sg_name = xstrdup(group); + sgent.sg_name = xstrdup (group); sgent.sg_passwd = grent.gr_passwd; - grent.gr_passwd = "!"; /* XXX warning: const */ + grent.gr_passwd = "!"; /* XXX warning: const */ - sgent.sg_mem = dup_list(grent.gr_mem); + sgent.sg_mem = dup_list (grent.gr_mem); - sgent.sg_adm = (char **) xmalloc(sizeof(char *) * 2); + sgent.sg_adm = (char **) xmalloc (sizeof (char *) * 2); #ifdef FIRST_MEMBER_IS_ADMIN if (sgent.sg_mem[0]) { - sgent.sg_adm[0] = xstrdup(sgent.sg_mem[0]); + sgent.sg_adm[0] = xstrdup (sgent.sg_mem[0]); sgent.sg_adm[1] = 0; } else #endif @@ -361,160 +346,163 @@ main(int argc, char **argv) } /* - * The policy here for changing a group is that 1) you must be - * root or 2). you must be listed as an administrative member. - * Administrative members can do anything to a group that the - * root user can. + * The policy here for changing a group is that 1) you must be root + * or 2). you must be listed as an administrative member. + * Administrative members can do anything to a group that the root + * user can. */ - if (!amroot && !is_on_list(sgent.sg_adm, myname)) - failure(); -#else /* ! SHADOWGRP */ + if (!amroot && !is_on_list (sgent.sg_adm, myname)) + failure (); +#else /* ! SHADOWGRP */ #ifdef FIRST_MEMBER_IS_ADMIN /* - * The policy here for changing a group is that 1) you must bes - * root or 2) you must be the first listed member of the group. - * The first listed member of a group can do anything to that - * group that the root user can. The rationale for this hack is - * that the FIRST user is probably the most important user in - * this entire group. + * The policy here for changing a group is that 1) you must bes root + * or 2) you must be the first listed member of the group. The + * first listed member of a group can do anything to that group that + * the root user can. The rationale for this hack is that the FIRST + * user is probably the most important user in this entire group. */ - if (! amroot) { + if (!amroot) { if (grent.gr_mem[0] == (char *) 0) - failure(); + failure (); - if (strcmp(grent.gr_mem[0], myname) != 0) - failure(); + if (strcmp (grent.gr_mem[0], myname) != 0) + failure (); } #else /* - * This feature enabled by default could be a security problem - * when installed on existing systems where the first group - * member might be just a normal user... --marekm + * This feature enabled by default could be a security problem when + * installed on existing systems where the first group member might + * be just a normal user. --marekm */ if (!amroot) - failure(); + failure (); #endif -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* - * Removing a password is straight forward. Just set the - * password field to a "". + * Removing a password is straight forward. Just set the password + * field to a "". */ if (rflg) { - grent.gr_passwd = ""; /* XXX warning: const */ + grent.gr_passwd = ""; /* XXX warning: const */ #ifdef SHADOWGRP - sgent.sg_passwd = ""; /* XXX warning: const */ + sgent.sg_passwd = ""; /* XXX warning: const */ #endif - SYSLOG((LOG_INFO, "remove password from group %s by %s\n", group, myname)); + SYSLOG ((LOG_INFO, "remove password from group %s by %s", + group, myname)); goto output; } else if (Rflg) { /* - * Same thing for restricting the group. Set the password + * Same thing for restricting the group. Set the password * field to "!". */ - grent.gr_passwd = "!"; /* XXX warning: const */ + grent.gr_passwd = "!"; /* XXX warning: const */ #ifdef SHADOWGRP - sgent.sg_passwd = "!"; /* XXX warning: const */ + sgent.sg_passwd = "!"; /* XXX warning: const */ #endif - SYSLOG((LOG_INFO, "restrict access to group %s by %s\n", group, myname)); + SYSLOG ((LOG_INFO, "restrict access to group %s by %s", + group, myname)); goto output; } /* - * Adding a member to a member list is pretty straightforward - * as well. Call the appropriate routine and split. + * Adding a member to a member list is pretty straightforward as + * well. Call the appropriate routine and split. */ if (aflg) { - printf(_("Adding user %s to group %s\n"), user, group); + printf (_("Adding user %s to group %s\n"), user, group); grent.gr_mem = add_list (grent.gr_mem, user); #ifdef SHADOWGRP sgent.sg_mem = add_list (sgent.sg_mem, user); #endif - SYSLOG((LOG_INFO, "add member %s to group %s by %s\n", user, group, myname)); + SYSLOG ((LOG_INFO, "add member %s to group %s by %s", user, + group, myname)); goto output; } /* - * Removing a member from the member list is the same deal - * as adding one, except the routine is different. + * Removing a member from the member list is the same deal as adding + * one, except the routine is different. */ if (dflg) { - int removed = 0; + int removed = 0; - printf(_("Removing user %s from group %s\n"), user, group); + printf (_("Removing user %s from group %s\n"), user, + group); - if (is_on_list(grent.gr_mem, user)) { + if (is_on_list (grent.gr_mem, user)) { removed = 1; grent.gr_mem = del_list (grent.gr_mem, user); } #ifdef SHADOWGRP - if (is_on_list(sgent.sg_mem, user)) { + if (is_on_list (sgent.sg_mem, user)) { removed = 1; sgent.sg_mem = del_list (sgent.sg_mem, user); } #endif - if (! removed) { - fprintf(stderr, _("%s: unknown member %s\n"), - Prog, user); + if (!removed) { + fprintf (stderr, _("%s: unknown member %s\n"), + Prog, user); exit (1); } - SYSLOG((LOG_INFO, "remove member %s from group %s by %s\n", - user, group, myname)); + SYSLOG ((LOG_INFO, "remove member %s from group %s by %s", + user, group, myname)); goto output; } - #ifdef SHADOWGRP /* - * Replacing the entire list of administators is simple. Check the - * list to make sure everyone is a real user. Then slap the new - * list in place. + * Replacing the entire list of administators is simple. Check the + * list to make sure everyone is a real user. Then slap the new list + * in place. */ if (Aflg) { - SYSLOG((LOG_INFO, "set administrators of %s to %s\n", - group, admins)); - sgent.sg_adm = comma_to_list(admins); + SYSLOG ((LOG_INFO, "set administrators of %s to %s", + group, admins)); + sgent.sg_adm = comma_to_list (admins); if (!Mflg) goto output; } #endif /* - * Replacing the entire list of members is simple. Check the list - * to make sure everyone is a real user. Then slap the new list - * in place. + * Replacing the entire list of members is simple. Check the list to + * make sure everyone is a real user. Then slap the new list in + * place. */ if (Mflg) { - SYSLOG((LOG_INFO,"set members of %s to %s\n",group,members)); + SYSLOG ((LOG_INFO, "set members of %s to %s", group, + members)); #ifdef SHADOWGRP - sgent.sg_mem = comma_to_list(members); + sgent.sg_mem = comma_to_list (members); #endif - grent.gr_mem = comma_to_list(members); + grent.gr_mem = comma_to_list (members); goto output; } /* - * If the password is being changed, the input and output must - * both be a tty. The typical keyboard signals are caught - * so the termio modes can be restored. + * If the password is being changed, the input and output must both + * be a tty. The typical keyboard signals are caught so the termio + * modes can be restored. */ - if (! isatty (0) || ! isatty (1)) { - fprintf(stderr, _("%s: Not a tty\n"), Prog); + if (!isatty (0) || !isatty (1)) { + fprintf (stderr, _("%s: Not a tty\n"), Prog); exit (1); } - die (0); /* save tty modes */ + die (0); /* save tty modes */ signal (SIGHUP, die); signal (SIGINT, die); @@ -525,137 +513,140 @@ main(int argc, char **argv) #endif /* - * A new password is to be entered and it must be encrypted, - * etc. The password will be prompted for twice, and both - * entries must be identical. There is no need to validate - * the old password since the invoker is either the group - * owner, or root. + * A new password is to be entered and it must be encrypted, etc. + * The password will be prompted for twice, and both entries must be + * identical. There is no need to validate the old password since + * the invoker is either the group owner, or root. */ - printf(_("Changing the password for group %s\n"), group); + printf (_("Changing the password for group %s\n"), group); for (retries = 0; retries < RETRIES; retries++) { - if (! (cp = getpass(_("New Password: ")))) + if (!(cp = getpass (_("New Password: ")))) exit (1); - STRFCPY(pass, cp); - strzero(cp); - if (! (cp = getpass (_("Re-enter new password: ")))) + STRFCPY (pass, cp); + strzero (cp); + if (!(cp = getpass (_("Re-enter new password: ")))) exit (1); - if (strcmp(pass, cp) == 0) { - strzero(cp); + if (strcmp (pass, cp) == 0) { + strzero (cp); break; } - strzero(cp); - memzero(pass, sizeof pass); + strzero (cp); + memzero (pass, sizeof pass); if (retries + 1 < RETRIES) - puts(_("They don't match; try again")); + puts (_("They don't match; try again")); } if (retries == RETRIES) { - fprintf(stderr, _("%s: Try again later\n"), Prog); - exit(1); + fprintf (stderr, _("%s: Try again later\n"), Prog); + exit (1); } - cp = pw_encrypt(pass, crypt_make_salt()); - memzero(pass, sizeof pass); + cp = pw_encrypt (pass, crypt_make_salt ()); + memzero (pass, sizeof pass); #ifdef SHADOWGRP if (is_shadowgrp) sgent.sg_passwd = cp; else #endif - grent.gr_passwd = cp; - SYSLOG((LOG_INFO, "change the password for group %s by %s\n", group, myname)); + grent.gr_passwd = cp; + SYSLOG ((LOG_INFO, "change the password for group %s by %s", group, + myname)); /* - * This is the common arrival point to output the new group - * file. The freshly crafted entry is in allocated space. - * The group file will be locked and opened for writing. The - * new entry will be output, etc. + * This is the common arrival point to output the new group file. + * The freshly crafted entry is in allocated space. The group file + * will be locked and opened for writing. The new entry will be + * output, etc. */ -output: - if (setuid(0)) { - fprintf(stderr, _("Cannot change ID to root.\n")); - SYSLOG((LOG_ERR, "can't setuid(0)")); - closelog(); - exit(1); + output: + if (setuid (0)) { + fprintf (stderr, _("Cannot change ID to root.\n")); + SYSLOG ((LOG_ERR, "can't setuid(0)")); + closelog (); + exit (1); } - pwd_init(); + pwd_init (); - if (! gr_lock ()) { - fprintf(stderr, _("%s: can't get lock\n"), Prog); - SYSLOG((LOG_WARN, "failed to get lock for /etc/group\n")); + if (!gr_lock ()) { + fprintf (stderr, _("%s: can't get lock\n"), Prog); + SYSLOG ((LOG_WARN, "failed to get lock for /etc/group")); exit (1); } #ifdef SHADOWGRP - if (is_shadowgrp && ! sgr_lock ()) { - fprintf(stderr, _("%s: can't get shadow lock\n"), Prog); - SYSLOG((LOG_WARN, "failed to get lock for /etc/gshadow\n")); + if (is_shadowgrp && !sgr_lock ()) { + fprintf (stderr, _("%s: can't get shadow lock\n"), Prog); + SYSLOG ((LOG_WARN, "failed to get lock for /etc/gshadow")); exit (1); } #endif - if (! gr_open (O_RDWR)) { - fprintf(stderr, _("%s: can't open file\n"), Prog); - SYSLOG((LOG_WARN, "cannot open /etc/group\n")); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open file\n"), Prog); + SYSLOG ((LOG_WARN, "cannot open /etc/group")); exit (1); } #ifdef SHADOWGRP - if (is_shadowgrp && ! sgr_open (O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow file\n"), Prog); - SYSLOG((LOG_WARN, "cannot open /etc/gshadow\n")); + if (is_shadowgrp && !sgr_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open shadow file\n"), Prog); + SYSLOG ((LOG_WARN, "cannot open /etc/gshadow")); exit (1); } #endif - if (! gr_update (&grent)) { - fprintf(stderr, _("%s: can't update entry\n"), Prog); - SYSLOG((LOG_WARN, "cannot update /etc/group\n")); + if (!gr_update (&grent)) { + fprintf (stderr, _("%s: can't update entry\n"), Prog); + SYSLOG ((LOG_WARN, "cannot update /etc/group")); exit (1); } #ifdef SHADOWGRP - if (is_shadowgrp && ! sgr_update (&sgent)) { - fprintf(stderr, _("%s: can't update shadow entry\n"), Prog); - SYSLOG((LOG_WARN, "cannot update /etc/gshadow\n")); + if (is_shadowgrp && !sgr_update (&sgent)) { + fprintf (stderr, _("%s: can't update shadow entry\n"), + Prog); + SYSLOG ((LOG_WARN, "cannot update /etc/gshadow")); exit (1); } #endif - if (! gr_close ()) { - fprintf(stderr, _("%s: can't re-write file\n"), Prog); - SYSLOG((LOG_WARN, "cannot re-write /etc/group\n")); + if (!gr_close ()) { + fprintf (stderr, _("%s: can't re-write file\n"), Prog); + SYSLOG ((LOG_WARN, "cannot re-write /etc/group")); exit (1); } #ifdef SHADOWGRP - if (is_shadowgrp && ! sgr_close ()) { - fprintf(stderr, _("%s: can't re-write shadow file\n"), Prog); - SYSLOG((LOG_WARN, "cannot re-write /etc/gshadow\n")); + if (is_shadowgrp && !sgr_close ()) { + fprintf (stderr, _("%s: can't re-write shadow file\n"), + Prog); + SYSLOG ((LOG_WARN, "cannot re-write /etc/gshadow")); exit (1); } if (is_shadowgrp) sgr_unlock (); #endif - if (! gr_unlock ()) { - fprintf(stderr, _("%s: can't unlock file\n"), Prog); + if (!gr_unlock ()) { + fprintf (stderr, _("%s: can't unlock file\n"), Prog); exit (1); } #ifdef NDBM - if (gr_dbm_present() && ! gr_dbm_update (&grent)) { - fprintf(stderr, _("%s: can't update DBM files\n"), Prog); - SYSLOG((LOG_WARN, "cannot update /etc/group DBM files\n")); + if (gr_dbm_present () && !gr_dbm_update (&grent)) { + fprintf (stderr, _("%s: can't update DBM files\n"), Prog); + SYSLOG ((LOG_WARN, "cannot update /etc/group DBM files")); exit (1); } endgrent (); #ifdef SHADOWGRP - if (is_shadowgrp && sg_dbm_present() && ! sg_dbm_update (&sgent)) { - fprintf(stderr, _("%s: can't update DBM shadow files\n"), Prog); - SYSLOG((LOG_WARN, "cannot update /etc/gshadow DBM files\n")); + if (is_shadowgrp && sg_dbm_present () && !sg_dbm_update (&sgent)) { + fprintf (stderr, _("%s: can't update DBM shadow files\n"), + Prog); + SYSLOG ((LOG_WARN, + "cannot update /etc/gshadow DBM files")); exit (1); } endsgent (); #endif #endif exit (0); - /*NOTREACHED*/ -} + /*NOTREACHED*/} diff --git a/src/groupadd.c b/src/groupadd.c index b1e77c08..6719fd3d 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,31 +30,24 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: groupadd.c,v 1.18 2000/10/09 19:02:20 kloczek Exp $") - +RCSID (PKG_VER "$Id: groupadd.c,v 1.22 2002/01/06 14:09:07 kloczek Exp $") #include #include #include #include #include - #include "defines.h" #include "prototypes.h" #include "chkname.h" - #include "getdef.h" - #include "groupio.h" - #ifdef SHADOWGRP #include "sgroupio.h" - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ static int is_shadow_grp; #endif @@ -69,62 +62,58 @@ static int is_shadow_grp; #define E_NAME_IN_USE 9 /* group name nut unique */ #define E_GRP_UPDATE 10 /* can't update group file */ -static char *group_name; -static gid_t group_id; +static char *group_name; +static gid_t group_id; static char *empty_list = NULL; -static char *Prog; +static char *Prog; -static int oflg = 0; /* permit non-unique group ID to be specified with -g */ -static int gflg = 0; /* ID value for the new group */ -static int fflg = 0; /* if group already exists, do nothing and exit(0) */ +static int oflg = 0; /* permit non-unique group ID to be specified with -g */ +static int gflg = 0; /* ID value for the new group */ +static int fflg = 0; /* if group already exists, do nothing and exit(0) */ #ifdef NDBM -extern int gr_dbm_mode; -extern int sg_dbm_mode; +extern int gr_dbm_mode; +extern int sg_dbm_mode; #endif -extern int optind; -extern char *optarg; - /* local function prototypes */ -static void usage(void); -static void new_grent(struct group *); +static void usage (void); +static void new_grent (struct group *); + #ifdef SHADOWGRP -static void new_sgent(struct sgrp *); +static void new_sgent (struct sgrp *); #endif -static void grp_update(void); -static void find_new_gid(void); -static void check_new_name(void); -static void process_flags(int, char **); -static void close_files(void); -static void open_files(void); -static void fail_exit(int); +static void grp_update (void); +static void find_new_gid (void); +static void check_new_name (void); +static void process_flags (int, char **); +static void close_files (void); +static void open_files (void); +static void fail_exit (int); /* * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("usage: groupadd [-g gid [-o]] group\n")); - exit(E_USAGE); + fprintf (stderr, _("usage: groupadd [-g gid [-o]] group\n")); + exit (E_USAGE); } /* * new_grent - initialize the values in a group file entry * - * new_grent() takes all of the values that have been entered and - * fills in a (struct group) with them. + * new_grent() takes all of the values that have been entered and fills + * in a (struct group) with them. */ -static void -new_grent(struct group *grent) +static void new_grent (struct group *grent) { - memzero(grent, sizeof *grent); + memzero (grent, sizeof *grent); grent->gr_name = group_name; - grent->gr_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ + grent->gr_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ grent->gr_gid = group_id; grent->gr_mem = &empty_list; } @@ -133,20 +122,19 @@ new_grent(struct group *grent) /* * new_sgent - initialize the values in a shadow group file entry * - * new_sgent() takes all of the values that have been entered and - * fills in a (struct sgrp) with them. + * new_sgent() takes all of the values that have been entered and fills + * in a (struct sgrp) with them. */ -static void -new_sgent(struct sgrp *sgent) +static void new_sgent (struct sgrp *sgent) { - memzero(sgent, sizeof *sgent); + memzero (sgent, sizeof *sgent); sgent->sg_name = group_name; - sgent->sg_passwd = "!"; /* XXX warning: const */ + sgent->sg_passwd = "!"; /* XXX warning: const */ sgent->sg_adm = &empty_list; sgent->sg_mem = &empty_list; } -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * grp_update - add new group file entries @@ -154,13 +142,13 @@ new_sgent(struct sgrp *sgent) * grp_update() writes the new records to the group files. */ -static void -grp_update(void) +static void grp_update (void) { - struct group grp; + struct group grp; + #ifdef SHADOWGRP - struct sgrp sgrp; -#endif /* SHADOWGRP */ + struct sgrp sgrp; +#endif /* SHADOWGRP */ /* * Create the initial entries for this new group. @@ -169,15 +157,16 @@ grp_update(void) new_grent (&grp); #ifdef SHADOWGRP new_sgent (&sgrp); -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * Write out the new group file entry. */ - if (! gr_update (&grp)) { - fprintf(stderr, _("%s: error adding new group entry\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_update (&grp)) { + fprintf (stderr, _("%s: error adding new group entry\n"), + Prog); + fail_exit (E_GRP_UPDATE); } #ifdef NDBM @@ -185,12 +174,13 @@ grp_update(void) * Update the DBM group file with the new entry as well. */ - if (gr_dbm_present() && ! gr_dbm_update (&grp)) { - fprintf(stderr, _("%s: cannot add new dbm group entry\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (gr_dbm_present () && !gr_dbm_update (&grp)) { + fprintf (stderr, _("%s: cannot add new dbm group entry\n"), + Prog); + fail_exit (E_GRP_UPDATE); } endgrent (); -#endif /* NDBM */ +#endif /* NDBM */ #ifdef SHADOWGRP @@ -198,9 +188,10 @@ grp_update(void) * Write out the new shadow group entries as well. */ - if (is_shadow_grp && ! sgr_update (&sgrp)) { - fprintf(stderr, _("%s: error adding new group entry\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_update (&sgrp)) { + fprintf (stderr, _("%s: error adding new group entry\n"), + Prog); + fail_exit (E_GRP_UPDATE); } #ifdef NDBM @@ -208,15 +199,16 @@ grp_update(void) * Update the DBM group file with the new entry as well. */ - if (is_shadow_grp && sg_dbm_present() && ! sg_dbm_update (&sgrp)) { - fprintf(stderr, _("%s: cannot add new dbm group entry\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && sg_dbm_present () && !sg_dbm_update (&sgrp)) { + fprintf (stderr, _("%s: cannot add new dbm group entry\n"), + Prog); + fail_exit (E_GRP_UPDATE); } endsgent (); -#endif /* NDBM */ -#endif /* SHADOWGRP */ - SYSLOG((LOG_INFO, "new group: name=%s, gid=%d\n", - group_name, group_id)); +#endif /* NDBM */ +#endif /* SHADOWGRP */ + SYSLOG ((LOG_INFO, "new group: name=%s, gid=%u", + group_name, (unsigned int)group_id)); } /* @@ -227,60 +219,59 @@ grp_update(void) * uniqueness. */ -static void -find_new_gid(void) +static void find_new_gid (void) { const struct group *grp; gid_t gid_min, gid_max; - gid_min = getdef_num("GID_MIN", 100); - gid_max = getdef_num("GID_MAX", 60000); + gid_min = getdef_unum ("GID_MIN", 100); + gid_max = getdef_unum ("GID_MAX", 60000); /* * Start with some GID value if the user didn't provide us with * one already. */ - if (! gflg) + if (!gflg) group_id = gid_min; /* - * Search the entire group file, either looking for this - * GID (if the user specified one with -g) or looking for the - * largest unused value. + * Search the entire group file, either looking for this GID (if the + * user specified one with -g) or looking for the largest unused + * value. */ #ifdef NO_GETGRENT - gr_rewind(); - while ((grp = gr_next())) { + gr_rewind (); + while ((grp = gr_next ())) { #else - setgrent(); - while ((grp = getgrent())) { + setgrent (); + while ((grp = getgrent ())) { #endif - if (strcmp(group_name, grp->gr_name) == 0) { + if (strcmp (group_name, grp->gr_name) == 0) { if (fflg) { - fail_exit(E_SUCCESS); + fail_exit (E_SUCCESS); } - fprintf(stderr, _("%s: name %s is not unique\n"), - Prog, group_name); - fail_exit(E_NAME_IN_USE); + fprintf (stderr, _("%s: name %s is not unique\n"), + Prog, group_name); + fail_exit (E_NAME_IN_USE); } if (gflg && group_id == grp->gr_gid) { if (fflg) { /* turn off -g and search again */ gflg = 0; #ifdef NO_GETGRENT - gr_rewind(); + gr_rewind (); #else - setgrent(); + setgrent (); #endif continue; } - fprintf(stderr, _("%s: gid %ld is not unique\n"), - Prog, (long) group_id); - fail_exit(E_GID_IN_USE); + fprintf (stderr, _("%s: gid %u is not unique\n"), + Prog, (unsigned int) group_id); + fail_exit (E_GID_IN_USE); } - if (! gflg && grp->gr_gid >= group_id) { + if (!gflg && grp->gr_gid >= group_id) { if (grp->gr_gid > gid_max) continue; group_id = grp->gr_gid + 1; @@ -289,20 +280,20 @@ find_new_gid(void) if (!gflg && group_id == gid_max + 1) { for (group_id = gid_min; group_id < gid_max; group_id++) { #ifdef NO_GETGRENT - gr_rewind(); - while ((grp = gr_next()) && grp->gr_gid != group_id) - ; + gr_rewind (); + while ((grp = gr_next ()) + && grp->gr_gid != group_id); if (!grp) break; #else - if (!getgrgid(group_id)) + if (!getgrgid (group_id)) break; #endif } if (group_id == gid_max) { - fprintf(stderr, _("%s: can't get unique gid\n"), - Prog); - fail_exit(E_GID_IN_USE); + fprintf (stderr, _("%s: can't get unique gid\n"), + Prog); + fail_exit (E_GID_IN_USE); } } } @@ -310,52 +301,51 @@ find_new_gid(void) /* * check_new_name - check the new name for validity * - * check_new_name() insures that the new name doesn't contain - * any illegal characters. + * check_new_name() insures that the new name doesn't contain any + * illegal characters. */ -static void -check_new_name(void) +static void check_new_name (void) { - if (check_group_name(group_name)) + if (check_group_name (group_name)) return; /* * All invalid group names land here. */ - fprintf(stderr, _("%s: %s is a not a valid group name\n"), - Prog, group_name); + fprintf (stderr, _("%s: %s is a not a valid group name\n"), + Prog, group_name); - exit(E_BAD_ARG); + exit (E_BAD_ARG); } /* * process_flags - perform command line argument setting * - * process_flags() interprets the command line arguments and sets - * the values that the user will be created with accordingly. The - * values are checked for sanity. + * process_flags() interprets the command line arguments and sets the + * values that the user will be created with accordingly. The values + * are checked for sanity. */ -static void -process_flags(int argc, char **argv) +static void process_flags (int argc, char **argv) { char *cp; int arg; - while ((arg = getopt(argc, argv, "og:O:f")) != EOF) { + while ((arg = getopt (argc, argv, "og:O:f")) != EOF) { switch (arg) { case 'g': gflg++; - if (! isdigit (optarg[0])) + if (!isdigit (optarg[0])) usage (); - group_id = strtol(optarg, &cp, 10); + group_id = strtoul (optarg, &cp, 10); if (*cp != '\0') { - fprintf(stderr, _("%s: invalid group %s\n"), - Prog, optarg); - fail_exit(E_BAD_ARG); + fprintf (stderr, + _("%s: invalid group %s\n"), Prog, + optarg); + fail_exit (E_BAD_ARG); } break; case 'o': @@ -367,67 +357,68 @@ process_flags(int argc, char **argv) * example: -O GID_MIN=100 -O GID_MAX=499 * note: -O GID_MIN=10,GID_MAX=499 doesn't work yet */ - cp = strchr(optarg, '='); + cp = strchr (optarg, '='); if (!cp) { - fprintf(stderr, - _("%s: -O requires NAME=VALUE\n"), - Prog); - exit(E_BAD_ARG); + fprintf (stderr, + _("%s: -O requires NAME=VALUE\n"), + Prog); + exit (E_BAD_ARG); } /* terminate name, point to value */ *cp++ = '\0'; - if (putdef_str(optarg, cp) < 0) - exit(E_BAD_ARG); + if (putdef_str (optarg, cp) < 0) + exit (E_BAD_ARG); break; case 'f': /* * "force" - do nothing, just exit(0), if the - * specified group already exists. With -g, if + * specified group already exists. With -g, if * specified gid already exists, choose another - * (unique) gid (turn off -g). Based on the - * RedHat's patch from shadow-utils-970616-9. + * (unique) gid (turn off -g). Based on the RedHat's + * patch from shadow-utils-970616-9. */ fflg++; break; default: - usage(); + usage (); } } if (oflg && !gflg) - usage(); + usage (); if (optind != argc - 1) - usage(); + usage (); group_name = argv[argc - 1]; - check_new_name(); + check_new_name (); } /* * close_files - close all of the files that were opened * - * close_files() closes all of the files that were opened for this - * new group. This causes any modified entries to be written out. + * close_files() closes all of the files that were opened for this new + * group. This causes any modified entries to be written out. */ -static void -close_files(void) +static void close_files (void) { - if (!gr_close()) { - fprintf(stderr, _("%s: cannot rewrite group file\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_close ()) { + fprintf (stderr, _("%s: cannot rewrite group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } - gr_unlock(); + gr_unlock (); #ifdef SHADOWGRP - if (is_shadow_grp && !sgr_close()) { - fprintf(stderr, _("%s: cannot rewrite shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_close ()) { + fprintf (stderr, + _("%s: cannot rewrite shadow group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } if (is_shadow_grp) sgr_unlock (); -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ } /* @@ -436,37 +427,39 @@ close_files(void) * open_files() opens the two group files. */ -static void -open_files(void) +static void open_files (void) { - if (! gr_lock ()) { - fprintf(stderr, _("%s: unable to lock group file\n"), Prog); - exit(E_GRP_UPDATE); + if (!gr_lock ()) { + fprintf (stderr, _("%s: unable to lock group file\n"), + Prog); + exit (E_GRP_UPDATE); } - if (! gr_open (O_RDWR)) { - fprintf(stderr, _("%s: unable to open group file\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: unable to open group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } #ifdef SHADOWGRP - if (is_shadow_grp && ! sgr_lock ()) { - fprintf(stderr, _("%s: unable to lock shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_lock ()) { + fprintf (stderr, + _("%s: unable to lock shadow group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } - if (is_shadow_grp && ! sgr_open (O_RDWR)) { - fprintf(stderr, _("%s: unable to open shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_open (O_RDWR)) { + fprintf (stderr, + _("%s: unable to open shadow group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ } /* * fail_exit - exit with an error code after unlocking files */ -static void -fail_exit(int code) +static void fail_exit (int code) { (void) gr_unlock (); #ifdef SHADOWGRP @@ -478,17 +471,16 @@ fail_exit(int code) #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* * main - groupadd command */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { #ifdef USE_PAM pam_handle_t *pamh = NULL; @@ -500,73 +492,76 @@ main(int argc, char **argv) * Get my name so that I can use it to report errors. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM retval = PAM_SUCCESS; - pampw = getpwuid(getuid()); + pampw = getpwuid (getuid ()); if (pampw == NULL) { retval = PAM_USER_UNKNOWN; } if (retval == PAM_SUCCESS) { - retval = pam_start("shadow", pampw->pw_name, &conv, &pamh); + retval = + pam_start ("shadow", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); + retval = pam_authenticate (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); + retval = pam_acct_mgmt (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ - OPENLOG(Prog); + OPENLOG (Prog); #ifdef SHADOWGRP - is_shadow_grp = sgr_file_present(); + is_shadow_grp = sgr_file_present (); #endif /* - * The open routines for the DBM files don't use read-write - * as the mode, so we have to clue them in. + * The open routines for the DBM files don't use read-write as the + * mode, so we have to clue them in. */ #ifdef NDBM gr_dbm_mode = O_RDWR; #ifdef SHADOWGRP sg_dbm_mode = O_RDWR; -#endif /* SHADOWGRP */ -#endif /* NDBM */ - process_flags(argc, argv); +#endif /* SHADOWGRP */ +#endif /* NDBM */ + process_flags (argc, argv); /* * Start with a quick check to see if the group exists. */ - if (getgrnam(group_name)) { + if (getgrnam (group_name)) { if (fflg) { - exit(E_SUCCESS); + exit (E_SUCCESS); } - fprintf(stderr, _("%s: group %s exists\n"), Prog, group_name); - exit(E_NAME_IN_USE); + fprintf (stderr, _("%s: group %s exists\n"), Prog, + group_name); + exit (E_NAME_IN_USE); } /* @@ -574,20 +569,20 @@ main(int argc, char **argv) * then close and update the files. */ - open_files(); + open_files (); if (!gflg || !oflg) - find_new_gid(); + find_new_gid (); - grp_update(); + grp_update (); - close_files(); + close_files (); #ifdef USE_PAM if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } @@ -597,8 +592,7 @@ main(int argc, char **argv) } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ - exit(E_SUCCESS); - /*NOTREACHED*/ -} + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ + exit (E_SUCCESS); + /*NOTREACHED*/} diff --git a/src/groupmod.c b/src/groupmod.c index bc1417e0..0c071da2 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,29 +30,23 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: groupmod.c,v 1.16 2000/10/09 19:02:20 kloczek Exp $") - +RCSID (PKG_VER "$Id: groupmod.c,v 1.19 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include #include - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ #include "prototypes.h" #include "chkname.h" #include "defines.h" - #include "groupio.h" - #ifdef SHADOWGRP #include "sgroupio.h" - static int is_shadow_grp; #endif @@ -68,59 +62,56 @@ static int is_shadow_grp; #define E_NAME_IN_USE 9 /* group name already in use */ #define E_GRP_UPDATE 10 /* can't update group file */ -static char *group_name; -static char *group_newname; -static gid_t group_id; -static gid_t group_newid; +static char *group_name; +static char *group_newname; +static gid_t group_id; +static gid_t group_newid; -static char *Prog; +static char *Prog; static int - oflg = 0, /* permit non-unique group ID to be specified with -g */ - gflg = 0, /* new ID value for the group */ - nflg = 0; /* a new name has been specified for the group */ + oflg = 0, /* permit non-unique group ID to be specified with -g */ + gflg = 0, /* new ID value for the group */ + nflg = 0; /* a new name has been specified for the group */ #ifdef NDBM -extern int gr_dbm_mode; -extern int sg_dbm_mode; +extern int gr_dbm_mode; +extern int sg_dbm_mode; #endif -extern int optind; -extern char *optarg; - /* local function prototypes */ -static void usage(void); -static void new_grent(struct group *); +static void usage (void); +static void new_grent (struct group *); + #ifdef SHADOWGRP -static void new_sgent(struct sgrp *); +static void new_sgent (struct sgrp *); #endif -static void grp_update(void); -static void check_new_gid(void); -static void check_new_name(void); -static void process_flags(int, char **); -static void close_files(void); -static void open_files(void); +static void grp_update (void); +static void check_new_gid (void); +static void check_new_name (void); +static void process_flags (int, char **); +static void close_files (void); +static void open_files (void); /* * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("usage: groupmod [-g gid [-o]] [-n name] group\n")); - exit(E_USAGE); + fprintf (stderr, + _("usage: groupmod [-g gid [-o]] [-n name] group\n")); + exit (E_USAGE); } /* * new_grent - updates the values in a group file entry * - * new_grent() takes all of the values that have been entered and - * fills in a (struct group) with them. + * new_grent() takes all of the values that have been entered and fills + * in a (struct group) with them. */ -static void -new_grent(struct group *grent) +static void new_grent (struct group *grent) { if (nflg) grent->gr_name = xstrdup (group_newname); @@ -133,17 +124,16 @@ new_grent(struct group *grent) /* * new_sgent - updates the values in a shadow group file entry * - * new_sgent() takes all of the values that have been entered and - * fills in a (struct sgrp) with them. + * new_sgent() takes all of the values that have been entered and fills + * in a (struct sgrp) with them. */ -static void -new_sgent(struct sgrp *sgent) +static void new_sgent (struct sgrp *sgent) { if (nflg) sgent->sg_name = xstrdup (group_newname); } -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * grp_update - update group file entries @@ -151,47 +141,49 @@ new_sgent(struct sgrp *sgent) * grp_update() writes the new records to the group files. */ -static void -grp_update(void) +static void grp_update (void) { struct group grp; const struct group *ogrp; + #ifdef SHADOWGRP struct sgrp sgrp; const struct sgrp *osgrp = NULL; -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * Get the current settings for this group. */ - ogrp = gr_locate(group_name); + ogrp = gr_locate (group_name); if (!ogrp) { - fprintf(stderr, - _("%s: %s not found in /etc/group\n"), - Prog, group_name); - exit(E_GRP_UPDATE); + fprintf (stderr, + _("%s: %s not found in /etc/group\n"), + Prog, group_name); + exit (E_GRP_UPDATE); } grp = *ogrp; new_grent (&grp); #ifdef SHADOWGRP - if (is_shadow_grp && (osgrp = sgr_locate(group_name))) { + if (is_shadow_grp && (osgrp = sgr_locate (group_name))) { sgrp = *osgrp; new_sgent (&sgrp); } -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * Write out the new group file entry. */ - if (!gr_update(&grp)) { - fprintf(stderr, _("%s: error adding new group entry\n"), Prog); - exit(E_GRP_UPDATE); + if (!gr_update (&grp)) { + fprintf (stderr, _("%s: error adding new group entry\n"), + Prog); + exit (E_GRP_UPDATE); } - if (nflg && !gr_remove(group_name)) { - fprintf(stderr, _("%s: error removing group entry\n"), Prog); - exit(E_GRP_UPDATE); + if (nflg && !gr_remove (group_name)) { + fprintf (stderr, _("%s: error removing group entry\n"), + Prog); + exit (E_GRP_UPDATE); } #ifdef NDBM @@ -199,46 +191,48 @@ grp_update(void) * Update the DBM group file with the new entry as well. */ - if (gr_dbm_present()) { - if (!gr_dbm_update(&grp)) { - fprintf(stderr, - _("%s: cannot add new dbm group entry\n"), - Prog); - exit(E_GRP_UPDATE); + if (gr_dbm_present ()) { + if (!gr_dbm_update (&grp)) { + fprintf (stderr, + _("%s: cannot add new dbm group entry\n"), + Prog); + exit (E_GRP_UPDATE); } - if (nflg && (ogrp = getgrnam(group_name)) && - !gr_dbm_remove(ogrp)) { - fprintf(stderr, - _("%s: error removing group dbm entry\n"), - Prog); - exit(E_GRP_UPDATE); + if (nflg && (ogrp = getgrnam (group_name)) && + !gr_dbm_remove (ogrp)) { + fprintf (stderr, + _("%s: error removing group dbm entry\n"), + Prog); + exit (E_GRP_UPDATE); } endgrent (); } -#endif /* NDBM */ +#endif /* NDBM */ #ifdef SHADOWGRP /* - * Make sure there was a shadow entry to begin with. Skip - * down to "out" if there wasn't. Can't just return because - * there might be some syslogging to do. + * Make sure there was a shadow entry to begin with. Skip down to + * "out" if there wasn't. Can't just return because there might be + * some syslogging to do. */ - if (! osgrp) + if (!osgrp) goto out; /* * Write out the new shadow group entries as well. */ - if (!sgr_update(&sgrp)) { - fprintf(stderr, _("%s: error adding new group entry\n"), Prog); - exit(E_GRP_UPDATE); + if (!sgr_update (&sgrp)) { + fprintf (stderr, _("%s: error adding new group entry\n"), + Prog); + exit (E_GRP_UPDATE); } - if (nflg && !sgr_remove(group_name)) { - fprintf(stderr, _("%s: error removing group entry\n"), Prog); - exit(E_GRP_UPDATE); + if (nflg && !sgr_remove (group_name)) { + fprintf (stderr, _("%s: error removing group entry\n"), + Prog); + exit (E_GRP_UPDATE); } #ifdef NDBM @@ -246,32 +240,34 @@ grp_update(void) * Update the DBM shadow group file with the new entry as well. */ - if (sg_dbm_present()) { - if (!sg_dbm_update(&sgrp)) { - fprintf(stderr, - _("%s: cannot add new dbm shadow group entry\n"), - Prog); - exit(E_GRP_UPDATE); - } - if (nflg && ! sg_dbm_remove (group_name)) { + if (sg_dbm_present ()) { + if (!sg_dbm_update (&sgrp)) { fprintf (stderr, - _("%s: error removing shadow group dbm entry\n"), - Prog); - exit(E_GRP_UPDATE); + _ + ("%s: cannot add new dbm shadow group entry\n"), + Prog); + exit (E_GRP_UPDATE); + } + if (nflg && !sg_dbm_remove (group_name)) { + fprintf (stderr, + _ + ("%s: error removing shadow group dbm entry\n"), + Prog); + exit (E_GRP_UPDATE); } endsgent (); } -#endif /* NDBM */ -out: -#endif /* SHADOWGRP */ +#endif /* NDBM */ + out: +#endif /* SHADOWGRP */ if (nflg) - SYSLOG((LOG_INFO, "change group `%s' to `%s'\n", - group_name, group_newname)); + SYSLOG ((LOG_INFO, "change group `%s' to `%s'", + group_name, group_newname)); if (gflg) - SYSLOG((LOG_INFO, "change gid for `%s' to %d\n", - nflg ? group_newname:group_name, group_newid)); + SYSLOG ((LOG_INFO, "change gid for `%s' to %u", + nflg ? group_newname : group_name, group_newid)); } /* @@ -280,13 +276,12 @@ out: * check_new_gid() insures that the new GID value is unique. */ -static void -check_new_gid(void) +static void check_new_gid (void) { /* - * First, the easy stuff. If the ID can be duplicated, or if - * the ID didn't really change, just return. If the ID didn't - * change, turn off those flags. No sense doing needless work. + * First, the easy stuff. If the ID can be duplicated, or if the ID + * didn't really change, just return. If the ID didn't change, turn + * off those flags. No sense doing needless work. */ if (group_id == group_newid) { @@ -294,48 +289,47 @@ check_new_gid(void) return; } - if (oflg || ! getgrgid (group_newid)) + if (oflg || !getgrgid (group_newid)) return; /* * Tell the user what they did wrong. */ - fprintf(stderr, - _("%s: %ld is not a unique gid\n"), - Prog, (long) group_newid); - exit(E_GID_IN_USE); + fprintf (stderr, + _("%s: %u is not a unique gid\n"), Prog, group_newid); + exit (E_GID_IN_USE); } /* * check_new_name - check the new name for uniqueness * - * check_new_name() insures that the new name does not exist - * already. You can't have the same name twice, period. + * check_new_name() insures that the new name does not exist already. + * You can't have the same name twice, period. */ -static void -check_new_name(void) +static void check_new_name (void) { /* * Make sure they are actually changing the name. */ - if (strcmp(group_name, group_newname) == 0) { + if (strcmp (group_name, group_newname) == 0) { nflg = 0; return; } - if (check_group_name(group_newname)) { + if (check_group_name (group_newname)) { /* * If the entry is found, too bad. */ - if (getgrnam(group_newname)) { - fprintf(stderr, _("%s: %s is not a unique name\n"), - Prog, group_newname); - exit(E_NAME_IN_USE); + if (getgrnam (group_newname)) { + fprintf (stderr, + _("%s: %s is not a unique name\n"), Prog, + group_newname); + exit (E_NAME_IN_USE); } return; } @@ -344,53 +338,52 @@ check_new_name(void) * All invalid group names land here. */ - fprintf(stderr, _("%s: %s is a not a valid group name\n"), - Prog, group_newname); - exit(E_BAD_ARG); + fprintf (stderr, _("%s: %s is a not a valid group name\n"), + Prog, group_newname); + exit (E_BAD_ARG); } /* * process_flags - perform command line argument setting * - * process_flags() interprets the command line arguments and sets - * the values that the user will be created with accordingly. The - * values are checked for sanity. + * process_flags() interprets the command line arguments and sets the + * values that the user will be created with accordingly. The values + * are checked for sanity. */ -static void -process_flags(int argc, char **argv) +static void process_flags (int argc, char **argv) { - char *end; - int arg; + char *end; + int arg; while ((arg = getopt (argc, argv, "og:n:")) != EOF) { switch (arg) { - case 'g': - gflg++; - group_newid = strtol(optarg, &end, 10); - if (*end != '\0') { - fprintf(stderr, - _("%s: invalid group %s\n"), - Prog, optarg); - exit(E_BAD_ARG); - } - break; - case 'n': - nflg++; - group_newname = optarg; - break; - case 'o': - oflg++; - break; - default: - usage (); + case 'g': + gflg++; + group_newid = strtoul (optarg, &end, 10); + if (*end != '\0') { + fprintf (stderr, + _("%s: invalid group %s\n"), + Prog, optarg); + exit (E_BAD_ARG); + } + break; + case 'n': + nflg++; + group_newname = optarg; + break; + case 'o': + oflg++; + break; + default: + usage (); } } if (oflg && !gflg) - usage(); + usage (); if (optind != argc - 1) - usage(); + usage (); group_name = argv[argc - 1]; } @@ -398,27 +391,28 @@ process_flags(int argc, char **argv) /* * close_files - close all of the files that were opened * - * close_files() closes all of the files that were opened for this - * new group. This causes any modified entries to be written out. + * close_files() closes all of the files that were opened for this new + * group. This causes any modified entries to be written out. */ -static void -close_files(void) +static void close_files (void) { - if (!gr_close()) { - fprintf(stderr, _("%s: cannot rewrite group file\n"), Prog); - exit(E_GRP_UPDATE); + if (!gr_close ()) { + fprintf (stderr, _("%s: cannot rewrite group file\n"), + Prog); + exit (E_GRP_UPDATE); } - gr_unlock(); + gr_unlock (); #ifdef SHADOWGRP - if (is_shadow_grp && !sgr_close()) { - fprintf(stderr, _("%s: cannot rewrite shadow group file\n"), - Prog); - exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_close ()) { + fprintf (stderr, + _("%s: cannot rewrite shadow group file\n"), + Prog); + exit (E_GRP_UPDATE); } if (is_shadow_grp) sgr_unlock (); -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ } /* @@ -427,37 +421,40 @@ close_files(void) * open_files() opens the two group files. */ -static void -open_files(void) +static void open_files (void) { - if (!gr_lock()) { - fprintf(stderr, _("%s: unable to lock group file\n"), Prog); - exit(E_GRP_UPDATE); + if (!gr_lock ()) { + fprintf (stderr, _("%s: unable to lock group file\n"), + Prog); + exit (E_GRP_UPDATE); } - if (!gr_open(O_RDWR)) { - fprintf(stderr, _("%s: unable to open group file\n"), Prog); - exit(E_GRP_UPDATE); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: unable to open group file\n"), + Prog); + exit (E_GRP_UPDATE); } #ifdef SHADOWGRP - if (is_shadow_grp && !sgr_lock()) { - fprintf(stderr, _("%s: unable to lock shadow group file\n"), - Prog); - exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_lock ()) { + fprintf (stderr, + _("%s: unable to lock shadow group file\n"), + Prog); + exit (E_GRP_UPDATE); } - if (is_shadow_grp && !sgr_open(O_RDWR)) { - fprintf(stderr, _("%s: unable to open shadow group file\n"), - Prog); - exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_open (O_RDWR)) { + fprintf (stderr, + _("%s: unable to open shadow group file\n"), + Prog); + exit (E_GRP_UPDATE); } -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ } #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* * main - groupmod command @@ -472,10 +469,10 @@ static struct pam_conv conv = { * -n - specify a new group name */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - struct group *grp; + struct group *grp; + #ifdef USE_PAM pam_handle_t *pamh = NULL; struct passwd *pampw; @@ -486,71 +483,73 @@ main(int argc, char **argv) * Get my name so that I can use it to report errors. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM retval = PAM_SUCCESS; - pampw = getpwuid(getuid()); + pampw = getpwuid (getuid ()); if (pampw == NULL) { retval = PAM_USER_UNKNOWN; } if (retval == PAM_SUCCESS) { - retval = pam_start("shadow", pampw->pw_name, &conv, &pamh); + retval = + pam_start ("shadow", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); + retval = pam_authenticate (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); + retval = pam_acct_mgmt (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ - OPENLOG(Prog); + OPENLOG (Prog); #ifdef SHADOWGRP - is_shadow_grp = sgr_file_present(); + is_shadow_grp = sgr_file_present (); #endif /* - * The open routines for the DBM files don't use read-write - * as the mode, so we have to clue them in. + * The open routines for the DBM files don't use read-write as the + * mode, so we have to clue them in. */ #ifdef NDBM gr_dbm_mode = O_RDWR; #ifdef SHADOWGRP sg_dbm_mode = O_RDWR; -#endif /* SHADOWGRP */ -#endif /* NDBM */ +#endif /* SHADOWGRP */ +#endif /* NDBM */ process_flags (argc, argv); /* * Start with a quick check to see if the group exists. */ - if (!(grp = getgrnam(group_name))) { - fprintf(stderr, _("%s: group %s does not exist\n"), - Prog, group_name); - exit(E_NOTFOUND); + if (!(grp = getgrnam (group_name))) { + fprintf (stderr, _("%s: group %s does not exist\n"), + Prog, group_name); + exit (E_NOTFOUND); } else group_id = grp->gr_gid; @@ -561,19 +560,18 @@ main(int argc, char **argv) */ if (__isgrNIS ()) { - char *nis_domain; - char *nis_master; + char *nis_domain; + char *nis_master; - fprintf(stderr, _("%s: group %s is a NIS group\n"), - Prog, group_name); + fprintf (stderr, _("%s: group %s is a NIS group\n"), + Prog, group_name); - if (! yp_get_default_domain (&nis_domain) && - ! yp_master (nis_domain, "group.byname", - &nis_master)) { - fprintf(stderr, _("%s: %s is the NIS master\n"), - Prog, nis_master); + if (!yp_get_default_domain (&nis_domain) && + !yp_master (nis_domain, "group.byname", &nis_master)) { + fprintf (stderr, _("%s: %s is the NIS master\n"), + Prog, nis_master); } - exit(E_NOTFOUND); + exit (E_NOTFOUND); } #endif @@ -596,9 +594,9 @@ main(int argc, char **argv) #ifdef USE_PAM if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } @@ -608,8 +606,7 @@ main(int argc, char **argv) } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ - exit(E_SUCCESS); - /*NOTREACHED*/ -} + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ + exit (E_SUCCESS); + /*NOTREACHED*/} diff --git a/src/groups.c b/src/groups.c index 68c82f22..529e2015 100644 --- a/src/groups.c +++ b/src/groups.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,40 +30,37 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: groups.c,v 1.7 2001/09/01 04:19:16 kloczek Exp $") - +RCSID (PKG_VER "$Id: groups.c,v 1.8 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include "prototypes.h" #include "defines.h" - /* local function prototypes */ -static void print_groups(const char *); +static void print_groups (const char *); /* * print_groups - print the groups which the named user is a member of * - * print_groups() scans the groups file for the list of groups - * which the user is listed as being a member of. + * print_groups() scans the groups file for the list of groups which + * the user is listed as being a member of. */ -static void -print_groups(const char *member) +static void print_groups (const char *member) { - int groups = 0; - struct group *grp; - struct passwd *pwd; - int flag = 0; + int groups = 0; + struct group *grp; + struct passwd *pwd; + int flag = 0; setgrent (); - if ((pwd = getpwnam(member)) == 0) { - fprintf(stderr, _("unknown user %s\n"), member); - exit(1); + if ((pwd = getpwnam (member)) == 0) { + fprintf (stderr, _("unknown user %s\n"), member); + exit (1); } while ((grp = getgrent ())) { - if (is_on_list(grp->gr_mem, member)) { + if (is_on_list (grp->gr_mem, member)) { if (groups++) putchar (' '); @@ -72,7 +69,7 @@ print_groups(const char *member) flag = 1; } } - if (! flag && (grp = getgrgid (pwd->pw_gid))) { + if (!flag && (grp = getgrgid (pwd->pw_gid))) { if (groups++) putchar (' '); @@ -86,47 +83,47 @@ print_groups(const char *member) * groups - print out the groups a process is a member of */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { long sys_ngroups; + #ifdef HAVE_GETGROUPS - int ngroups; + int ngroups; GETGROUPS_T *groups; - int pri_grp; - int i; - struct group *gr; + int pri_grp; + int i; + struct group *gr; #else - char *logname; - char *getlogin(); + char *logname; + char *getlogin (); #endif - sys_ngroups=sysconf(_SC_NGROUPS_MAX); + sys_ngroups = sysconf (_SC_NGROUPS_MAX); #ifdef HAVE_GETGROUPS - groups=malloc(sys_ngroups*sizeof(GETGROUPS_T)); + groups = malloc (sys_ngroups * sizeof (GETGROUPS_T)); #endif - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); if (argc == 1) { /* - * Called with no arguments - give the group set - * for the current user. + * Called with no arguments - give the group set for the + * current user. */ #ifdef HAVE_GETGROUPS /* - * This system supports concurrent group sets, so - * I can ask the system to tell me which groups are - * currently set for this process. + * This system supports concurrent group sets, so I can ask + * the system to tell me which groups are currently set for + * this process. */ - ngroups = getgroups(sys_ngroups, groups); + ngroups = getgroups (sys_ngroups, groups); if (ngroups < 0) { - perror("getgroups"); - exit(1); + perror ("getgroups"); + exit (1); } /* @@ -134,7 +131,7 @@ main(int argc, char **argv) */ pri_grp = getegid (); - for (i = 0;i < ngroups;i++) + for (i = 0; i < ngroups; i++) if (pri_grp == (int) groups[i]) break; @@ -142,9 +139,9 @@ main(int argc, char **argv) pri_grp = -1; /* - * Print out the name of every group in the current - * group set. Unknown groups are printed as their - * decimal group ID values. + * Print out the name of every group in the current group + * set. Unknown groups are printed as their decimal group ID + * values. */ if (pri_grp != -1) { @@ -154,7 +151,7 @@ main(int argc, char **argv) printf ("%d", pri_grp); } - for (i = 0;i < ngroups;i++) { + for (i = 0; i < ngroups; i++) { if (i || pri_grp != -1) putchar (' '); @@ -166,8 +163,8 @@ main(int argc, char **argv) putchar ('\n'); #else /* - * This system does not have the getgroups() system - * call, so I must check the groups file directly. + * This system does not have the getgroups() system call, so + * I must check the groups file directly. */ if ((logname = getlogin ())) @@ -178,8 +175,8 @@ main(int argc, char **argv) } else { /* - * The invoker wanted to know about some other - * user. Use that name to look up the groups instead. + * The invoker wanted to know about some other user. Use + * that name to look up the groups instead. */ print_groups (argv[1]); diff --git a/src/grpck.c b/src/grpck.c index 1cad547f..9952c3b2 100644 --- a/src/grpck.c +++ b/src/grpck.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,27 +30,23 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: grpck.c,v 1.16 2001/08/18 09:28:16 malekith Exp $") - +RCSID (PKG_VER "$Id: grpck.c,v 1.20 2002/01/05 15:41:43 kloczek Exp $") #include #include #include - #include "prototypes.h" #include "defines.h" #include "chkname.h" #include - #include "commonio.h" - #include "groupio.h" -extern void __gr_del_entry(const struct commonio_entry *); -extern struct commonio_entry *__gr_get_head(void); +extern void __gr_del_entry (const struct commonio_entry *); +extern struct commonio_entry *__gr_get_head (void); #ifdef SHADOWGRP #include "sgroupio.h" -extern void __sgr_del_entry(const struct commonio_entry *); -extern struct commonio_entry *__sgr_get_head(void); +extern void __sgr_del_entry (const struct commonio_entry *); +extern struct commonio_entry *__sgr_get_head (void); #endif /* @@ -64,59 +60,52 @@ extern struct commonio_entry *__sgr_get_head(void); #define E_CANT_LOCK 4 #define E_CANT_UPDATE 5 -/* - * Global variables - */ - -extern int optind; -extern char *optarg; - /* * Local variables */ static char *Prog; static const char *grp_file = GROUP_FILE; + #ifdef SHADOWGRP static const char *sgr_file = SGROUP_FILE; #endif static int read_only = 0; /* local function prototypes */ -static void usage(void); -static int yes_or_no(void); -static void delete_member(char **, const char *); +static void usage (void); +static int yes_or_no (void); +static void delete_member (char **, const char *); /* * usage - print syntax message and exit */ -static void -usage(void) +static void usage (void) { #ifdef SHADOWGRP - fprintf(stderr, _("Usage: %s [ -sr ] [ group [ gshadow ] ]\n"), Prog); + fprintf (stderr, _("Usage: %s [-r] [-s] [group [gshadow]]\n"), + Prog); #else - fprintf(stderr, _("Usage: %s [ -sr ] [ group ]\n"), Prog); + fprintf (stderr, _("Usage: %s [-r] [-s] [group]\n"), Prog); #endif - exit(E_USAGE); + exit (E_USAGE); } /* * yes_or_no - get answer to question from the user */ -static int -yes_or_no(void) +static int yes_or_no (void) { - char buf[80]; + char buf[80]; /* * In read-only mode all questions are answered "no". */ if (read_only) { - puts(_("No")); + puts (_("No")); return 0; } @@ -124,7 +113,7 @@ yes_or_no(void) * Get a line and see what the first character is. */ - if (fgets(buf, sizeof buf, stdin)) + if (fgets (buf, sizeof buf, stdin)) return buf[0] == 'y' || buf[0] == 'Y'; return 0; @@ -134,8 +123,7 @@ yes_or_no(void) * delete_member - delete an entry in a list of members */ -static void -delete_member(char **list, const char *member) +static void delete_member (char **list, const char *member) { int i; @@ -152,19 +140,19 @@ delete_member(char **list, const char *member) * grpck - verify group file integrity */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int arg; - int errors = 0; - int deleted = 0; - int i; - struct commonio_entry *gre, *tgre; - struct group *grp; - int sort_mode = 0; + int arg; + int errors = 0; + int deleted = 0; + int i; + struct commonio_entry *gre, *tgre; + struct group *grp; + int sort_mode = 0; + #ifdef SHADOWGRP - struct commonio_entry *sge, *tsge; - struct sgrp *sgr; + struct commonio_entry *sge, *tsge; + struct sgrp *sgr; int is_shadow = 0; #endif @@ -172,19 +160,19 @@ main(int argc, char **argv) * Get my name so that I can use it to report errors. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - OPENLOG(Prog); + OPENLOG (Prog); /* * Parse the command line arguments */ - while ((arg = getopt(argc, argv, "qrs")) != EOF) { + while ((arg = getopt (argc, argv, "qrs")) != EOF) { switch (arg) { case 'q': /* quiet - ignored for now */ @@ -196,16 +184,16 @@ main(int argc, char **argv) sort_mode = 1; break; default: - usage(); + usage (); } } if (sort_mode && read_only) { - fprintf(stderr, _("%s: -s and -r are incompatibile\n"), - Prog); - exit(E_USAGE); + fprintf (stderr, _("%s: -s and -r are incompatibile\n"), + Prog); + exit (E_USAGE); } - + /* * Make certain we have the right number of arguments */ @@ -215,24 +203,24 @@ main(int argc, char **argv) #else if (optind != argc && optind + 1 != argc) #endif - usage(); + usage (); /* - * If there are two left over filenames, use those as the - * group and group password filenames. + * If there are two left over filenames, use those as the group and + * group password filenames. */ if (optind != argc) { grp_file = argv[optind]; - gr_name(grp_file); + gr_name (grp_file); } #ifdef SHADOWGRP if (optind + 2 == argc) { sgr_file = argv[optind + 1]; - sgr_name(sgr_file); + sgr_name (sgr_file); is_shadow = 1; } else if (optind == argc) - is_shadow = sgr_file_present(); + is_shadow = sgr_file_present (); #endif /* @@ -240,51 +228,57 @@ main(int argc, char **argv) */ if (!read_only) { - if (!gr_lock()) { - fprintf(stderr, _("%s: cannot lock file %s\n"), Prog, grp_file); + if (!gr_lock ()) { + fprintf (stderr, _("%s: cannot lock file %s\n"), + Prog, grp_file); if (optind == argc) - SYSLOG((LOG_WARN,"cannot lock %s\n",grp_file)); - closelog(); - exit(E_CANT_LOCK); + SYSLOG ((LOG_WARN, "cannot lock %s", + grp_file)); + closelog (); + exit (E_CANT_LOCK); } #ifdef SHADOWGRP - if (is_shadow && !sgr_lock()) { - fprintf(stderr, _("%s: cannot lock file %s\n"), Prog, sgr_file); + if (is_shadow && !sgr_lock ()) { + fprintf (stderr, _("%s: cannot lock file %s\n"), + Prog, sgr_file); if (optind == argc) - SYSLOG((LOG_WARN,"cannot lock %s\n",sgr_file)); - closelog(); - exit(E_CANT_LOCK); + SYSLOG ((LOG_WARN, "cannot lock %s", + sgr_file)); + closelog (); + exit (E_CANT_LOCK); } #endif } /* - * Open the files. Use O_RDONLY if we are in read_only mode, + * Open the files. Use O_RDONLY if we are in read_only mode, * O_RDWR otherwise. */ - if (!gr_open(read_only ? O_RDONLY : O_RDWR)) { - fprintf(stderr, _("%s: cannot open file %s\n"), Prog, grp_file); + if (!gr_open (read_only ? O_RDONLY : O_RDWR)) { + fprintf (stderr, _("%s: cannot open file %s\n"), Prog, + grp_file); if (optind == argc) - SYSLOG((LOG_WARN, "cannot open %s\n", grp_file)); - closelog(); - exit(E_CANT_OPEN); + SYSLOG ((LOG_WARN, "cannot open %s", grp_file)); + closelog (); + exit (E_CANT_OPEN); } #ifdef SHADOWGRP - if (is_shadow && !sgr_open(read_only ? O_RDONLY : O_RDWR)) { - fprintf(stderr, _("%s: cannot open file %s\n"), Prog, sgr_file); + if (is_shadow && !sgr_open (read_only ? O_RDONLY : O_RDWR)) { + fprintf (stderr, _("%s: cannot open file %s\n"), Prog, + sgr_file); if (optind == argc) - SYSLOG((LOG_WARN, "cannot open %s\n", sgr_file)); - closelog(); - exit(E_CANT_OPEN); + SYSLOG ((LOG_WARN, "cannot open %s", sgr_file)); + closelog (); + exit (E_CANT_OPEN); } #endif if (sort_mode) { - gr_sort(); + gr_sort (); #ifdef SHADOWGRP if (is_shadow) - sgr_sort(); + sgr_sort (); #endif goto write_and_bye; } @@ -293,7 +287,7 @@ main(int argc, char **argv) * Loop through the entire group file. */ - for (gre = __gr_get_head(); gre; gre = gre->next) { + for (gre = __gr_get_head (); gre; gre = gre->next) { /* * Skip all NIS entries. */ @@ -302,42 +296,42 @@ main(int argc, char **argv) continue; /* - * Start with the entries that are completely corrupt. - * They have no (struct group) entry because they couldn't - * be parsed properly. + * Start with the entries that are completely corrupt. They + * have no (struct group) entry because they couldn't be + * parsed properly. */ if (!gre->eptr) { /* - * Tell the user this entire line is bogus and - * ask them to delete it. + * Tell the user this entire line is bogus and ask + * them to delete it. */ - printf(_("invalid group file entry\n")); - printf(_("delete line `%s'? "), gre->line); + printf (_("invalid group file entry\n")); + printf (_("delete line `%s'? "), gre->line); errors++; /* * prompt the user to delete the entry or not */ - if (!yes_or_no()) + if (!yes_or_no ()) continue; /* - * All 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. + * All 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. */ -delete_gr: - SYSLOG((LOG_INFO, "delete group line `%s'\n", - gre->line)); + delete_gr: + SYSLOG ((LOG_INFO, "delete group line `%s'", + gre->line)); deleted++; - __gr_del_entry(gre); + __gr_del_entry (gre); continue; } @@ -351,7 +345,7 @@ delete_gr: * Make sure this entry has a unique name. */ - for (tgre = __gr_get_head(); tgre; tgre = tgre->next) { + for (tgre = __gr_get_head (); tgre; tgre = tgre->next) { const struct group *ent = tgre->eptr; @@ -369,7 +363,7 @@ delete_gr: if (!ent) continue; - if (strcmp(grp->gr_name, ent->gr_name) != 0) + if (strcmp (grp->gr_name, ent->gr_name) != 0) continue; /* @@ -377,44 +371,35 @@ delete_gr: * another and ask them to delete it. */ - puts(_("duplicate group entry\n")); - printf(_("delete line `%s'? "), gre->line); + puts (_("duplicate group entry\n")); + printf (_("delete line `%s'? "), gre->line); errors++; /* * prompt the user to delete the entry or not */ - if (yes_or_no()) + if (yes_or_no ()) goto delete_gr; } /* * Check for invalid group names. --marekm */ - if (!check_group_name(grp->gr_name)) { + if (!check_group_name (grp->gr_name)) { errors++; - printf(_("invalid group name `%s'\n"), grp->gr_name); - } - - /* - * Check for a Slackware bug. Make sure GID is not -1 - * (it has special meaning for some syscalls). --marekm - */ - - if (grp->gr_gid == (gid_t) -1) { - errors++; - printf(_("group %s: bad GID (%d)\n"), - grp->gr_name, (int) grp->gr_gid); + printf (_("invalid group name `%s'\n"), + grp->gr_name); } /* * Workaround for a NYS libc 5.3.12 bug on RedHat 4.2 - - * groups with no members are returned as groups with - * one member "", causing grpck to fail. --marekm + * groups with no members are returned as groups with one + * member "", causing grpck to fail. --marekm */ - if (grp->gr_mem[0] && !grp->gr_mem[1] && *(grp->gr_mem[0]) == '\0') + if (grp->gr_mem[0] && !grp->gr_mem[1] + && *(grp->gr_mem[0]) == '\0') grp->gr_mem[0] = (char *) 0; /* @@ -422,27 +407,27 @@ delete_gr: */ for (i = 0; grp->gr_mem[i]; i++) { - if (getpwnam(grp->gr_mem[i])) + if (getpwnam (grp->gr_mem[i])) continue; /* - * Can't find this user. Remove them + * Can't find this user. Remove them * from the list. */ errors++; - printf(_("group %s: no user %s\n"), + printf (_("group %s: no user %s\n"), grp->gr_name, grp->gr_mem[i]); - printf(_("delete member `%s'? "), grp->gr_mem[i]); + printf (_("delete member `%s'? "), grp->gr_mem[i]); - if (!yes_or_no()) + if (!yes_or_no ()) continue; - SYSLOG((LOG_INFO, "delete member `%s' group `%s'\n", - grp->gr_mem[i], grp->gr_name)); + SYSLOG ((LOG_INFO, "delete member `%s' group `%s'", + grp->gr_mem[i], grp->gr_name)); deleted++; - delete_member(grp->gr_mem, grp->gr_mem[i]); + delete_member (grp->gr_mem, grp->gr_mem[i]); gre->changed = 1; - __gr_set_changed(); + __gr_set_changed (); } } @@ -454,45 +439,45 @@ delete_gr: * Loop through the entire shadow group file. */ - for (sge = __sgr_get_head(); sge; sge = sge->next) { + for (sge = __sgr_get_head (); sge; sge = sge->next) { /* - * Start with the entries that are completely corrupt. - * They have no (struct sgrp) entry because they couldn't - * be parsed properly. + * Start with the entries that are completely corrupt. They + * have no (struct sgrp) entry because they couldn't be + * parsed properly. */ if (!sge->eptr) { /* - * Tell the user this entire line is bogus and - * ask them to delete it. + * Tell the user this entire line is bogus and ask + * them to delete it. */ - printf(_("invalid shadow group file entry\n")); - printf(_("delete line `%s'? "), sge->line); + printf (_("invalid shadow group file entry\n")); + printf (_("delete line `%s'? "), sge->line); errors++; /* * prompt the user to delete the entry or not */ - if (!yes_or_no()) + if (!yes_or_no ()) continue; /* - * 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. + * linked list. When done, it skips back to the top + * of the loop to try out the next list element. */ -delete_sg: - SYSLOG((LOG_INFO, "delete shadow line `%s'\n", - sge->line)); + delete_sg: + SYSLOG ((LOG_INFO, "delete shadow line `%s'", + sge->line)); deleted++; - __sgr_del_entry(sge); + __sgr_del_entry (sge); continue; } @@ -506,7 +491,7 @@ delete_sg: * Make sure this entry has a unique name. */ - for (tsge = __sgr_get_head(); tsge; tsge = tsge->next) { + for (tsge = __sgr_get_head (); tsge; tsge = tsge->next) { const struct sgrp *ent = tsge->eptr; @@ -524,7 +509,7 @@ delete_sg: if (!ent) continue; - if (strcmp(sgr->sg_name, ent->sg_name) != 0) + if (strcmp (sgr->sg_name, ent->sg_name) != 0) continue; /* @@ -532,15 +517,15 @@ delete_sg: * another and ask them to delete it. */ - puts(_("duplicate shadow group entry\n")); - printf(_("delete line `%s'? "), sge->line); + puts (_("duplicate shadow group entry\n")); + printf (_("delete line `%s'? "), sge->line); errors++; /* * prompt the user to delete the entry or not */ - if (yes_or_no()) + if (yes_or_no ()) goto delete_sg; } @@ -548,11 +533,11 @@ delete_sg: * Make sure this entry exists in the /etc/group file. */ - if (!gr_locate(sgr->sg_name)) { - puts(_("no matching group file entry\n")); - printf(_("delete line `%s'? "), sge->line); + if (!gr_locate (sgr->sg_name)) { + puts (_("no matching group file entry\n")); + printf (_("delete line `%s'? "), sge->line); errors++; - if (yes_or_no()) + if (yes_or_no ()) goto delete_sg; } @@ -561,28 +546,30 @@ delete_sg: */ for (i = 0; sgr->sg_adm[i]; i++) { - if (getpwnam(sgr->sg_adm[i])) + if (getpwnam (sgr->sg_adm[i])) continue; /* - * Can't find this user. Remove them + * Can't find this user. Remove them * from the list. */ errors++; - printf(_("shadow group %s: no administrative user %s\n"), + printf (_ + ("shadow group %s: no administrative user %s\n"), sgr->sg_name, sgr->sg_adm[i]); - printf(_("delete administrative member `%s'? "), sgr->sg_adm[i]); + printf (_("delete administrative member `%s'? "), + sgr->sg_adm[i]); - if (!yes_or_no()) + if (!yes_or_no ()) continue; - SYSLOG((LOG_INFO, - "delete admin `%s' from shadow group `%s'\n", - sgr->sg_adm[i], sgr->sg_name)); + SYSLOG ((LOG_INFO, + "delete admin `%s' from shadow group `%s'", + sgr->sg_adm[i], sgr->sg_name)); deleted++; - delete_member(sgr->sg_adm, sgr->sg_adm[i]); + delete_member (sgr->sg_adm, sgr->sg_adm[i]); sge->changed = 1; - __sgr_set_changed(); + __sgr_set_changed (); } /* @@ -590,52 +577,51 @@ delete_sg: */ for (i = 0; sgr->sg_mem[i]; i++) { - if (getpwnam(sgr->sg_mem[i])) + if (getpwnam (sgr->sg_mem[i])) continue; /* - * Can't find this user. Remove them - * from the list. + * Can't find this user. Remove them from the list. */ errors++; - printf(_("shadow group %s: no user %s\n"), + printf (_("shadow group %s: no user %s\n"), sgr->sg_name, sgr->sg_mem[i]); - printf(_("delete member `%s'? "), sgr->sg_mem[i]); + printf (_("delete member `%s'? "), sgr->sg_mem[i]); - if (!yes_or_no()) + if (!yes_or_no ()) continue; - SYSLOG((LOG_INFO, - "delete member `%s' from shadow group `%s'\n", - sgr->sg_mem[i], sgr->sg_name)); + SYSLOG ((LOG_INFO, + "delete member `%s' from shadow group `%s'", + sgr->sg_mem[i], sgr->sg_name)); deleted++; - delete_member(sgr->sg_mem, sgr->sg_mem[i]); + delete_member (sgr->sg_mem, sgr->sg_mem[i]); sge->changed = 1; - __sgr_set_changed(); + __sgr_set_changed (); } } -shadow_done: -#endif /* SHADOWGRP */ + shadow_done: +#endif /* SHADOWGRP */ /* - * All done. If there were no deletions we can just abandon any + * All done. If there were no deletions we can just abandon any * changes to the files. */ if (deleted) { -write_and_bye: - if (!gr_close()) { - fprintf(stderr, _("%s: cannot update file %s\n"), - Prog, grp_file); - exit(E_CANT_UPDATE); + write_and_bye: + if (!gr_close ()) { + fprintf (stderr, _("%s: cannot update file %s\n"), + Prog, grp_file); + exit (E_CANT_UPDATE); } #ifdef SHADOWGRP - if (is_shadow && !sgr_close()) { - fprintf(stderr, _("%s: cannot update file %s\n"), - Prog, sgr_file); - exit(E_CANT_UPDATE); + if (is_shadow && !sgr_close ()) { + fprintf (stderr, _("%s: cannot update file %s\n"), + Prog, sgr_file); + exit (E_CANT_UPDATE); } #endif } @@ -646,9 +632,9 @@ write_and_bye: #ifdef SHADOWGRP if (is_shadow) - sgr_unlock(); + sgr_unlock (); #endif - (void) gr_unlock(); + (void) gr_unlock (); /* * Tell the user what we did and exit. @@ -656,14 +642,15 @@ write_and_bye: if (errors) #ifdef NDBM - printf(deleted ? - _("%s: the files have been updated; run mkpasswd\n") : - _("%s: no changes\n"), Prog); + printf (deleted ? + _ + ("%s: the files have been updated; run mkpasswd\n") + : _("%s: no changes\n"), Prog); #else - printf(deleted ? + printf (deleted ? _("%s: the files have been updated\n") : _("%s: no changes\n"), Prog); #endif - exit(errors ? E_BAD_ENTRY : E_OKAY); + exit (errors ? E_BAD_ENTRY : E_OKAY); } diff --git a/src/grpconv.c b/src/grpconv.c index 8e641fd3..300b354c 100644 --- a/src/grpconv.c +++ b/src/grpconv.c @@ -4,8 +4,8 @@ * * Copyright (C) 1996, Marek Michalkiewicz * - * This program may be freely used and distributed. If you improve - * it, please send me your changes. Thanks! + * This program may be freely used and distributed. If you improve + * it, please send me your changes. Thanks! */ #include @@ -27,26 +27,24 @@ #include "sgroupio.h" #include "rcsid.h" -RCSID(PKG_VER "$Id: grpconv.c,v 1.11 2000/08/26 18:27:18 marekm Exp $") +RCSID (PKG_VER "$Id: grpconv.c,v 1.12 2002/01/05 15:41:43 kloczek Exp $") static int group_locked = 0; static int gshadow_locked = 0; /* local function prototypes */ -static void fail_exit(int); +static void fail_exit (int); -static void -fail_exit(int status) +static void fail_exit (int status) { if (group_locked) - gr_unlock(); + gr_unlock (); if (gshadow_locked) - sgr_unlock(); - exit(status); + sgr_unlock (); + exit (status); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { const struct group *gr; struct group grent; @@ -54,45 +52,48 @@ main(int argc, char **argv) struct sgrp sgent; char *Prog = argv[0]; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - if (!gr_lock()) { - fprintf(stderr, _("%s: can't lock group file\n"), Prog); - fail_exit(5); + if (!gr_lock ()) { + fprintf (stderr, _("%s: can't lock group file\n"), Prog); + fail_exit (5); } group_locked++; - if (!gr_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open group file\n"), Prog); - fail_exit(1); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open group file\n"), Prog); + fail_exit (1); } - if (!sgr_lock()) { - fprintf(stderr, _("%s: can't lock shadow group file\n"), Prog); - fail_exit(5); + if (!sgr_lock ()) { + fprintf (stderr, _("%s: can't lock shadow group file\n"), + Prog); + fail_exit (5); } gshadow_locked++; - if (!sgr_open(O_CREAT | O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow group file\n"), Prog); - fail_exit(1); + if (!sgr_open (O_CREAT | O_RDWR)) { + fprintf (stderr, _("%s: can't open shadow group file\n"), + Prog); + fail_exit (1); } /* * Remove /etc/gshadow entries for groups not in /etc/group. */ - sgr_rewind(); - while ((sg = sgr_next())) { - if (gr_locate(sg->sg_name)) + sgr_rewind (); + while ((sg = sgr_next ())) { + if (gr_locate (sg->sg_name)) continue; - if (!sgr_remove(sg->sg_name)) { + if (!sgr_remove (sg->sg_name)) { /* * This shouldn't happen (the entry exists) but... */ - fprintf(stderr, _("%s: can't remove shadow group %s\n"), - Prog, sg->sg_name); - fail_exit(3); + fprintf (stderr, + _("%s: can't remove shadow group %s\n"), + Prog, sg->sg_name); + fail_exit (3); } } @@ -100,74 +101,79 @@ main(int argc, char **argv) * Update shadow group passwords if non-shadow password is not "x". * Add any missing shadow group entries. */ - gr_rewind(); - while ((gr = gr_next())) { - sg = sgr_locate(gr->gr_name); + gr_rewind (); + while ((gr = gr_next ())) { + sg = sgr_locate (gr->gr_name); if (sg) { -#if 0 /* because of sg_mem, but see below */ - if (strcmp(gr->gr_passwd, SHADOW_PASSWD_STRING) == 0) +#if 0 /* because of sg_mem, but see below */ + if (strcmp (gr->gr_passwd, SHADOW_PASSWD_STRING) == + 0) continue; #endif /* update existing shadow group entry */ sgent = *sg; - if (strcmp(gr->gr_passwd, SHADOW_PASSWD_STRING) != 0) + if (strcmp (gr->gr_passwd, SHADOW_PASSWD_STRING) != + 0) sgent.sg_passwd = gr->gr_passwd; } else { static char *empty = 0; /* add new shadow group entry */ - memset(&sgent, 0, sizeof sgent); + memset (&sgent, 0, sizeof sgent); sgent.sg_name = gr->gr_name; sgent.sg_passwd = gr->gr_passwd; sgent.sg_adm = ∅ } /* * XXX - sg_mem is redundant, it is currently always a copy - * of gr_mem. Very few programs actually use sg_mem, and - * all of them are in the shadow suite... Maybe this field - * could be used for something else? Any suggestions? + * of gr_mem. Very few programs actually use sg_mem, and all + * of them are in the shadow suite. Maybe this field could + * be used for something else? Any suggestions? */ sgent.sg_mem = gr->gr_mem; - if (!sgr_update(&sgent)) { - fprintf(stderr, - _("%s: can't update shadow entry for %s\n"), - Prog, sgent.sg_name); - fail_exit(3); + if (!sgr_update (&sgent)) { + fprintf (stderr, + _ + ("%s: can't update shadow entry for %s\n"), + Prog, sgent.sg_name); + fail_exit (3); } /* remove password from /etc/group */ grent = *gr; - grent.gr_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ - if (!gr_update(&grent)) { - fprintf(stderr, - _("%s: can't update entry for group %s\n"), - Prog, grent.gr_name); - fail_exit(3); + grent.gr_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ + if (!gr_update (&grent)) { + fprintf (stderr, + _ + ("%s: can't update entry for group %s\n"), + Prog, grent.gr_name); + fail_exit (3); } } - if (!sgr_close()) { - fprintf(stderr, _("%s: can't update shadow group file\n"), Prog); - fail_exit(3); + if (!sgr_close ()) { + fprintf (stderr, _("%s: can't update shadow group file\n"), + Prog); + fail_exit (3); } - if (!gr_close()) { - fprintf(stderr, _("%s: can't update group file\n"), Prog); - fail_exit(3); + if (!gr_close ()) { + fprintf (stderr, _("%s: can't update group file\n"), Prog); + fail_exit (3); } - sgr_unlock(); - gr_unlock(); + sgr_unlock (); + gr_unlock (); return 0; } -#else /* !SHADOWGRP */ -int -main(int argc, char **argv) +#else /* !SHADOWGRP */ +int main (int argc, char **argv) { - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - fprintf(stderr, _("%s: not configured for shadow group support.\n"), - argv[0]); - exit(1); + fprintf (stderr, + _("%s: not configured for shadow group support.\n"), + argv[0]); + exit (1); } -#endif /* !SHADOWGRP */ +#endif /* !SHADOWGRP */ diff --git a/src/grpunconv.c b/src/grpunconv.c index 59cb4994..4a1e7a11 100644 --- a/src/grpunconv.c +++ b/src/grpunconv.c @@ -4,128 +4,128 @@ * Copyright (C) 1996, Michael Meskes * using sources from Marek Michalkiewicz * - * This program may be freely used and distributed. If you improve - * it, please send me your changes. Thanks! + * This program may be freely used and distributed. If you improve + * it, please send me your changes. Thanks! */ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: grpunconv.c,v 1.10 2000/08/26 18:27:18 marekm Exp $") - +RCSID (PKG_VER "$Id: grpunconv.c,v 1.11 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include #include #include - #include #include "prototypes.h" - #ifdef SHADOWGRP - #include "groupio.h" #include "sgroupio.h" - static int group_locked = 0; static int gshadow_locked = 0; /* local function prototypes */ -static void fail_exit(int); +static void fail_exit (int); -static void -fail_exit(int status) +static void fail_exit (int status) { if (group_locked) - gr_unlock(); + gr_unlock (); if (gshadow_locked) - sgr_unlock(); - exit(status); + sgr_unlock (); + exit (status); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { const struct group *gr; struct group grent; const struct sgrp *sg; char *Prog = argv[0]; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - if (!sgr_file_present()) - exit(0); /* no /etc/gshadow, nothing to do */ + if (!sgr_file_present ()) + exit (0); /* no /etc/gshadow, nothing to do */ - if (!gr_lock()) { - fprintf(stderr, _("%s: can't lock group file\n"), Prog); - fail_exit(5); + if (!gr_lock ()) { + fprintf (stderr, _("%s: can't lock group file\n"), Prog); + fail_exit (5); } group_locked++; - if (!gr_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open group file\n"), Prog); - fail_exit(1); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open group file\n"), Prog); + fail_exit (1); } - if (!sgr_lock()) { - fprintf(stderr, _("%s: can't lock shadow group file\n"), Prog); - fail_exit(5); + if (!sgr_lock ()) { + fprintf (stderr, _("%s: can't lock shadow group file\n"), + Prog); + fail_exit (5); } gshadow_locked++; - if (!sgr_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow group file\n"), Prog); - fail_exit(1); + if (!sgr_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open shadow group file\n"), + Prog); + fail_exit (1); } /* * Update group passwords if non-shadow password is "x". */ - gr_rewind(); - while ((gr = gr_next())) { - sg = sgr_locate(gr->gr_name); - if (sg && strcmp(gr->gr_passwd, SHADOW_PASSWD_STRING) == 0) { - /* add password to /etc/group */ - grent = *gr; + gr_rewind (); + while ((gr = gr_next ())) { + sg = sgr_locate (gr->gr_name); + if (sg + && strcmp (gr->gr_passwd, SHADOW_PASSWD_STRING) == 0) { + /* add password to /etc/group */ + grent = *gr; grent.gr_passwd = sg->sg_passwd; - if (!gr_update(&grent)) { - fprintf(stderr, - _("%s: can't update entry for group %s\n"), - Prog, grent.gr_name); - fail_exit(3); + if (!gr_update (&grent)) { + fprintf (stderr, + _ + ("%s: can't update entry for group %s\n"), + Prog, grent.gr_name); + fail_exit (3); } } } - if (!sgr_close()) { - fprintf(stderr, _("%s: can't update shadow group file\n"), Prog); - fail_exit(3); + if (!sgr_close ()) { + fprintf (stderr, _("%s: can't update shadow group file\n"), + Prog); + fail_exit (3); } - if (!gr_close()) { - fprintf(stderr, _("%s: can't update group file\n"), Prog); - fail_exit(3); + if (!gr_close ()) { + fprintf (stderr, _("%s: can't update group file\n"), Prog); + fail_exit (3); } - if (unlink(SGROUP_FILE) != 0) { - fprintf(stderr, _("%s: can't delete shadow group file\n"), Prog); - fail_exit(3); + if (unlink (SGROUP_FILE) != 0) { + fprintf (stderr, _("%s: can't delete shadow group file\n"), + Prog); + fail_exit (3); } - sgr_unlock(); - gr_unlock(); + sgr_unlock (); + gr_unlock (); return 0; } -#else /* !SHADOWGRP */ -int -main(int argc, char **argv) +#else /* !SHADOWGRP */ +int main (int argc, char **argv) { - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - fprintf(stderr, _("%s: not configured for shadow group support.\n"), argv[0]); - exit(1); + fprintf (stderr, + _("%s: not configured for shadow group support.\n"), + argv[0]); + exit (1); } -#endif /* !SHADOWGRP */ +#endif /* !SHADOWGRP */ diff --git a/src/id.c b/src/id.c index c33c58cf..c5d2e45c 100644 --- a/src/id.c +++ b/src/id.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,62 +30,58 @@ /* * id - print current process user identification information * - * Print the current process identifiers. This includes the - * UID, GID, effective-UID and effective-GID. Optionally print + * Print the current process identifiers. This includes the + * UID, GID, effective-UID and effective-GID. Optionally print * the concurrent group set if the current system supports it. */ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: id.c,v 1.7 2001/09/01 04:19:16 kloczek Exp $") - +RCSID (PKG_VER "$Id: id.c,v 1.10 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include #include "defines.h" - /* local function prototypes */ -static void usage(void); +static void usage (void); -static void -usage(void) +static void usage (void) { #ifdef HAVE_GETGROUPS - fprintf(stderr, _("usage: id [ -a ]\n")); + fprintf (stderr, _("usage: id [-a]\n")); #else - fprintf(stderr, _("usage: id\n")); + fprintf (stderr, _("usage: id\n")); #endif - exit(1); + exit (1); } -/*ARGSUSED*/ -int -main(int argc, char **argv) + /*ARGSUSED*/ int main (int argc, char **argv) { uid_t ruid, euid; gid_t rgid, egid; int i; long sys_ngroups; + /* * This block of declarations is particularly strained because of several - * different ways of doing concurrent groups. Old BSD systems used int - * for gid's, but short for the type passed to getgroups(). Newer systems - * use gid_t for everything. Some systems have a small and fixed NGROUPS, - * usually about 16 or 32. Others use bigger values. + * different ways of doing concurrent groups. Old BSD systems used int for + * gid's, but short for the type passed to getgroups(). Newer systems use + * 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; - int aflg = 0; + int ngroups; + int aflg = 0; #endif - struct passwd *pw; - struct group *gr; + struct passwd *pw; + struct group *gr; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* * Dynamically get the maximum number of groups from system, instead @@ -93,46 +89,46 @@ main(int argc, char **argv) * group limit is not hard coded into the binary, so it will still * work if the system library is recompiled. */ - sys_ngroups=sysconf(_SC_NGROUPS_MAX); + sys_ngroups = sysconf (_SC_NGROUPS_MAX); #ifdef HAVE_GETGROUPS - groups=malloc(sys_ngroups*sizeof(GETGROUPS_T)); + groups = malloc (sys_ngroups * sizeof (GETGROUPS_T)); /* - * See if the -a flag has been given to print out the - * concurrent group set. + * See if the -a flag has been given to print out the concurrent + * group set. */ if (argc > 1) { if (argc > 2 || strcmp (argv[1], "-a")) - usage(); + usage (); else aflg = 1; } #else if (argc > 1) - usage(); + usage (); #endif - ruid = getuid(); - euid = geteuid(); - rgid = getgid(); - egid = getegid(); + ruid = getuid (); + euid = geteuid (); + rgid = getgid (); + egid = getegid (); /* - * Print out the real user ID and group ID. If the user or - * group does not exist, just give the numerical value. + * Print out the real user ID and group ID. If the user or group + * does not exist, just give the numerical value. */ - pw = getpwuid(ruid); + pw = getpwuid (ruid); if (pw) - printf(_("uid=%d(%s)"), (int) ruid, pw->pw_name); + printf (_("uid=%u(%s)"), ruid, pw->pw_name); else - printf(_("uid=%d"), (int) ruid); + printf (_("uid=%u"), ruid); - gr = getgrgid(rgid); + gr = getgrgid (rgid); if (gr) - printf(_(" gid=%d(%s)"), (int) rgid, gr->gr_name); + printf (_(" gid=%u(%s)"), rgid, gr->gr_name); else - printf(_(" gid=%d"), (int) rgid); + printf (_(" gid=%u"), rgid); /* * Print out the effective user ID and group ID if they are @@ -140,58 +136,55 @@ main(int argc, char **argv) */ if (ruid != euid) { - pw = getpwuid(euid); + pw = getpwuid (euid); if (pw) - printf(_(" euid=%d(%s)"), (int) euid, pw->pw_name); + printf (_(" euid=%u(%s)"), euid, pw->pw_name); else - printf(_(" euid=%d"), (int) euid); + printf (_(" euid=%u"), euid); } if (rgid != egid) { - gr = getgrgid(egid); + gr = getgrgid (egid); if (gr) - printf(_(" egid=%d(%s)"), (int) egid, gr->gr_name); + printf (_(" egid=%u(%s)"), egid, gr->gr_name); else - printf(_(" egid=%d"), (int) egid); + printf (_(" egid=%u"), 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. + * Print out the concurrent group set if the user has requested it. + * The group numbers will be printed followed by their names. */ if (aflg && (ngroups = getgroups (sys_ngroups, groups)) != -1) { /* - * Start off the group message. It will be of the format + * Start off the group message. It will be of the format * - * groups=###(aaa),###(aaa),###(aaa) + * groups=###(aaa),###(aaa),###(aaa) * * where "###" is a numerical value and "aaa" is the * corresponding name for each respective numerical value. */ - printf(_(" groups=")); + printf (_(" groups=")); for (i = 0; i < ngroups; i++) { if (i) - putchar(','); + putchar (','); - gr = getgrgid(groups[i]); + gr = getgrgid (groups[i]); if (gr) - printf("%d(%s)", (int) groups[i], gr->gr_name); + printf ("%u(%s)", groups[i], gr->gr_name); else - printf("%d", (int) groups[i]); + printf ("%u", groups[i]); } } - free(groups); + free (groups); #endif /* * Finish off the line. */ - putchar('\n'); - exit(0); - /*NOTREACHED*/ -} + putchar ('\n'); + exit (0); + /*NOTREACHED*/} diff --git a/src/lastlog.c b/src/lastlog.c index 833e068e..63409a96 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,14 +30,12 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: lastlog.c,v 1.9 2000/11/29 12:50:09 kloczek Exp $") - +RCSID (PKG_VER "$Id: lastlog.c,v 1.11 2002/01/05 15:41:43 kloczek Exp $") #include #include #include #include #include - #include "prototypes.h" #include "defines.h" #if HAVE_LASTLOG_H @@ -45,17 +43,15 @@ RCSID(PKG_VER "$Id: lastlog.c,v 1.9 2000/11/29 12:50:09 kloczek Exp $") #else #include "lastlog_.h" #endif - /* * Needed for MkLinux DR1/2/2.1 - J. */ #ifndef LASTLOG_FILE #define LASTLOG_FILE "/var/log/lastlog" #endif - static FILE *lastlogfile; /* lastlog file stream */ -static off_t user; /* one single user, specified on command line */ -static int days; /* number of days to consider for print command */ +static off_t user; /* one single user, specified on command line */ +static int days; /* number of days to consider for print command */ static time_t seconds; /* that number of days in seconds */ static int uflg = 0; /* set if user is a valid user id */ @@ -64,79 +60,78 @@ static struct lastlog lastlog; /* scratch structure to play with ... */ static struct stat statbuf; /* fstat buffer for file size */ static struct passwd *pwent; -#include -static struct option const longopts[] = -{ - {"user", required_argument, 0, 'u'}, - {"time", required_argument, 0, 't'}, - {"help", no_argument, 0, 'h'}, - {0, 0, 0, 0} +#include +static struct option const longopts[] = { + {"user", required_argument, 0, 'u'}, + {"time", required_argument, 0, 't'}, + {"help", no_argument, 0, 'h'}, + {0, 0, 0, 0} }; -extern char *optarg; - #define NOW (time ((time_t *) 0)) /* local function prototypes */ -static void print(void); -static void print_one(const struct passwd *); +static void print (void); +static void print_one (const struct passwd *); -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int c; + int c; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - if ((lastlogfile = fopen (LASTLOG_FILE,"r")) == (FILE *) 0) { + if ((lastlogfile = fopen (LASTLOG_FILE, "r")) == (FILE *) 0) { perror (LASTLOG_FILE); exit (1); } - while ((c = getopt_long (argc, argv, "u:t:h", longopts, NULL)) != -1) { + while ((c = + getopt_long (argc, argv, "u:t:h", longopts, NULL)) != -1) { switch (c) { - case 'u': - pwent = getpwnam (optarg); - if (!pwent) { - fprintf(stderr, - _("Unknown User: %s\n"), - optarg); - exit (1); - } - uflg++; - user = pwent->pw_uid; - break; - case 't': - days = atoi (optarg); - seconds = days * DAY; - tflg++; - break; - case 'h': - fprintf(stdout, _("Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n"), - argv[0]); - exit(0); - default: - fprintf(stdout, _("Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n"), - argv[0]); - exit(1); + case 'u': + pwent = getpwnam (optarg); + if (!pwent) { + fprintf (stderr, + _("Unknown User: %s\n"), optarg); + exit (1); + } + uflg++; + user = pwent->pw_uid; + break; + case 't': + days = atoi (optarg); + seconds = days * DAY; + tflg++; + break; + case 'h': + fprintf (stdout, + _ + ("Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n"), + argv[0]); + exit (0); + default: + fprintf (stdout, + _ + ("Usage: %s [<-u|--login> login-name] [<-t|--time> days] [<-h|--help>]\n"), + argv[0]); + exit (1); } } print (); fclose (lastlogfile); exit (0); - /*NOTREACHED*/ -} + /*NOTREACHED*/} -static void -print(void) +static void print (void) { - off_t offset; + off_t offset; if (uflg) { - offset = (unsigned long) user * sizeof lastlog; + offset = (unsigned long) user *sizeof lastlog; + if (fstat (fileno (lastlogfile), &statbuf)) { - perror(LASTLOG_FILE); + perror (LASTLOG_FILE); return; } if (offset >= statbuf.st_size) @@ -144,7 +139,7 @@ print(void) fseek (lastlogfile, offset, SEEK_SET); if (fread ((char *) &lastlog, sizeof lastlog, 1, - lastlogfile) == 1) + lastlogfile) == 1) print_one (pwent); else perror (LASTLOG_FILE); @@ -152,10 +147,11 @@ print(void) setpwent (); while ((pwent = getpwent ())) { user = pwent->pw_uid; - offset = (unsigned long) user * sizeof lastlog; + offset = (unsigned long) user *sizeof lastlog; + fseek (lastlogfile, offset, SEEK_SET); if (fread ((char *) &lastlog, sizeof lastlog, 1, - lastlogfile) != 1) + lastlogfile) != 1) continue; if (tflg && NOW - lastlog.ll_time > seconds) @@ -166,44 +162,44 @@ print(void) } } -static void -print_one(const struct passwd *pw) +static void print_one (const struct passwd *pw) { - static int once; - char *cp; - struct tm *tm; + static int once; + char *cp; + struct tm *tm; + #ifdef HAVE_STRFTIME char ptime[80]; #endif - if (! pw) + if (!pw) return; - if (! once) { + if (!once) { #ifdef HAVE_LL_HOST - printf(_("Username Port From Latest\n")); + printf (_ + ("Username Port From Latest\n")); #else - printf(_("Username Port Latest\n")); + printf (_("Username Port Latest\n")); #endif once++; } tm = localtime (&lastlog.ll_time); #ifdef HAVE_STRFTIME - strftime(ptime, sizeof(ptime), "%a %b %e %H:%M:%S %z %Y", tm); + strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm); cp = ptime; #else cp = asctime (tm); cp[24] = '\0'; #endif - if(lastlog.ll_time == (time_t) 0) + if (lastlog.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, lastlog.ll_line, lastlog.ll_host, cp); #else - printf ("%-16s\t%-8.8s %s\n", pw->pw_name, - lastlog.ll_line, cp); + printf ("%-16s\t%-8.8s %s\n", pw->pw_name, lastlog.ll_line, cp); #endif } diff --git a/src/login.c b/src/login.c index e63316d0..511e66a7 100644 --- a/src/login.c +++ b/src/login.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: login.c,v 1.21 2001/06/28 20:47:06 kloczek Exp $") - +RCSID (PKG_VER "$Id: login.c,v 1.25 2002/01/05 15:41:43 kloczek Exp $") #include "prototypes.h" #include "defines.h" #include @@ -45,45 +44,38 @@ RCSID(PKG_VER "$Id: login.c,v 1.21 2001/06/28 20:47:06 kloczek Exp $") #include #endif #include - #if HAVE_LASTLOG_H #include #else #include "lastlog_.h" #endif - #include "faillog.h" #include "failure.h" #include "pwauth.h" #include "getdef.h" #include "dialchk.h" - #ifdef SVR4_SI86_EUA #include #include #endif - #ifdef RADIUS /* * Support for RADIUS authentication based on a hacked util-linux login - * source sent to me by Jon Lewis. Not tested. You need to link login + * source sent to me by Jon Lewis. Not tested. You need to link login * with the radauth.c file (not included here - it doesn't have a clear * copyright statement, and I don't want to have problems with Debian * putting the whole package in non-free because of this). --marekm */ #include "radlogin.h" #endif - #ifdef UT_ADDR #include #endif - #ifdef USE_PAM #include "pam_defs.h" - static const struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; static pam_handle_t *pamh = NULL; @@ -96,7 +88,7 @@ static pam_handle_t *pamh = NULL; #define PAM_END { retcode = pam_close_session(pamh,0); \ pam_end(pamh,retcode); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* * Needed for MkLinux DR1/2/2.1 - J. @@ -107,16 +99,18 @@ static pam_handle_t *pamh = NULL; const char *hostname = ""; -struct passwd pwent; +struct passwd pwent; + #if HAVE_UTMPX_H -struct utmpx utxent, failent; -struct utmp utent; +struct utmpx utxent, failent; +struct utmp utent; #else -struct utmp utent, failent; +struct utmp utent, failent; #endif -struct lastlog lastlog; +struct lastlog lastlog; static int pflg = 0; static int fflg = 0; + #ifdef RLOGIN static int rflg = 0; #else @@ -140,17 +134,16 @@ static int timeout; extern char **newenvp; extern size_t newenvc; -extern void dolastlog(struct lastlog *, const struct passwd *, const char *, const char *); +extern void dolastlog (struct lastlog *, const struct passwd *, + const char *, const char *); -extern int optind; -extern char *optarg; -extern char **environ; +extern char **environ; #ifndef USE_PAM -extern int login_access(const char *, const char *); +extern int login_access (const char *, const char *); #endif -extern void login_fbtab(const char *, uid_t, gid_t); +extern void login_fbtab (const char *, uid_t, gid_t); #ifndef ALARM #define ALARM 60 @@ -160,31 +153,21 @@ extern void login_fbtab(const char *, uid_t, gid_t); #define RETRIES 3 #endif +#ifndef USE_PAM static struct faillog faillog; - -#define NO_SHADOW "no shadow password for `%s'%s\n" -#define BAD_PASSWD "invalid password for `%s'%s\n" -#define BAD_DIALUP "invalid dialup password for `%s' on `%s'\n" -#define BAD_TIME "invalid login time for `%s'%s\n" -#define BAD_ROOT_LOGIN "ILLEGAL ROOT LOGIN%s\n" -#define ROOT_LOGIN "ROOT LOGIN%s\n" -#define FAILURE_CNT "exceeded failure limit for `%s'%s\n" -#define REG_LOGIN "`%s' logged in%s\n" -#define LOGIN_REFUSED "LOGIN `%s' REFUSED%s\n" -#define REENABLED2 \ - "login `%s' re-enabled after temporary lockout (%d failures).\n" -#define MANY_FAILS "REPEATED login failures%s\n" +#endif /* local function prototypes */ -static void usage(void); -static void setup_tty(void); -static void bad_time_notify(void); -static void check_flags(int, char * const *); +static void usage (void); +static void setup_tty (void); +static void check_flags (int, char *const *); + #ifndef USE_PAM -static void check_nologin(void); +static void bad_time_notify (void); +static void check_nologin (void); #endif -static void init_env(void); -static RETSIGTYPE alarm_handler(int); +static void init_env (void); +static RETSIGTYPE alarm_handler (int); /* * usage - print login command usage and exit @@ -195,39 +178,37 @@ static RETSIGTYPE alarm_handler(int); * login -f name (for pre-authenticated login: datakit, xterm, etc.) */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("usage: %s [-p] [name]\n"), Prog); + fprintf (stderr, _("usage: %s [-p] [name]\n"), Prog); if (!amroot) - exit(1); - fprintf(stderr, _(" %s [-p] [-h host] [-f name]\n"), Prog); + exit (1); + fprintf (stderr, _(" %s [-p] [-h host] [-f name]\n"), Prog); #ifdef RLOGIN - fprintf(stderr, _(" %s [-p] -r host\n"), Prog); + fprintf (stderr, _(" %s [-p] -r host\n"), Prog); #endif - exit(1); + exit (1); } -static void -setup_tty(void) +static void setup_tty (void) { TERMIO termio; - GTTY(0, &termio); /* get terminal characteristics */ + GTTY (0, &termio); /* get terminal characteristics */ /* * Add your favorite terminal modes here ... */ - termio.c_lflag |= ISIG|ICANON|ECHO|ECHOE; + termio.c_lflag |= ISIG | ICANON | ECHO | ECHOE; termio.c_iflag |= ICRNL; #if defined(ECHOKE) && defined(ECHOCTL) - termio.c_lflag |= ECHOKE|ECHOCTL; + termio.c_lflag |= ECHOKE | ECHOCTL; #endif #if defined(ECHOPRT) && defined(NOFLSH) && defined(TOSTOP) - termio.c_lflag &= ~(ECHOPRT|NOFLSH|TOSTOP); + termio.c_lflag &= ~(ECHOPRT | NOFLSH | TOSTOP); #endif #ifdef ONLCR termio.c_oflag |= ONLCR; @@ -242,19 +223,21 @@ setup_tty(void) termio.c_cc[VEOF] = '\04'; termio.c_cflag &= ~CSIZE; - termio.c_cflag |= (PARENB|CS7); - termio.c_lflag |= (ISIG|ICANON|ECHO|IEXTEN); - termio.c_iflag |= (BRKINT|IGNPAR|ISTRIP|IMAXBEL|ICRNL|IXON); + termio.c_cflag |= (PARENB | CS7); + termio.c_lflag |= (ISIG | ICANON | ECHO | IEXTEN); + termio.c_iflag |= + (BRKINT | IGNPAR | ISTRIP | IMAXBEL | ICRNL | IXON); termio.c_iflag &= ~IXANY; - termio.c_oflag |= (XTABS|OPOST|ONLCR); + termio.c_oflag |= (XTABS | OPOST | ONLCR); #endif #if 0 - termio.c_cc[VERASE] = getdef_num("ERASECHAR", '\b'); - termio.c_cc[VKILL] = getdef_num("KILLCHAR", '\025'); + termio.c_cc[VERASE] = getdef_num ("ERASECHAR", '\b'); + termio.c_cc[VKILL] = getdef_num ("KILLCHAR", '\025'); #else /* leave these values unchanged if not specified in login.defs */ - termio.c_cc[VERASE] = getdef_num("ERASECHAR", termio.c_cc[VERASE]); - termio.c_cc[VKILL] = getdef_num("KILLCHAR", termio.c_cc[VKILL]); + termio.c_cc[VERASE] = + getdef_num ("ERASECHAR", termio.c_cc[VERASE]); + termio.c_cc[VKILL] = getdef_num ("KILLCHAR", termio.c_cc[VKILL]); #endif /* @@ -262,69 +245,68 @@ setup_tty(void) * effect after the first username login */ - STTY(0, &termio); + STTY (0, &termio); } /* * Tell the user that this is not the right time to login at this tty */ -static void -bad_time_notify(void) +#ifndef USE_PAM +static void bad_time_notify (void) { #ifdef HUP_MESG_FILE FILE *mfp; - if ((mfp = fopen(HUP_MESG_FILE, "r")) != NULL) { + if ((mfp = fopen (HUP_MESG_FILE, "r")) != NULL) { int c; - while ((c = fgetc(mfp)) != EOF) { - if (c == '\n') - putchar('\r'); - putchar(c); + while ((c = fgetc (mfp)) != EOF) { + if (c == '\n') + putchar ('\r'); + putchar (c); } - fclose(mfp); + fclose (mfp); } else #endif - printf(_("Invalid login time\n")); - fflush(stdout); + printf (_("Invalid login time\n")); + fflush (stdout); } +#endif -static void -check_flags(int argc, char * const *argv) +static void check_flags (int argc, char *const *argv) { int arg; /* - * Check the flags for proper form. Every argument starting with - * "-" must be exactly two characters long. This closes all the + * Check the flags for proper form. Every argument starting with + * "-" must be exactly two characters long. This closes all the * clever rlogin, telnet, and getty holes. */ for (arg = 1; arg < argc; arg++) { - if (argv[arg][0] == '-' && strlen(argv[arg]) > 2) - usage(); + if (argv[arg][0] == '-' && strlen (argv[arg]) > 2) + usage (); } } #ifndef USE_PAM -static void -check_nologin(void) +static void check_nologin (void) { char *fname; /* * Check to see if system is turned off for non-root users. * This would be useful to prevent users from logging in - * during system maintenance. We make sure the message comes + * during system maintenance. We make sure the message comes * out for root so she knows to remove the file if she's * forgotten about it ... */ - fname = getdef_str("NOLOGINS_FILE"); - if (fname != NULL && access(fname, F_OK) == 0) { - FILE *nlfp; - int c; + fname = getdef_str ("NOLOGINS_FILE"); + if (fname != NULL && access (fname, F_OK) == 0) { + FILE *nlfp; + int c; /* * Cat the file if it can be opened, otherwise just @@ -341,28 +323,29 @@ check_nologin(void) fflush (stdout); fclose (nlfp); } else - printf(_("\nSystem closed for routine maintenance\n")); + printf (_ + ("\nSystem closed for routine maintenance\n")); /* - * Non-root users must exit. Root gets the message, but + * Non-root users must exit. Root gets the message, but * gets to login. */ if (pwent.pw_uid != 0) { - closelog(); - exit(0); + closelog (); + exit (0); } - printf(_("\n[Disconnect bypassed -- root login allowed.]\n")); + printf (_ + ("\n[Disconnect bypassed -- root login allowed.]\n")); } } -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ -static void -init_env(void) +static void init_env (void) { char *cp, *tmp; - if ((tmp = getenv("LANG"))) { - addenv("LANG", tmp); + if ((tmp = getenv ("LANG"))) { + addenv ("LANG", tmp); } /* @@ -370,28 +353,28 @@ init_env(void) * work correctly. */ - if ((tmp = getenv("TZ"))) { - addenv("TZ", tmp); - } else if ((cp = getdef_str("ENV_TZ"))) - addenv(*cp == '/' ? tz(cp) : cp, NULL); + if ((tmp = getenv ("TZ"))) { + addenv ("TZ", tmp); + } else if ((cp = getdef_str ("ENV_TZ"))) + addenv (*cp == '/' ? tz (cp) : cp, NULL); /* * Add the clock frequency so that profiling commands work * correctly. */ - if ((tmp = getenv("HZ"))) { - addenv("HZ", tmp); - } else if ((cp = getdef_str("ENV_HZ"))) - addenv(cp, NULL); + if ((tmp = getenv ("HZ"))) { + addenv ("HZ", tmp); + } else if ((cp = getdef_str ("ENV_HZ"))) + addenv (cp, NULL); } -static RETSIGTYPE -alarm_handler(int sig) +static RETSIGTYPE alarm_handler (int sig) { - fprintf(stderr, _("\nLogin timed out after %d seconds.\n"), timeout); - exit(0); + fprintf (stderr, _("\nLogin timed out after %d seconds.\n"), + timeout); + exit (0); } @@ -399,9 +382,9 @@ alarm_handler(int sig) * login - create a new login session for a user * * login is typically called by getty as the second step of a - * new user session. getty is responsible for setting the line + * new user session. getty is responsible for setting the line * characteristics to a reasonable set of values and getting - * the name of the user to be logged in. login may also be + * the name of the user to be logged in. login may also be * called to create a new user session on a pty for a variety * of reasons, such as X servers or network logins. * @@ -413,38 +396,39 @@ alarm_handler(int sig) * -h - the name of the remote host */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - char username[32]; - char tty[BUFSIZ]; + char username[32]; + char tty[BUFSIZ]; + #ifdef RLOGIN - char term[128] = ""; + char term[128] = ""; #endif -#ifdef HAVE_STRFTIME +#if defined(HAVE_STRFTIME) && !defined(USE_PAM) char ptime[80]; #endif - int reason = PW_LOGIN; - int delay; - int retries; - int failed; - int flag; - int subroot = 0; - int is_console; + int reason = PW_LOGIN; + int delay; + int retries; + int failed; + int flag; + int subroot = 0; + int is_console; const char *cp; - char *tmp; - char fromhost[512]; - struct passwd *pwd; - char **envp = environ; + char *tmp; + char fromhost[512]; + struct passwd *pwd; + char **envp = environ; static char temp_pw[2]; static char temp_shell[] = "/bin/sh"; + #ifdef USE_PAM int retcode; pid_t child; char *pam_user; -#endif /* USE_PAM */ -#ifdef SHADOWPWD - struct spwd *spwd=NULL; +#endif /* USE_PAM */ +#if defined(SHADOWPWD) && !defined(USE_PAM) + struct spwd *spwd = NULL; #endif #ifdef RADIUS RAD_USER_DATA rad_user_data; @@ -466,21 +450,21 @@ main(int argc, char **argv) * Some quick initialization. */ - sanitize_env(); + sanitize_env (); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - initenv(); + initenv (); username[0] = '\0'; - amroot = (getuid() == 0); - Prog = Basename(argv[0]); + amroot = (getuid () == 0); + Prog = Basename (argv[0]); - check_flags(argc, argv); + check_flags (argc, argv); - while ((flag = getopt(argc, argv, "d:f:h:pr:")) != EOF) { + while ((flag = getopt (argc, argv, "d:f:h:pr:")) != EOF) { switch (flag) { case 'p': pflg++; @@ -491,9 +475,9 @@ main(int argc, char **argv) * (-f root, *not* -froot). --marekm */ if (optarg != argv[optind - 1]) - usage(); + usage (); fflg++; - STRFCPY(username, optarg); + STRFCPY (username, optarg); break; #ifdef RLOGIN case 'r': @@ -511,7 +495,7 @@ main(int argc, char **argv) /* "-d device" ignored for compatibility */ break; default: - usage(); + usage (); } } @@ -521,7 +505,7 @@ main(int argc, char **argv) */ if (rflg && (hflg || fflg)) - usage(); + usage (); #endif /* @@ -529,330 +513,362 @@ main(int argc, char **argv) */ if ((rflg || fflg || hflg) && !amroot) { - fprintf(stderr, _("%s: permission denied\n"), Prog); - exit(1); + fprintf (stderr, _("%s: permission denied\n"), Prog); + exit (1); } - if (!isatty(0) || !isatty(1) || !isatty(2)) - exit(1); /* must be a terminal */ + if (!isatty (0) || !isatty (1) || !isatty (2)) + exit (1); /* must be a terminal */ #if 0 /* - * Get the utmp file entry and get the tty name from it. The + * Get the utmp file entry and get the tty name from it. The * current process ID must match the process ID in the utmp * file if there are no additional flags on the command line. */ - checkutmp(!rflg && !fflg && !hflg); + checkutmp (!rflg && !fflg && !hflg); #else /* * Be picky if run by normal users (possible if installed setuid - * root), but not if run by root. This way it still allows logins + * root), but not if run by root. This way it still allows logins * even if your getty is broken, or if something corrupts utmp, * but users must "exec login" which will use the existing utmp * entry (will not overwrite remote hostname). --marekm */ - checkutmp(!amroot); + checkutmp (!amroot); #endif - STRFCPY(tty, utent.ut_line); - is_console = console(tty); + STRFCPY (tty, utent.ut_line); + is_console = console (tty); if (rflg || hflg) { #ifdef UT_ADDR struct hostent *he; /* - * Fill in the ut_addr field (remote login IP address). - * XXX - login from util-linux does it, but this is not - * the right place to do it. The program that starts - * login (telnetd, rlogind) knows the IP address, so it - * should create the utmp entry and fill in ut_addr. - * gethostbyname() is not 100% reliable (the remote host - * may be unknown, etc.). --marekm + * Fill in the ut_addr field (remote login IP address). XXX + * - login from util-linux does it, but this is not the + * right place to do it. The program that starts login + * (telnetd, rlogind) knows the IP address, so it should + * create the utmp entry and fill in ut_addr. + * gethostbyname() is not 100% reliable (the remote host may + * be unknown, etc.). --marekm */ - if ((he = gethostbyname(hostname))) { - utent.ut_addr = *((int32_t *)(he->h_addr_list[0])); + if ((he = gethostbyname (hostname))) { + utent.ut_addr = + *((int32_t *) (he->h_addr_list[0])); #endif #ifdef UT_HOST - strncpy(utent.ut_host, hostname, sizeof(utent.ut_host)); + strncpy (utent.ut_host, hostname, + sizeof (utent.ut_host)); #endif #if HAVE_UTMPX_H - strncpy(utxent.ut_host, hostname, sizeof(utxent.ut_host)); + strncpy (utxent.ut_host, hostname, + sizeof (utxent.ut_host)); #endif - /* - * Add remote hostname to the environment. I think - * (not sure) I saw it once on Irix. --marekm - */ - addenv("REMOTEHOST", hostname); - } -#ifdef __linux__ -/* workaround for init/getty leaving junk in ut_host at least in some - version of RedHat. --marekm */ - else if (amroot) - memzero(utent.ut_host, sizeof utent.ut_host); -#endif - if (hflg && fflg) { - reason = PW_RLOGIN; - preauth_flag++; - } -#ifdef RLOGIN - if (rflg && do_rlogin(hostname, username, sizeof username, term, sizeof term)) - preauth_flag++; -#endif - - OPENLOG("login"); - - setup_tty(); - - umask(getdef_num("UMASK", 077)); - - { - /* - * 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, - * just take what you get. - */ - - long limit = getdef_long("ULIMIT", -1L); - - if (limit != -1) - set_filesize_limit(limit); - } - - /* - * The entire environment will be preserved if the -p flag - * is used. - */ - - if (pflg) - while (*envp) /* add inherited environment, */ - addenv(*envp++, NULL); /* some variables change later */ - -#ifdef RLOGIN - if (term[0] != '\0') - addenv("TERM", term); - else -#endif - /* preserve TERM from getty */ - if (!pflg && (tmp = getenv("TERM"))) - addenv("TERM", tmp); - - init_env(); - - if (optind < argc) { /* get the user name */ - if (rflg || fflg) - usage(); - -#ifdef SVR4 - /* - * The "-h" option can't be used with a command-line username, - * because telnetd invokes us as: login -h host TERM=... - */ - - if (! hflg) -#endif - { - STRFCPY(username, argv[optind]); - strzero(argv[optind]); - ++optind; + /* + * Add remote hostname to the environment. I think + * (not sure) I saw it once on Irix. --marekm + */ + addenv ("REMOTEHOST", hostname); } - } +#ifdef __linux__ + /* + * workaround for init/getty leaving junk in ut_host at least in + * some version of RedHat. --marekm + */ + else if (amroot) + memzero (utent.ut_host, sizeof utent.ut_host); +#endif + if (hflg && fflg) { + reason = PW_RLOGIN; + preauth_flag++; + } +#ifdef RLOGIN + if (rflg + && do_rlogin (hostname, username, sizeof username, + term, sizeof term)) + preauth_flag++; +#endif + + OPENLOG ("login"); + + setup_tty (); + + umask (getdef_num ("UMASK", 077)); + + { + /* + * 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, + * just take what you get. + */ + + long limit = getdef_long ("ULIMIT", -1L); + + if (limit != -1) + set_filesize_limit (limit); + } + + /* + * The entire environment will be preserved if the -p flag + * is used. + */ + + if (pflg) + while (*envp) /* add inherited environment, */ + addenv (*envp++, NULL); /* some variables change later */ + +#ifdef RLOGIN + if (term[0] != '\0') + addenv ("TERM", term); + else +#endif + /* preserve TERM from getty */ + if (!pflg && (tmp = getenv ("TERM"))) + addenv ("TERM", tmp); + + init_env (); + + if (optind < argc) { /* get the user name */ + if (rflg || fflg) + usage (); + #ifdef SVR4 - /* - * check whether ttymon has done the prompt for us already - */ + /* + * The "-h" option can't be used with a command-line username, + * because telnetd invokes us as: login -h host TERM=... + */ - { - char *ttymon_prompt; + if (!hflg) +#endif + { + STRFCPY (username, argv[optind]); + strzero (argv[optind]); + ++optind; + } + } +#ifdef SVR4 + /* + * check whether ttymon has done the prompt for us already + */ - if ((ttymon_prompt = getenv("TTYPROMPT")) != NULL && - (*ttymon_prompt != 0)) { - /* read name, without prompt */ - login_prompt((char *)0, username, sizeof username); - } - } -#endif /* SVR4 */ - if (optind < argc) /* now set command line variables */ - set_env(argc - optind, &argv[optind]); + { + char *ttymon_prompt; - if (rflg || hflg) - cp = hostname; - else + if ((ttymon_prompt = getenv ("TTYPROMPT")) != NULL + && (*ttymon_prompt != 0)) { + /* read name, without prompt */ + login_prompt ((char *) 0, username, + sizeof username); + } + } +#endif /* SVR4 */ + if (optind < argc) /* now set command line variables */ + set_env (argc - optind, &argv[optind]); + + if (rflg || hflg) + cp = hostname; + else #ifdef UT_HOST - if (utent.ut_host[0]) - cp = utent.ut_host; - else + if (utent.ut_host[0]) + cp = utent.ut_host; + else #endif #if HAVE_UTMPX_H - if (utxent.ut_host[0]) - cp = utxent.ut_host; - else + if (utxent.ut_host[0]) + cp = utxent.ut_host; + else #endif - cp = ""; + cp = ""; - if (*cp) - snprintf(fromhost, sizeof fromhost, - _(" on `%.100s' from `%.200s'"), tty, cp); - else - snprintf(fromhost, sizeof fromhost, _(" on `%.100s'"), tty); + if (*cp) + snprintf (fromhost, sizeof fromhost, + _(" on `%.100s' from `%.200s'"), tty, + cp); + else + snprintf (fromhost, sizeof fromhost, + _(" on `%.100s'"), tty); -top: - /* only allow ALARM sec. for login */ - signal(SIGALRM, alarm_handler); - timeout = getdef_num("LOGIN_TIMEOUT", ALARM); - if (timeout > 0) - alarm(timeout); + top: + /* only allow ALARM sec. for login */ + signal (SIGALRM, alarm_handler); + timeout = getdef_num ("LOGIN_TIMEOUT", ALARM); + if (timeout > 0) + alarm (timeout); - environ = newenvp; /* make new environment active */ - delay = getdef_num("FAIL_DELAY", 1); - retries = getdef_num("LOGIN_RETRIES", RETRIES); + environ = newenvp; /* make new environment active */ + delay = getdef_num ("FAIL_DELAY", 1); + retries = getdef_num ("LOGIN_RETRIES", RETRIES); #ifdef USE_PAM - retcode = pam_start("login", username, &conv, &pamh); - if(retcode != PAM_SUCCESS) { - fprintf(stderr,"login: PAM Failure, aborting: %s\n", - pam_strerror(pamh, retcode)); - syslog(LOG_ERR,"Couldn't initialize PAM: %s", - pam_strerror(pamh, retcode)); - exit(99); - } - /* hostname & tty are either set to NULL or their correct values, - depending on how much we know. We also set PAM's fail delay - to ours. */ - retcode = pam_set_item(pamh, PAM_RHOST, hostname); - PAM_FAIL_CHECK; - retcode = pam_set_item(pamh, PAM_TTY, tty); - PAM_FAIL_CHECK; -#ifdef HAVE_PAM_FAIL_DELAY - retcode = pam_fail_delay(pamh, 1000000*delay); - PAM_FAIL_CHECK; -#endif - /* if fflg == 1, then the user has already been authenticated */ - if (!fflg || (getuid() != 0)) { - int failcount = 0; - char hostn[256]; - char login_prompt[256]; /* That's one hell of a prompt :) */ - - /* Make the login prompt look like we want it */ - if (!gethostname(hostn, sizeof(hostn))) - snprintf(login_prompt, sizeof(login_prompt), - "%s login: ", hostn); - else - snprintf(login_prompt, sizeof(login_prompt), - "login: "); - - retcode = pam_set_item(pamh, PAM_USER_PROMPT, login_prompt); - PAM_FAIL_CHECK; - - /* if we didn't get a user on the command line, - set it to NULL */ - pam_get_item(pamh, PAM_USER, (const void **) &pam_user); - if (pam_user[0] == '\0') - pam_set_item(pamh, PAM_USER, NULL); - - /* there may be better ways to deal with some of these - conditions, but at least this way I don't think we'll - be giving away information... */ - /* Perhaps someday we can trust that all PAM modules will - pay attention to failure count and get rid of - MAX_LOGIN_TRIES? */ - - retcode = pam_authenticate(pamh, 0); - while ((failcount++ < retries) && - ((retcode == PAM_AUTH_ERR) || - (retcode == PAM_USER_UNKNOWN) || - (retcode == PAM_CRED_INSUFFICIENT) || - (retcode == PAM_AUTHINFO_UNAVAIL))) { - pam_get_item(pamh, PAM_USER, (const void **) &pam_user); - syslog(LOG_NOTICE,"FAILED LOGIN %d FROM %s FOR %s, %s", - failcount, hostname, pam_user, - pam_strerror(pamh, retcode)); -#ifdef HAVE_PAM_FAIL_DELAY - pam_fail_delay(pamh, 1000000*delay); -#endif - fprintf(stderr, "Login incorrect\n\n"); - pam_set_item(pamh, PAM_USER, NULL); - retcode = pam_authenticate(pamh, 0); - } - + retcode = pam_start ("login", username, &conv, &pamh); if (retcode != PAM_SUCCESS) { - pam_get_item(pamh, PAM_USER, (const void **) &pam_user); - - if (retcode == PAM_MAXTRIES) - syslog(LOG_NOTICE, - "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s", - failcount, hostname, pam_user, - pam_strerror(pamh, retcode)); - else - syslog(LOG_NOTICE, - "FAILED LOGIN SESSION FROM %s FOR %s, %s", - hostname, pam_user, - pam_strerror(pamh, retcode)); - - fprintf(stderr, "\nLogin incorrect\n"); - pam_end(pamh, retcode); - exit(0); + fprintf (stderr, + "login: PAM Failure, aborting: %s\n", + pam_strerror (pamh, retcode)); + syslog (LOG_ERR, "Couldn't initialize PAM: %s", + pam_strerror (pamh, retcode)); + exit (99); } - - retcode = pam_acct_mgmt(pamh, 0); - - if(retcode == PAM_NEW_AUTHTOK_REQD) { - retcode = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK); - } - + /* + * hostname & tty are either set to NULL or their correct values, + * depending on how much we know. We also set PAM's fail delay to + * ours. + */ + retcode = pam_set_item (pamh, PAM_RHOST, hostname); + PAM_FAIL_CHECK; + retcode = pam_set_item (pamh, PAM_TTY, tty); + PAM_FAIL_CHECK; +#ifdef HAVE_PAM_FAIL_DELAY + retcode = pam_fail_delay (pamh, 1000000 * delay); PAM_FAIL_CHECK; - } - - /* Grab the user information out of the password file for future usage - First get the username that we are actually using, though. - */ - retcode = pam_get_item(pamh, PAM_USER, (const void **) &pam_user); - setpwent(); - pwd = getpwnam(pam_user); - - if (!pwd || setup_groups(pwd)) - exit(1); - - retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED); - PAM_FAIL_CHECK; - - retcode = pam_open_session(pamh, 0); - PAM_FAIL_CHECK; - - -#else /* ! USE_PAM */ - while (1) { /* repeatedly get login/password pairs */ - failed = 0; /* haven't failed authentication yet */ -#ifdef RADIUS - is_rad_login = 0; #endif - if (! username[0]) { /* need to get a login id */ + /* if fflg == 1, then the user has already been authenticated */ + if (!fflg || (getuid () != 0)) { + int failcount = 0; + char hostn[256]; + char login_prompt[256]; /* That's one hell of a prompt :) */ + + /* Make the login prompt look like we want it */ + if (!gethostname (hostn, sizeof (hostn))) + snprintf (login_prompt, + sizeof (login_prompt), + "%s login: ", hostn); + else + snprintf (login_prompt, + sizeof (login_prompt), + "login: "); + + retcode = + pam_set_item (pamh, PAM_USER_PROMPT, + login_prompt); + PAM_FAIL_CHECK; + + /* if we didn't get a user on the command line, + set it to NULL */ + pam_get_item (pamh, PAM_USER, + (const void **) &pam_user); + if (pam_user[0] == '\0') + pam_set_item (pamh, PAM_USER, NULL); + + /* + * There may be better ways to deal with some of + * these conditions, but at least this way I don't + * think we'll be giving away information. Perhaps + * someday we can trust that all PAM modules will + * pay attention to failure count and get rid of + * MAX_LOGIN_TRIES? + */ + + retcode = pam_authenticate (pamh, 0); + while ((failcount++ < retries) && + ((retcode == PAM_AUTH_ERR) || + (retcode == PAM_USER_UNKNOWN) || + (retcode == PAM_CRED_INSUFFICIENT) || + (retcode == PAM_AUTHINFO_UNAVAIL))) { + pam_get_item (pamh, PAM_USER, + (const void **) &pam_user); + syslog (LOG_NOTICE, + "FAILED LOGIN %d FROM %s FOR %s, %s", + failcount, hostname, pam_user, + pam_strerror (pamh, retcode)); +#ifdef HAVE_PAM_FAIL_DELAY + pam_fail_delay (pamh, 1000000 * delay); +#endif + fprintf (stderr, "Login incorrect\n\n"); + pam_set_item (pamh, PAM_USER, NULL); + retcode = pam_authenticate (pamh, 0); + } + + if (retcode != PAM_SUCCESS) { + pam_get_item (pamh, PAM_USER, + (const void **) &pam_user); + + if (retcode == PAM_MAXTRIES) + syslog (LOG_NOTICE, + "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s", + failcount, hostname, + pam_user, + pam_strerror (pamh, + retcode)); + else + syslog (LOG_NOTICE, + "FAILED LOGIN SESSION FROM %s FOR %s, %s", + hostname, pam_user, + pam_strerror (pamh, + retcode)); + + fprintf (stderr, "\nLogin incorrect\n"); + pam_end (pamh, retcode); + exit (0); + } + + retcode = pam_acct_mgmt (pamh, 0); + + if (retcode == PAM_NEW_AUTHTOK_REQD) { + retcode = + pam_chauthtok (pamh, + PAM_CHANGE_EXPIRED_AUTHTOK); + } + + PAM_FAIL_CHECK; + } + + /* Grab the user information out of the password file for future usage + First get the username that we are actually using, though. + */ + retcode = + pam_get_item (pamh, PAM_USER, + (const void **) &pam_user); + setpwent (); + pwd = getpwnam (pam_user); + + if (!pwd || setup_groups (pwd)) + exit (1); + + retcode = pam_setcred (pamh, PAM_ESTABLISH_CRED); + PAM_FAIL_CHECK; + + retcode = pam_open_session (pamh, 0); + PAM_FAIL_CHECK; + +#else /* ! USE_PAM */ + while (1) { /* repeatedly get login/password pairs */ + failed = 0; /* haven't failed authentication yet */ +#ifdef RADIUS + is_rad_login = 0; +#endif + if (!username[0]) { /* need to get a login id */ if (subroot) { closelog (); exit (1); } preauth_flag = 0; #ifndef LOGIN_PROMPT -#ifdef __linux__ /* hostname login: - like in util-linux login */ - login_prompt(_("\n%s login: "), username, sizeof username); +#ifdef __linux__ /* hostname login: - like in util-linux login */ + login_prompt (_("\n%s login: "), username, + sizeof username); #else - login_prompt(_("login: "), username, sizeof username); + login_prompt (_("login: "), username, + sizeof username); #endif #else - login_prompt(LOGIN_PROMPT, username, sizeof username); + login_prompt (LOGIN_PROMPT, username, + sizeof username); #endif continue; } -#endif /* ! USE_PAM */ +#endif /* ! USE_PAM */ #ifdef USE_PAM - if (!(pwd = getpwnam(pam_user))) { + if (!(pwd = getpwnam (pam_user))) { pwent.pw_name = pam_user; #else - if (!(pwd = getpwnam(username))) { + if (!(pwd = getpwnam (username))) { pwent.pw_name = username; #endif - strcpy(temp_pw, "!"); + strcpy (temp_pw, "!"); pwent.pw_passwd = temp_pw; pwent.pw_shell = temp_shell; @@ -864,21 +880,26 @@ top: #ifndef USE_PAM #ifdef SHADOWPWD spwd = NULL; - if (pwd && strcmp(pwd->pw_passwd, SHADOW_PASSWD_STRING) == 0) { - spwd = getspnam(username); + if (pwd + && strcmp (pwd->pw_passwd, + SHADOW_PASSWD_STRING) == 0) { + spwd = getspnam (username); if (spwd) pwent.pw_passwd = spwd->sp_pwdp; else - SYSLOG((LOG_WARN, NO_SHADOW, username, fromhost)); + SYSLOG ((LOG_WARN, + "no shadow password for `%s'%s", + username, fromhost)); } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ /* * If the encrypted password begins with a "!", the account * is locked and the user cannot login, even if they have * been "pre-authenticated." */ - if (pwent.pw_passwd[0] == '!' || pwent.pw_passwd[0] == '*') + if (pwent.pw_passwd[0] == '!' + || pwent.pw_passwd[0] == '*') failed = 1; /* @@ -889,29 +910,34 @@ top: goto auth_ok; /* - * No password prompt if logging in from listed ttys - * (local console). Passwords don't help much if you - * have physical access to the hardware anyway... - * Suggested by Pavel Machek . + * No password prompt if logging in from listed ttys (local + * console). Passwords don't help much if you have physical + * access to the hardware anyway... Suggested by Pavel + * Machek . * NOTE: password still required for root logins! */ if (pwd && (pwent.pw_uid != 0) - && is_listed("NO_PASSWORD_CONSOLE", tty, 0)) { + && is_listed ("NO_PASSWORD_CONSOLE", tty, 0)) { temp_pw[0] = '\0'; pwent.pw_passwd = temp_pw; } - if (pw_auth(pwent.pw_passwd, username, reason, (char *) 0) == 0) + if (pw_auth + (pwent.pw_passwd, username, reason, + (char *) 0) == 0) goto auth_ok; #ifdef RADIUS /* * If normal passwd authentication didn't work, try radius. */ - + if (failed) { - pwd = rad_authenticate(&rad_user_data, username, - clear_pass ? clear_pass : ""); + pwd = + rad_authenticate (&rad_user_data, + username, + clear_pass ? + clear_pass : ""); if (pwd) { is_rad_login = 1; pwent = *pwd; @@ -919,184 +945,199 @@ top: goto auth_ok; } } -#endif /* RADIUS */ +#endif /* RADIUS */ /* * Don't log unknown usernames - I mistyped the password for - * username at least once... Should probably use LOG_AUTHPRIV + * username at least once. Should probably use LOG_AUTHPRIV * for those who really want to log them. --marekm */ - SYSLOG((LOG_WARN, BAD_PASSWD, - (pwd || getdef_bool("LOG_UNKFAIL_ENAB")) ? - username : "UNKNOWN", fromhost)); + SYSLOG ((LOG_WARN, "invalid password for `%s' %s", + (pwd + || getdef_bool ("LOG_UNKFAIL_ENAB")) ? + username : "UNKNOWN", fromhost)); failed = 1; -auth_ok: + auth_ok: /* - * This is the point where all authenticated users - * wind up. If you reach this far, your password has - * been authenticated and so on. + * This is the point where all authenticated users wind up. + * If you reach this far, your password has been + * authenticated and so on. */ #if defined(RADIUS) && !(defined(DES_RPC) || defined(KERBEROS)) if (clear_pass) { - strzero(clear_pass); + strzero (clear_pass); clear_pass = NULL; } #endif - if (getdef_bool("DIALUPS_CHECK_ENAB")) { + if (getdef_bool ("DIALUPS_CHECK_ENAB")) { alarm (30); - if (! dialcheck (tty, pwent.pw_shell[0] ? - pwent.pw_shell:"/bin/sh")) { - SYSLOG((LOG_WARN, BAD_DIALUP, username, tty)); + if (!dialcheck (tty, pwent.pw_shell[0] ? + pwent.pw_shell : "/bin/sh")) { + SYSLOG ((LOG_WARN, + "invalid dialup password for `%s' on `%s'", + username, tty)); failed = 1; } } - if (! failed && pwent.pw_name && pwent.pw_uid == 0 && - ! is_console) { - SYSLOG((LOG_CRIT, BAD_ROOT_LOGIN, fromhost)); + if (!failed && pwent.pw_name && pwent.pw_uid == 0 + && !is_console) { + SYSLOG ((LOG_CRIT, "ILLEGAL ROOT LOGIN %s", + fromhost)); failed = 1; } #ifdef LOGIN_ACCESS - if (!failed && !login_access(username, *hostname ? hostname : tty)) { - SYSLOG((LOG_WARN, LOGIN_REFUSED, username, fromhost)); + if (!failed + && !login_access (username, + *hostname ? hostname : tty)) + { + SYSLOG ((LOG_WARN, "LOGIN `%s' REFUSED %s", username, + fromhost)); failed = 1; } #endif - if (pwd && getdef_bool("FAILLOG_ENAB") && - ! failcheck (pwent.pw_uid, &faillog, failed)) { - SYSLOG((LOG_CRIT, FAILURE_CNT, username, fromhost)); + if (pwd && getdef_bool ("FAILLOG_ENAB") && + !failcheck (pwent.pw_uid, &faillog, failed)) { + SYSLOG ((LOG_CRIT, + "exceeded failure limit for `%s' %s", + username, fromhost)); failed = 1; } - if (! failed) + if (!failed) break; /* don't log non-existent users */ - if (pwd && getdef_bool("FAILLOG_ENAB")) + if (pwd && getdef_bool ("FAILLOG_ENAB")) failure (pwent.pw_uid, tty, &faillog); - if (getdef_str("FTMP_FILE") != NULL) { + if (getdef_str ("FTMP_FILE") != NULL) { const char *failent_user; #if HAVE_UTMPX_H failent = utxent; - gettimeofday(&(failent.ut_tv), NULL); + gettimeofday (&(failent.ut_tv), NULL); #else failent = utent; - time(&failent.ut_time); + time (&failent.ut_time); #endif if (pwd) { failent_user = pwent.pw_name; } else { - if (getdef_bool("LOG_UNKFAIL_ENAB")) + if (getdef_bool + ("LOG_UNKFAIL_ENAB")) failent_user = username; else failent_user = "UNKNOWN"; } - strncpy(failent.ut_user, failent_user, sizeof(failent.ut_user)); + strncpy (failent.ut_user, failent_user, + sizeof (failent.ut_user)); #ifdef USER_PROCESS failent.ut_type = USER_PROCESS; #endif - failtmp(&failent); + failtmp (&failent); } - memzero(username, sizeof username); + memzero (username, sizeof username); if (--retries <= 0) - SYSLOG((LOG_CRIT, MANY_FAILS, fromhost)); + SYSLOG ((LOG_CRIT, "REPEATED login failures%s", + fromhost)); #if 1 /* - * If this was a passwordless account and we get here, - * login was denied (securetty, faillog, etc.). There - * was no password prompt, so do it now (will always - * fail - the bad guys won't see that the passwordless - * account exists at all). --marekm + * If this was a passwordless account and we get here, login + * was denied (securetty, faillog, etc.). There was no + * password prompt, so do it now (will always fail - the bad + * guys won't see that the passwordless account exists at + * all). --marekm */ if (pwent.pw_passwd[0] == '\0') - pw_auth("!", username, reason, (char *) 0); + pw_auth ("!", username, reason, + (char *) 0); #endif /* * Wait a while (a la SVR4 /usr/bin/login) before attempting - * to login the user again. If the earlier alarm occurs + * to login the user again. If the earlier alarm occurs * before the sleep() below completes, login will exit. */ if (delay > 0) - sleep(delay); + sleep (delay); - puts(_("Login incorrect")); + puts (_("Login incorrect")); /* allow only one attempt with -r or -f */ if (rflg || fflg || retries <= 0) { - closelog(); - exit(1); + closelog (); + exit (1); } - } /* while (1) */ -#endif /* ! USE_PAM */ - (void) alarm (0); /* turn off alarm clock */ -#ifndef USE_PAM /* PAM does this */ + } /* while (1) */ +#endif /* ! USE_PAM */ + alarm (0); /* turn off alarm clock */ +#ifndef USE_PAM /* PAM does this */ /* * porttime checks moved here, after the user has been - * authenticated. now prints a message, as suggested + * authenticated. now prints a message, as suggested * by Ivan Nejgebauer . --marekm */ - if (getdef_bool("PORTTIME_CHECKS_ENAB") && - !isttytime(pwent.pw_name, tty, time ((time_t *) 0))) { - SYSLOG((LOG_WARN, BAD_TIME, username, fromhost)); - closelog(); - bad_time_notify(); - exit(1); + if (getdef_bool ("PORTTIME_CHECKS_ENAB") && + !isttytime (pwent.pw_name, tty, time ((time_t *) 0))) { + SYSLOG ((LOG_WARN, "invalid login time for `%s'%s", + username, fromhost)); + closelog (); + bad_time_notify (); + exit (1); } - check_nologin(); + check_nologin (); #endif - if (getenv("IFS")) /* don't export user IFS ... */ - addenv("IFS= \t\n", NULL); /* ... instead, set a safe IFS */ + if (getenv ("IFS")) /* don't export user IFS ... */ + addenv ("IFS= \t\n", NULL); /* ... instead, set a safe IFS */ #ifdef USE_PAM - setutmp(pam_user, tty, hostname); /* make entry in utmp & wtmp files */ + setutmp (pam_user, tty, hostname); /* make entry in utmp & wtmp files */ #else - setutmp(username, tty, hostname); /* make entry in utmp & wtmp files */ + setutmp (username, tty, hostname); /* make entry in utmp & wtmp files */ #endif if (pwent.pw_shell[0] == '*') { /* subsystem root */ pwent.pw_shell++; /* skip the '*' */ subsystem (&pwent); /* figure out what to execute */ - subroot++; /* say i was here again */ - endpwent (); /* close all of the file which were */ - endgrent (); /* open in the original rooted file */ + subroot++; /* say i was here again */ + endpwent (); /* close all of the file which were */ + endgrent (); /* open in the original rooted file */ #ifdef SHADOWPWD - endspent (); /* system. they will be re-opened */ + endspent (); /* system. they will be re-opened */ #endif #ifdef SHADOWGRP - endsgent (); /* in the new rooted file system */ + endsgent (); /* in the new rooted file system */ #endif - goto top; /* go do all this all over again */ + goto top; /* go do all this all over again */ } -#ifndef USE_PAM /* pam_lastlog handles this */ - if (getdef_bool("LASTLOG_ENAB")) /* give last login and log this one */ - dolastlog(&lastlog, &pwent, utent.ut_line, hostname); +#ifndef USE_PAM /* pam_lastlog handles this */ + if (getdef_bool ("LASTLOG_ENAB")) /* give last login and log this one */ + dolastlog (&lastlog, &pwent, utent.ut_line, + hostname); #endif #ifdef SVR4_SI86_EUA - sysi86(SI86LIMUSER, EUA_ADD_USER); /* how do we test for fail? */ + sysi86 (SI86LIMUSER, EUA_ADD_USER); /* how do we test for fail? */ #endif -#ifndef USE_PAM /* PAM handles this as well */ -#ifdef AGING +#ifndef USE_PAM /* PAM handles this as well */ /* - * Have to do this while we still have root privileges, otherwise - * we don't have access to /etc/shadow. expire() closes password - * files, and changes to the user in the child before executing - * the passwd program. --marekm + * Have to do this while we still have root privileges, otherwise we + * don't have access to /etc/shadow. expire() closes password files, + * and changes to the user in the child before executing the passwd + * program. --marekm */ #ifdef SHADOWPWD - if (spwd) { /* check for age of password */ + if (spwd) { /* check for age of password */ if (expire (&pwent, spwd)) { - pwd = getpwnam(username); - spwd = getspnam(username); + pwd = getpwnam (username); + spwd = getspnam (username); if (pwd) pwent = *pwd; } @@ -1105,214 +1146,227 @@ auth_ok: #ifdef ATT_AGE if (pwent.pw_age && pwent.pw_age[0]) { if (expire (&pwent)) { - pwd = getpwnam(username); + pwd = getpwnam (username); if (pwd) pwent = *pwd; } } -#endif /* ATT_AGE */ -#endif /* SHADOWPWD */ -#endif /* AGING */ +#endif /* ATT_AGE */ +#endif /* SHADOWPWD */ #ifdef RADIUS if (is_rad_login) { char whofilename[128]; FILE *whofile; - snprintf(whofilename, sizeof whofilename, "/var/log/radacct/%.20s", tty); - whofile = fopen(whofilename, "w"); + snprintf (whofilename, sizeof whofilename, + "/var/log/radacct/%.20s", tty); + whofile = fopen (whofilename, "w"); if (whofile) { - fprintf(whofile, "%s\n", username); - fclose(whofile); + fprintf (whofile, "%s\n", username); + fclose (whofile); } } #endif - setup_limits(&pwent); /* nice, ulimit etc. */ -#endif /* ! USE_PAM */ - chown_tty(tty, &pwent); + setup_limits (&pwent); /* nice, ulimit etc. */ +#endif /* ! USE_PAM */ + chown_tty (tty, &pwent); #ifdef LOGIN_FBTAB /* - * XXX - not supported yet. Change permissions and ownerships of + * XXX - not supported yet. Change permissions and ownerships of * devices like floppy/audio/mouse etc. for console logins, based * on /etc/fbtab or /etc/logindevperm configuration files (Suns do - * this with their framebuffer devices). Problems: + * this with their framebuffer devices). Problems: * * - most systems (except BSD) don't have that nice revoke() system - * call to ensure the previous user didn't leave a process holding - * one of these devices open or mmap'ed. Any volunteers to do it - * in Linux? + * call to ensure the previous user didn't leave a process holding + * one of these devices open or mmap'ed. Any volunteers to do it + * in Linux? * * - what to do with different users logged in on different virtual - * consoles? Maybe permissions should be changed only on user's - * request, by running a separate (setuid root) program? + * consoles? Maybe permissions should be changed only on user's + * request, by running a separate (setuid root) program? * * - init/telnetd/rlogind/whatever should restore permissions after - * the user logs out. + * the user logs out. * - * Try the new CONSOLE_GROUPS feature instead. It adds specified + * Try the new CONSOLE_GROUPS feature instead. It adds specified * groups (like "floppy") to the group set if the user is logged in - * on the console. This still has the first problem (users leaving + * on the console. This still has the first problem (users leaving * processes with these devices open), but doesn't need to change * any permissions, just make them 0660 root:floppy etc. --marekm * * Warning: users can still gain permanent access to these groups - * unless any user-writable filesystems are mounted with the "nosuid" - * option. Alternatively, the kernel could be modified to prevent - * ordinary users from setting the setgid bit on executables. + * unless any user-writable filesystems are mounted with the + * "nosuid" option. Alternatively, the kernel could be modified to + * prevent ordinary users from setting the setgid bit on + * executables. */ - login_fbtab(tty, pwent.pw_uid, pwent.pw_gid); + login_fbtab (tty, pwent.pw_uid, pwent.pw_gid); #endif /* We call set_groups() above because this clobbers pam_groups.so */ #ifndef USE_PAM - if (setup_uid_gid(&pwent, is_console)) + if (setup_uid_gid (&pwent, is_console)) #else - if (change_uid(&pwent)) + if (change_uid (&pwent)) #endif - exit(1); + exit (1); #ifdef KERBEROS if (clear_pass) - login_kerberos(username, clear_pass); + login_kerberos (username, clear_pass); #endif #ifdef DES_RPC if (clear_pass) - login_desrpc(clear_pass); + login_desrpc (clear_pass); #endif #if defined(DES_RPC) || defined(KERBEROS) if (clear_pass) - strzero(clear_pass); + strzero (clear_pass); #endif - setup_env(&pwent); /* set env vars, cd to the home dir */ + setup_env (&pwent); /* set env vars, cd to the home dir */ #ifdef USE_PAM { - int i; - const char * const * env; + const char *const *env; - env = (const char * const *) pam_getenvlist(pamh); + env = (const char *const *) pam_getenvlist (pamh); while (env && *env) { - addenv(*env, NULL); + addenv (*env, NULL); env++; } } #endif - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - if (!hushed(&pwent)) { - addenv("HUSHLOGIN=FALSE", NULL); - /* pam_unix, pam_mail and pam_lastlog should take care of this */ + if (!hushed (&pwent)) { + addenv ("HUSHLOGIN=FALSE", NULL); + /* + * pam_unix, pam_mail and pam_lastlog should take care of + * this + */ #ifndef USE_PAM - motd(); /* print the message of the day */ - if (getdef_bool("FAILLOG_ENAB") && faillog.fail_cnt != 0) { - failprint(&faillog); + motd (); /* print the message of the day */ + if (getdef_bool ("FAILLOG_ENAB") + && faillog.fail_cnt != 0) { + failprint (&faillog); /* Reset the lockout times if logged in */ if (faillog.fail_max && faillog.fail_cnt >= faillog.fail_max) { - puts(_("Warning: login re-enabled after temporary lockout.\n")); - SYSLOG((LOG_WARN, REENABLED2, username, - (int) faillog.fail_cnt)); + puts (_ + ("Warning: login re-enabled after temporary lockout.\n")); + SYSLOG ((LOG_WARN, + "login `%s' re-enabled after temporary lockout (%d failures)", + username, + (int) faillog.fail_cnt)); } } - if (getdef_bool("LASTLOG_ENAB") && lastlog.ll_time != 0) { + if (getdef_bool ("LASTLOG_ENAB") + && lastlog.ll_time != 0) { #ifdef HAVE_STRFTIME - strftime(ptime, sizeof(ptime), - "%a %b %e %H:%M:%S %z %Y", - localtime(&lastlog.ll_time)); - printf(_("Last login: %s on %s"), + strftime (ptime, sizeof (ptime), + "%a %b %e %H:%M:%S %z %Y", + localtime (&lastlog.ll_time)); + printf (_("Last login: %s on %s"), ptime, lastlog.ll_line); #else - printf(_("Last login: %.19s on %s"), - ctime(&lastlog.ll_time), lastlog.ll_line); + printf (_("Last login: %.19s on %s"), + ctime (&lastlog.ll_time), + lastlog.ll_line); #endif -#ifdef HAVE_LL_HOST /* SVR4 || __linux__ || SUN4 */ +#ifdef HAVE_LL_HOST /* SVR4 || __linux__ || SUN4 */ if (lastlog.ll_host[0]) - printf(_(" from %.*s"), - (int) sizeof lastlog.ll_host, - lastlog.ll_host); + printf (_(" from %.*s"), + (int) sizeof lastlog. + ll_host, lastlog.ll_host); #endif - printf(".\n"); + printf (".\n"); } -#ifdef AGING #ifdef SHADOWPWD - agecheck(&pwent, spwd); + agecheck (&pwent, spwd); #else - agecheck(&pwent); + agecheck (&pwent); #endif -#endif /* AGING */ - mailcheck(); /* report on the status of mail */ -#endif /* !USE_PAM */ + + mailcheck (); /* report on the status of mail */ +#endif /* !USE_PAM */ } else - addenv("HUSHLOGIN=TRUE", NULL); + addenv ("HUSHLOGIN=TRUE", NULL); - if (getdef_str("TTYTYPE_FILE") != NULL && getenv("TERM") == NULL) - ttytype (tty); + if (getdef_str ("TTYTYPE_FILE") != NULL + && getenv ("TERM") == NULL) + ttytype (tty); - signal(SIGQUIT, SIG_DFL); /* default quit signal */ - signal(SIGTERM, SIG_DFL); /* default terminate signal */ - signal(SIGALRM, SIG_DFL); /* default alarm signal */ - signal(SIGHUP, SIG_DFL); /* added this. --marekm */ + signal (SIGQUIT, SIG_DFL); /* default quit signal */ + signal (SIGTERM, SIG_DFL); /* default terminate signal */ + signal (SIGALRM, SIG_DFL); /* default alarm signal */ + signal (SIGHUP, SIG_DFL); /* added this. --marekm */ #ifdef USE_PAM - /* We must fork before setuid() because we need to call + /* + * We must fork before setuid() because we need to call * pam_close_session() as root. + * + * Note: not true in other (non-Linux) PAM implementations, where + * the parent process of login (init, telnetd, ...) is responsible + * for calling pam_close_session(). This avoids an extra process for + * each login. Maybe we should do this on Linux too? We let the + * admin configure whether they need to keep login around to close + * sessions. */ - /* Note: not true in other (non-Linux) PAM implementations, where - the parent process of login (init, telnetd, ...) is responsible - for calling pam_close_session(). This avoids an extra process - for each login. Maybe we should do this on Linux too? -MM */ - /* We let the admin configure whether they need to keep login - around to close sessions */ - if (getdef_bool("CLOSE_SESSIONS")) { - signal(SIGINT, SIG_IGN); - child = fork(); + if (getdef_bool ("CLOSE_SESSIONS")) { + signal (SIGINT, SIG_IGN); + child = fork (); if (child < 0) { /* error in fork() */ - fprintf(stderr, "login: failure forking: %s", - strerror(errno)); + fprintf (stderr, + "login: failure forking: %s", + strerror (errno)); PAM_END; - exit(0); + exit (0); } else if (child) { - /* parent - wait for child to finish, - then cleanup session */ - wait(NULL); + /* + * parent - wait for child to finish, then cleanup + * session + */ + wait (NULL); PAM_END; - exit(0); + exit (0); } /* child */ } #endif - signal(SIGINT, SIG_DFL); /* default interrupt signal */ + signal (SIGINT, SIG_DFL); /* default interrupt signal */ - endpwent(); /* stop access to password file */ - endgrent(); /* stop access to group file */ + endpwent (); /* stop access to password file */ + endgrent (); /* stop access to group file */ #ifdef SHADOWPWD - endspent(); /* stop access to shadow passwd file */ + endspent (); /* stop access to shadow passwd file */ #endif #ifdef SHADOWGRP - endsgent(); /* stop access to shadow group file */ + endsgent (); /* stop access to shadow group file */ #endif if (pwent.pw_uid == 0) - SYSLOG((LOG_NOTICE, ROOT_LOGIN, fromhost)); - else if (getdef_bool("LOG_OK_LOGINS")) - SYSLOG((LOG_INFO, REG_LOGIN, username, fromhost)); - closelog(); + SYSLOG ((LOG_NOTICE, "ROOT LOGIN %s", fromhost)); + else if (getdef_bool ("LOG_OK_LOGINS")) + SYSLOG ((LOG_INFO, "`%s' logged in %s", username, fromhost)); + closelog (); #ifdef RADIUS if (is_rad_login) { - printf(_("Starting rad_login\n")); - rad_login(&rad_user_data); - exit(0); + printf (_("Starting rad_login\n")); + rad_login (&rad_user_data); + exit (0); } #endif - if ((tmp = getdef_str("FAKE_SHELL")) != NULL) { - shell(tmp, pwent.pw_shell); /* fake shell */ + if ((tmp = getdef_str ("FAKE_SHELL")) != NULL) { + shell (tmp, pwent.pw_shell); /* fake shell */ } - shell (pwent.pw_shell, (char *) 0); /* exec the shell finally. */ - /*NOTREACHED*/ - return 0; + shell (pwent.pw_shell, (char *) 0); /* exec the shell finally. */ + /*NOTREACHED*/ return 0; } diff --git a/src/logoutd.c b/src/logoutd.c index 47f421cb..3ea761c4 100644 --- a/src/logoutd.c +++ b/src/logoutd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: logoutd.c,v 1.17 2001/08/06 06:23:26 kloczek Exp $") - +RCSID (PKG_VER "$Id: logoutd.c,v 1.18 2002/01/05 15:41:43 kloczek Exp $") #include #include #include @@ -40,16 +39,13 @@ RCSID(PKG_VER "$Id: logoutd.c,v 1.17 2001/08/06 06:23:26 kloczek Exp $") #include #include "prototypes.h" #include "defines.h" - #ifdef SVR4 #include #endif - #ifdef SVR4 #define signal sigset #endif - -static char *Prog; +static char *Prog; #ifndef DEFAULT_HUP_MESG #define DEFAULT_HUP_MESG "login time exceeded\r\n" @@ -60,81 +56,80 @@ static char *Prog; #endif /* local function prototypes */ -static int check_login(const struct utmp *); +static int check_login (const struct utmp *); /* * check_login - check if user (struct utmp) allowed to stay logged in */ -static int -check_login(const struct utmp *ut) +static int check_login (const struct utmp *ut) { - char user[sizeof(ut->ut_user) + 1]; + char user[sizeof (ut->ut_user) + 1]; time_t now; /* * ut_user may not have the terminating NUL. */ - strncpy(user, ut->ut_user, sizeof(ut->ut_user)); - user[sizeof(ut->ut_user)] = '\0'; + strncpy (user, ut->ut_user, sizeof (ut->ut_user)); + user[sizeof (ut->ut_user)] = '\0'; - time(&now); + time (&now); /* * Check if they are allowed to be logged in right now. */ - if (!isttytime(user, ut->ut_line, now)) + if (!isttytime (user, ut->ut_line, now)) return 0; #if 0 /* * Check for how long they are allowed to stay logged in. - * XXX - not implemented yet. Need to add a new field to + * XXX - not implemented yet. Need to add a new field to * /etc/porttime (login time limit in minutes, or no limit, * based on username, tty, and time of login). */ - if (now - ut->ut_time > get_time_limit(user, ut->ut_line, ut->ut_time)) + if (now - ut->ut_time > + get_time_limit (user, ut->ut_line, ut->ut_time)) return 0; #endif return 1; } -static void -send_mesg_to_tty(int tty_fd) +static void send_mesg_to_tty (int tty_fd) { TERMIO oldt, newt; FILE *mesg_file, *tty_file; int c, is_tty; - tty_file = fdopen(tty_fd, "w"); + tty_file = fdopen (tty_fd, "w"); if (!tty_file) return; - is_tty = (GTTY(tty_fd, &oldt) == 0); + is_tty = (GTTY (tty_fd, &oldt) == 0); if (is_tty) { /* Suggested by Ivan Nejgebauar : - set OPOST before writing the message. */ + set OPOST before writing the message. */ newt = oldt; newt.c_oflag |= OPOST; - STTY(tty_fd, &newt); + STTY (tty_fd, &newt); } - mesg_file = fopen(HUP_MESG_FILE, "r"); + mesg_file = fopen (HUP_MESG_FILE, "r"); if (mesg_file) { - while ((c = getc(mesg_file)) != EOF) { + while ((c = getc (mesg_file)) != EOF) { if (c == '\n') - putc('\r', tty_file); - putc(c, tty_file); + putc ('\r', tty_file); + putc (c, tty_file); } - fclose(mesg_file); + fclose (mesg_file); } else { - fputs(DEFAULT_HUP_MESG, tty_file); + fputs (DEFAULT_HUP_MESG, tty_file); } - fflush(tty_file); - fclose(tty_file); + fflush (tty_file); + fclose (tty_file); if (is_tty) { - STTY(tty_fd, &oldt); + STTY (tty_fd, &oldt); } } @@ -143,62 +138,60 @@ send_mesg_to_tty(int tty_fd) * logoutd - logout daemon to enforce /etc/porttime file policy * * logoutd is started at system boot time and enforces the login - * time and port restrictions specified in /etc/porttime. The + * time and port restrictions specified in /etc/porttime. The * utmp file is periodically scanned and offending users are logged * off from the system. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { int i; int status; pid_t pid; struct utmp *ut; - char user[sizeof(ut->ut_user) + 1]; /* terminating NUL */ - char tty_name[sizeof(ut->ut_line) + 6]; /* /dev/ + NUL */ + char user[sizeof (ut->ut_user) + 1]; /* terminating NUL */ + char tty_name[sizeof (ut->ut_line) + 6]; /* /dev/ + NUL */ int tty_fd; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifndef DEBUG - for (i = 0;close (i) == 0;i++) - ; + for (i = 0; close (i) == 0; i++); #ifdef HAVE_SETPGRP #ifdef SETPGRP_VOID - setpgrp(); /* USG */ + setpgrp (); /* USG */ #else - setpgrp(getpid(), getpid()); + setpgrp (getpid (), getpid ()); #endif -#else /* !HAVE_SETPGRP */ - setpgid(getpid(), getpid()); /* BSD || SUN || SUN4 */ -#endif /* !HAVE_SETPGRP */ +#else /* !HAVE_SETPGRP */ + setpgid (getpid (), getpid ()); /* BSD || SUN || SUN4 */ +#endif /* !HAVE_SETPGRP */ /* * Put this process in the background. */ - pid = fork(); + pid = fork (); if (pid > 0) { /* parent */ - exit(0); + exit (0); } else if (pid < 0) { /* error */ - perror("fork"); - exit(1); + perror ("fork"); + exit (1); } -#endif /* !DEBUG */ +#endif /* !DEBUG */ /* * Start syslogging everything */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - OPENLOG(Prog); + OPENLOG (Prog); /* * Scan the UTMP file once per minute looking for users that @@ -208,34 +201,34 @@ main(int argc, char **argv) while (1) { /* - * Attempt to re-open the utmp file. The file is only + * Attempt to re-open the utmp file. The file is only * open while it is being used. */ - setutent(); + setutent (); /* - * Read all of the entries in the utmp file. The entries + * Read all of the entries in the utmp file. The entries * for login sessions will be checked to see if the user * is permitted to be signed on at this time. */ - while ((ut = getutent())) { + while ((ut = getutent ())) { #ifdef USER_PROCESS if (ut->ut_type != USER_PROCESS) continue; #endif if (ut->ut_user[0] == '\0') continue; - if (check_login(ut)) + if (check_login (ut)) continue; /* - * Put the rest of this in a child process. This + * Put the rest of this in a child process. This * keeps the scan from waiting on other ports to die. */ - pid = fork(); + pid = fork (); if (pid > 0) { /* parent */ continue; @@ -245,45 +238,49 @@ main(int argc, char **argv) } /* child */ - if (strncmp(ut->ut_line, "/dev/", 5) != 0) - strcpy(tty_name, "/dev/"); + if (strncmp (ut->ut_line, "/dev/", 5) != 0) + strcpy (tty_name, "/dev/"); else tty_name[0] = '\0'; - strcat(tty_name, ut->ut_line); + strcat (tty_name, ut->ut_line); #ifndef O_NOCTTY #define O_NOCTTY 0 #endif - tty_fd = open(tty_name, O_WRONLY|O_NDELAY|O_NOCTTY); + tty_fd = + open (tty_name, + O_WRONLY | O_NDELAY | O_NOCTTY); if (tty_fd != -1) { - send_mesg_to_tty(tty_fd); - close(tty_fd); - sleep(10); + send_mesg_to_tty (tty_fd); + close (tty_fd); + sleep (10); } -#ifdef USER_PROCESS /* USG_UTMP */ +#ifdef USER_PROCESS /* USG_UTMP */ if (ut->ut_pid > 1) { - kill(- ut->ut_pid, SIGHUP); - sleep(10); - kill(- ut->ut_pid, SIGKILL); + kill (-ut->ut_pid, SIGHUP); + sleep (10); + kill (-ut->ut_pid, SIGKILL); } -#else /* BSD || SUN || SUN4 */ +#else /* BSD || SUN || SUN4 */ /* * vhangup() the line to kill try and kill * whatever is out there using it. */ - if ((tty_fd = open (tty_name, O_RDONLY|O_NDELAY)) == -1) + if ((tty_fd = + open (tty_name, O_RDONLY | O_NDELAY)) == -1) continue; vhangup (tty_fd); close (tty_fd); -#endif /* BSD || SUN || SUN4 */ +#endif /* BSD || SUN || SUN4 */ - strncpy(user, ut->ut_user, sizeof(user) - 1); - user[sizeof(user) - 1] = '\0'; + strncpy (user, ut->ut_user, sizeof (user) - 1); + user[sizeof (user) - 1] = '\0'; - SYSLOG((LOG_NOTICE, "logged off user `%s' on `%s'\n", - user, tty_name)); + SYSLOG ((LOG_NOTICE, + "logged off user `%s' on `%s'", user, + tty_name)); /* * This child has done all it can, drop dead. @@ -292,17 +289,16 @@ main(int argc, char **argv) exit (0); } - endutent(); + endutent (); #ifndef DEBUG - sleep(60); + sleep (60); #endif /* * Reap any dead babies ... */ - while (wait (&status) != -1) - ; + while (wait (&status) != -1); } - return 1; /* not reached */ + return 1; /* not reached */ } diff --git a/src/mkpasswd.c b/src/mkpasswd.c index e35da31f..730a95dc 100644 --- a/src/mkpasswd.c +++ b/src/mkpasswd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,125 +30,111 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: mkpasswd.c,v 1.7 2000/08/26 18:27:18 marekm Exp $") - +RCSID (PKG_VER "$Id: mkpasswd.c,v 1.9 2002/01/05 15:41:43 kloczek Exp $") #include #include "prototypes.h" #include "defines.h" #include - -#if !defined(NDBM) /*{*/ -int -main(int argc, char **argv) +#if !defined(NDBM) /*{ */ +int main (int argc, char **argv) { - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - fprintf(stderr, - _("%s: no DBM database on system - no action performed\n"), - argv[0]); + fprintf (stderr, + _ + ("%s: no DBM database on system - no action performed\n"), + argv[0]); return 0; } -#else /*} defined(NDBM) {*/ - +#else /*} defined(NDBM) { */ #include #include - #include #include +extern DBM *pw_dbm; +extern DBM *gr_dbm; -extern DBM *pw_dbm; -extern DBM *gr_dbm; #ifdef SHADOWPWD -extern DBM *sp_dbm; +extern DBM *sp_dbm; #endif #ifdef SHADOWGRP -extern DBM *sg_dbm; +extern DBM *sg_dbm; #endif -char *fgetsx(); +char *fgetsx (); + +char *Progname; +int vflg = 0; +int fflg = 0; +int gflg = 0; +int sflg = 0; /* -s flag -- leave in, makes code nicer */ +int pflg = 0; + +extern struct passwd *sgetpwent (); +extern int pw_dbm_update (); + +extern struct group *sgetgrent (); +extern int gr_dbm_update (); #ifdef SHADOWPWD -#ifdef SHADOWGRP -#define USAGE _("Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n") -#else /* !SHADOWGRP */ -#define USAGE _("Usage: %s [ -vf ] [ -p|g|sp ] file\n") -#endif /* SHADOWGRP */ -#else /* !SHADOWPWD */ -#define USAGE _("Usage: %s [ -vf ] [ -p|g ] file\n") -#endif /* SHADOWPWD */ - -char *Progname; -int vflg = 0; -int fflg = 0; -int gflg = 0; -int sflg = 0; /* -s flag -- leave in, makes code nicer */ -int pflg = 0; - -extern struct passwd *sgetpwent(); -extern int pw_dbm_update(); - -extern struct group *sgetgrent(); -extern int gr_dbm_update(); - -#ifdef SHADOWPWD -extern struct spwd *sgetspent(); -extern int sp_dbm_update(); +extern struct spwd *sgetspent (); +extern int sp_dbm_update (); #endif #ifdef SHADOWGRP -extern struct sgrp *sgetsgent(); -extern int sg_dbm_update(); +extern struct sgrp *sgetsgent (); +extern int sg_dbm_update (); #endif /* local function prototypes */ -static void usage(void); +static void usage (void); /* * mkpasswd - create DBM files for /etc/passwd-like input file * * mkpasswd takes an an argument the name of a file in /etc/passwd format - * and creates a DBM file keyed by user ID and name. The output files have + * and creates a DBM file keyed by user ID and name. The output files have * the same name as the input file, with .dir and .pag appended. * * this command will also create look-aside files for * /etc/group, /etc/shadow, and /etc/gshadow. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - extern int optind; - extern char *optarg; - FILE *fp; /* File pointer for input file */ - char *file; /* Name of input file */ - char *dir; /* Name of .dir file */ - char *pag; /* Name of .pag file */ - char *cp; /* Temporary character pointer */ - int flag; /* Flag for command line option */ - int cnt = 0; /* Number of entries in database */ - int longest = 0; /* Longest entry in database */ - int len; /* Length of input line */ - int errors = 0; /* Count of errors processing file */ - char buf[BUFSIZ*8]; /* Input line from file */ - struct passwd *passwd=NULL; /* Pointer to password file entry */ + extern int optind; + extern char *optarg; + FILE *fp; /* File pointer for input file */ + char *file; /* Name of input file */ + char *dir; /* Name of .dir file */ + char *pag; /* Name of .pag file */ + char *cp; /* Temporary character pointer */ + int flag; /* Flag for command line option */ + int cnt = 0; /* Number of entries in database */ + int longest = 0; /* Longest entry in database */ + int len; /* Length of input line */ + int errors = 0; /* Count of errors processing file */ + char buf[BUFSIZ * 8]; /* Input line from file */ + struct passwd *passwd = NULL; /* Pointer to password file entry */ + + struct group *group = NULL; /* Pointer to group file entry */ - struct group *group=NULL; /* Pointer to group file entry */ #ifdef SHADOWPWD - struct spwd *shadow=NULL; /* Pointer to shadow passwd entry */ + struct spwd *shadow = NULL; /* Pointer to shadow passwd entry */ #endif #ifdef SHADOWGRP - struct sgrp *gshadow=NULL; /* Pointer to shadow group entry */ + struct sgrp *gshadow = NULL; /* Pointer to shadow group entry */ #endif - DBM *dbm; /* Pointer to new NDBM files */ - DBM *dbm_open(); /* Function to open NDBM files */ + DBM *dbm; /* Pointer to new NDBM files */ + DBM *dbm_open (); /* Function to open NDBM files */ /* - * Figure out what my name is. I will use this later ... + * Figure out what my name is. I will use this later ... */ - Progname = Basename(argv[0]); + Progname = Basename (argv[0]); /* * Figure out what the flags might be ... @@ -156,39 +142,39 @@ main(int argc, char **argv) while ((flag = getopt (argc, argv, "fvpgs")) != EOF) { switch (flag) { - case 'v': - vflg++; - break; - case 'f': - fflg++; - break; - case 'g': - gflg++; + case 'v': + vflg++; + break; + case 'f': + fflg++; + break; + case 'g': + gflg++; #ifndef SHADOWGRP - if (sflg) - usage (); + if (sflg) + usage (); #endif - if (pflg) - usage (); + if (pflg) + usage (); - break; + break; #if defined(SHADOWPWD) || defined(SHADOWGRP) - case 's': - sflg++; + case 's': + sflg++; #ifndef SHADOWGRP - if (gflg) - usage (); + if (gflg) + usage (); #endif - break; + break; #endif - case 'p': - pflg++; - if (gflg) - usage (); + case 'p': + pflg++; + if (gflg) + usage (); - break; - default: - usage(); + break; + default: + usage (); } } @@ -197,9 +183,9 @@ main(int argc, char **argv) */ #ifdef SHADOWPWD - if (! sflg && ! gflg) + if (!sflg && !gflg) #else - if (! gflg) + if (!gflg) #endif pflg++; @@ -212,8 +198,9 @@ main(int argc, char **argv) file = argv[optind]; - if (! (fp = fopen (file, "r"))) { - fprintf (stderr, _("%s: cannot open file %s\n"), Progname, file); + if (!(fp = fopen (file, "r"))) { + fprintf (stderr, _("%s: cannot open file %s\n"), Progname, + file); exit (1); } @@ -241,26 +228,29 @@ main(int argc, char **argv) * to have existed already. */ - if (access(dir, F_OK) == 0) { - fprintf (stderr, _("%s: cannot overwrite file %s\n"), Progname, dir); + if (access (dir, F_OK) == 0) { + fprintf (stderr, _("%s: cannot overwrite file %s\n"), + Progname, dir); exit (1); } - if (access(pag, F_OK) == 0) { - fprintf (stderr, _("%s: cannot overwrite file %s\n"), Progname, pag); + if (access (pag, F_OK) == 0) { + fprintf (stderr, _("%s: cannot overwrite file %s\n"), + Progname, pag); exit (1); } if (sflg) - umask(077); + umask (077); else - umask(022); + umask (022); /* * Now the DBM database gets initialized */ - if (! (dbm = dbm_open (file, O_RDWR|O_CREAT, 0644))) { - fprintf (stderr, _("%s: cannot open DBM files for %s\n"), Progname, file); + if (!(dbm = dbm_open (file, O_RDWR | O_CREAT, 0644))) { + fprintf (stderr, _("%s: cannot open DBM files for %s\n"), + Progname, file); exit (1); } if (gflg) { @@ -280,8 +270,8 @@ main(int argc, char **argv) } /* - * Read every line in the password file and convert it into a - * data structure to be put in the DBM database files. + * Read every line in the password file and convert it into a data + * structure to be put in the DBM database files. */ while (fgetsx (buf, BUFSIZ, fp) != NULL) { @@ -292,8 +282,11 @@ main(int argc, char **argv) */ buf[sizeof buf - 1] = '\0'; - if (! (cp = strchr (buf, '\n'))) { - fprintf (stderr, _("%s: the beginning with "%.16s ..." is too long\n"), Progname, buf); + if (!(cp = strchr (buf, '\n'))) { + fprintf (stderr, + _("%s: the beginning with " % + .16 s..." is too long\n"), Progname, + buf); exit (1); } *cp = '\0'; @@ -301,54 +294,72 @@ main(int argc, char **argv) #ifdef USE_NIS /* - * Parse the password file line into a (struct passwd). - * Erroneous lines cause error messages, but that's - * all. YP lines are ignored completely. + * Parse the password file line into a (struct passwd). + * Erroneous lines cause error messages, but that's all. YP + * lines are ignored completely. */ if (buf[0] == '-' || buf[0] == '+') continue; #endif - if (! (((! sflg && pflg) && (passwd = sgetpwent (buf))) + if (!(((!sflg && pflg) && (passwd = sgetpwent (buf))) #ifdef SHADOWPWD - || ((sflg && pflg) && (shadow = sgetspent (buf))) + || ((sflg && pflg) && (shadow = sgetspent (buf))) #endif - || ((! sflg && gflg) && (group = sgetgrent (buf))) + || ((!sflg && gflg) && (group = sgetgrent (buf))) #ifdef SHADOWGRP - || ((sflg && gflg) && (gshadow = sgetsgent (buf))) + || ((sflg && gflg) && (gshadow = sgetsgent (buf))) #endif - )) { - fprintf (stderr, _("%s: error parsing line \"%s\"\n"), Progname, buf); + )) { + fprintf (stderr, + _("%s: error parsing line \"%s\"\n"), + Progname, buf); errors++; continue; } if (vflg) { - if (!sflg && pflg) printf (_("adding record for name "%s"\n"), passwd->pw_name); + if (!sflg && pflg) + printf (_ + ("adding record for name " % + s "\n"), passwd->pw_name); #ifdef SHADOWPWD - if (sflg && pflg) printf (_("adding record for name "%s"\n"), shadow->sp_namp); + if (sflg && pflg) + printf (_ + ("adding record for name " % + s "\n"), shadow->sp_namp); #endif - if (!sflg && gflg) printf (_("adding record for name "%s"\n"), group->gr_name); + if (!sflg && gflg) + printf (_ + ("adding record for name " % + s "\n"), group->gr_name); #ifdef SHADOWGRP - if (sflg && gflg) printf (_("adding record for name "%s"\n"), gshadow->sg_name); + if (sflg && gflg) + printf (_ + ("adding record for name " % + s "\n"), gshadow->sg_name); #endif } - if (! sflg && pflg && ! pw_dbm_update (passwd)) - fprintf (stderr, _("%s: error adding record for "%s"\n"), - Progname, passwd->pw_name); + if (!sflg && pflg && !pw_dbm_update (passwd)) + fprintf (stderr, + _("%s: error adding record for " % + s "\n"), Progname, passwd->pw_name); #ifdef SHADOWPWD - if (sflg && pflg && ! sp_dbm_update (shadow)) - fprintf (stderr, _("%s: error adding record for "%s"\n"), - Progname, shadow->sp_namp); + if (sflg && pflg && !sp_dbm_update (shadow)) + fprintf (stderr, + _("%s: error adding record for " % + s "\n"), Progname, shadow->sp_namp); #endif - if (! sflg && gflg && ! gr_dbm_update (group)) - fprintf (stderr, _("%s: error adding record for "%s"\n"), - Progname, group->gr_name); + if (!sflg && gflg && !gr_dbm_update (group)) + fprintf (stderr, + _("%s: error adding record for " % + s "\n"), Progname, group->gr_name); #ifdef SHADOWGRP - if (sflg && gflg && ! sg_dbm_update (gshadow)) - fprintf (stderr, _("%s: error adding record for "%s"\n"), - Progname, gshadow->sg_name); -#endif /* SHADOWGRP */ + if (sflg && gflg && !sg_dbm_update (gshadow)) + fprintf (stderr, + _("%s: error adding record for " % + s "\n"), Progname, gshadow->sg_name); +#endif /* SHADOWGRP */ /* * Update the longest record and record count @@ -364,31 +375,29 @@ main(int argc, char **argv) */ if (vflg) - printf (_("added %d entries, longest was %d\n"), cnt, longest); + printf (_("added %d entries, longest was %d\n"), cnt, + longest); exit (errors); - /*NOTREACHED*/ -} + /*NOTREACHED*/} /* * usage - print error message and exit */ -static void -usage(void) +static void usage (void) { #ifdef SHADOWPWD #ifdef SHADOWGRP - fprintf (stderr, _("Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n"), Progname); -#else /* !SHADOWGRP */ - fprintf (stderr, _("Usage: %s [ -vf ] [ -p|g|sp ] file\n"), Progname); -#endif /* SHADOWGRP */ -#else /* !SHADOWPWD */ - fprintf (stderr, _("Usage: %s [ -vf ] [ -p|g ] file\n"), Progname); -#endif /* SHADOWPWD */ - + fprintf (stderr, _("Usage: %s [-vf] [-p|g|sp|sg] file\n"), + Progname); +#else /* !SHADOWGRP */ + fprintf (stderr, _("Usage: %s [-vf] [-p|g|sp] file\n"), Progname); +#endif /* SHADOWGRP */ +#else /* !SHADOWPWD */ + fprintf (stderr, _("Usage: %s [-vf] [-p|g] file\n"), Progname); +#endif /* SHADOWPWD */ exit (1); - /*NOTREACHED*/ -} -#endif /*} defined(NDBM) */ + /*NOTREACHED*/} +#endif /*} defined(NDBM) */ diff --git a/src/newgrp.c b/src/newgrp.c index 1f8eda7d..6057f85d 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,18 +30,14 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: newgrp.c,v 1.17 2001/09/01 04:19:16 kloczek Exp $") - +RCSID (PKG_VER "$Id: newgrp.c,v 1.21 2002/01/06 15:00:07 kloczek Exp $") #include #include #include #include - #include "prototypes.h" #include "defines.h" - #include "getdef.h" - extern char **environ; #ifdef HAVE_SETGROUPS @@ -53,41 +49,39 @@ static char *Prog; static int is_newgrp; /* local function prototypes */ -static void usage(void); +static void usage (void); /* * usage - print command usage message */ -static void -usage(void) +static void usage (void) { if (is_newgrp) - fprintf (stderr, _("usage: newgrp [ - ] [ group ]\n")); + fprintf (stderr, _("usage: newgrp [-] [group]\n")); else - fprintf (stderr, _("usage: sg group [[-c] command ]\n")); + fprintf (stderr, _("usage: sg group [[-c] command]\n")); } /* * newgrp - change the invokers current real and effective group id */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int initflag = 0; - int needspasswd = 0; - int i; - int their_grp = 0; + int initflag = 0; + int needspasswd = 0; + int i; int cflag = 0; gid_t gid; char *cp; const char *cpasswd, *name, *prog; char *group = NULL; - char *command=NULL; - char **envp = environ; + char *command = NULL; + char **envp = environ; struct passwd *pwd; struct group *grp; + #ifdef SHADOWPWD struct spwd *spwd; #endif @@ -97,58 +91,77 @@ main(int argc, char **argv) #if ENABLE_NLS /* XXX - remove when gettext is safe to use in setuid programs */ - sanitize_env(); + sanitize_env (); #endif - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + /* - * save my name for error messages and save my real gid incase - * of errors. if there is an error i have to exec a new login - * shell for the user since her old shell won't have fork'd to - * create the process. skip over the program name to the next - * command line argument. + * Save my name for error messages and save my real gid incase of + * errors. If there is an error i have to exec a new login shell for + * the user since her old shell won't have fork'd to create the + * process. Skip over the program name to the next command line + * argument. + * + * This historical comment, and the code itself, suggest that the + * behavior of the system/shell on which it was written differed + * significantly from the one I am using. If this process was + * started from a shell (including the login shell), it was fork'ed + * and exec'ed as a child by that shell. In order to get the user + * back to that shell, it is only necessary to exit from this + * process which terminates the child of the fork. The parent shell, + * which is blocked waiting for a signal, will then receive a + * SIGCHLD and will continue; any changes made to the process + * persona or the environment after the fork never occurred in the + * parent process. + * + * Bottom line: we want to save the name and real gid for messages, + * but we do not need to restore the previous process persona and we + * don't need to re-exec anything. -- JWP */ - Prog = Basename(argv[0]); - is_newgrp = (strcmp(Prog, "newgrp") == 0); - OPENLOG(is_newgrp ? "newgrp" : "sg"); - gid = getgid(); - argc--; argv++; + Prog = Basename (argv[0]); + is_newgrp = (strcmp (Prog, "newgrp") == 0); + OPENLOG (is_newgrp ? "newgrp" : "sg"); + gid = getgid (); + argc--; + argv++; - initenv(); + initenv (); - pwd = get_my_pwent(); + pwd = get_my_pwent (); if (!pwd) { - fprintf (stderr, _("unknown uid: %d\n"), (int) getuid()); - SYSLOG((LOG_WARN, "unknown uid %d\n", (int) getuid())); - closelog(); - exit(1); + fprintf (stderr, _("unknown uid: %u\n"), getuid ()); + SYSLOG ((LOG_WARN, "unknown uid %u", getuid ())); + closelog (); + exit (1); } name = pwd->pw_name; /* - * Parse the command line. There are two accepted flags. The - * first is "-", which for newgrp means to re-create the entire - * environment as though a login had been performed, and "-c", - * which for sg causes a command string to be executed. + * Parse the command line. There are two accepted flags. The first + * is "-", which for newgrp means to re-create the entire + * environment as though a login had been performed, and "-c", which + * for sg causes a command string to be executed. * - * The next argument, if present, must be the new group name. - * Any remaining remaining arguments will be used to execute a - * command as the named group. If the group name isn't present, - * I just use the login group ID of the current user. + * The next argument, if present, must be the new group name. Any + * remaining remaining arguments will be used to execute a command + * as the named group. If the group name isn't present, I just use + * the login group ID of the current user. * * The valid syntax are - * newgrp [ - ] [ groupid ] - * newgrp [ -l ] [ groupid ] - * sg [ - ] - * sg [ - ] groupid [ command ] + * newgrp [ - ] [ groupid ] + * newgrp [ -l ] [ groupid ] + * sg [ - ] + * sg [ - ] groupid [ command ] */ - if (argc > 0 && (!strcmp(argv[0], "-") || !strcmp(argv[0], "-l"))) { - argc--; argv++; + if (argc > 0 + && (!strcmp (argv[0], "-") || !strcmp (argv[0], "-l"))) { + argc--; + argv++; initflag = 1; } if (!is_newgrp) { @@ -159,19 +172,22 @@ main(int argc, char **argv) if (argc > 0 && argv[0][0] != '-') { group = argv[0]; - argc--; argv++; + argc--; + argv++; } else { usage (); - closelog(); + closelog (); exit (1); } if (argc > 0) { - /* skip -c if specified so both forms work: - "sg group -c command" (as in the man page) or - "sg group command" (as in the usage message). */ + /* + * skip -c if specified so both forms work: + * "sg group -c command" (as in the man page) or + * "sg group command" (as in the usage message). + */ - if (argc > 1 && strcmp(argv[0], "-c") == 0) + if (argc > 1 && strcmp (argv[0], "-c") == 0) command = argv[1]; else command = argv[0]; @@ -180,9 +196,8 @@ main(int argc, char **argv) } else { /* - * Do the command line for "newgrp". It's just - * making sure there aren't any flags and getting - * the new group name. + * Do the command line for "newgrp". It's just making sure + * there aren't any flags and getting the new group name. */ if (argc > 0 && argv[0][0] == '-') { @@ -193,61 +208,92 @@ main(int argc, char **argv) } 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 + * group entry, so it had better exist. -- JWP */ - if (! (grp = getgrgid (pwd->pw_gid))) { - fprintf(stderr, _("unknown gid: %ld\n"), - (long) pwd->pw_gid); - SYSLOG((LOG_CRIT, "unknown gid: %ld\n", - (long) pwd->pw_gid)); + if (!(grp = getgrgid (pwd->pw_gid))) { + fprintf (stderr, _("unknown gid: %lu\n"), + (unsigned long) pwd->pw_gid); + SYSLOG ((LOG_CRIT, "unknown gid: %lu", + (unsigned long) pwd->pw_gid)); goto failure; - } + } else + group = grp->gr_name; } } #ifdef HAVE_SETGROUPS /* - * get the current users groupset. the new group will be - * added to the concurrent groupset if there is room, otherwise - * you get a nasty message but at least your real and effective - * group id's are set. + * get the current users groupset. The new group will be added to + * the concurrent groupset if there is room, otherwise you get a + * nasty message but at least your real and effective group id's are + * set. */ /* don't use getgroups(0, 0) - it doesn't work on some systems */ i = 16; for (;;) { - grouplist = (GETGROUPS_T *) xmalloc(i * sizeof(GETGROUPS_T)); - ngroups = getgroups(i, grouplist); + grouplist = + (GETGROUPS_T *) xmalloc (i * sizeof (GETGROUPS_T)); + ngroups = getgroups (i, grouplist); if (i > ngroups && !(ngroups == -1 && errno == EINVAL)) break; /* not enough room, so try allocating a larger buffer */ - free(grouplist); + free (grouplist); i *= 2; } if (ngroups < 0) { - perror("getgroups"); - exit(1); + perror ("getgroups"); + exit (1); } -#endif /* HAVE_SETGROUPS */ +#endif /* HAVE_SETGROUPS */ /* - * 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 value from her password file entry. otherwise - * we validate her access to the specified group. + * 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. + * + * 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. + * 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. + * 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 + * user will be challenged for that group's password. If the + * password response is incorrect, if the specified group does not + * have a password, or if that group has been locked by gpasswd -R, + * access will be denied. This is true even if the group specified + * has the user's login gid (as shown in /etc/passwd). If no group + * is explicitly specified on the command line, the effect is + * exactly the same as if a group name matching the user's login gid + * had been explicitly specified. Root, however, is never + * challenged for passwords, and is always allowed access. + * + * The previous behavior was to allow access to the login group if + * no explicit group was specified, irrespective of the group + * control file(s). This behavior is usually not desirable. A user + * wishing to return to the login group has only to exit back to the + * login shell. Generating yet more shell levels in order to + * provide a convenient "return" to the default group has the + * undesirable side effects of confusing the user, scrambling the + * history file, and consuming system resources. The default now is + * to lock out such behavior. A sys admin can allow it by explicitly + * including the user's name in the member list of the user's login + * group. -- JWP */ - if (group == (char *) 0) { - if (! (grp = getgrgid (pwd->pw_gid))) { - fprintf (stderr, _("unknown gid: %d\n"), pwd->pw_gid); - goto failure; - } - group = grp->gr_name; - their_grp = 1; - } else if (! (grp = getgrnam (group))) { + if (!(grp = getgrnam (group))) { fprintf (stderr, _("unknown group: %s\n"), group); goto failure; } @@ -259,23 +305,19 @@ main(int argc, char **argv) #endif /* - * see if she is a member of this group. - * if she isn't a member, she needs to provide the - * group password. if there is no group password, she - * will be denied access anyway. + * see if she is a member of this group. If she isn't a member, she + * needs to provide the group password. If there is no group + * password, she will be denied access anyway. * - * we also check if this is the users default group, eg. - * they aren't a member, but this is the group listed as - * the one they belong to in their pwd entry. */ - if (!is_on_list(grp->gr_mem, name) && !their_grp) + if (!is_on_list (grp->gr_mem, name)) needspasswd = 1; /* - * if she does not have either a shadowed password, - * or a regular password, and the group has a password, - * she needs to give the group password. + * If she does not have either a shadowed password, or a regular + * password, and the group has a password, she needs to give the + * group password. */ #ifdef SHADOWPWD @@ -287,12 +329,13 @@ main(int argc, char **argv) needspasswd = 1; /* - * now i see about letting her into the group she requested. - * if she is the root user, i'll let her in without having to - * prompt for the password. otherwise i ask for a password - * if she flunked one of the tests above. note that she - * won't have to provide the password to her login group even - * if she isn't listed as a member. + * Now i see about letting her into the group she requested. If she + * is the root user, i'll let her in without having to prompt for + * the password. Otherwise i ask for a password if she flunked one + * of the tests above. + * + * Note that she now has to provide the password to her own group, + * unless she is listed as a member. -- JWP */ if (getuid () != 0 && needspasswd) { @@ -302,116 +345,190 @@ main(int argc, char **argv) * the decryption from the group file. */ - if (! (cp = getpass (_("Password: ")))) + if (!(cp = getpass (_("Password: ")))) goto failure; /* - * encrypt the key she gave us using the salt from - * the password in the group file. the result of - * this encryption must match the previously - * encrypted value in the file. + * encrypt the key she gave us using the salt from the + * password in the group file. The result of this encryption + * must match the previously encrypted value in the file. */ cpasswd = pw_encrypt (cp, grp->gr_passwd); - strzero(cp); + strzero (cp); if (grp->gr_passwd[0] == '\0') { - /* - * there is no password, print out "Sorry" and give up - */ - sleep(1); + /* + * there is no password, print out "Sorry" and give up + */ + sleep (1); fputs (_("Sorry.\n"), stderr); goto failure; } if (strcmp (cpasswd, grp->gr_passwd) != 0) { - SYSLOG((LOG_INFO, - "Invalid password for group `%s' from `%s'\n", - group, name)); - sleep(1); + SYSLOG ((LOG_INFO, + "Invalid password for group `%s' from `%s'", + group, name)); + sleep (1); fputs (_("Sorry.\n"), stderr); goto failure; } } /* - * all successful validations pass through this point. the - * group id will be set, and the group added to the concurrent - * groupset. + * all successful validations pass through this point. The group id + * will be set, and the group added to the concurrent groupset. */ #ifdef USE_SYSLOG if (getdef_bool ("SYSLOG_SG_ENAB")) - SYSLOG((LOG_INFO, "user `%s' switched to group `%s'\n", - name, group)); -#endif + SYSLOG ((LOG_INFO, "user `%s' switched to group `%s'", + name, group)); + if (getdef_bool ("SYSLOG_SG_ENAB")) { + char *loginname = xstrdup (getlogin ()); + char *tty = xstrdup (ttyname (0)); + + if (loginname == NULL) + loginname = "???"; + if (tty == NULL) + tty = "???"; + else if (strncmp (tty, "/dev/", 5) == 0) + tty += 5; + SYSLOG ((LOG_INFO, + "user `%s' (login `%s' on %s) switched to group `%s'", + name, loginname, tty, group)); + if (getdef_bool ("CLOSE_SESSIONS")) { + /* + * We want to fork and exec the new shell in the child, leaving the + * parent waiting to log the session close. + * + * The parent must ignore signals generated from the console + * (SIGINT, SIGQUIT, SIGHUP) which might make the parent terminate + * before its child. When bash is exec'ed as the subshell, it + * generates a new process group id for itself, and consequently + * only SIGHUP, which is sent to all process groups in the session, + * can reach the parent. However, since arbitrary programs can be + * specified as login shells, there is no such guarantee in general. + * For the same reason, we must also ignore stop signals generated + * from the console (SIGTSTP, SIGTTIN, and SIGTTOU) in order to + * avoid any possibility of the parent being stopped when it + * receives SIGCHLD from the terminating subshell. -- JWP + */ + pid_t child, pid; + + signal (SIGINT, SIG_IGN); + signal (SIGQUIT, SIG_IGN); + signal (SIGHUP, SIG_IGN); + signal (SIGTSTP, SIG_IGN); + signal (SIGTTIN, SIG_IGN); + signal (SIGTTOU, SIG_IGN); + child = fork (); + if (child < 0) { + /* error in fork() */ + fprintf (stderr, "%s: failure forking: %s", + is_newgrp ? "newgrp" : "sg", + strerror (errno)); + exit (1); + } else if (child) { + /* parent - wait for child to finish, then log session close */ + do { + pid = waitpid (child, NULL, 0); + } while (pid != child); + SYSLOG ((LOG_INFO, + "user `%s' (login `%s' on %s) returned to group `%s'", + name, loginname, tty, + getgrgid (gid)->gr_name)); + closelog (); + exit (0); + } + /* child - restore signals to their default state */ + signal (SIGINT, SIG_DFL); + signal (SIGQUIT, SIG_DFL); + signal (SIGHUP, SIG_DFL); + signal (SIGTSTP, SIG_DFL); + signal (SIGTTIN, SIG_DFL); + signal (SIGTTOU, SIG_DFL); + } + } +#endif /* USE_SYSLOG */ + gid = grp->gr_gid; #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. if the group doesn't fit, i'll complain - * loudly and skip this part ... + * 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. + * If the group doesn't fit, i'll complain loudly and skip this + * part. */ - for (i = 0;i < ngroups;i++) { + for (i = 0; i < ngroups; i++) { if (gid == grouplist[i]) break; } if (i == ngroups) { - if (ngroups >= sysconf(_SC_NGROUPS_MAX)) { + if (ngroups >= sysconf (_SC_NGROUPS_MAX)) { fprintf (stderr, _("too many groups\n")); } else { grouplist[ngroups++] = gid; - if (setgroups(ngroups, grouplist)) { - perror("setgroups"); + if (setgroups (ngroups, grouplist)) { + perror ("setgroups"); } } } #endif -okay: /* - * i set her group id either to the value she requested, or - * to the original value if the newgrp failed. + * Set the effective gid to the new group id and the effective uid + * to the real uid. For root, this also sets the real gid to the + * new group id. */ - if (setgid(gid)) - perror("setgid"); + if (setgid (gid)) + perror ("setgid"); - if (setuid(getuid())) { - perror("setuid"); - exit(1); + if (setuid (getuid ())) { + perror ("setuid"); + exit (1); } /* - * see if the "-c" flag was used. if it was, i just create a - * shell command for her using the argument that followed the - * "-c" flag. + * See if the "-c" flag was used. If it was, i just create a shell + * command for her using the argument that followed the "-c" flag. */ if (cflag) { - closelog(); - execl("/bin/sh", "sh", "-c", command, (char *) 0); + closelog (); + execl ("/bin/sh", "sh", "-c", command, (char *) 0); if (errno == ENOENT) { - perror("/bin/sh"); - exit(127); + perror ("/bin/sh"); + exit (127); } else { - perror("/bin/sh"); - exit(126); + perror ("/bin/sh"); + exit (126); } } /* - * i have to get the pathname of her login shell. as a favor, - * i'll try her environment for a $SHELL value first, and - * then try the password file entry. obviously this shouldn't - * be in the restricted command directory since it could be - * used to leave the restricted environment. + * I have to get the pathname of her login shell. As a favor, i'll + * try her environment for a $SHELL value first, and then try the + * password file entry. Obviously this shouldn't be in the + * restricted command directory since it could be used to leave the + * restricted environment. + * + * Note that the following assumes this user's entry in /etc/passwd + * does not have a chroot * prefix. If it does, the * will be copied + * verbatim into the exec path. This is probably not an issue + * because if this user is operating in a chroot jail, her entry in + * the version of /etc/passwd that is accessible here should + * probably never have a chroot shell entry (but entries for other + * users might). If I have missed something, and this causes you a + * problem, try using $SHELL as a workaround; also please notify me + * at jparmele@wildbear.com -- JWP */ - if (! initflag && (cp = getenv ("SHELL"))) + if (!initflag && (cp = getenv ("SHELL"))) prog = cp; else if (pwd->pw_shell && pwd->pw_shell[0]) prog = pwd->pw_shell; @@ -419,11 +536,11 @@ okay: prog = "/bin/sh"; /* - * now i try to find the basename of the login shell. this - * will become argv[0] of the spawned command. + * Now i try to find the basename of the login shell. This will + * become argv[0] of the spawned command. */ - cp = Basename((char *) prog); + cp = Basename ((char *) prog); #ifdef SHADOWPWD endspent (); @@ -435,65 +552,54 @@ okay: endgrent (); /* - * switch back to her home directory if i am doing login + * Switch back to her home directory if i am doing login * initialization. */ if (initflag) { if (chdir (pwd->pw_dir)) - perror("chdir"); + perror ("chdir"); while (*envp) { if (strncmp (*envp, "PATH=", 5) == 0 || - strncmp (*envp, "HOME=", 5) == 0 || - strncmp (*envp, "SHELL=", 6) == 0 || - strncmp (*envp, "TERM=", 5) == 0) - addenv(*envp, NULL); + strncmp (*envp, "HOME=", 5) == 0 || + strncmp (*envp, "SHELL=", 6) == 0 || + strncmp (*envp, "TERM=", 5) == 0) + addenv (*envp, NULL); envp++; } } else { while (*envp) - addenv(*envp++, NULL); + addenv (*envp++, NULL); } - /* sanitize_env() removes $HOME from the environment (maybe it - shouldn't - please tell me if you are sure that $HOME can't - cause security problems) - add it from user's passwd entry. - */ - addenv("HOME", pwd->pw_dir); + /* + * Sanitize_env() removes $HOME from the environment (maybe it + * shouldn't - please tell me if you are sure that $HOME can't cause + * security problems) - add it from user's passwd entry. + */ + addenv ("HOME", pwd->pw_dir); /* - * exec the login shell and go away. we are trying to get - * back to the previous environment which should be the - * user's login shell. + * Exec the login shell and go away. We are trying to get back to + * the previous environment which should be the user's login shell. */ - shell(prog, initflag ? (char *)0 : cp); - /*NOTREACHED*/ - -failure: - /* - * this is where all failures land. the group id will not - * have been set, so the setgid() below will set me to the - * original group id i had when i was invoked. - */ + shell (prog, initflag ? (char *) 0 : cp); + /*NOTREACHED*/ failure: /* - * only newgrp needs to re-exec the user's shell. that is - * because the shell doesn't recognize "sg", so it doesn't - * "exec" this command. + * The previous code, when run as newgrp, re-exec'ed the shell in + * 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. + * We now just want to exit with error status back to the parent + * process. The closelog is probably unnecessary, but it does no + * harm. -- JWP */ - if (!is_newgrp) { - closelog(); - exit (1); - } - - /* - * The GID is still set to the old value, so now I can - * give the user back her shell. - */ - - goto okay; + closelog (); + exit (1); } diff --git a/src/newusers.c b/src/newusers.c index 85bf49f5..b9d2fd82 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -36,8 +36,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: newusers.c,v 1.13 2000/10/09 19:02:20 kloczek Exp $") - +RCSID (PKG_VER "$Id: newusers.c,v 1.15 2002/01/05 15:41:43 kloczek Exp $") #include #include #include "prototypes.h" @@ -46,13 +45,11 @@ RCSID(PKG_VER "$Id: newusers.c,v 1.13 2000/10/09 19:02:20 kloczek Exp $") #include #include #include - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ static char *Prog; #include "getdef.h" @@ -66,71 +63,71 @@ static int is_shadow; #endif /* local function prototypes */ -static void usage(void); -static int add_group(const char *, const char *, gid_t *); -static int add_user(const char *, const char *, uid_t *, gid_t); -static void update_passwd(struct passwd *, const char *); -static int add_passwd(struct passwd *, const char *); +static void usage (void); +static int add_group (const char *, const char *, gid_t *); +static int add_user (const char *, const char *, uid_t *, gid_t); +static void update_passwd (struct passwd *, const char *); +static int add_passwd (struct passwd *, const char *); /* * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("Usage: %s [ input ]\n"), Prog); - exit(1); + fprintf (stderr, _("Usage: %s [input]\n"), Prog); + exit (1); } /* * add_group - create a new group or add a user to an existing group */ -static int -add_group(const char *name, const char *gid, gid_t *ngid) +static int add_group (const char *name, const char *gid, gid_t * ngid) { const struct passwd *pwd; const struct group *grp; - struct group grent; - char *members[2]; - int i; + struct group grent; + char *members[2]; + int i; /* - * Start by seeing if the named group already exists. This - * will be very easy to deal with if it does. + * Start by seeing if the named group already exists. This will be + * very easy to deal with if it does. */ if ((grp = gr_locate (gid))) { -add_member: + add_member: grent = *grp; *ngid = grent.gr_gid; - for (i = 0;grent.gr_mem[i] != (char *) 0;i++) + for (i = 0; grent.gr_mem[i] != (char *) 0; i++) if (strcmp (grent.gr_mem[i], name) == 0) return 0; - grent.gr_mem = (char **) xmalloc (sizeof (char *) * (i + 2)); - memcpy (grent.gr_mem, grp->gr_mem, sizeof (char *) * (i + 2)); + grent.gr_mem = + (char **) xmalloc (sizeof (char *) * (i + 2)); + memcpy (grent.gr_mem, grp->gr_mem, + sizeof (char *) * (i + 2)); grent.gr_mem[i] = xstrdup (name); grent.gr_mem[i + 1] = (char *) 0; - return ! gr_update (&grent); + return !gr_update (&grent); } /* - * The group did not exist, so I try to figure out what the - * GID is going to be. The gid parameter is probably "", meaning - * I figure out the GID from the password file. I want the UID - * and GID to match, unless the GID is already used. + * The group did not exist, so I try to figure out what the GID is + * going to be. The gid parameter is probably "", meaning I figure + * out the GID from the password file. I want the UID and GID to + * match, unless the GID is already used. */ if (gid[0] == '\0') { i = 100; - for (pw_rewind ();(pwd = pw_next ());) { + for (pw_rewind (); (pwd = pw_next ());) { if (pwd->pw_uid >= i) i = pwd->pw_uid + 1; } - for (gr_rewind ();(grp = gr_next ());) { + for (gr_rewind (); (grp = gr_next ());) { if (grp->gr_gid == i) { i = -1; break; @@ -138,55 +135,53 @@ add_member: } } else if (gid[0] >= '0' && gid[0] <= '9') { - /* - * The GID is a number, which means either this is a brand new - * group, or an existing group. For existing groups I just add - * myself as a member, just like I did earlier. - */ + /* + * The GID is a number, which means either this is a brand + * new group, or an existing group. For existing groups I + * just add myself as a member, just like I did earlier. + */ i = atoi (gid); - for (gr_rewind ();(grp = gr_next ());) + for (gr_rewind (); (grp = gr_next ());) if (grp->gr_gid == i) goto add_member; } else - - /* - * The last alternative is that the GID is a name which is not - * already the name of an existing group, and I need to figure - * out what group ID that group name is going to have. - */ + /* + * The last alternative is that the GID is a name which is + * not already the name of an existing group, and I need to + * figure out what group ID that group name is going to + * have. + */ i = -1; /* - * If I don't have a group ID by now, I'll go get the - * next one. + * If I don't have a group ID by now, I'll go get the next one. */ if (i == -1) { - for (i = 100, gr_rewind ();(grp = gr_next ());) + for (i = 100, gr_rewind (); (grp = gr_next ());) if (grp->gr_gid >= i) i = grp->gr_gid + 1; } /* - * Now I have all of the fields required to create the new - * group. + * Now I have all of the fields required to create the new group. */ if (gid[0] && (gid[0] <= '0' || gid[0] >= '9')) - grent.gr_name = xstrdup(gid); + grent.gr_name = xstrdup (gid); else - grent.gr_name = xstrdup(name); + grent.gr_name = xstrdup (name); - grent.gr_passwd = "x"; /* XXX warning: const */ + grent.gr_passwd = "x"; /* XXX warning: const */ grent.gr_gid = i; - members[0] = xstrdup(name); + members[0] = xstrdup (name); members[1] = (char *) 0; grent.gr_mem = members; *ngid = grent.gr_gid; - return ! gr_update (&grent); + return !gr_update (&grent); } /* @@ -194,15 +189,15 @@ add_member: */ static int -add_user(const char *name, const char *uid, uid_t *nuid, gid_t gid) +add_user (const char *name, const char *uid, uid_t * nuid, gid_t gid) { const struct passwd *pwd; - struct passwd pwent; - uid_t i; + struct passwd pwent; + uid_t i; /* - * The first guess for the UID is either the numerical UID - * that the caller provided, or the next available UID. + * The first guess for the UID is either the numerical UID that the + * caller provided, or the next available UID. */ if (uid[0] >= '0' && uid[0] <= '9') { @@ -211,19 +206,19 @@ add_user(const char *name, const char *uid, uid_t *nuid, gid_t gid) i = pwd->pw_uid; } else { i = 100; - for (pw_rewind ();(pwd = pw_next ());) + for (pw_rewind (); (pwd = pw_next ());) if (pwd->pw_uid >= i) i = pwd->pw_uid + 1; } /* - * I don't want to fill in the entire password structure - * members JUST YET, since there is still more data to be - * added. So, I fill in the parts that I have. + * I don't want to fill in the entire password structure members + * JUST YET, since there is still more data to be added. So, I fill + * in the parts that I have. */ - pwent.pw_name = xstrdup(name); - pwent.pw_passwd = "x"; /* XXX warning: const */ + pwent.pw_name = xstrdup (name); + pwent.pw_passwd = "x"; /* XXX warning: const */ #ifdef ATT_AGE pwent.pw_age = ""; #endif @@ -235,25 +230,24 @@ add_user(const char *name, const char *uid, uid_t *nuid, gid_t gid) #endif pwent.pw_uid = i; pwent.pw_gid = gid; - pwent.pw_gecos = ""; /* XXX warning: const */ - pwent.pw_dir = ""; /* XXX warning: const */ - pwent.pw_shell = ""; /* XXX warning: const */ + pwent.pw_gecos = ""; /* XXX warning: const */ + pwent.pw_dir = ""; /* XXX warning: const */ + pwent.pw_shell = ""; /* XXX warning: const */ *nuid = i; - return ! pw_update (&pwent); + return !pw_update (&pwent); } -static void -update_passwd(struct passwd *pwd, const char *passwd) +static void update_passwd (struct passwd *pwd, const char *passwd) { - pwd->pw_passwd = pw_encrypt(passwd, crypt_make_salt()); + pwd->pw_passwd = pw_encrypt (passwd, crypt_make_salt ()); #ifdef ATT_AGE - if (strlen(pwd->pw_age) == 4) { + if (strlen (pwd->pw_age) == 4) { static char newage[5]; - extern char *l64a(); + extern char *l64a (); - strcpy(newage, pwd->pw_age); - strcpy(newage + 2, l64a(time((time_t *) 0) / WEEK)); + strcpy (newage, pwd->pw_age); + strcpy (newage + 2, l64a (time ((time_t *) 0) / WEEK)); pwd->pw_age = newage; } #endif @@ -263,198 +257,199 @@ update_passwd(struct passwd *pwd, const char *passwd) * add_passwd - add or update the encrypted password */ -static int -add_passwd(struct passwd *pwd, const char *passwd) +static int add_passwd (struct passwd *pwd, const char *passwd) { #ifdef SHADOWPWD const struct spwd *sp; - struct spwd spent; + struct spwd spent; #endif /* - * In the case of regular password files, this is real - * easy - pwd points to the entry in the password file. - * Shadow files are harder since there are zillions of - * things to do ... + * In the case of regular password files, this is real easy - pwd + * points to the entry in the password file. Shadow files are + * harder since there are zillions of things to do ... */ if (!is_shadow) { - update_passwd(pwd, passwd); + update_passwd (pwd, passwd); return 0; } - #ifdef SHADOWPWD /* - * Do the first and easiest shadow file case. The user - * already exists in the shadow password file. + * Do the first and easiest shadow file case. The user already + * exists in the shadow password file. */ if ((sp = spw_locate (pwd->pw_name))) { spent = *sp; - spent.sp_pwdp = pw_encrypt(passwd, crypt_make_salt()); - return ! spw_update (&spent); + spent.sp_pwdp = pw_encrypt (passwd, crypt_make_salt ()); + return !spw_update (&spent); } /* - * Pick the next easiest case - the user has an encrypted - * password which isn't equal to "x". The password was set - * to "x" earlier when the entry was created, so this user - * would have to have had the password set someplace else. + * Pick the next easiest case - the user has an encrypted password + * which isn't equal to "x". The password was set to "x" earlier + * when the entry was created, so this user would have to have had + * the password set someplace else. */ if (strcmp (pwd->pw_passwd, "x") != 0) { - update_passwd(pwd, passwd); + update_passwd (pwd, passwd); return 0; } /* - * Now the really hard case - I need to create an entirely - * new shadow password file entry. + * Now the really hard case - I need to create an entirely new + * shadow password file entry. */ spent.sp_namp = pwd->pw_name; - spent.sp_pwdp = pw_encrypt(passwd, crypt_make_salt()); - spent.sp_lstchg = time((time_t *) 0) / SCALE; - spent.sp_min = getdef_num("PASS_MIN_DAYS", 0); - /* 10000 is infinity this week */ - spent.sp_max = getdef_num("PASS_MAX_DAYS", 10000); - spent.sp_warn = getdef_num("PASS_WARN_AGE", -1); + spent.sp_pwdp = pw_encrypt (passwd, crypt_make_salt ()); + spent.sp_lstchg = time ((time_t *) 0) / SCALE; + spent.sp_min = getdef_num ("PASS_MIN_DAYS", 0); + /* 10000 is infinity this week */ + spent.sp_max = getdef_num ("PASS_MAX_DAYS", 10000); + spent.sp_warn = getdef_num ("PASS_WARN_AGE", -1); spent.sp_inact = -1; spent.sp_expire = -1; spent.sp_flag = -1; - return ! spw_update (&spent); + return !spw_update (&spent); #endif } #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - char buf[BUFSIZ]; - char *fields[8]; - int nfields; - char *cp; + char buf[BUFSIZ]; + char *fields[8]; + int nfields; + char *cp; const struct passwd *pw; - struct passwd newpw; - int errors = 0; - int line = 0; - uid_t uid; - gid_t gid; + struct passwd newpw; + int errors = 0; + int line = 0; + uid_t uid; + gid_t gid; + #ifdef USE_PAM pam_handle_t *pamh = NULL; struct passwd *pampw; int retval; #endif - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM retval = PAM_SUCCESS; - pampw = getpwuid(getuid()); + pampw = getpwuid (getuid ()); if (pampw == NULL) { retval = PAM_USER_UNKNOWN; } if (retval == PAM_SUCCESS) { - retval = pam_start("shadow", pampw->pw_name, &conv, &pamh); + retval = + pam_start ("shadow", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); + retval = pam_authenticate (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); + retval = pam_acct_mgmt (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ if (argc > 1 && argv[1][0] == '-') usage (); if (argc == 2) { - if (! freopen (argv[1], "r", stdin)) { - snprintf(buf, sizeof buf, "%s: %s", Prog, argv[1]); + if (!freopen (argv[1], "r", stdin)) { + snprintf (buf, sizeof buf, "%s: %s", Prog, + argv[1]); perror (buf); exit (1); } } /* - * Lock the password files and open them for update. This will - * bring all of the entries into memory where they may be - * searched for an modified, or new entries added. The password - * file is the key - if it gets locked, assume the others can - * be locked right away. + * Lock the password files and open them for update. This will bring + * all of the entries into memory where they may be searched for an + * modified, or new entries added. The password file is the key - if + * it gets locked, assume the others can be locked right away. */ - if (!pw_lock()) { + if (!pw_lock ()) { fprintf (stderr, _("%s: can't lock /etc/passwd.\n"), Prog); exit (1); } #ifdef SHADOWPWD - is_shadow = spw_file_present(); + is_shadow = spw_file_present (); - if ((is_shadow && !spw_lock()) || !gr_lock()) + if ((is_shadow && !spw_lock ()) || !gr_lock ()) #else - if (!gr_lock()) + if (!gr_lock ()) #endif { - fprintf (stderr, _("%s: can't lock files, try again later\n"), - Prog); + fprintf (stderr, + _("%s: can't lock files, try again later\n"), + Prog); (void) pw_unlock (); #ifdef SHADOWPWD if (is_shadow) - spw_unlock(); + spw_unlock (); #endif exit (1); } #ifdef SHADOWPWD - if (!pw_open(O_RDWR) || (is_shadow && !spw_open(O_RDWR)) || !gr_open(O_RDWR)) + if (!pw_open (O_RDWR) || (is_shadow && !spw_open (O_RDWR)) + || !gr_open (O_RDWR)) #else - if (!pw_open(O_RDWR) || !gr_open(O_RDWR)) + if (!pw_open (O_RDWR) || !gr_open (O_RDWR)) #endif { fprintf (stderr, _("%s: can't open files\n"), Prog); (void) pw_unlock (); #ifdef SHADOWPWD if (is_shadow) - spw_unlock(); + spw_unlock (); #endif (void) gr_unlock (); exit (1); } /* - * Read each line. The line has the same format as a password - * file entry, except that certain fields are not contrained to - * be numerical values. If a group ID is entered which does - * not already exist, an attempt is made to allocate the same - * group ID as the numerical user ID. Should that fail, the - * next available group ID over 100 is allocated. The pw_gid - * field will be updated with that value. + * Read each line. The line has the same format as a password file + * entry, except that certain fields are not contrained to be + * numerical values. If a group ID is entered which does not already + * exist, an attempt is made to allocate the same group ID as the + * numerical user ID. Should that fail, the next available group ID + * over 100 is allocated. The pw_gid field will be updated with that + * value. */ while (fgets (buf, sizeof buf, stdin) != (char *) 0) { @@ -463,18 +458,18 @@ main(int argc, char **argv) *cp = '\0'; } else { fprintf (stderr, _("%s: line %d: line too long\n"), - Prog, line); + Prog, line); errors++; continue; } /* - * Break the string into fields and screw around with - * them. There MUST be 7 colon separated fields, - * although the values aren't that particular. + * Break the string into fields and screw around with them. + * There MUST be 7 colon separated fields, although the + * values aren't that particular. */ - for (cp = buf, nfields = 0;nfields < 7;nfields++) { + for (cp = buf, nfields = 0; nfields < 7; nfields++) { fields[nfields] = cp; if ((cp = strchr (cp, ':'))) *cp++ = '\0'; @@ -483,41 +478,42 @@ main(int argc, char **argv) } if (nfields != 6) { fprintf (stderr, _("%s: line %d: invalid line\n"), - Prog, line); + Prog, line); continue; } /* - * Now the fields are processed one by one. The first - * field to be processed is the group name. A new - * group will be created if the group name is non-numeric - * and does not already exist. The named user will be - * the only member. If there is no named group to be a - * member of, the UID will be figured out and that value - * will be a candidate for a new group, if that group ID - * exists, a whole new group ID will be made up. + * Now the fields are processed one by one. The first field + * to be processed is the group name. A new group will be + * created if the group name is non-numeric and does not + * already exist. The named user will be the only member. If + * there is no named group to be a member of, the UID will + * be figured out and that value will be a candidate for a + * new group, if that group ID exists, a whole new group ID + * will be made up. */ - - if (! (pw = pw_locate (fields[0])) && - add_group (fields[0], fields[3], &gid)) { - fprintf (stderr, _("%s: line %d: can't create GID\n"), - Prog, line); + + if (!(pw = pw_locate (fields[0])) && + add_group (fields[0], fields[3], &gid)) { + fprintf (stderr, + _("%s: line %d: can't create GID\n"), + Prog, line); errors++; continue; } /* - * Now we work on the user ID. It has to be specified - * either as a numerical value, or left blank. If it - * is a numerical value, that value will be used, otherwise - * the next available user ID is computed and used. After - * this there will at least be a (struct passwd) for the - * user. + * Now we work on the user ID. It has to be specified either + * as a numerical value, or left blank. If it is a numerical + * value, that value will be used, otherwise the next + * available user ID is computed and used. After this there + * will at least be a (struct passwd) for the user. */ - if (! pw && add_user (fields[0], fields[2], &uid, gid)) { - fprintf (stderr, _("%s: line %d: can't create UID\n"), - Prog, line); + if (!pw && add_user (fields[0], fields[2], &uid, gid)) { + fprintf (stderr, + _("%s: line %d: can't create UID\n"), + Prog, line); errors++; continue; } @@ -527,17 +523,19 @@ main(int argc, char **argv) * all come next. */ - if (! (pw = pw_locate (fields[0]))) { - fprintf (stderr, _("%s: line %d: cannot find user %s\n"), - Prog, line, fields[0]); + if (!(pw = pw_locate (fields[0]))) { + fprintf (stderr, + _("%s: line %d: cannot find user %s\n"), + Prog, line, fields[0]); errors++; continue; } newpw = *pw; if (add_passwd (&newpw, fields[1])) { - fprintf (stderr, _("%s: line %d: can't update password\n"), - Prog, line); + fprintf (stderr, + _("%s: line %d: can't update password\n"), + Prog, line); errors++; continue; } @@ -550,58 +548,63 @@ main(int argc, char **argv) if (fields[6][0]) newpw.pw_shell = fields[6]; - if (newpw.pw_dir[0] && access(newpw.pw_dir, F_OK)) { + if (newpw.pw_dir[0] && access (newpw.pw_dir, F_OK)) { if (mkdir (newpw.pw_dir, - 0777 & ~getdef_num("UMASK", 077))) - fprintf (stderr, _("%s: line %d: mkdir failed\n"), - Prog, line); - else if (chown (newpw.pw_dir, - newpw.pw_uid, newpw.pw_gid)) - fprintf (stderr, _("%s: line %d: chown failed\n"), - Prog, line); + 0777 & ~getdef_num ("UMASK", 077))) + fprintf (stderr, + _("%s: line %d: mkdir failed\n"), + Prog, line); + else if (chown + (newpw.pw_dir, newpw.pw_uid, + newpw.pw_gid)) + fprintf (stderr, + _("%s: line %d: chown failed\n"), + Prog, line); } /* * Update the password entry with the new changes made. */ - if (! pw_update (&newpw)) { - fprintf (stderr, _("%s: line %d: can't update entry\n"), - Prog, line); + if (!pw_update (&newpw)) { + fprintf (stderr, + _("%s: line %d: can't update entry\n"), + Prog, line); errors++; continue; } } /* - * Any detected errors will cause the entire set of changes - * to be aborted. Unlocking the password file will cause - * all of the changes to be ignored. Otherwise the file is - * closed, causing the changes to be written out all at - * once, and then unlocked afterwards. + * Any detected errors will cause the entire set of changes to be + * aborted. Unlocking the password file will cause all of the + * changes to be ignored. Otherwise the file is closed, causing the + * changes to be written out all at once, and then unlocked + * afterwards. */ if (errors) { - fprintf (stderr, _("%s: error detected, changes ignored\n"), Prog); + fprintf (stderr, + _("%s: error detected, changes ignored\n"), Prog); (void) gr_unlock (); #ifdef SHADOWPWD if (is_shadow) - spw_unlock(); + spw_unlock (); #endif (void) pw_unlock (); exit (1); } #ifdef SHADOWPWD - if (!pw_close() || (is_shadow && !spw_close()) || !gr_close()) + if (!pw_close () || (is_shadow && !spw_close ()) || !gr_close ()) #else - if (!pw_close() || ! gr_close()) + if (!pw_close () || !gr_close ()) #endif { fprintf (stderr, _("%s: error updating files\n"), Prog); (void) gr_unlock (); #ifdef SHADOWPWD if (is_shadow) - spw_unlock(); + spw_unlock (); #endif (void) pw_unlock (); exit (1); @@ -609,15 +612,15 @@ main(int argc, char **argv) (void) gr_unlock (); #ifdef SHADOWPWD if (is_shadow) - spw_unlock(); + spw_unlock (); #endif (void) pw_unlock (); #ifdef USE_PAM if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } @@ -627,9 +630,8 @@ main(int argc, char **argv) } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ exit (0); - /*NOTREACHED*/ -} + /*NOTREACHED*/} diff --git a/src/passwd.c b/src/passwd.c index b43eb78b..b9d24c0f 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: passwd.c,v 1.20 2000/09/02 18:40:44 marekm Exp $") - +RCSID (PKG_VER "$Id: passwd.c,v 1.24 2002/01/05 15:41:43 kloczek Exp $") #include "prototypes.h" #include "defines.h" #include @@ -40,50 +39,29 @@ RCSID(PKG_VER "$Id: passwd.c,v 1.20 2000/09/02 18:40:44 marekm Exp $") #include #include #include - -#ifdef HAVE_USERSEC_H -#include -#include -#include -#endif - #ifndef GPASSWD_PROGRAM #define GPASSWD_PROGRAM "gpasswd" #endif - #ifndef CHFN_PROGRAM #define CHFN_PROGRAM "chfn" #endif - #ifndef CHSH_PROGRAM #define CHSH_PROGRAM "chsh" #endif - #include -#ifndef HAVE_USERSEC_H -#ifdef SHADOWPWD -#ifndef AGING -#define AGING 0 -#endif /* !AGING */ -#endif /* SHADOWPWD */ -#endif /* !HAVE_USERSEC_H */ #include "pwauth.h" - #ifdef HAVE_TCFS #include #include "tcfsio.h" #endif - #ifdef SHADOWPWD #include "shadowio.h" #endif #include "pwio.h" #include "getdef.h" - /* * exit status values */ - #define E_SUCCESS 0 /* success */ #define E_NOPERM 1 /* permission denied */ #define E_USAGE 2 /* invalid combination of options */ @@ -91,38 +69,29 @@ RCSID(PKG_VER "$Id: passwd.c,v 1.20 2000/09/02 18:40:44 marekm Exp $") #define E_MISSING 4 /* unexpected failure, passwd file missing */ #define E_PWDBUSY 5 /* passwd file busy, try again later */ #define E_BAD_ARG 6 /* invalid argument to option */ - /* * Global variables */ - -#ifdef HAVE_USERSEC_H -int minage = 0; /* Minimum age in weeks */ -int maxage = 10000; /* Maximum age in weeks */ -#endif - -static char *name; /* The name of user whose password is being changed */ -static char *myname; /* The current user's name */ +static char *name; /* The name of user whose password is being changed */ +static char *myname; /* The current user's name */ static char *Prog; /* Program name */ static int amroot; /* The real UID was 0 */ static int - lflg = 0, /* -l - lock account */ - uflg = 0, /* -u - unlock account */ - dflg = 0, /* -d - delete password */ -#ifdef AGING - xflg = 0, /* -x - set maximum days */ - nflg = 0, /* -n - set minimum days */ - eflg = 0, /* -e - force password change */ - kflg = 0, /* -k - change only if expired */ -#endif #ifdef SHADOWPWD - wflg = 0, /* -w - set warning days */ - iflg = 0, /* -i - set inactive days */ + eflg = 0, /* -e - force password change */ + iflg = 0, /* -i - set inactive days */ + kflg = 0, /* -k - change only if expired */ + nflg = 0, /* -n - set minimum days */ + wflg = 0, /* -w - set warning days */ + xflg = 0, /* -x - set maximum days */ #endif - qflg = 0, /* -q - quiet mode */ - aflg = 0, /* -a - show status for all users */ - Sflg = 0; /* -S - show password status */ + aflg = 0, /* -a - show status for all users */ + dflg = 0, /* -d - delete password */ + lflg = 0, /* -l - lock account */ + qflg = 0, /* -q - quiet mode */ + Sflg = 0, /* -S - show password status */ + uflg = 0; /* -u - unlock account */ /* * set to 1 if there are any flags which require root privileges, @@ -130,14 +99,12 @@ static int */ static int anyflag = 0; -#ifdef AGING -static long age_min = 0; /* Minimum days before change */ -static long age_max = 0; /* Maximum days until change */ #ifdef SHADOWPWD -static long warn = 0; /* Warning days before change */ +static long age_min = 0; /* Minimum days before change */ +static long age_max = 0; /* Maximum days until change */ +static long warn = 0; /* Warning days before change */ static long inact = 0; /* Days without change before locked */ #endif -#endif static int do_update_age = 0; @@ -156,96 +123,64 @@ static int tcfs_force = 0; */ #ifdef ATT_AGE -extern char *l64a(); +extern char *l64a (); #endif -extern int optind; /* Index into argv[] for current option */ -extern char *optarg; /* Pointer to current option value */ - -#ifndef HAVE_USERSEC_H #ifdef NDBM -extern int sp_dbm_mode; -extern int pw_dbm_mode; +extern int sp_dbm_mode; +extern int pw_dbm_mode; #endif -#endif - - -#define WRONGPWD2 "incorrect password for `%s'" -#define CANTCHANGE2 "password locked for `%s'" - -#define TOOSOON2 "now < minimum age for `%s'" - -#define EXECFAILED2 "cannot execute %s" -#define NOPERM2 "can't change pwd for `%s'" - -#define PWDBUSY2 "can't lock password file" -#define OPNERROR2 "can't open password file" -#define UPDERROR2 "error updating password entry" -#define CLSERROR2 "can't rewrite password file" -#define DBMERROR2 "error updaring dbm password entry" - -#ifdef HAVE_TCFS -#define TCFSPWDBUSY2 "can't lock TCFS key database" -#define TCFSOPNERROR2 "can't open TCFS key database" -#define TCFSUPDERROR2 "error updating TCFS key database" -#define TCFSCLSERROR2 "can't rewrite TCFS key database" -#endif - -#define NOTROOT2 "can't setuid(0)" -#define CHGPASSWD "password for `%s' changed by `%s'" -#define NOCHGPASSWD "did not change password for `%s'" /* local function prototypes */ -static void usage(int); +static void usage (int); + #ifndef USE_PAM #ifdef AUTH_METHODS -static char *get_password(const char *); -static int uses_default_method(const char *); -#endif /* AUTH_METHODS */ -static int reuse(const char *, const struct passwd *); -static int new_password(const struct passwd *); +static char *get_password (const char *); +static int uses_default_method (const char *); +#endif /* AUTH_METHODS */ +static int reuse (const char *, const struct passwd *); +static int new_password (const struct passwd *); + #ifdef SHADOWPWD -static void check_password(const struct passwd *, const struct spwd *); -#else /* !SHADOWPWD */ -static void check_password(const struct passwd *); -#endif /* !SHADOWPWD */ -static char *insert_crypt_passwd(const char *, const char *); -#endif /* !USE_PAM */ -static char *date_to_str(time_t); -static const char *pw_status(const char *); -static void print_status(const struct passwd *); -static void fail_exit(int); -static void oom(void); -static char *update_crypt_pw(char *); -static void update_noshadow(void); +static void check_password (const struct passwd *, const struct spwd *); +#else /* !SHADOWPWD */ +static void check_password (const struct passwd *); +#endif /* !SHADOWPWD */ +static char *insert_crypt_passwd (const char *, const char *); +#endif /* !USE_PAM */ +static char *date_to_str (time_t); +static const char *pw_status (const char *); +static void print_status (const struct passwd *); +static void fail_exit (int); +static void oom (void); +static char *update_crypt_pw (char *); +static void update_noshadow (void); + #ifdef SHADOWPWD -static void update_shadow(void); +static void update_shadow (void); #endif #ifdef HAVE_TCFS -static void update_tcfs(void); +static void update_tcfs (void); #endif -#ifdef HAVE_USERSEC_H -static void update_userpw(char *); -#endif -static long getnumber(const char *); +static long getnumber (const char *); /* * usage - print command usage and exit */ -static void -usage(int status) +static void usage (int status) { - fprintf(stderr, _("usage: %s [ -f | -s ] [ name ]\n"), Prog); + fprintf (stderr, _("usage: %s [-f|-s] [name]\n"), Prog); if (amroot) { - fprintf(stderr, - _(" %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n"), - Prog); - fprintf(stderr, - _(" %s { -l | -u | -d | -S | -e } name\n"), - Prog); + fprintf (stderr, + _ + (" %s [-x max] [-n min] [-w warn] [-i inact] name\n"), + Prog); + fprintf (stderr, _(" %s {-l|-u|-d|-S|-e} name\n"), + Prog); } - exit(status); + exit (status); } #ifndef USE_PAM @@ -254,14 +189,13 @@ usage(int status) * get_password - locate encrypted password in authentication list */ -static char * -get_password(const char *list) +static char *get_password (const char *list) { - char *cp, *end; - static char buf[257]; + char *cp, *end; + static char buf[257]; - STRFCPY(buf, list); - for (cp = buf;cp;cp = end) { + STRFCPY (buf, list); + for (cp = buf; cp; cp = end) { if ((end = strchr (cp, ';'))) *end++ = 0; @@ -280,33 +214,34 @@ get_password(const char *list) * in the authentication string, and if one is present it extracts it. */ -static int -uses_default_method(const char *methods) +static int uses_default_method (const char *methods) { - char *cp; + char *cp; if ((cp = get_password (methods))) { - STRFCPY(crypt_passwd, cp); + STRFCPY (crypt_passwd, cp); return 1; } return 0; } -#endif /* AUTH_METHODS */ +#endif /* AUTH_METHODS */ -static int -reuse(const char *pass, const struct passwd *pw) +static int reuse (const char *pass, const struct passwd *pw) { #ifdef HAVE_LIBCRACK_HIST const char *reason; + #ifdef HAVE_LIBCRACK_PW - const char *FascistHistoryPw(const char *,const struct passwd *); - reason = FascistHistory(pass, pw); + const char *FascistHistoryPw (const char *, const struct passwd *); + + reason = FascistHistory (pass, pw); #else - const char *FascistHistory(const char *, int); - reason = FascistHistory(pass, pw->pw_uid); + const char *FascistHistory (const char *, int); + + reason = FascistHistory (pass, pw->pw_uid); #endif if (reason) { - printf(_("Bad password: %s. "), reason); + printf (_("Bad password: %s. "), reason); return 1; } #endif @@ -314,144 +249,152 @@ reuse(const char *pass, const struct passwd *pw) } /* - * new_password - validate old password and replace with new - * (both old and new in global "char crypt_passwd[128]") + * new_password - validate old password and replace with new (both old and + * new in global "char crypt_passwd[128]") */ -/*ARGSUSED*/ -static int -new_password(const struct passwd *pw) + /*ARGSUSED*/ static int new_password (const struct passwd *pw) { - char *clear; /* Pointer to clear text */ - char *cipher; /* Pointer to cipher text */ - char *cp; /* Pointer to getpass() response */ - char orig[200]; /* Original password */ - char pass[200]; /* New password */ - int i; /* Counter for retries */ - int warned; - int pass_max_len; + char *clear; /* Pointer to clear text */ + char *cipher; /* Pointer to cipher text */ + char *cp; /* Pointer to getpass() response */ + char orig[200]; /* Original password */ + char pass[200]; /* New password */ + int i; /* Counter for retries */ + int warned; + int pass_max_len; + #ifdef HAVE_LIBCRACK_HIST - int HistUpdate(const char *, const char *); + int HistUpdate (const char *, const char *); #endif /* - * Authenticate the user. The user will be prompted for their - * own password. + * Authenticate the user. The user will be prompted for their own + * password. */ #ifdef HAVE_TCFS tcfs_force = tcfs_force && amroot; - if ((tcfs_locate(name) && !tcfs_force) || (!amroot && crypt_passwd[0])) { + if ((tcfs_locate (name) && !tcfs_force) + || (!amroot && crypt_passwd[0])) { if (amroot) { - printf(_("User %s has a TCFS key, his old password is required.\n"), name); - printf(_("You can use -t option to force the change.\n")); + printf (_ + ("User %s has a TCFS key, his old password is required.\n"), + name); + printf (_ + ("You can use -t option to force the change.\n")); } #else - if (! amroot && crypt_passwd[0]) { + if (!amroot && crypt_passwd[0]) { #endif - if (!(clear = getpass(_("Old password: ")))) + if (!(clear = getpass (_("Old password: ")))) return -1; - cipher = pw_encrypt(clear, crypt_passwd); - if (strcmp(cipher, crypt_passwd) != 0) { - SYSLOG((LOG_WARN, WRONGPWD2, pw->pw_name)); - sleep(1); - fprintf(stderr, _("Incorrect password for `%s'\n"), - pw->pw_name); + cipher = pw_encrypt (clear, crypt_passwd); + if (strcmp (cipher, crypt_passwd) != 0) { + SYSLOG ((LOG_WARN, "incorrect password for `%s'", + pw->pw_name)); + sleep (1); + fprintf (stderr, + _("Incorrect password for `%s'\n"), + pw->pw_name); return -1; } - STRFCPY(orig, clear); + STRFCPY (orig, clear); #ifdef HAVE_TCFS - STRFCPY(tcfspword->tcfsorig, clear); + STRFCPY (tcfspword->tcfsorig, clear); #endif - strzero(clear); - strzero(cipher); + strzero (clear); + strzero (cipher); } else { #ifdef HAVE_TCFS - if (tcfs_locate(name)) - printf(_("Warning: user %s has a TCFS key.\n"), name); + if (tcfs_locate (name)) + printf (_("Warning: user %s has a TCFS key.\n"), + name); #endif orig[0] = '\0'; } /* - * Get the new password. The user is prompted for the new password - * and has five tries to get it right. The password will be tested - * for strength, unless it is the root user. This provides an escape + * Get the new password. The user is prompted for the new password + * and has five tries to get it right. The password will be tested + * for strength, unless it is the root user. This provides an escape * for initial login passwords. */ - if (getdef_bool("MD5_CRYPT_ENAB")) + if (getdef_bool ("MD5_CRYPT_ENAB")) pass_max_len = 127; else - pass_max_len = getdef_num("PASS_MAX_LEN", 8); + pass_max_len = getdef_num ("PASS_MAX_LEN", 8); if (!qflg) - printf(_("\ + printf (_("\ Enter the new password (minimum of %d, maximum of %d characters)\n\ -Please use a combination of upper and lower case letters and numbers.\n"), - getdef_num("PASS_MIN_LEN", 5), pass_max_len); +Please use a combination of upper and lower case letters and numbers.\n"), getdef_num ("PASS_MIN_LEN", 5), pass_max_len); warned = 0; - for (i = getdef_num("PASS_CHANGE_TRIES", 5); i > 0; i--) { - if (!(cp = getpass(_("New password: ")))) { - memzero(orig, sizeof orig); + for (i = getdef_num ("PASS_CHANGE_TRIES", 5); i > 0; i--) { + if (!(cp = getpass (_("New password: ")))) { + memzero (orig, sizeof orig); return -1; } - if (warned && strcmp(pass, cp) != 0) + if (warned && strcmp (pass, cp) != 0) warned = 0; - STRFCPY(pass, cp); - strzero(cp); + STRFCPY (pass, cp); + strzero (cp); - if (!amroot && (!obscure(orig, pass, pw) || reuse(pass, pw))) { - printf(_("Try again.\n")); + if (!amroot + && (!obscure (orig, pass, pw) || reuse (pass, pw))) { + printf (_("Try again.\n")); continue; } /* - * If enabled, warn about weak passwords even if you are root - * (enter this password again to use it anyway). --marekm + * If enabled, warn about weak passwords even if you are + * root (enter this password again to use it anyway). + * --marekm */ - if (amroot && !warned && getdef_bool("PASS_ALWAYS_WARN") - && (!obscure(orig, pass, pw) || reuse(pass, pw))) { - printf(_("\nWarning: weak password (enter it again to use it anyway).\n")); + if (amroot && !warned && getdef_bool ("PASS_ALWAYS_WARN") + && (!obscure (orig, pass, pw) || reuse (pass, pw))) { + printf (_ + ("\nWarning: weak password (enter it again to use it anyway).\n")); warned++; continue; } - if (!(cp = getpass(_("Re-enter new password: ")))) { - memzero(orig, sizeof orig); + if (!(cp = getpass (_("Re-enter new password: ")))) { + memzero (orig, sizeof orig); return -1; } if (strcmp (cp, pass)) - fprintf(stderr, _("They don't match; try again.\n")); + fprintf (stderr, + _("They don't match; try again.\n")); else { - strzero(cp); + strzero (cp); break; } } - memzero(orig, sizeof orig); + memzero (orig, sizeof orig); if (i == 0) { - memzero(pass, sizeof pass); + memzero (pass, sizeof pass); return -1; } - #ifdef HAVE_TCFS - STRFCPY(tcfspword->tcfspass, pass); + STRFCPY (tcfspword->tcfspass, pass); #endif /* * Encrypt the password, then wipe the cleartext password. */ - cp = pw_encrypt(pass, crypt_make_salt()); - memzero(pass, sizeof pass); + cp = pw_encrypt (pass, crypt_make_salt ()); + memzero (pass, sizeof pass); #ifdef HAVE_LIBCRACK_HIST - HistUpdate(pw->pw_name, crypt_passwd); + HistUpdate (pw->pw_name, crypt_passwd); #endif - STRFCPY(crypt_passwd, cp); + STRFCPY (crypt_passwd, cp); return 0; } @@ -463,32 +406,27 @@ Please use a combination of upper and lower case letters and numbers.\n"), */ #ifdef SHADOWPWD -static void -check_password(const struct passwd *pw, const struct spwd *sp) +static void check_password (const struct passwd *pw, const struct spwd *sp) { #else -static void -check_password(const struct passwd *pw) +static void check_password (const struct passwd *pw) { #endif time_t now, last, ok; int exp_status; -#ifdef HAVE_USERSEC_H - struct userpw *pu; -#endif #ifdef SHADOWPWD - exp_status = isexpired(pw, sp); + exp_status = isexpired (pw, sp); #else - exp_status = isexpired(pw); + exp_status = isexpired (pw); #endif /* - * If not expired and the "change only if expired" option - * (idea from PAM) was specified, do nothing... --marekm + * If not expired and the "change only if expired" option (idea from + * PAM) was specified, do nothing. --marekm */ if (kflg && exp_status == 0) - exit(E_SUCCESS); + exit (E_SUCCESS); /* * Root can change any password any time. @@ -497,23 +435,25 @@ check_password(const struct passwd *pw) if (amroot) return; - time(&now); + time (&now); #ifdef SHADOWPWD /* - * Expired accounts cannot be changed ever. Passwords - * which are locked may not be changed. Passwords where - * min > max may not be changed. Passwords which have - * been inactive too long cannot be changed. + * Expired accounts cannot be changed ever. Passwords which are + * locked may not be changed. Passwords where min > max may not be + * changed. Passwords which have been inactive too long cannot be + * changed. */ if (sp->sp_pwdp[0] == '!' || exp_status > 1 || (sp->sp_max >= 0 && sp->sp_min > sp->sp_max)) { - fprintf(stderr, _("The password for %s cannot be changed.\n"), - sp->sp_namp); - SYSLOG((LOG_WARN, CANTCHANGE2, sp->sp_namp)); - closelog(); - exit(E_NOPERM); + fprintf (stderr, + _("The password for %s cannot be changed.\n"), + sp->sp_namp); + SYSLOG ((LOG_WARN, "password locked for `%s'", + sp->sp_namp)); + closelog (); + exit (E_NOPERM); } /* @@ -523,55 +463,54 @@ check_password(const struct passwd *pw) last = sp->sp_lstchg * SCALE; ok = last + (sp->sp_min > 0 ? sp->sp_min * SCALE : 0); -#else /* !SHADOWPWD */ +#else /* !SHADOWPWD */ if (pw->pw_passwd[0] == '!' || exp_status > 1) { - fprintf(stderr, _("The password for %s cannot be changed.\n"), - pw->pw_name); - SYSLOG((LOG_WARN, CANTCHANGE2, pw->pw_name)); - closelog(); - exit(E_NOPERM); + fprintf (stderr, + _("The password for %s cannot be changed.\n"), + pw->pw_name); + SYSLOG ((LOG_WARN, "password locked for `%s'", + pw->pw_name)); + closelog (); + exit (E_NOPERM); } #ifdef ATT_AGE /* * Can always be changed if there is no age info */ - if (! pw->pw_age[0]) + if (!pw->pw_age[0]) return; last = a64l (pw->pw_age + 2) * WEEK; ok = last + c64i (pw->pw_age[1]) * WEEK; -#else /* !ATT_AGE */ -#ifdef HAVE_USERSEC_H - pu = getuserpw(pw->pw_name); - last = pu ? pu->upw_lastupdate : 0L; - ok = last + (minage > 0 ? minage * WEEK : 0); -#else +#else /* !ATT_AGE */ last = 0; ok = 0; -#endif -#endif /* !ATT_AGE */ -#endif /* !SHADOWPWD */ +#endif /* !ATT_AGE */ +#endif /* !SHADOWPWD */ if (now < ok) { - fprintf(stderr, _("Sorry, the password for %s cannot be changed yet.\n"), pw->pw_name); - SYSLOG((LOG_WARN, TOOSOON2, pw->pw_name)); - closelog(); - exit(E_NOPERM); + fprintf (stderr, + _ + ("Sorry, the password for %s cannot be changed yet.\n"), + pw->pw_name); + SYSLOG ((LOG_WARN, "now < minimum age for `%s'", + pw->pw_name)); + closelog (); + exit (E_NOPERM); } } /* - * insert_crypt_passwd - add an "old-style" password to authentication string - * result now malloced to avoid overflow, just in case. --marekm + * insert_crypt_passwd - add an "old-style" password to authentication + * string result now malloced to avoid overflow, just in case. --marekm */ -static char * -insert_crypt_passwd(const char *string, const char *passwd) +static char *insert_crypt_passwd (const char *string, const char *passwd) { #ifdef AUTH_METHODS if (string && *string) { char *cp, *result; - result = xmalloc(strlen(string) + strlen(passwd) + 1); + result = xmalloc (strlen (string) + strlen (passwd) + 1); cp = result; while (*string) { if (string[0] == ';') { @@ -591,28 +530,26 @@ insert_crypt_passwd(const char *string, const char *passwd) return result; } #endif - return xstrdup(passwd); + return xstrdup (passwd); } -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ -static char * -date_to_str(time_t t) +static char *date_to_str (time_t t) { static char buf[80]; struct tm *tm; - tm = gmtime(&t); + tm = gmtime (&t); #ifdef HAVE_STRFTIME - strftime(buf, sizeof buf, "%m/%d/%Y", tm); + strftime (buf, sizeof buf, "%m/%d/%Y", tm); #else - snprintf(buf, sizeof buf, "%02d/%02d/%04d", - tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900); + snprintf (buf, sizeof buf, "%02d/%02d/%04d", + tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900); #endif return buf; } -static const char * -pw_status(const char *pass) +static const char *pw_status (const char *pass) { if (*pass == '*' || *pass == '!') return "L"; @@ -625,23 +562,19 @@ pw_status(const char *pass) * print_status - print current password status */ -static void -print_status(const struct passwd *pw) +static void print_status (const struct passwd *pw) { #ifdef SHADOWPWD struct spwd *sp; #endif -#ifdef HAVE_USERSEC_H - struct userpw *pu; -#endif #ifdef SHADOWPWD - sp = getspnam(pw->pw_name); + sp = getspnam (pw->pw_name); if (sp) { - printf("%s %s %s %ld %ld %ld %ld\n", + printf ("%s %s %s %ld %ld %ld %ld\n", pw->pw_name, - pw_status(sp->sp_pwdp), - date_to_str(sp->sp_lstchg * SCALE), + pw_status (sp->sp_pwdp), + date_to_str (sp->sp_lstchg * SCALE), (sp->sp_min * SCALE) / DAY, (sp->sp_max * SCALE) / DAY, (sp->sp_warn * SCALE) / DAY, @@ -649,119 +582,107 @@ print_status(const struct passwd *pw) } else #endif { -#ifdef HAVE_USERSEC_H - pu = getuserpw(name); - printf("%s %s %s %d %d\n", - pw->pw_name, - pw_status(pw->pw_passwd), - date_to_str(pu ? pu->upw_lastupdate : 0L), - minage > 0 ? minage * 7 : 0, - maxage > 0 ? maxage * 7 : 10000); -#else /* !HAVE_USERSEC_H */ #ifdef ATT_AGE - printf("%s %s %s %d %d\n", + printf ("%s %s %s %d %d\n", pw->pw_name, - pw_status(pw->pw_passwd), - date_to_str(strlen(pw->pw_age) > 2 ? - a64l(pw->pw_age + 2) * WEEK : 0L), - pw->pw_age[0] ? c64i(pw->pw_age[1]) * 7 : 0, - pw->pw_age[0] ? c64i(pw->pw_age[0]) * 7 : 10000); + pw_status (pw->pw_passwd), + date_to_str (strlen (pw->pw_age) > 2 ? + a64l (pw->pw_age + 2) * WEEK : 0L), + pw->pw_age[0] ? c64i (pw->pw_age[1]) * 7 : 0, + pw->pw_age[0] ? c64i (pw->pw_age[0]) * 7 : 10000); #else - printf("%s %s\n", pw->pw_name, pw_status(pw->pw_passwd)); + printf ("%s %s\n", pw->pw_name, pw_status (pw->pw_passwd)); #endif -#endif /* !HAVE_USERSEC_H */ } } -static void -fail_exit(int status) +static void fail_exit (int status) { - pw_unlock(); + pw_unlock (); #ifdef SHADOWPWD - spw_unlock(); + spw_unlock (); #endif #ifdef HAVE_TCFS - tcfs_unlock(); + tcfs_unlock (); #endif - exit(status); + exit (status); } -static void -oom(void) +static void oom (void) { - fprintf(stderr, _("%s: out of memory\n"), Prog); - fail_exit(E_FAILURE); + fprintf (stderr, _("%s: out of memory\n"), Prog); + fail_exit (E_FAILURE); } -static char * -update_crypt_pw(char *cp) +static char *update_crypt_pw (char *cp) { #ifndef USE_PAM if (do_update_pwd) - cp = insert_crypt_passwd(cp, crypt_passwd); + cp = insert_crypt_passwd (cp, crypt_passwd); #endif if (dflg) - cp = ""; /* XXX warning: const */ + cp = ""; /* XXX warning: const */ if (uflg && *cp == '!') cp++; if (lflg && *cp != '!') { - char *newpw = xmalloc(strlen(cp) + 2); + char *newpw = xmalloc (strlen (cp) + 2); - strcpy(newpw, "!"); - strcat(newpw, cp); + strcpy (newpw, "!"); + strcat (newpw, cp); cp = newpw; } return cp; } -static void -update_noshadow(void) +static void update_noshadow (void) { const struct passwd *pw; struct passwd *npw; + #ifdef ATT_AGE char age[5]; - long week = time((time_t *) 0) / WEEK; + long week = time ((time_t *) 0) / WEEK; char *cp; #endif - if (!pw_lock()) { - fprintf(stderr, - _("Cannot lock the password file; try again later.\n")); - SYSLOG((LOG_WARN, PWDBUSY2)); - exit(E_PWDBUSY); + if (!pw_lock ()) { + fprintf (stderr, + _ + ("Cannot lock the password file; try again later.\n")); + SYSLOG ((LOG_WARN, "can't lock password file")); + exit (E_PWDBUSY); } - if (!pw_open(O_RDWR)) { - fprintf(stderr, _("Cannot open the password file.\n")); - SYSLOG((LOG_ERR, OPNERROR2)); - fail_exit(E_MISSING); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("Cannot open the password file.\n")); + SYSLOG ((LOG_ERR, "can't open password file")); + fail_exit (E_MISSING); } - pw = pw_locate(name); + pw = pw_locate (name); if (!pw) { - fprintf(stderr, _("%s: %s not found in /etc/passwd\n"), - Prog, name); - fail_exit(E_NOPERM); + fprintf (stderr, _("%s: %s not found in /etc/passwd\n"), + Prog, name); + fail_exit (E_NOPERM); } - npw = __pw_dup(pw); + npw = __pw_dup (pw); if (!npw) - oom(); - npw->pw_passwd = update_crypt_pw(npw->pw_passwd); + oom (); + npw->pw_passwd = update_crypt_pw (npw->pw_passwd); #ifdef ATT_AGE - memzero(age, sizeof(age)); - STRFCPY(age, npw->pw_age); + memzero (age, sizeof (age)); + STRFCPY (age, npw->pw_age); /* - * Just changing the password - update the last change date - * if there is one, otherwise the age just disappears. + * Just changing the password - update the last change date if there + * is one, otherwise the age just disappears. */ if (do_update_age) { - if (strlen(age) > 2) { - cp = l64a(week); + if (strlen (age) > 2) { + cp = l64a (week); age[2] = cp[0]; age[3] = cp[1]; } else { @@ -771,7 +692,7 @@ update_noshadow(void) if (xflg) { if (age_max > 0) - age[0] = i64c((age_max + 6) / 7); + age[0] = i64c ((age_max + 6) / 7); else age[0] = '.'; @@ -783,121 +704,131 @@ update_noshadow(void) age[0] = 'z'; if (age_min > 0) - age[1] = i64c((age_min + 6) / 7); + age[1] = i64c ((age_min + 6) / 7); else age[1] = '.'; } /* - * The last change date is added by -n or -x if it's - * not already there. + * The last change date is added by -n or -x if it's not already + * there. */ - if ((nflg || xflg) && strlen(age) <= 2) { - cp = l64a(week); + if ((nflg || xflg) && strlen (age) <= 2) { + cp = l64a (week); age[2] = cp[0]; age[3] = cp[1]; } /* - * Force password change - if last change date is - * present, it will be set to (today - max - 1 week). - * Otherwise, just set min = max = 0 (will disappear - * when password is changed). + * Force password change - if last change date is present, it will + * be set to (today - max - 1 week). Otherwise, just set min = max + * = 0 (will disappear when password is changed). */ if (eflg) { - if (strlen(age) > 2) { - cp = l64a(week - c64i(age[0]) - 1); + if (strlen (age) > 2) { + cp = l64a (week - c64i (age[0]) - 1); age[2] = cp[0]; age[3] = cp[1]; } else { - strcpy(age, ".."); + strcpy (age, ".."); } } npw->pw_age = age; #endif - if (!pw_update(npw)) { - fprintf(stderr, _("Error updating the password entry.\n")); - SYSLOG((LOG_ERR, UPDERROR2)); - fail_exit(E_FAILURE); + if (!pw_update (npw)) { + fprintf (stderr, + _("Error updating the password entry.\n")); + SYSLOG ((LOG_ERR, "error updating password entry")); + fail_exit (E_FAILURE); } #ifdef NDBM - if (pw_dbm_present() && !pw_dbm_update(npw)) { - fprintf(stderr, _("Error updating the DBM password entry.\n")); - SYSLOG((LOG_ERR, DBMERROR2)); - fail_exit(E_FAILURE); + if (pw_dbm_present () && !pw_dbm_update (npw)) { + fprintf (stderr, + _("Error updating the DBM password entry.\n")); + SYSLOG ((LOG_ERR, "error updaring dbm password entry")); + fail_exit (E_FAILURE); } - endpwent(); + endpwent (); #endif - if (!pw_close()) { - fprintf(stderr, _("Cannot commit password file changes.\n")); - SYSLOG((LOG_ERR, CLSERROR2)); - fail_exit(E_FAILURE); + if (!pw_close ()) { + fprintf (stderr, + _("Cannot commit password file changes.\n")); + SYSLOG ((LOG_ERR, "can't rewrite password file")); + fail_exit (E_FAILURE); } - pw_unlock(); + pw_unlock (); } #ifdef HAVE_TCFS -static void -update_tcfs(void) +static void update_tcfs (void) { if (!tcfs_force) { - if (!tcfs_lock()) { - fprintf(stderr, _("Cannot lock the TCFS key database; try again later\n")); - SYSLOG((LOG_WARN, TCFSPWDBUSY2)); - exit(E_PWDBUSY); + if (!tcfs_lock ()) { + fprintf (stderr, + _ + ("Cannot lock the TCFS key database; try again later\n")); + SYSLOG ((LOG_WARN, + "can't lock TCFS key database")); + exit (E_PWDBUSY); } - if (!tcfs_open(O_RDWR)) { - fprintf(stderr, - _("Cannot open the TCFS key database.\n")); - SYSLOG((LOG_WARN, TCFSOPNERROR2)); - fail_exit(E_MISSING); + if (!tcfs_open (O_RDWR)) { + fprintf (stderr, + _ + ("Cannot open the TCFS key database.\n")); + SYSLOG ((LOG_WARN, + "can't open TCFS key database")); + fail_exit (E_MISSING); } - if (!tcfs_update(name, tcfspword)) { - fprintf(stderr, - _("Error updating the TCFS key database.\n")); - SYSLOG((LOG_ERR, TCFSUPDERROR2)); - fail_exit(E_FAILURE); + if (!tcfs_update (name, tcfspword)) { + fprintf (stderr, + _ + ("Error updating the TCFS key database.\n")); + SYSLOG ((LOG_ERR, + "error updating TCFS key database")); + fail_exit (E_FAILURE); } - if (!tcfs_close()) { - fprintf(stderr, _("Cannot commit TCFS changes.\n")); - SYSLOG((LOG_ERR, TCFSCLSERROR2)); - fail_exit(E_FAILURE); + if (!tcfs_close ()) { + fprintf (stderr, + _("Cannot commit TCFS changes.\n")); + SYSLOG ((LOG_ERR, + "can't rewrite TCFS key database")); + fail_exit (E_FAILURE); } - tcfs_unlock(); + tcfs_unlock (); } } -#endif /* HAVE_TCFS */ +#endif /* HAVE_TCFS */ #ifdef SHADOWPWD -static void -update_shadow(void) +static void update_shadow (void) { const struct spwd *sp; struct spwd *nsp; - if (!spw_lock()) { - fprintf(stderr, - _("Cannot lock the password file; try again later.\n")); - SYSLOG((LOG_WARN, PWDBUSY2)); - exit(E_PWDBUSY); + if (!spw_lock ()) { + fprintf (stderr, + _ + ("Cannot lock the password file; try again later.\n")); + SYSLOG ((LOG_WARN, "can't lock password file")); + exit (E_PWDBUSY); } - if (!spw_open(O_RDWR)) { - fprintf(stderr, _("Cannot open the password file.\n")); - SYSLOG((LOG_ERR, OPNERROR2)); - fail_exit(E_FAILURE); + if (!spw_open (O_RDWR)) { + fprintf (stderr, _("Cannot open the password file.\n")); + SYSLOG ((LOG_ERR, "can't open password file")); + fail_exit (E_FAILURE); } - sp = spw_locate(name); + sp = spw_locate (name); if (!sp) { - /* Try to update the password in /etc/passwd instead. */ - spw_close(); - update_noshadow(); - spw_unlock(); + /* Try to update the password in /etc/passwd instead. */ + spw_close (); + update_noshadow (); + spw_unlock (); return; } - nsp = __spw_dup(sp); + nsp = __spw_dup (sp); if (!nsp) - oom(); - nsp->sp_pwdp = update_crypt_pw(nsp->sp_pwdp); + oom (); + nsp->sp_pwdp = update_crypt_pw (nsp->sp_pwdp); if (xflg) nsp->sp_max = (age_max * DAY) / SCALE; if (nflg) @@ -907,82 +838,56 @@ update_shadow(void) if (iflg) nsp->sp_inact = (inact * DAY) / SCALE; if (do_update_age) - nsp->sp_lstchg = time((time_t *) 0) / SCALE; + nsp->sp_lstchg = time ((time_t *) 0) / SCALE; /* - * Force change on next login, like SunOS 4.x passwd -e or - * Solaris 2.x passwd -f. Solaris 2.x seems to do the same - * thing (set sp_lstchg to 0). + * Force change on next login, like SunOS 4.x passwd -e or Solaris + * 2.x passwd -f. Solaris 2.x seems to do the same thing (set + * sp_lstchg to 0). */ if (eflg) nsp->sp_lstchg = 0; - if (!spw_update(nsp)) { - fprintf(stderr, _("Error updating the password entry.\n")); - SYSLOG((LOG_ERR, UPDERROR2)); - fail_exit(E_FAILURE); + if (!spw_update (nsp)) { + fprintf (stderr, + _("Error updating the password entry.\n")); + SYSLOG ((LOG_ERR, "error updating password entry")); + fail_exit (E_FAILURE); } #ifdef NDBM - if (sp_dbm_present() && !sp_dbm_update(nsp)) { - fprintf(stderr, _("Error updating the DBM password entry.\n")); - SYSLOG((LOG_ERR, DBMERROR2)); - fail_exit(E_FAILURE); + if (sp_dbm_present () && !sp_dbm_update (nsp)) { + fprintf (stderr, + _("Error updating the DBM password entry.\n")); + SYSLOG ((LOG_ERR, "error updaring dbm password entry")); + fail_exit (E_FAILURE); } - endspent(); + endspent (); #endif - if (!spw_close()) { - fprintf(stderr, _("Cannot commit password file changes.\n")); - SYSLOG((LOG_ERR, CLSERROR2)); - fail_exit(E_FAILURE); + if (!spw_close ()) { + fprintf (stderr, + _("Cannot commit password file changes.\n")); + SYSLOG ((LOG_ERR, "can't rewrite password file")); + fail_exit (E_FAILURE); } - spw_unlock(); + spw_unlock (); } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ -#ifdef HAVE_USERSEC_H -static void -update_userpw(char *cp) -{ - struct userpw userpw; - - /* - * AIX very conveniently has its own mechanism for updating - * passwords. Use it instead ... - */ - - strcpy(userpw.upw_name, name); - userpw.upw_passwd = update_crypt_pw(cp); - userpw.upw_lastupdate = time (0); - userpw.upw_flags = 0; - - setpwdb(S_WRITE); - - if (putuserpw(&userpw)) { - fprintf(stderr, _("Error updating the password entry.\n")); - SYSLOG((LOG_ERR, UPDERROR2)); - closelog(); - exit(E_FAILURE); - } - endpwdb(); -} -#endif - -static long -getnumber(const char *str) +static long getnumber (const char *str) { long val; char *cp; - val = strtol(str, &cp, 10); + val = strtol (str, &cp, 10); if (*cp) - usage(E_BAD_ARG); + usage (E_BAD_ARG); return val; } /* * passwd - change a user's password file information * - * This command controls the password file and commands which are - * used to modify it. + * This command controls the password file and commands which are used + * to modify it. * * The valid options are * @@ -1004,157 +909,152 @@ getnumber(const char *str) * (*) requires root permission to execute. * * All of the time fields are entered in days and converted to the - * appropriate internal format. For finer resolute the chage + * appropriate internal format. For finer resolute the chage * command must be used. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int flag; /* Current option to process */ + int flag; /* Current option to process */ const struct passwd *pw; /* Password file entry for user */ + #ifndef USE_PAM - char *cp; /* Miscellaneous character pointing */ + char *cp; /* Miscellaneous character pointing */ + #ifdef SHADOWPWD - const struct spwd *sp; /* Shadow file entry for user */ + const struct spwd *sp; /* Shadow file entry for user */ #endif #endif - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* - * The program behaves differently when executed by root - * than when executed by a normal user. + * The program behaves differently when executed by root than when + * executed by a normal user. */ amroot = (getuid () == 0); /* - * Get the program name. The program name is used as a - * prefix to most error messages. + * Get the program name. The program name is used as a prefix to + * most error messages. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - sanitize_env(); + sanitize_env (); - OPENLOG("passwd"); + OPENLOG ("passwd"); /* - * Start with the flags which cause another command to be - * executed. The effective UID will be set back to the - * real UID and the new command executed with the flags + * Start with the flags which cause another command to be executed. + * The effective UID will be set back to the real UID and the new + * command executed with the flags * - * These flags are deprecated, may change in a future - * release. Please run these programs directly. --marekm + * These flags are deprecated, may change in a future release. + * Please run these programs directly. --marekm */ if (argc > 1 && argv[1][0] == '-' && strchr ("gfs", argv[1][1])) { char buf[200]; - setuid(getuid()); + setuid (getuid ()); switch (argv[1][1]) { - case 'g': - argv[1] = GPASSWD_PROGRAM; /* XXX warning: const */ - break; - case 'f': - argv[1] = CHFN_PROGRAM; /* XXX warning: const */ - break; - case 's': - argv[1] = CHSH_PROGRAM; /* XXX warning: const */ - break; - default: - usage(E_BAD_ARG); + case 'g': + argv[1] = GPASSWD_PROGRAM; /* XXX warning: const */ + break; + case 'f': + argv[1] = CHFN_PROGRAM; /* XXX warning: const */ + break; + case 's': + argv[1] = CHSH_PROGRAM; /* XXX warning: const */ + break; + default: + usage (E_BAD_ARG); } - snprintf(buf, sizeof buf, _("%s: Cannot execute %s"), - Prog, argv[1]); - execvp(argv[1], &argv[1]); - perror(buf); - SYSLOG((LOG_ERR, EXECFAILED2, argv[1])); - closelog(); - exit(E_FAILURE); + snprintf (buf, sizeof buf, _("%s: Cannot execute %s"), + Prog, argv[1]); + execvp (argv[1], &argv[1]); + perror (buf); + SYSLOG ((LOG_ERR, "cannot execute %s", argv[1])); + closelog (); + exit (E_FAILURE); } /* - * 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 environment and must agree with the - * real UID. Also, the UID will be checked for any commands - * which are restricted to root only. + * 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 + * environment and must agree with the real UID. Also, the UID will + * be checked for any commands which are restricted to root only. */ #ifdef SHADOWPWD + #define FLAGS "adlqr:uSekn:x:i:w:" #ifdef HAVE_TCFS #undef FLAGS #define FLAGS "adlqr:uSekn:x:i:w:t" #endif + #else -#ifdef AGING -#define FLAGS "adlqr:uSekn:x:" -#ifdef HAVE_TCFS -#undef FLAGS -#define FLAGS "adlqr:uSekn:x:t" -#endif -#else + #define FLAGS "adlqr:uS" #ifdef HAVE_TCFS #undef FLAGS #define FLAGS "adlqr:uSt" #endif + #endif -#endif - while ((flag = getopt(argc, argv, FLAGS)) != EOF) { + + while ((flag = getopt (argc, argv, FLAGS)) != EOF) { #undef FLAGS switch (flag) { -#ifdef AGING - case 'x': - age_max = getnumber(optarg); - xflg++; - anyflag = 1; - break; - case 'n': - age_min = getnumber(optarg); - nflg++; - anyflag = 1; - break; #ifdef HAVE_TCFS case 't': tcfs_force = 1; break; #endif #ifdef SHADOWPWD + case 'x': + age_max = getnumber (optarg); + xflg++; + anyflag = 1; + break; + case 'n': + age_min = getnumber (optarg); + nflg++; + anyflag = 1; + break; case 'w': - warn = getnumber(optarg); + warn = getnumber (optarg); if (warn >= -1) wflg++; anyflag = 1; break; case 'i': - inact = getnumber(optarg); + inact = getnumber (optarg); if (inact >= -1) iflg++; anyflag = 1; break; -#endif /* SHADOWPWD */ case 'e': eflg++; anyflag = 1; break; case 'k': - /* change only if expired, like Linux-PAM passwd -k. */ - kflg++; /* ok for users */ + /* change only if expired, like Linux-PAM passwd -k. */ + kflg++; /* ok for users */ break; -#endif /* AGING */ +#endif /* SHADOWPWD */ case 'a': aflg++; break; case 'q': - qflg++; /* ok for users */ + qflg++; /* ok for users */ break; case 'S': - Sflg++; /* ok for users */ + Sflg++; /* ok for users */ break; case 'd': dflg++; @@ -1171,44 +1071,33 @@ main(int argc, char **argv) case 'r': /* -r repository (files|nis|nisplus) */ /* only "files" supported for now */ - if (strcmp(optarg, "files") != 0) { - fprintf(stderr, - _("%s: repository %s not supported\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (strcmp (optarg, "files") != 0) { + fprintf (stderr, + _ + ("%s: repository %s not supported\n"), + Prog, optarg); + exit (E_BAD_ARG); } break; default: - usage(E_BAD_ARG); + usage (E_BAD_ARG); } } -#ifdef HAVE_USERSEC_H /* - * The aging information lives someplace else. Get it from the - * login.cfg file + * Now I have to get the user name. The name will be gotten from the + * command line if possible. Otherwise it is figured out from the + * environment. */ - if (getconfattr(SC_SYS_PASSWD, SC_MINAGE, &minage, SEC_INT)) - minage = -1; - - if (getconfattr(SC_SYS_PASSWD, SC_MAXAGE, &maxage, SEC_INT)) - maxage = -1; -#endif /* HAVE_USERSEC_H */ - - /* - * Now I have to get the user name. The name will be gotten - * from the command line if possible. Otherwise it is figured - * out from the environment. - */ - - pw = get_my_pwent(); + pw = get_my_pwent (); if (!pw) { - fprintf(stderr, _("%s: Cannot determine your user name.\n"), - Prog); - exit(E_NOPERM); + fprintf (stderr, + _("%s: Cannot determine your user name.\n"), + Prog); + exit (E_NOPERM); } - myname = xstrdup(pw->pw_name); + myname = xstrdup (pw->pw_name); if (optind < argc) name = argv[optind]; else @@ -1221,91 +1110,89 @@ main(int argc, char **argv) if (aflg) { if (anyflag || !Sflg || (optind < argc)) - usage(E_USAGE); + usage (E_USAGE); if (!amroot) { - fprintf(stderr, _("%s: Permission denied.\n"), Prog); - exit(E_NOPERM); + fprintf (stderr, _("%s: Permission denied.\n"), + Prog); + exit (E_NOPERM); } - setpwent(); - while ((pw = getpwent())) - print_status(pw); - exit(E_SUCCESS); + setpwent (); + while ((pw = getpwent ())) + print_status (pw); + exit (E_SUCCESS); } - #if 0 /* * Allow certain users (administrators) to change passwords of - * certain users. Not implemented yet... --marekm + * certain users. Not implemented yet. --marekm */ - if (may_change_passwd(myname, name)) + if (may_change_passwd (myname, name)) amroot = 1; #endif /* - * If any of the flags were given, a user name must be supplied - * on the command line. Only an unadorned command line doesn't - * require the user's name be given. Also, -x, -n, -w, -i, -e, -d, - * -l, -u may appear with each other. -S, -k must appear alone. + * If any of the flags were given, a user name must be supplied on + * the command line. Only an unadorned command line doesn't require + * the user's name be given. Also, -x, -n, -w, -i, -e, -d, + * -l, -u may appear with each other. -S, -k must appear alone. */ /* - * -S now ok for normal users (check status of my own account), - * and doesn't require username. --marekm + * -S now ok for normal users (check status of my own account), and + * doesn't require username. --marekm */ if (anyflag && optind >= argc) - usage(E_USAGE); + usage (E_USAGE); if (anyflag + Sflg + kflg > 1) - usage(E_USAGE); + usage (E_USAGE); if (anyflag && !amroot) { - fprintf(stderr, _("%s: Permission denied\n"), Prog); - exit(E_NOPERM); + fprintf (stderr, _("%s: Permission denied\n"), Prog); + exit (E_NOPERM); } - #ifdef NDBM - endpwent(); + endpwent (); pw_dbm_mode = O_RDWR; #ifdef SHADOWPWD sp_dbm_mode = O_RDWR; #endif #endif - pw = getpwnam(name); + pw = getpwnam (name); if (!pw) { - fprintf(stderr, _("%s: Unknown user %s\n"), Prog, name); - exit(E_NOPERM); + fprintf (stderr, _("%s: Unknown user %s\n"), Prog, name); + exit (E_NOPERM); } /* - * Now I have a name, let's see if the UID for the name - * matches the current real UID. + * Now I have a name, let's see if the UID for the name matches the + * current real UID. */ if (!amroot && pw->pw_uid != getuid ()) { - fprintf(stderr, _("You may not change the password for %s.\n"), - name); - SYSLOG((LOG_WARN, NOPERM2, name)); - closelog(); - exit(E_NOPERM); + fprintf (stderr, + _("You may not change the password for %s.\n"), + name); + SYSLOG ((LOG_WARN, "can't change pwd for `%s'", name)); + closelog (); + exit (E_NOPERM); } if (Sflg) { - print_status(pw); - exit(E_SUCCESS); + print_status (pw); + exit (E_SUCCESS); } - #ifndef USE_PAM #ifdef SHADOWPWD /* - * The user name is valid, so let's get the shadow file - * entry. + * The user name is valid, so let's get the shadow file entry. */ - sp = getspnam(name); + sp = getspnam (name); if (!sp) - sp = pwd_to_spwd(pw); + sp = pwd_to_spwd (pw); cp = sp->sp_pwdp; #else @@ -1318,98 +1205,95 @@ main(int argc, char **argv) if (!anyflag) { #ifdef AUTH_METHODS - if (strchr(cp, '@')) { - if (pw_auth(cp, name, PW_CHANGE, (char *)0)) { - SYSLOG((LOG_INFO, NOCHGPASSWD, name)); - closelog(); - exit(E_NOPERM); - } else if (! uses_default_method(cp)) { + if (strchr (cp, '@')) { + if (pw_auth (cp, name, PW_CHANGE, (char *) 0)) { + SYSLOG ((LOG_INFO, + "password for `%s' changed by `%s'", + name)); + closelog (); + exit (E_NOPERM); + } else if (!uses_default_method (cp)) { do_update_age = 1; goto done; } } else #endif - STRFCPY(crypt_passwd, cp); + 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. */ #ifdef SHADOWPWD - check_password(pw, sp); + check_password (pw, sp); #else - check_password(pw); + check_password (pw); #endif #ifdef HAVE_TCFS - tcfspword = (struct tcfspwd *)calloc(1, sizeof (struct tcfspwd)); + tcfspword = + (struct tcfspwd *) calloc (1, sizeof (struct tcfspwd)); #endif /* * Let the user know whose password is being changed. */ if (!qflg) - printf(_("Changing password for %s\n"), name); + printf (_("Changing password for %s\n"), name); - if (new_password(pw)) { - fprintf(stderr, - _("The password for %s is unchanged.\n"), - name); - closelog(); - exit(E_NOPERM); + if (new_password (pw)) { + fprintf (stderr, + _("The password for %s is unchanged.\n"), + name); + closelog (); + exit (E_NOPERM); } do_update_pwd = 1; do_update_age = 1; } - #ifdef AUTH_METHODS -done: + done: #endif -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ /* - * Before going any further, raise the ulimit to prevent - * colliding into a lowered ulimit, and set the real UID - * to root to protect against unexpected signals. Any - * keyboard signals are set to be ignored. + * Before going any further, raise the ulimit to prevent colliding + * into a lowered ulimit, and set the real UID to root to protect + * against unexpected signals. Any keyboard signals are set to be + * ignored. */ - pwd_init(); + pwd_init (); /* * Don't set the real UID for PAM... */ #ifdef USE_PAM if (!anyflag) { - do_pam_passwd(name, qflg, kflg); - exit(E_SUCCESS); + do_pam_passwd (name, qflg, kflg); + exit (E_SUCCESS); } -#endif /* USE_PAM */ - if (setuid(0)) { - fprintf(stderr, _("Cannot change ID to root.\n")); - SYSLOG((LOG_ERR, NOTROOT2)); - closelog(); - exit(E_NOPERM); +#endif /* SHADOWPWD */ + if (setuid (0)) { + fprintf (stderr, _("Cannot change ID to root.\n")); + SYSLOG ((LOG_ERR, "can't setuid(0)")); + closelog (); + exit (E_NOPERM); } -#ifdef HAVE_USERSEC_H - update_userpw(pw->pw_passwd); -#else /* !HAVE_USERSEC_H */ - #ifdef SHADOWPWD - if (spw_file_present()) - update_shadow(); + if (spw_file_present ()) + update_shadow (); else #endif - update_noshadow(); + update_noshadow (); #ifdef HAVE_TCFS - if (tcfs_locate(name) && tcfs_file_present()) - update_tcfs(); + if (tcfs_locate (name) && tcfs_file_present ()) + update_tcfs (); #endif -#endif /* !HAVE_USERSEC_H */ - SYSLOG((LOG_INFO, CHGPASSWD, name, myname)); - closelog(); + SYSLOG ((LOG_INFO, "password for `%s' changed by `%s'", name, + myname)); + closelog (); if (!qflg) - printf(_("Password changed.\n")); - exit(E_SUCCESS); - /*NOTREACHED*/ -} + printf (_("Password changed.\n")); + exit (E_SUCCESS); + /*NOTREACHED*/} diff --git a/src/pwck.c b/src/pwck.c index 18edad4d..4800ca6e 100644 --- a/src/pwck.c +++ b/src/pwck.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,27 +30,23 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: pwck.c,v 1.16 2001/08/14 21:10:58 malekith Exp $") - +RCSID (PKG_VER "$Id: pwck.c,v 1.22 2002/01/05 15:41:44 kloczek Exp $") #include #include #include - #include "prototypes.h" #include "defines.h" #include "chkname.h" #include - #include "commonio.h" - #include "pwio.h" -extern void __pw_del_entry(const struct commonio_entry *); -extern struct commonio_entry *__pw_get_head(void); +extern void __pw_del_entry (const struct commonio_entry *); +extern struct commonio_entry *__pw_get_head (void); #ifdef SHADOWPWD #include "shadowio.h" -extern void __spw_del_entry(const struct commonio_entry *); -extern struct commonio_entry *__spw_get_head(void); +extern void __spw_del_entry (const struct commonio_entry *); +extern struct commonio_entry *__spw_get_head (void); #endif /* @@ -64,50 +60,43 @@ extern struct commonio_entry *__spw_get_head(void); #define E_CANTLOCK 4 #define E_CANTUPDATE 5 -/* - * Global variables - */ - -extern int optind; -extern char *optarg; - /* * Local variables */ static char *Prog; static const char *pwd_file = PASSWD_FILE; + #ifdef SHADOWPWD static const char *spw_file = SHADOW_FILE; #endif static int read_only = 0; -static int quiet = 0; /* don't report warnings, only errors */ +static int quiet = 0; /* don't report warnings, only errors */ /* local function prototypes */ -static void usage(void); -static int yes_or_no(void); +static void usage (void); +static int yes_or_no (void); /* * usage - print syntax message and exit */ -static void -usage(void) +static void usage (void) { #ifdef SHADOWPWD - fprintf(stderr, _("Usage: %s [ -sqr ] [ passwd [ shadow ] ]\n"), Prog); + fprintf (stderr, _("Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n"), + Prog); #else - fprintf(stderr, _("Usage: %s [ -sqr ] [ passwd ]\n"), Prog); + fprintf (stderr, _("Usage: %s [-q] [-r] [-s] [passwd]\n"), Prog); #endif - exit(E_USAGE); + exit (E_USAGE); } /* * yes_or_no - get answer to question from the user */ -static int -yes_or_no(void) +static int yes_or_no (void) { char buf[80]; @@ -116,7 +105,7 @@ yes_or_no(void) */ if (read_only) { - puts(_("No")); + puts (_("No")); return 0; } @@ -124,7 +113,7 @@ yes_or_no(void) * Get a line and see what the first character is. */ - if (fgets(buf, sizeof buf, stdin)) + if (fgets (buf, sizeof buf, stdin)) return buf[0] == 'y' || buf[0] == 'Y'; return 0; @@ -134,40 +123,40 @@ yes_or_no(void) * pwck - verify password file integrity */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int arg; - int errors = 0; - int deleted = 0; - struct commonio_entry *pfe, *tpfe; - struct passwd *pwd; - int sort_mode = 0; + int arg; + int errors = 0; + int deleted = 0; + struct commonio_entry *pfe, *tpfe; + struct passwd *pwd; + int sort_mode = 0; + #ifdef SHADOWPWD - struct commonio_entry *spe, *tspe; - struct spwd *spw; - int is_shadow = 0; + struct commonio_entry *spe, *tspe; + struct spwd *spw; + int is_shadow = 0; #endif /* * Get my name so that I can use it to report errors. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - OPENLOG(Prog); + OPENLOG (Prog); /* * Parse the command line arguments */ - while ((arg = getopt(argc, argv, "eqrs")) != EOF) { + while ((arg = getopt (argc, argv, "eqrs")) != EOF) { switch (arg) { - case 'e': /* added for Debian shadow-961025-2 compatibility */ + case 'e': /* added for Debian shadow-961025-2 compatibility */ case 'q': quiet = 1; break; @@ -178,16 +167,16 @@ main(int argc, char **argv) sort_mode = 1; break; default: - usage(); + usage (); } } if (sort_mode && read_only) { - fprintf(stderr, _("%s: -s and -r are incompatibile\n"), - Prog); - exit(E_USAGE); + fprintf (stderr, _("%s: -s and -r are incompatibile\n"), + Prog); + exit (E_USAGE); } - + /* * Make certain we have the right number of arguments */ @@ -197,24 +186,24 @@ main(int argc, char **argv) #else if (optind != argc && optind + 1 != argc) #endif - usage(); + usage (); /* - * If there are two left over filenames, use those as the - * password and shadow password filenames. + * If there are two left over filenames, use those as the password + * and shadow password filenames. */ if (optind != argc) { pwd_file = argv[optind]; - pw_name(pwd_file); + pw_name (pwd_file); } #ifdef SHADOWPWD if (optind + 2 == argc) { spw_file = argv[optind + 1]; - spw_name(spw_file); + spw_name (spw_file); is_shadow = 1; } else if (optind == argc) - is_shadow = spw_file_present(); + is_shadow = spw_file_present (); #endif /* @@ -222,109 +211,111 @@ main(int argc, char **argv) */ if (!read_only) { - if (!pw_lock()) { - fprintf(stderr, _("%s: cannot lock file %s\n"), - Prog, pwd_file); + if (!pw_lock ()) { + fprintf (stderr, _("%s: cannot lock file %s\n"), + Prog, pwd_file); if (optind == argc) - SYSLOG((LOG_WARN,"cannot lock %s\n",pwd_file)); - closelog(); - exit(E_CANTLOCK); + SYSLOG ((LOG_WARN, "cannot lock %s", + pwd_file)); + closelog (); + exit (E_CANTLOCK); } #ifdef SHADOWPWD - if (is_shadow && !spw_lock()) { - fprintf(stderr, _("%s: cannot lock file %s\n"), - Prog, spw_file); + if (is_shadow && !spw_lock ()) { + fprintf (stderr, _("%s: cannot lock file %s\n"), + Prog, spw_file); if (optind == argc) - SYSLOG((LOG_WARN,"cannot lock %s\n",spw_file)); - closelog(); - exit(E_CANTLOCK); + SYSLOG ((LOG_WARN, "cannot lock %s", + spw_file)); + closelog (); + exit (E_CANTLOCK); } #endif } /* - * Open the files. Use O_RDONLY if we are in read_only mode, - * O_RDWR otherwise. + * Open the files. Use O_RDONLY if we are in read_only mode, O_RDWR + * otherwise. */ - if (!pw_open(read_only ? O_RDONLY:O_RDWR)) { - fprintf(stderr, _("%s: cannot open file %s\n"), - Prog, pwd_file); + if (!pw_open (read_only ? O_RDONLY : O_RDWR)) { + fprintf (stderr, _("%s: cannot open file %s\n"), + Prog, pwd_file); if (optind == argc) - SYSLOG((LOG_WARN, "cannot open %s\n", pwd_file)); - closelog(); - exit(E_CANTOPEN); + SYSLOG ((LOG_WARN, "cannot open %s", pwd_file)); + closelog (); + exit (E_CANTOPEN); } #ifdef SHADOWPWD - if (is_shadow && !spw_open(read_only ? O_RDONLY : O_RDWR)) { - fprintf(stderr, _("%s: cannot open file %s\n"), - Prog, spw_file); + if (is_shadow && !spw_open (read_only ? O_RDONLY : O_RDWR)) { + fprintf (stderr, _("%s: cannot open file %s\n"), + Prog, spw_file); if (optind == argc) - SYSLOG((LOG_WARN, "cannot open %s\n", spw_file)); - closelog(); - exit(E_CANTOPEN); + SYSLOG ((LOG_WARN, "cannot open %s", spw_file)); + closelog (); + exit (E_CANTOPEN); } #endif if (sort_mode) { - pw_sort(); + pw_sort (); #ifdef SHADOWPWD if (is_shadow) - spw_sort(); + spw_sort (); #endif goto write_and_bye; } - + /* * Loop through the entire password file. */ - for (pfe = __pw_get_head(); pfe; pfe = pfe->next) { + for (pfe = __pw_get_head (); pfe; pfe = pfe->next) { /* - * If this is a NIS line, skip it. You can't "know" what - * NIS is going to do without directly asking NIS ... + * If this is a NIS line, skip it. You can't "know" what NIS + * is going to do without directly asking NIS ... */ if (pfe->line[0] == '+' || pfe->line[0] == '-') continue; /* - * Start with the entries that are completely corrupt. - * They have no (struct passwd) entry because they couldn't - * be parsed properly. + * Start with the entries that are completely corrupt. They + * have no (struct passwd) entry because they couldn't be + * parsed properly. */ if (!pfe->eptr) { /* - * Tell the user this entire line is bogus and - * ask them to delete it. + * Tell the user this entire line is bogus and ask + * them to delete it. */ - printf(_("invalid password file entry\n")); - printf(_("delete line `%s'? "), pfe->line); + printf (_("invalid password file entry\n")); + printf (_("delete line `%s'? "), pfe->line); errors++; /* * prompt the user to delete the entry or not */ - if (!yes_or_no()) + if (!yes_or_no ()) continue; /* - * All password file deletions wind up here. This + * All password 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. + * list. When done, it skips back to the top of the + * loop to try out the next list element. */ -delete_pw: - SYSLOG((LOG_INFO, "delete passwd line `%s'\n", - pfe->line)); + delete_pw: + SYSLOG ((LOG_INFO, "delete passwd line `%s'", + pfe->line)); deleted++; - __pw_del_entry(pfe); + __pw_del_entry (pfe); continue; } @@ -338,7 +329,7 @@ delete_pw: * Make sure this entry has a unique name. */ - for (tpfe = __pw_get_head(); tpfe; tpfe = tpfe->next) { + for (tpfe = __pw_get_head (); tpfe; tpfe = tpfe->next) { const struct passwd *ent = tpfe->eptr; /* @@ -355,7 +346,7 @@ delete_pw: if (!ent) continue; - if (strcmp(pwd->pw_name, ent->pw_name) != 0) + if (strcmp (pwd->pw_name, ent->pw_name) != 0) continue; /* @@ -363,34 +354,24 @@ delete_pw: * another and ask them to delete it. */ - puts(_("duplicate password entry\n")); - printf(_("delete line `%s'? "), pfe->line); + puts (_("duplicate password entry\n")); + printf (_("delete line `%s'? "), pfe->line); errors++; /* * prompt the user to delete the entry or not */ - if (yes_or_no()) + if (yes_or_no ()) goto delete_pw; } /* * Check for invalid usernames. --marekm */ - if (!check_user_name(pwd->pw_name)) { - printf(_("invalid user name `%s'\n"), pwd->pw_name); - errors++; - } - - /* - * Check for a Slackware bug. Make sure UID is not -1 - * (it has special meaning for some syscalls). --marekm - */ - - if (pwd->pw_uid == (uid_t) -1) { - printf(_("user %s: bad UID (%d)\n"), - pwd->pw_name, (int) pwd->pw_uid); + if (!check_user_name (pwd->pw_name)) { + printf (_("invalid user name `%s'\n"), + pwd->pw_name); errors++; } @@ -398,14 +379,14 @@ delete_pw: * Make sure the primary group exists */ - if (!quiet && !getgrgid(pwd->pw_gid)) { + if (!quiet && !getgrgid (pwd->pw_gid)) { /* * No primary group, just give a warning */ - printf(_("user %s: no group %d\n"), - pwd->pw_name, (int) pwd->pw_gid); + printf (_("user %s: no group %u\n"), + pwd->pw_name, pwd->pw_gid); errors++; } @@ -413,13 +394,14 @@ delete_pw: * Make sure the home directory exists */ - if (!quiet && access(pwd->pw_dir, F_OK)) { + if (!quiet && access (pwd->pw_dir, F_OK)) { /* * Home directory doesn't exist, give a warning */ - printf(_("user %s: directory %s does not exist\n"), + printf (_ + ("user %s: directory %s does not exist\n"), pwd->pw_name, pwd->pw_dir); errors++; } @@ -428,13 +410,14 @@ delete_pw: * Make sure the login shell is executable */ - if (!quiet && pwd->pw_shell[0] && access(pwd->pw_shell, F_OK)) { + if (!quiet && pwd->pw_shell[0] + && access (pwd->pw_shell, F_OK)) { /* * Login shell doesn't exist, give a warning */ - - printf(_("user %s: program %s does not exist\n"), + + printf (_("user %s: program %s does not exist\n"), pwd->pw_name, pwd->pw_shell); errors++; } @@ -448,52 +431,52 @@ delete_pw: * Loop through the entire shadow password file. */ - for (spe = __spw_get_head(); spe; spe = spe->next) { + for (spe = __spw_get_head (); spe; spe = spe->next) { /* - * If this is a NIS line, skip it. You can't "know" what - * NIS is going to do without directly asking NIS ... + * If this is a NIS line, skip it. You can't "know" what NIS + * is going to do without directly asking NIS ... */ if (spe->line[0] == '+' || spe->line[0] == '-') continue; /* - * Start with the entries that are completely corrupt. - * They have no (struct spwd) entry because they couldn't - * be parsed properly. + * Start with the entries that are completely corrupt. They + * have no (struct spwd) entry because they couldn't be + * parsed properly. */ if (!spe->eptr) { /* - * Tell the user this entire line is bogus and - * ask them to delete it. + * Tell the user this entire line is bogus and ask + * them to delete it. */ - printf(_("invalid shadow password file entry\n")); - printf(_("delete line `%s'? "), spe->line); + printf (_("invalid shadow password file entry\n")); + printf (_("delete line `%s'? "), spe->line); errors++; /* * prompt the user to delete the entry or not */ - if (!yes_or_no()) + if (!yes_or_no ()) continue; /* - * All shadow 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. + * All shadow 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. */ -delete_spw: - SYSLOG((LOG_INFO, "delete shadow line `%s'\n", - spe->line)); + delete_spw: + SYSLOG ((LOG_INFO, "delete shadow line `%s'", + spe->line)); deleted++; - __spw_del_entry(spe); + __spw_del_entry (spe); continue; } @@ -507,7 +490,7 @@ delete_spw: * Make sure this entry has a unique name. */ - for (tspe = __spw_get_head(); tspe; tspe = tspe->next) { + for (tspe = __spw_get_head (); tspe; tspe = tspe->next) { const struct spwd *ent = tspe->eptr; /* @@ -524,7 +507,7 @@ delete_spw: if (!ent) continue; - if (strcmp(spw->sp_namp, ent->sp_namp) != 0) + if (strcmp (spw->sp_namp, ent->sp_namp) != 0) continue; /* @@ -532,15 +515,15 @@ delete_spw: * another and ask them to delete it. */ - puts(_("duplicate shadow password entry\n")); - printf(_("delete line `%s'? "), spe->line); + puts (_("duplicate shadow password entry\n")); + printf (_("delete line `%s'? "), spe->line); errors++; /* * prompt the user to delete the entry or not */ - if (yes_or_no()) + if (yes_or_no ()) goto delete_spw; } @@ -549,22 +532,22 @@ delete_spw: * file. */ - if (!pw_locate(spw->sp_namp)) { + if (!pw_locate (spw->sp_namp)) { /* * Tell the user this entry has no matching * /etc/passwd entry and ask them to delete it. */ - puts(_("no matching password file entry\n")); - printf(_("delete line `%s'? "), spe->line); + puts (_("no matching password file entry\n")); + printf (_("delete line `%s'? "), spe->line); errors++; /* * prompt the user to delete the entry or not */ - if (yes_or_no()) + if (yes_or_no ()) goto delete_spw; } @@ -572,36 +555,38 @@ delete_spw: * Warn if last password change in the future. --marekm */ - if (!quiet && spw->sp_lstchg > time((time_t *)0) / SCALE) { - printf(_("user %s: last password change in the future\n"), spw->sp_namp); + if (!quiet && spw->sp_lstchg > time ((time_t *) 0) / SCALE) { + printf (_ + ("user %s: last password change in the future\n"), + spw->sp_namp); errors++; } } -shadow_done: + shadow_done: #endif /* - * All done. If there were no deletions we can just abandon any + * All done. If there were no deletions we can just abandon any * changes to the files. */ if (deleted) { -write_and_bye: - if (!pw_close()) { - fprintf(stderr, _("%s: cannot update file %s\n"), - Prog, pwd_file); - SYSLOG((LOG_WARN, "cannot update %s\n", pwd_file)); - closelog(); - exit(E_CANTUPDATE); + write_and_bye: + if (!pw_close ()) { + fprintf (stderr, _("%s: cannot update file %s\n"), + Prog, pwd_file); + SYSLOG ((LOG_WARN, "cannot update %s", pwd_file)); + closelog (); + exit (E_CANTUPDATE); } #ifdef SHADOWPWD - if (is_shadow && !spw_close()) { - fprintf(stderr, _("%s: cannot update file %s\n"), - Prog, spw_file); - SYSLOG((LOG_WARN, "cannot update %s\n", spw_file)); - closelog(); - exit(E_CANTUPDATE); + if (is_shadow && !spw_close ()) { + fprintf (stderr, _("%s: cannot update file %s\n"), + Prog, spw_file); + SYSLOG ((LOG_WARN, "cannot update %s", spw_file)); + closelog (); + exit (E_CANTUPDATE); } #endif } @@ -612,9 +597,9 @@ write_and_bye: #ifdef SHADOWPWD if (is_shadow) - spw_unlock(); + spw_unlock (); #endif - (void) pw_unlock(); + (void) pw_unlock (); /* * Tell the user what we did and exit. @@ -622,15 +607,16 @@ write_and_bye: if (errors) #ifdef NDBM - printf(deleted ? - _("%s: the files have been updated; run mkpasswd\n") : - _("%s: no changes\n"), Prog); + printf (deleted ? + _ + ("%s: the files have been updated; run mkpasswd\n") + : _("%s: no changes\n"), Prog); #else - printf(deleted ? + printf (deleted ? _("%s: the files have been updated\n") : _("%s: no changes\n"), Prog); #endif - closelog(); - exit(errors ? E_BADENTRY : E_OKAY); + closelog (); + exit (errors ? E_BADENTRY : E_OKAY); } diff --git a/src/pwconv.c b/src/pwconv.c index 3a32370b..a7e6d468 100644 --- a/src/pwconv.c +++ b/src/pwconv.c @@ -2,37 +2,34 @@ * pwconv - create or update /etc/shadow with information from * /etc/passwd. * - * It is more like SysV pwconv, slightly different from the - * original Shadow pwconv. Depends on "x" as password in - * /etc/passwd which means that the password has already been - * moved to /etc/shadow. There is no need to move /etc/npasswd - * to /etc/passwd, password files are updated using library + * It is more like SysV pwconv, slightly different from the original Shadow + * pwconv. Depends on "x" as password in /etc/passwd which means that the + * password has already been moved to /etc/shadow. There is no need to move + * /etc/npasswd to /etc/passwd, password files are updated using library * routines with proper locking. * - * Can be used to update /etc/shadow after adding/deleting users - * by editing /etc/passwd. There is no man page yet, but this - * program should be close to pwconv(1M) on Solaris 2.x. + * Can be used to update /etc/shadow after adding/deleting users by editing + * /etc/passwd. There is no man page yet, but this program should be close + * to pwconv(1M) on Solaris 2.x. * - * Warning: make sure that all users have "x" as the password in - * /etc/passwd before running this program for the first time on - * a system which already has shadow passwords. Anything else - * (like "*" from old versions of the shadow suite) will replace - * the user's encrypted password in /etc/shadow. + * Warning: make sure that all users have "x" as the password in /etc/passwd + * before running this program for the first time on a system which already + * has shadow passwords. Anything else (like "*" from old versions of the + * shadow suite) will replace the user's encrypted password in /etc/shadow. * - * Doesn't currently support pw_age information in /etc/passwd, - * and doesn't support DBM files. Add it if you need it... + * Doesn't currently support pw_age information in /etc/passwd, and doesn't + * support DBM files. Add it if you need it... * * Copyright (C) 1996-1997, Marek Michalkiewicz * - * This program may be freely used and distributed for any purposes. - * If you improve it, please send me your changes. Thanks! + * This program may be freely used and distributed for any purposes. If you + * improve it, please send me your changes. Thanks! */ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: pwconv.c,v 1.11 2000/08/26 18:27:18 marekm Exp $") - +RCSID (PKG_VER "$Id: pwconv.c,v 1.12 2002/01/05 15:41:44 kloczek Exp $") #include #include #include @@ -40,18 +37,15 @@ RCSID(PKG_VER "$Id: pwconv.c,v 1.11 2000/08/26 18:27:18 marekm Exp $") #include #include #include - #include #include "prototypes.h" #include "defines.h" #include "pwio.h" #include "shadowio.h" #include "getdef.h" - /* * exit status values */ - #define E_SUCCESS 0 /* success */ #define E_NOPERM 1 /* permission denied */ #define E_USAGE 2 /* bad command syntax */ @@ -59,26 +53,22 @@ RCSID(PKG_VER "$Id: pwconv.c,v 1.11 2000/08/26 18:27:18 marekm Exp $") #define E_MISSING 4 /* unexpected failure, passwd file missing */ #define E_PWDBUSY 5 /* passwd file(s) busy */ #define E_BADENTRY 6 /* bad shadow entry */ - static int - shadow_locked = 0, - passwd_locked = 0; + shadow_locked = 0, passwd_locked = 0; /* local function prototypes */ -static void fail_exit(int); +static void fail_exit (int); -static void -fail_exit(int status) +static void fail_exit (int status) { if (shadow_locked) - spw_unlock(); + spw_unlock (); if (passwd_locked) - pw_unlock(); - exit(status); + pw_unlock (); + exit (status); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { const struct passwd *pw; struct passwd pwent; @@ -86,102 +76,108 @@ main(int argc, char **argv) struct spwd spent; char *Prog = argv[0]; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - if (!pw_lock()) { - fprintf(stderr, _("%s: can't lock passwd file\n"), Prog); - fail_exit(E_PWDBUSY); + if (!pw_lock ()) { + fprintf (stderr, _("%s: can't lock passwd file\n"), Prog); + fail_exit (E_PWDBUSY); } passwd_locked++; - if (!pw_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open passwd file\n"), Prog); - fail_exit(E_MISSING); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open passwd file\n"), Prog); + fail_exit (E_MISSING); } - if (!spw_lock()) { - fprintf(stderr, _("%s: can't lock shadow file\n"), Prog); - fail_exit(E_PWDBUSY); + if (!spw_lock ()) { + fprintf (stderr, _("%s: can't lock shadow file\n"), Prog); + fail_exit (E_PWDBUSY); } shadow_locked++; - if (!spw_open(O_CREAT | O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow file\n"), Prog); - fail_exit(E_FAILURE); + if (!spw_open (O_CREAT | O_RDWR)) { + fprintf (stderr, _("%s: can't open shadow file\n"), Prog); + fail_exit (E_FAILURE); } /* * Remove /etc/shadow entries for users not in /etc/passwd. */ - spw_rewind(); - while ((sp = spw_next())) { - if (pw_locate(sp->sp_namp)) + spw_rewind (); + while ((sp = spw_next ())) { + if (pw_locate (sp->sp_namp)) continue; - if (!spw_remove(sp->sp_namp)) { + if (!spw_remove (sp->sp_namp)) { /* * This shouldn't happen (the entry exists) but... */ - fprintf(stderr, - _("%s: can't remove shadow entry for %s\n"), - Prog, sp->sp_namp); - fail_exit(E_FAILURE); + fprintf (stderr, + _ + ("%s: can't remove shadow entry for %s\n"), + Prog, sp->sp_namp); + fail_exit (E_FAILURE); } } /* - * Update shadow entries which don't have "x" as pw_passwd. - * Add any missing shadow entries. + * Update shadow entries which don't have "x" as pw_passwd. Add any + * missing shadow entries. */ - pw_rewind(); - while ((pw = pw_next())) { - sp = spw_locate(pw->pw_name); + pw_rewind (); + while ((pw = pw_next ())) { + sp = spw_locate (pw->pw_name); if (sp) { /* do we need to update this entry? */ - if (strcmp(pw->pw_passwd, SHADOW_PASSWD_STRING) == 0) + if (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == + 0) continue; /* update existing shadow entry */ spent = *sp; } else { /* add new shadow entry */ - memset(&spent, 0, sizeof spent); + memset (&spent, 0, sizeof spent); spent.sp_namp = pw->pw_name; - spent.sp_min = getdef_num("PASS_MIN_DAYS", -1); - spent.sp_max = getdef_num("PASS_MAX_DAYS", -1); - spent.sp_warn = getdef_num("PASS_WARN_AGE", -1); + spent.sp_min = getdef_num ("PASS_MIN_DAYS", -1); + spent.sp_max = getdef_num ("PASS_MAX_DAYS", -1); + spent.sp_warn = getdef_num ("PASS_WARN_AGE", -1); spent.sp_inact = -1; spent.sp_expire = -1; spent.sp_flag = -1; } spent.sp_pwdp = pw->pw_passwd; - spent.sp_lstchg = time((time_t *) 0) / (24L*3600L); - if (!spw_update(&spent)) { - fprintf(stderr, - _("%s: can't update shadow entry for %s\n"), - Prog, spent.sp_namp); - fail_exit(E_FAILURE); + spent.sp_lstchg = time ((time_t *) 0) / (24L * 3600L); + if (!spw_update (&spent)) { + fprintf (stderr, + _ + ("%s: can't update shadow entry for %s\n"), + Prog, spent.sp_namp); + fail_exit (E_FAILURE); } /* remove password from /etc/passwd */ pwent = *pw; - pwent.pw_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ - if (!pw_update(&pwent)) { - fprintf(stderr, - _("%s: can't update passwd entry for %s\n"), - Prog, pwent.pw_name); - fail_exit(E_FAILURE); + pwent.pw_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ + if (!pw_update (&pwent)) { + fprintf (stderr, + _ + ("%s: can't update passwd entry for %s\n"), + Prog, pwent.pw_name); + fail_exit (E_FAILURE); } } - if (!spw_close()) { - fprintf(stderr, _("%s: can't update shadow file\n"), Prog); - fail_exit(E_FAILURE); + if (!spw_close ()) { + fprintf (stderr, _("%s: can't update shadow file\n"), + Prog); + fail_exit (E_FAILURE); } - if (!pw_close()) { - fprintf(stderr, _("%s: can't update passwd file\n"), Prog); - fail_exit(E_FAILURE); + if (!pw_close ()) { + fprintf (stderr, _("%s: can't update passwd file\n"), + Prog); + fail_exit (E_FAILURE); } - chmod(PASSWD_FILE "-", 0600); /* /etc/passwd- (backup file) */ - spw_unlock(); - pw_unlock(); - exit(E_SUCCESS); + chmod (PASSWD_FILE "-", 0600); /* /etc/passwd- (backup file) */ + spw_unlock (); + pw_unlock (); + exit (E_SUCCESS); } diff --git a/src/pwunconv.c b/src/pwunconv.c index 64b7f8cb..2e408afa 100644 --- a/src/pwunconv.c +++ b/src/pwunconv.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: pwunconv.c,v 1.10 2001/01/25 10:36:07 kloczek Exp $") - +RCSID (PKG_VER "$Id: pwunconv.c,v 1.11 2002/01/05 15:41:44 kloczek Exp $") #include "defines.h" #include #include @@ -41,49 +40,44 @@ RCSID(PKG_VER "$Id: pwunconv.c,v 1.10 2001/01/25 10:36:07 kloczek Exp $") #include "prototypes.h" #include "pwio.h" #include "shadowio.h" - #ifndef SHADOWPWD -int -main(int argc, char **argv) +int main (int argc, char **argv) { - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - fprintf(stderr, _("%s: Shadow passwords are not configured.\n"), - argv[0]); - exit(1); + fprintf (stderr, _("%s: Shadow passwords are not configured.\n"), + argv[0]); + exit (1); } -#else /*{*/ +#else /*{ */ +char *l64a (); -char *l64a (); - -static int shadow_locked = 0, - passwd_locked = 0; +static int shadow_locked = 0, passwd_locked = 0; /* local function prototypes */ -static void fail_exit(int); +static void fail_exit (int); -static void -fail_exit(int status) +static void fail_exit (int status) { if (shadow_locked) - spw_unlock(); + spw_unlock (); if (passwd_locked) - pw_unlock(); - exit(status); + pw_unlock (); + exit (status); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { const struct passwd *pw; struct passwd pwent; const struct spwd *spwd; + #ifdef ATT_AGE - char newage[5]; + char newage[5]; #endif char *Prog = argv[0]; @@ -91,33 +85,33 @@ main(int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - if (!spw_file_present()) + if (!spw_file_present ()) /* shadow not installed, do nothing */ - exit(0); + exit (0); - if (!pw_lock()) { - fprintf(stderr, _("%s: can't lock passwd file\n"), Prog); - fail_exit(5); + if (!pw_lock ()) { + fprintf (stderr, _("%s: can't lock passwd file\n"), Prog); + fail_exit (5); } passwd_locked++; - if (!pw_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open passwd file\n"), Prog); - fail_exit(1); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open passwd file\n"), Prog); + fail_exit (1); } - if (!spw_lock()) { - fprintf(stderr, _("%s: can't open shadow file\n"), Prog); - fail_exit(5); + if (!spw_lock ()) { + fprintf (stderr, _("%s: can't open shadow file\n"), Prog); + fail_exit (5); } shadow_locked++; - if (!spw_open(O_RDWR)) { - fprintf(stderr, _("%s: can't open shadow file\n"), Prog); - fail_exit(1); + if (!spw_open (O_RDWR)) { + fprintf (stderr, _("%s: can't open shadow file\n"), Prog); + fail_exit (1); } - pw_rewind(); - while ((pw = pw_next())) { - if (!(spwd = spw_locate(pw->pw_name))) + pw_rewind (); + while ((pw = pw_next ())) { + if (!(spwd = spw_locate (pw->pw_name))) continue; pwent = *pw; @@ -125,63 +119,72 @@ main(int argc, char **argv) /* * Update password if non-shadow is "x". */ - if (strcmp(pw->pw_passwd, SHADOW_PASSWD_STRING) == 0) + if (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == 0) pwent.pw_passwd = spwd->sp_pwdp; /* - * Password aging works differently in the two different systems. - * With shadow password files you apparently must have some aging - * information. The maxweeks or minweeks may not map exactly. - * In pwconv we set max == 10000, which is about 30 years. Here - * we have to undo that kludge. So, if maxdays == 10000, no aging - * information is put into the new file. Otherwise, the days are - * converted to weeks and so on. + * Password aging works differently in the two different + * systems. With shadow password files you apparently must + * have some aging information. The maxweeks or minweeks + * may not map exactly. In pwconv we set max == 10000, + * which is about 30 years. Here we have to undo that + * kludge. So, if maxdays == 10000, no aging information is + * put into the new file. Otherwise, the days are converted + * to weeks and so on. */ #ifdef ATT_AGE - if (spwd->sp_max > (63*WEEK/SCALE) && spwd->sp_max < 10000) - spwd->sp_max = (63*WEEK/SCALE); /* 10000 is infinity */ + if (spwd->sp_max > (63 * WEEK / SCALE) + && spwd->sp_max < 10000) + spwd->sp_max = (63 * WEEK / SCALE); /* 10000 is infinity */ - if (spwd->sp_min >= 0 && spwd->sp_min <= 63*7 && - spwd->sp_max >= 0 && spwd->sp_max <= 63*7) { + if (spwd->sp_min >= 0 && spwd->sp_min <= 63 * 7 && + spwd->sp_max >= 0 && spwd->sp_max <= 63 * 7) { if (spwd->sp_lstchg == -1) spwd->sp_lstchg = 0; - spwd->sp_max /= WEEK/SCALE; /* turn it into weeks */ - spwd->sp_min /= WEEK/SCALE; - spwd->sp_lstchg /= WEEK/SCALE; + spwd->sp_max /= WEEK / SCALE; /* turn it into weeks */ + spwd->sp_min /= WEEK / SCALE; + spwd->sp_lstchg /= WEEK / SCALE; - strncpy (newage, l64a (spwd->sp_lstchg * (64L*64L) + - spwd->sp_min * (64L) + spwd->sp_max), 5); + strncpy (newage, + l64a (spwd->sp_lstchg * (64L * 64L) + + spwd->sp_min * (64L) + + spwd->sp_max), 5); pwent.pw_age = newage; } else pwent.pw_age = ""; -#endif /* ATT_AGE */ - if (!pw_update(&pwent)) { - fprintf(stderr, - _("%s: can't update entry for user %s\n"), - Prog, pwent.pw_name); - fail_exit(3); +#endif /* ATT_AGE */ + if (!pw_update (&pwent)) { + fprintf (stderr, + _("%s: can't update entry for user %s\n"), + Prog, pwent.pw_name); + fail_exit (3); } } - if (!spw_close()) { - fprintf(stderr, _("%s: can't update shadow password file\n"), Prog); - fail_exit(3); + if (!spw_close ()) { + fprintf (stderr, + _("%s: can't update shadow password file\n"), + Prog); + fail_exit (3); } - if (!pw_close()) { - fprintf(stderr, _("%s: can't update password file\n"), Prog); - fail_exit(3); + if (!pw_close ()) { + fprintf (stderr, _("%s: can't update password file\n"), + Prog); + fail_exit (3); } - if (unlink(SHADOW) != 0) { - fprintf(stderr, _("%s: can't delete shadow password file\n"), Prog); - fail_exit(3); + if (unlink (SHADOW) != 0) { + fprintf (stderr, + _("%s: can't delete shadow password file\n"), + Prog); + fail_exit (3); } - spw_unlock(); - pw_unlock(); + spw_unlock (); + pw_unlock (); return 0; } #endif diff --git a/src/su.c b/src/su.c index a8d7d00f..1a7417fa 100644 --- a/src/su.c +++ b/src/su.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,17 +30,14 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: su.c,v 1.18 2001/06/28 20:47:06 kloczek Exp $") - +RCSID (PKG_VER "$Id: su.c,v 1.21 2002/01/05 15:41:44 kloczek Exp $") #include #include - #ifdef USE_PAM #include "pam_defs.h" - static const struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; static pam_handle_t *pamh = NULL; @@ -69,7 +66,7 @@ static char oldname[BUFSIZ]; static char *Prog; -struct passwd pwent; +struct passwd pwent; /* * External identifiers @@ -84,144 +81,141 @@ extern char **environ; #ifndef USE_PAM -static RETSIGTYPE die(int); -static int iswheel(const char *); +static RETSIGTYPE die (int); +static int iswheel (const char *); /* * die - set or reset termio modes. * - * die() is called before processing begins. signal() is then - * called with die() as the signal handler. If signal later - * calls die() with a signal number, the terminal modes are - * then reset. + * die() is called before processing begins. signal() is then called + * with die() as the signal handler. If signal later calls die() with a + * signal number, the terminal modes are then reset. */ -static RETSIGTYPE -die(int killed) +static RETSIGTYPE die (int killed) { static TERMIO sgtty; if (killed) - STTY(0, &sgtty); + STTY (0, &sgtty); else - GTTY(0, &sgtty); + GTTY (0, &sgtty); if (killed) { - closelog(); - exit(killed); + closelog (); + exit (killed); } } -static int -iswheel(const char *username) +static int iswheel (const char *username) { struct group *grp; - grp = getgrgid(0); + grp = getgrgid (0); if (!grp || !grp->gr_mem) return 0; - return is_on_list(grp->gr_mem, username); + return is_on_list (grp->gr_mem, username); } -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ -static void -su_failure(const char *tty) +static void su_failure (const char *tty) { - sulog(tty, 0, oldname, name); /* log failed attempt */ + sulog (tty, 0, oldname, name); /* log failed attempt */ #ifdef USE_SYSLOG - if (getdef_bool("SYSLOG_SU_ENAB")) - SYSLOG((pwent.pw_uid ? LOG_INFO:LOG_NOTICE, - "- %s %s-%s\n", tty, - oldname[0] ? oldname:"???", - name[0] ? name:"???")); - closelog(); + if (getdef_bool ("SYSLOG_SU_ENAB")) + SYSLOG ((pwent.pw_uid ? LOG_INFO : LOG_NOTICE, + "- %s %s-%s", tty, + oldname[0] ? oldname : "???", + name[0] ? name : "???")); + closelog (); #endif - puts(_("Sorry.")); - exit(1); + puts (_("Sorry.")); + exit (1); } /* * su - switch user id * - * su changes the user's ids to the values for the specified user. - * if no new user name is specified, "root" is used by default. + * su changes the user's ids to the values for the specified user. if + * no new user name is specified, "root" is used by default. * - * The only valid option is a "-" character, which is interpreted - * as requiring a new login session to be simulated. + * The only valid option is a "-" character, which is interpreted as + * requiring a new login session to be simulated. * - * Any additional arguments are passed to the user's shell. In - * particular, the argument "-c" will cause the next argument to - * be interpreted as a command by the common shell programs. + * Any additional arguments are passed to the user's shell. In + * particular, the argument "-c" will cause the next argument to be + * interpreted as a command by the common shell programs. */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { - char *cp; - const char *tty = 0; /* Name of tty SU is run from */ - int doshell = 0; - int fakelogin = 0; - int amroot = 0; + char *cp; + const char *tty = 0; /* Name of tty SU is run from */ + int doshell = 0; + int fakelogin = 0; + int amroot = 0; uid_t my_uid; - struct passwd *pw = 0; - char **envp = environ; + struct passwd *pw = 0; + char **envp = environ; + #ifdef USE_PAM int ret; -#else /* !USE_PAM */ - RETSIGTYPE (*oldsig)(); +#else /* !USE_PAM */ + RETSIGTYPE (*oldsig) (); int is_console = 0; + #ifdef SHADOWPWD - struct spwd *spwd = 0; + struct spwd *spwd = 0; #endif #ifdef SU_ACCESS char *oldpass; #endif -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ - sanitize_env(); + sanitize_env (); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); /* - * Get the program name. The program name is used as a - * prefix to most error messages. + * Get the program name. The program name is used as a prefix to + * most error messages. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - OPENLOG("su"); + OPENLOG ("su"); - initenv(); + initenv (); - my_uid = getuid(); + my_uid = getuid (); amroot = (my_uid == 0); /* - * Get the tty name. Entries will be logged indicating that - * the user tried to change to the named new user from the - * current terminal. + * Get the tty name. Entries will be logged indicating that the user + * tried to change to the named new user from the current terminal. */ - if (isatty(0) && (cp = ttyname(0))) { + if (isatty (0) && (cp = ttyname (0))) { if (strncmp (cp, "/dev/", 5) == 0) tty = cp + 5; else tty = cp; #ifndef USE_PAM - is_console = console(tty); + is_console = console (tty); #endif } else { /* * Be more paranoid, like su from SimplePAMApps. --marekm */ if (!amroot) { - fprintf(stderr, _("%s: must be run from a terminal\n"), - Prog); - exit(1); + fprintf (stderr, + _("%s: must be run from a terminal\n"), + Prog); + exit (1); } tty = "???"; } @@ -230,65 +224,67 @@ main(int argc, char **argv) * Process the command line arguments. */ - argc--; argv++; /* shift out command name */ + argc--; + argv++; /* shift out command name */ - if (argc > 0 && strcmp(argv[0], "-") == 0) { + if (argc > 0 && strcmp (argv[0], "-") == 0) { fakelogin = 1; - argc--; argv++; /* shift ... */ + argc--; + argv++; /* shift ... */ } /* - * If a new login is being set up, the old environment will - * be ignored and a new one created later on. + * If a new login is being set up, the old environment will be + * ignored and a new one created later on. */ if (fakelogin) { - if ((cp=getdef_str("ENV_TZ"))) - addenv(*cp == '/' ? tz(cp) : cp, NULL); - /* - * The clock frequency will be reset to the login value if required - */ - if ((cp=getdef_str("ENV_HZ"))) - addenv(cp, NULL); /* set the default $HZ, if one */ - /* - * The terminal type will be left alone if it is present in the - * environment already. - */ + if ((cp = getdef_str ("ENV_TZ"))) + addenv (*cp == '/' ? tz (cp) : cp, NULL); + /* + * The clock frequency will be reset to the login value if required + */ + if ((cp = getdef_str ("ENV_HZ"))) + addenv (cp, NULL); /* set the default $HZ, if one */ + /* + * The terminal type will be left alone if it is present in + * the environment already. + */ if ((cp = getenv ("TERM"))) - addenv("TERM", cp); + addenv ("TERM", cp); } else { while (*envp) - addenv(*envp++, NULL); + addenv (*envp++, NULL); } /* - * The next argument must be either a user ID, or some flag to - * a subshell. Pretty sticky since you can't have an argument - * which doesn't start with a "-" unless you specify the new user - * name. Any remaining arguments will be passed to the user's - * login shell. + * The next argument must be either a user ID, or some flag to a + * subshell. Pretty sticky since you can't have an argument which + * doesn't start with a "-" unless you specify the new user name. + * Any remaining arguments will be passed to the user's login shell. */ if (argc > 0 && argv[0][0] != '-') { - STRFCPY(name, argv[0]); /* use this login id */ - argc--; argv++; /* shift ... */ + STRFCPY (name, argv[0]); /* use this login id */ + argc--; + argv++; /* shift ... */ } - if (! name[0]) /* use default user ID */ + if (!name[0]) /* use default user ID */ (void) strcpy (name, "root"); - doshell = argc == 0; /* any arguments remaining? */ + doshell = argc == 0; /* any arguments remaining? */ /* - * Get the user's real name. The current UID is used to determine - * who has executed su. That user ID must exist. + * Get the user's real name. The current UID is used to determine + * who has executed su. That user ID must exist. */ - pw = get_my_pwent(); + pw = get_my_pwent (); if (!pw) { - SYSLOG((LOG_CRIT, "Unknown UID: %d\n", (int) my_uid)); - su_failure(tty); + SYSLOG ((LOG_CRIT, "Unknown UID: %u", my_uid)); + su_failure (tty); } - STRFCPY(oldname, pw->pw_name); + STRFCPY (oldname, pw->pw_name); #ifndef USE_PAM #ifdef SU_ACCESS @@ -297,129 +293,141 @@ main(int argc, char **argv) * -- chris */ #ifdef SHADOWPWD - if ((spwd = getspnam(oldname))) + if ((spwd = getspnam (oldname))) pw->pw_passwd = spwd->sp_pwdp; #endif - oldpass = xstrdup(pw->pw_passwd); -#endif /* SU_ACCESS */ + oldpass = xstrdup (pw->pw_passwd); +#endif /* SU_ACCESS */ -#else /* USE_PAM */ - ret = pam_start("su", name, &conv, &pamh); +#else /* USE_PAM */ + ret = pam_start ("su", name, &conv, &pamh); if (ret != PAM_SUCCESS) { - SYSLOG((LOG_ERR, "pam_start: error %d\n", ret); - fprintf(stderr, _("%s: pam_start: error %d\n"), Prog, ret)); - exit(1); + SYSLOG ((LOG_ERR, "pam_start: error %d", ret); + fprintf (stderr, _("%s: pam_start: error %d\n"), + Prog, ret)); + exit (1); } - ret = pam_set_item(pamh, PAM_TTY, (const void *) tty); + ret = pam_set_item (pamh, PAM_TTY, (const void *) tty); if (ret == PAM_SUCCESS) - ret = pam_set_item(pamh, PAM_RUSER, (const void *) oldname); + ret = + pam_set_item (pamh, PAM_RUSER, (const void *) oldname); if (ret != PAM_SUCCESS) { - SYSLOG((LOG_ERR, "pam_set_item: %s\n", pam_strerror(pamh, ret))); - fprintf(stderr, "%s: %s\n", Prog, pam_strerror(pamh, ret)); - pam_end(pamh, ret); - exit(1); + SYSLOG ((LOG_ERR, "pam_set_item: %s", + pam_strerror (pamh, ret))); + fprintf (stderr, "%s: %s\n", Prog, + pam_strerror (pamh, ret)); + pam_end (pamh, ret); + exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ -top: + top: /* - * This is the common point for validating a user whose name - * is known. It will be reached either by normal processing, - * or if the user is to be logged into a subsystem root. + * This is the common point for validating a user whose name is + * known. It will be reached either by normal processing, or if the + * user is to be logged into a subsystem root. * - * The password file entries for the user is gotten and the - * account validated. + * The password file entries for the user is gotten and the account + * validated. */ - if (!(pw = getpwnam(name))) { + if (!(pw = getpwnam (name))) { (void) fprintf (stderr, _("Unknown id: %s\n"), name); - closelog(); - exit(1); + closelog (); + exit (1); } - #ifndef USE_PAM #ifdef SHADOWPWD spwd = NULL; - if (strcmp(pw->pw_passwd, SHADOW_PASSWD_STRING) == 0 && (spwd = getspnam(name))) + if (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == 0 + && (spwd = getspnam (name))) pw->pw_passwd = spwd->sp_pwdp; #endif -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ pwent = *pw; #ifndef USE_PAM /* - * BSD systems only allow "wheel" to SU to root. USG systems - * don't, so we make this a configurable option. + * BSD systems only allow "wheel" to SU to root. USG systems don't, + * so we make this a configurable option. */ - /* The original Shadow 3.3.2 did this differently. Do it like BSD: - - - check for uid 0 instead of name "root" - there are systems - with several root accounts under different names, - - - check the contents of /etc/group instead of the current group - set (you must be listed as a member, GID 0 is not sufficient). - - In addition to this traditional feature, we now have complete - su access control (allow, deny, no password, own password). - Thanks to Chris Evans . */ + /* The original Shadow 3.3.2 did this differently. Do it like BSD: + * + * - check for uid 0 instead of name "root" - there are systems with + * several root accounts under different names, + * + * - check the contents of /etc/group instead of the current group + * set (you must be listed as a member, GID 0 is not sufficient). + * + * In addition to this traditional feature, we now have complete su + * access control (allow, deny, no password, own password). Thanks + * to Chris Evans . + */ if (!amroot) { - if (pwent.pw_uid == 0 && getdef_bool("SU_WHEEL_ONLY") - && !iswheel(oldname)) { - fprintf(stderr, _("You are not authorized to su %s\n"), name); - exit(1); + if (pwent.pw_uid == 0 && getdef_bool ("SU_WHEEL_ONLY") + && !iswheel (oldname)) { + fprintf (stderr, + _("You are not authorized to su %s\n"), + name); + exit (1); } #ifdef SU_ACCESS - switch (check_su_auth(oldname, name)) { - case 0: /* normal su, require target user's password */ + switch (check_su_auth (oldname, name)) { + case 0: /* normal su, require target user's password */ break; - case 1: /* require no password */ - pwent.pw_passwd = ""; /* XXX warning: const */ + case 1: /* require no password */ + pwent.pw_passwd = ""; /* XXX warning: const */ break; - case 2: /* require own password */ - puts(_("(Enter your own password.)")); + case 2: /* require own password */ + puts (_("(Enter your own password.)")); pwent.pw_passwd = oldpass; break; - default: /* access denied (-1) or unexpected value */ - fprintf(stderr, _("You are not authorized to su %s\n"), name); - exit(1); + default: /* access denied (-1) or unexpected value */ + fprintf (stderr, + _("You are not authorized to su %s\n"), + name); + exit (1); } -#endif /* SU_ACCESS */ +#endif /* SU_ACCESS */ } -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ /* * Set the default shell. */ if (pwent.pw_shell[0] == '\0') - pwent.pw_shell = "/bin/sh"; /* XXX warning: const */ + pwent.pw_shell = "/bin/sh"; /* XXX warning: const */ #ifdef USE_PAM - ret = pam_authenticate(pamh, 0); + ret = pam_authenticate (pamh, 0); if (ret != PAM_SUCCESS) { - SYSLOG((LOG_ERR, "pam_authenticate: %s\n", - pam_strerror(pamh, ret))); - fprintf(stderr, "%s: %s\n", Prog, pam_strerror(pamh, ret)); - pam_end(pamh, ret); - su_failure(tty); + SYSLOG ((LOG_ERR, "pam_authenticate: %s", + pam_strerror (pamh, ret))); + fprintf (stderr, "%s: %s\n", Prog, + pam_strerror (pamh, ret)); + pam_end (pamh, ret); + su_failure (tty); } - ret = pam_acct_mgmt(pamh, 0); + ret = pam_acct_mgmt (pamh, 0); if (ret != PAM_SUCCESS) { if (amroot) { - fprintf(stderr, _("%s: %s\n(Ignored)\n"), Prog, pam_strerror(pamh, ret)); + fprintf (stderr, _("%s: %s\n(Ignored)\n"), Prog, + pam_strerror (pamh, ret)); } else { - SYSLOG((LOG_ERR, "pam_acct_mgmt: %s\n", - pam_strerror(pamh, ret))); - fprintf(stderr, "%s: %s\n", Prog, pam_strerror(pamh, ret)); - pam_end(pamh, ret); - su_failure(tty); + SYSLOG ((LOG_ERR, "pam_acct_mgmt: %s", + pam_strerror (pamh, ret))); + fprintf (stderr, "%s: %s\n", Prog, + pam_strerror (pamh, ret)); + pam_end (pamh, ret); + su_failure (tty); } } -#else /* !USE_PAM */ +#else /* !USE_PAM */ /* * Set up a signal handler in case the user types QUIT. */ @@ -428,84 +436,83 @@ top: oldsig = signal (SIGQUIT, die); /* - * See if the system defined authentication method is being used. - * The first character of an administrator defined method is an - * '@' character. + * See if the system defined authentication method is being used. + * The first character of an administrator defined method is an '@' + * character. */ - if (! amroot && pw_auth (pwent.pw_passwd, name, PW_SU, (char *) 0)) { - SYSLOG((pwent.pw_uid ? LOG_NOTICE:LOG_WARN, - "Authentication failed for %s\n", name)); - su_failure(tty); + if (!amroot && pw_auth (pwent.pw_passwd, name, PW_SU, (char *) 0)) { + SYSLOG ((pwent.pw_uid ? LOG_NOTICE : LOG_WARN, + "Authentication failed for %s", name)); + su_failure (tty); } signal (SIGQUIT, oldsig); /* - * Check to see if the account is expired. root gets to - * ignore any expired accounts, but normal users can't become - * a user with an expired password. + * Check to see if the account is expired. root gets to ignore any + * expired accounts, but normal users can't become a user with an + * expired password. */ - if (! amroot) { + if (!amroot) { #ifdef SHADOWPWD if (!spwd) - spwd = pwd_to_spwd(&pwent); + spwd = pwd_to_spwd (&pwent); - if (isexpired(&pwent, spwd)) { - SYSLOG((pwent.pw_uid ? LOG_WARN : LOG_CRIT, - "Expired account %s\n", name)); - su_failure(tty); + if (isexpired (&pwent, spwd)) { + SYSLOG ((pwent.pw_uid ? LOG_WARN : LOG_CRIT, + "Expired account %s", name)); + su_failure (tty); } #else -#if defined(ATT_AGE) && defined(AGING) - else if (pwent.pw_age[0] && - isexpired (&pwent)) { - SYSLOG((pwent.pw_uid ? LOG_WARN:LOG_CRIT, - "Expired account %s\n", name)); - su_failure(tty); +#if defined(ATT_AGE) + if (pwent.pw_age[0] && isexpired (&pwent)) { + SYSLOG ((pwent.pw_uid ? LOG_WARN : LOG_CRIT, + "Expired account %s", name)); + su_failure (tty); } -#endif /* ATT_AGE */ +#endif /* ATT_AGE */ #endif } /* - * Check to see if the account permits "su". root gets to - * ignore any restricted accounts, but normal users can't become - * a user if there is a "SU" entry in the /etc/porttime file - * denying access to the account. + * Check to see if the account permits "su". root gets to ignore any + * restricted accounts, but normal users can't become a user if + * there is a "SU" entry in the /etc/porttime file denying access to + * the account. */ - if (! amroot) { - if (! isttytime (pwent.pw_name, "SU", time ((time_t *) 0))) { - SYSLOG((pwent.pw_uid ? LOG_WARN : LOG_CRIT, - "SU by %s to restricted account %s\n", - oldname, name)); - su_failure(tty); + if (!amroot) { + if (!isttytime (pwent.pw_name, "SU", time ((time_t *) 0))) { + SYSLOG ((pwent.pw_uid ? LOG_WARN : LOG_CRIT, + "SU by %s to restricted account %s", + oldname, name)); + su_failure (tty); } } -#endif /* !USE_PAM */ +#endif /* !USE_PAM */ - signal(SIGINT, SIG_DFL); - cp = getdef_str((pwent.pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH"); + signal (SIGINT, SIG_DFL); + cp = getdef_str ((pwent.pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH"); #if 0 - addenv(cp ? cp : "PATH=/bin:/usr/bin", NULL); + addenv (cp ? cp : "PATH=/bin:/usr/bin", NULL); #else /* XXX very similar code duplicated in libmisc/setupenv.c */ if (!cp) { - addenv("PATH=/bin:/usr/bin", NULL); - } else if (strchr(cp, '=')) { - addenv(cp, NULL); + addenv ("PATH=/bin:/usr/bin", NULL); + } else if (strchr (cp, '=')) { + addenv (cp, NULL); } else { - addenv("PATH", cp); + addenv ("PATH", cp); } #endif - environ = newenvp; /* make new environment active */ + environ = newenvp; /* make new environment active */ - if (getenv ("IFS")) /* don't export user IFS ... */ - addenv("IFS= \t\n", NULL); /* ... instead, set a safe IFS */ + if (getenv ("IFS")) /* don't export user IFS ... */ + addenv ("IFS= \t\n", NULL); /* ... instead, set a safe IFS */ - if (pwent.pw_shell[0] == '*') { /* subsystem root required */ + if (pwent.pw_shell[0] == '*') { /* subsystem root required */ pwent.pw_shell++; /* skip the '*' */ subsystem (&pwent); /* figure out what to execute */ endpwent (); @@ -515,110 +522,113 @@ top: goto top; } - sulog(tty, 1, oldname, name); /* save SU information */ + sulog (tty, 1, oldname, name); /* save SU information */ endpwent (); #ifdef SHADOWPWD endspent (); #endif #ifdef USE_SYSLOG - if (getdef_bool("SYSLOG_SU_ENAB")) - SYSLOG((LOG_INFO, "+ %s %s-%s\n", tty, - oldname[0] ? oldname:"???", name[0] ? name:"???")); + if (getdef_bool ("SYSLOG_SU_ENAB")) + SYSLOG ((LOG_INFO, "+ %s %s-%s", tty, + oldname[0] ? oldname : "???", + name[0] ? name : "???")); #endif #ifdef USE_PAM /* set primary group id and supplementary groups */ - if (setup_groups(&pwent)) { - pam_end(pamh, PAM_ABORT); - exit(1); + if (setup_groups (&pwent)) { + pam_end (pamh, PAM_ABORT); + exit (1); } - /* pam_setcred() may do things like resource limits, console groups, - and much more, depending on the configured modules */ - ret = pam_setcred(pamh, PAM_ESTABLISH_CRED); + /* + * pam_setcred() may do things like resource limits, console groups, + * and much more, depending on the configured modules + */ + ret = pam_setcred (pamh, PAM_ESTABLISH_CRED); if (ret != PAM_SUCCESS) { - SYSLOG((LOG_ERR, "pam_setcred: %s\n", pam_strerror(pamh, ret))); - fprintf(stderr, "%s: %s\n", Prog, pam_strerror(pamh, ret)); - pam_end(pamh, ret); - exit(1); + SYSLOG ((LOG_ERR, "pam_setcred: %s", + pam_strerror (pamh, ret))); + fprintf (stderr, "%s: %s\n", Prog, + pam_strerror (pamh, ret)); + pam_end (pamh, ret); + exit (1); } /* become the new user */ - if (change_uid(&pwent)) { - pam_setcred(pamh, PAM_DELETE_CRED); - pam_end(pamh, PAM_ABORT); - exit(1); + if (change_uid (&pwent)) { + pam_setcred (pamh, PAM_DELETE_CRED); + pam_end (pamh, PAM_ABORT); + exit (1); } /* now we are done using PAM */ - pam_end(pamh, PAM_SUCCESS); + pam_end (pamh, PAM_SUCCESS); -#else /* !USE_PAM */ - if (!amroot) /* no limits if su from root */ - setup_limits(&pwent); +#else /* !USE_PAM */ + if (!amroot) /* no limits if su from root */ + setup_limits (&pwent); - if (setup_uid_gid(&pwent, is_console)) - exit(1); -#endif /* !USE_PAM */ + if (setup_uid_gid (&pwent, is_console)) + exit (1); +#endif /* !USE_PAM */ if (fakelogin) - setup_env(&pwent); -#if 1 /* Suggested by Joey Hess. XXX - is this right? */ + setup_env (&pwent); +#if 1 /* Suggested by Joey Hess. XXX - is this right? */ else - addenv("HOME", pwent.pw_dir); + addenv ("HOME", pwent.pw_dir); #endif /* * This is a workaround for Linux libc bug/feature (?) - the - * /dev/log file descriptor is open without the close-on-exec - * flag and used to be passed to the new shell. There is - * "fcntl(LogFile, F_SETFD, 1)" in libc/misc/syslog.c, but - * it is commented out (at least in 5.4.33). Why? --marekm + * /dev/log file descriptor is open without the close-on-exec flag + * and used to be passed to the new shell. There is "fcntl(LogFile, + * F_SETFD, 1)" in libc/misc/syslog.c, but it is commented out (at + * least in 5.4.33). Why? --marekm */ - closelog(); + closelog (); /* - * See if the user has extra arguments on the command line. In - * that case they will be provided to the new user's shell as - * arguments. + * See if the user has extra arguments on the command line. In that + * case they will be provided to the new user's shell as arguments. */ if (fakelogin) { char *arg0; -#if 0 /* XXX - GNU su doesn't do this. --marekm */ - if (! hushed (&pwent)) { +#if 0 /* XXX - GNU su doesn't do this. --marekm */ + if (!hushed (&pwent)) { motd (); mailcheck (); } #endif - cp = getdef_str("SU_NAME"); + cp = getdef_str ("SU_NAME"); if (!cp) - cp = Basename(pwent.pw_shell); + cp = Basename (pwent.pw_shell); - arg0 = xmalloc(strlen(cp) + 2); + arg0 = xmalloc (strlen (cp) + 2); arg0[0] = '-'; - strcpy(arg0 + 1, cp); + strcpy (arg0 + 1, cp); cp = arg0; } else - cp = Basename(pwent.pw_shell); + cp = Basename (pwent.pw_shell); - if (! doshell) { + if (!doshell) { /* - * Use new user's shell from /etc/passwd and create an - * argv with the rest of the command line included. + * Use new user's shell from /etc/passwd and create an argv + * with the rest of the command line included. */ argv[-1] = pwent.pw_shell; (void) execv (pwent.pw_shell, &argv[-1]); (void) fprintf (stderr, _("No shell\n")); - SYSLOG((LOG_WARN, "Cannot execute %s\n", pwent.pw_shell)); - closelog(); + SYSLOG ((LOG_WARN, "Cannot execute %s", pwent.pw_shell)); + closelog (); exit (1); } - shell(pwent.pw_shell, cp); - /*NOTREACHED*/ - exit(1); + shell (pwent.pw_shell, cp); + /*NOTREACHED*/ exit (1); } diff --git a/src/sulogin.c b/src/sulogin.c index e33aec62..07d0130a 100644 --- a/src/sulogin.c +++ b/src/sulogin.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,28 +30,25 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: sulogin.c,v 1.12 2000/09/02 18:40:44 marekm Exp $") - +RCSID (PKG_VER "$Id: sulogin.c,v 1.13 2002/01/05 15:41:44 kloczek Exp $") #include "prototypes.h" #include "defines.h" #include "getdef.h" - #if HAVE_UTMPX_H #include #else #include #endif - #include #include #include #include #include "pwauth.h" - static char name[BUFSIZ]; static char pass[BUFSIZ]; static struct passwd pwent; + #if 0 #if HAVE_UTMPX_H static struct utmpx utent; @@ -64,58 +61,57 @@ static struct utmp utent; extern char **newenvp; extern size_t newenvc; -extern char **environ; +extern char **environ; #ifndef ALARM #define ALARM 60 #endif /* local function prototypes */ -static RETSIGTYPE catch(int); +static RETSIGTYPE catch (int); -static RETSIGTYPE -catch(int sig) +static RETSIGTYPE catch (int sig) { - exit(1); + exit (1); } -/* syslogd is usually not running at the time when sulogin is typically - called, cluttering the screen with unnecessary messages. Suggested - by Ivan Nejgebauer . --marekm */ +/* + * syslogd is usually not running at the time when sulogin is typically + * called, cluttering the screen with unnecessary messages. Suggested by + * Ivan Nejgebauer . --marekm + */ #undef USE_SYSLOG -/*ARGSUSED*/ -int -main(int argc, char **argv) + /*ARGSUSED*/ int main (int argc, char **argv) { - char *cp; - char **envp = environ; - TERMIO termio; + char *cp; + char **envp = environ; + TERMIO termio; #ifdef USE_TERMIO ioctl (0, TCGETA, &termio); - termio.c_iflag |= (ICRNL|IXON); - termio.c_oflag |= (OPOST|ONLCR); + termio.c_iflag |= (ICRNL | IXON); + termio.c_oflag |= (OPOST | ONLCR); termio.c_cflag |= (CREAD); - termio.c_lflag |= (ISIG|ICANON|ECHO|ECHOE|ECHOK); + termio.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK); ioctl (0, TCSETAF, &termio); #endif #ifdef USE_TERMIOS tcgetattr (0, &termio); - termio.c_iflag |= (ICRNL|IXON); + termio.c_iflag |= (ICRNL | IXON); termio.c_oflag |= (CREAD); - termio.c_lflag |= (ECHO|ECHOE|ECHOK|ICANON|ISIG); + termio.c_lflag |= (ECHO | ECHOE | ECHOK | ICANON | ISIG); tcsetattr (0, TCSANOW, &termio); #endif - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_SYSLOG - OPENLOG("sulogin"); + OPENLOG ("sulogin"); #endif - initenv(); + initenv (); if (argc > 1) { close (0); close (1); @@ -132,16 +128,16 @@ main(int argc, char **argv) exit (1); } } - if (access(PASSWD_FILE, F_OK) == -1) { /* must be a password file! */ - printf(_("No password file\n")); + if (access (PASSWD_FILE, F_OK) == -1) { /* must be a password file! */ + printf (_("No password file\n")); #ifdef USE_SYSLOG - syslog(LOG_WARN, "No password file\n"); + syslog (LOG_WARN, "No password file\n"); closelog (); #endif exit (1); } #if !defined(DEBUG) && defined(SULOGIN_ONLY_INIT) - if (getppid () != 1) { /* parent must be INIT */ + if (getppid () != 1) { /* parent must be INIT */ #ifdef USE_SYSLOG syslog (LOG_WARN, "Pid == %d, not 1\n", getppid ()); closelog (); @@ -149,69 +145,75 @@ main(int argc, char **argv) exit (1); } #endif - if (! isatty (0) || ! isatty (1) || ! isatty (2)) { + if (!isatty (0) || !isatty (1) || !isatty (2)) { #ifdef USE_SYSLOG closelog (); #endif - exit (1); /* must be a terminal */ + exit (1); /* must be a terminal */ } - while (*envp) /* add inherited environment, */ - addenv(*envp++, NULL); /* some variables change later */ + while (*envp) /* add inherited environment, */ + addenv (*envp++, NULL); /* some variables change later */ - if ((cp = getdef_str("ENV_TZ"))) - addenv(*cp == '/' ? tz(cp) : cp, NULL); - if ((cp = getdef_str("ENV_HZ"))) - addenv(cp, NULL); /* set the default $HZ, if one */ + if ((cp = getdef_str ("ENV_TZ"))) + addenv (*cp == '/' ? tz (cp) : cp, NULL); + if ((cp = getdef_str ("ENV_HZ"))) + addenv (cp, NULL); /* set the default $HZ, if one */ (void) strcpy (name, "root"); /* KLUDGE!!! */ signal (SIGALRM, catch); /* exit if the timer expires */ - alarm (ALARM); /* only wait so long ... */ + alarm (ALARM); /* only wait so long ... */ while (1) { /* repeatedly get login/password pairs */ - pw_entry(name, &pwent); /* get entry from password file */ + pw_entry (name, &pwent); /* get entry from password file */ if (pwent.pw_name == (char *) 0) { /* * Fail secure */ - printf(_("No password entry for 'root'\n")); + printf (_("No password entry for 'root'\n")); #ifdef USE_SYSLOG - syslog (LOG_WARN, "No password entry for 'root'\n"); + syslog (LOG_WARN, + "No password entry for 'root'\n"); closelog (); #endif exit (1); } - /* - * Here we prompt for the root password, or if no password is - * given we just exit. - */ + /* + * Here we prompt for the root password, or if no password + * is given we just exit. + */ - /* get a password for root */ - cp = getpass(_("\nType control-d to proceed with normal startup,\n(or give root password for system maintenance):")); - /* - * 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). --marekm - */ + /* get a password for root */ + cp = getpass (_ + ("\nType control-d to proceed with normal startup,\n(or give root password for system maintenance):")); + /* + * 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). + * --marekm + */ if (!cp || !*cp) { #ifdef USE_SYSLOG syslog (LOG_INFO, "Normal startup\n"); closelog (); #endif - puts("\n"); + puts ("\n"); #ifdef TELINIT - execl (PATH_TELINIT, "telinit", RUNLEVEL, (char *) 0); + execl (PATH_TELINIT, "telinit", RUNLEVEL, + (char *) 0); #endif exit (0); } else { - STRFCPY(pass, cp); - strzero(cp); + STRFCPY (pass, cp); + strzero (cp); } #ifdef AUTH_METHODS if (pwent.pw_name && pwent.pw_passwd[0] == '@') { - if (pw_auth (pwent.pw_passwd + 1, name, PW_LOGIN, (char *) 0)) { + if (pw_auth + (pwent.pw_passwd + 1, name, PW_LOGIN, + (char *) 0)) { #ifdef USE_SYSLOG syslog (LOG_WARN, "Incorrect root authentication"); @@ -221,53 +223,51 @@ main(int argc, char **argv) goto auth_done; } #endif - if (valid (pass, &pwent)) /* check encrypted passwords ... */ - break; /* ... encrypted passwords matched */ + if (valid (pass, &pwent)) /* check encrypted passwords ... */ + break; /* ... encrypted passwords matched */ #ifdef USE_SYSLOG syslog (LOG_WARN, "Incorrect root password\n"); #endif - sleep(2); + sleep (2); puts (_("Login incorrect")); } #ifdef AUTH_METHODS -auth_done: + auth_done: #endif - strzero(pass); + strzero (pass); alarm (0); signal (SIGALRM, SIG_DFL); - environ = newenvp; /* make new environment active */ + environ = newenvp; /* make new environment active */ - puts(_("Entering System Maintenance Mode\n")); + puts (_("Entering System Maintenance Mode\n")); #ifdef USE_SYSLOG syslog (LOG_INFO, "System Maintenance Mode\n"); #endif -#if 0 /* do we need all this? we are logging in as root anyway... --marekm */ +#if 0 /* do we need all this? we are logging in as root anyway... --marekm */ /* - * Normally there would be a utmp entry for login to mung on - * to get the tty name, date, etc. from. We don't need all that - * stuff because we won't update the utmp or wtmp files. BUT!, - * we do need the tty name so we can set the permissions and - * ownership. + * Normally there would be a utmp entry for login to mung on to get + * the tty name, date, etc. from. We don't need all that stuff + * because we won't update the utmp or wtmp files. BUT!, we do need + * the tty name so we can set the permissions and ownership. */ - if ((cp = ttyname (0))) { /* found entry in /dev/ */ - if (strncmp(cp, "/dev/", 5) == 0) + if ((cp = ttyname (0))) { /* found entry in /dev/ */ + if (strncmp (cp, "/dev/", 5) == 0) cp += 5; - strncpy(utent.ut_line, cp, sizeof utent.ut_line); + strncpy (utent.ut_line, cp, sizeof utent.ut_line); } - if (getenv ("IFS")) /* don't export user IFS ... */ - addenv("IFS= \t\n", NULL); /* ... instead, set a safe IFS */ + if (getenv ("IFS")) /* don't export user IFS ... */ + addenv ("IFS= \t\n", NULL); /* ... instead, set a safe IFS */ - setup (&pwent, 0); /* set UID, GID, HOME, etc ... */ + setup (&pwent, 0); /* set UID, GID, HOME, etc ... */ #endif #ifdef USE_SYSLOG closelog (); #endif - shell (pwent.pw_shell, (char *) 0); /* exec the shell finally. */ - /*NOTREACHED*/ - return (0); + shell (pwent.pw_shell, (char *) 0); /* exec the shell finally. */ + /*NOTREACHED*/ return (0); } diff --git a/src/useradd.c b/src/useradd.c index af108c05..e64ae3f7 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: useradd.c,v 1.26 2001/09/01 04:19:16 kloczek Exp $") - +RCSID (PKG_VER "$Id: useradd.c,v 1.31 2002/01/06 14:09:07 kloczek Exp $") #include "prototypes.h" #include "defines.h" #include "chkname.h" @@ -44,13 +43,11 @@ RCSID(PKG_VER "$Id: useradd.c,v 1.26 2001/09/01 04:19:16 kloczek Exp $") #include #include #include - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ #include "pwauth.h" #if HAVE_LASTLOG_H #include @@ -58,23 +55,19 @@ RCSID(PKG_VER "$Id: useradd.c,v 1.26 2001/09/01 04:19:16 kloczek Exp $") #include "lastlog_.h" #endif #include "faillog.h" - #ifndef SKEL_DIR #define SKEL_DIR "/etc/skel" #endif - #ifndef USER_DEFAULTS_FILE #define USER_DEFAULTS_FILE "/etc/default/useradd" #define NEW_USER_FILE "/etc/default/nuaddXXXXXX" #endif - /* * Needed for MkLinux DR1/2/2.1 - J. */ #ifndef LASTLOG_FILE #define LASTLOG_FILE "/var/log/lastlog" #endif - /* * These defaults are used if there is no defaults file. */ @@ -83,12 +76,13 @@ static const char *def_gname = "other"; static const char *def_home = "/home"; static const char *def_shell = ""; static const char *def_template = SKEL_DIR; + #ifdef SHADOWPWD static long def_inactive = -1; static const char *def_expire = ""; #endif -static char def_file[] = USER_DEFAULTS_FILE; +static char def_file[] = USER_DEFAULTS_FILE; #define VALID(s) (strcspn (s, ":\n") == strlen (s)) @@ -99,6 +93,7 @@ static gid_t user_gid; static const char *user_comment = ""; static const char *user_home = ""; static const char *user_shell = ""; + #ifdef SHADOWPWD static long user_expire = -1; static int is_shadow_pwd; @@ -106,30 +101,30 @@ static int is_shadow_pwd; #ifdef SHADOWGRP static int is_shadow_grp; #endif -static char **user_groups; /* NULL-terminated list */ +static char **user_groups; /* NULL-terminated list */ static long sys_ngroups; -static int do_grp_update = 0; /* group files need to be updated */ +static int do_grp_update = 0; /* group files need to be updated */ -static char *Prog; +static char *Prog; static int - uflg = 0, /* specify user ID for new account */ - oflg = 0, /* permit non-unique user ID to be specified with -u */ - gflg = 0, /* primary group ID for new account */ - Gflg = 0, /* secondary group set for new account */ - dflg = 0, /* home directory for new account */ - bflg = 0, /* new default root of home directory */ - sflg = 0, /* shell program for new account */ - cflg = 0, /* comment (GECOS) field for new account */ - mflg = 0, /* create user's home directory if it doesn't exist */ - kflg = 0, /* specify a directory to fill new user directory */ - fflg = 0, /* days until account with expired password is locked */ - eflg = 0, /* days since 1970-01-01 when account is locked */ - Dflg = 0, /* set/show new user default values */ - nflg = 0; /* create a group having the same name as the user */ + bflg = 0, /* new default root of home directory */ + cflg = 0, /* comment (GECOS) field for new account */ + dflg = 0, /* home directory for new account */ + Dflg = 0, /* set/show new user default values */ + eflg = 0, /* days since 1970-01-01 when account is locked */ + fflg = 0, /* days until account with expired password is locked */ + gflg = 0, /* primary group ID for new account */ + Gflg = 0, /* secondary group set for new account */ + kflg = 0, /* specify a directory to fill new user directory */ + mflg = 0, /* create user's home directory if it doesn't exist */ + nflg = 0, /* create a group having the same name as the user */ + oflg = 0, /* permit non-unique user ID to be specified with -u */ + sflg = 0, /* shell program for new account */ + uflg = 0; /* specify user ID for new account */ #ifdef AUTH_METHODS -static int Aflg = 0; /* specify authentication method for user */ +static int Aflg = 0; /* specify authentication method for user */ static char user_auth[1024]; static char *auth_arg; #endif @@ -138,28 +133,31 @@ extern char *optarg; extern int optind; #ifdef NDBM -extern int pw_dbm_mode; +extern int pw_dbm_mode; + #ifdef SHADOWPWD -extern int sp_dbm_mode; +extern int sp_dbm_mode; #endif -extern int gr_dbm_mode; +extern int gr_dbm_mode; + #ifdef SHADOWGRP -extern int sg_dbm_mode; +extern int sg_dbm_mode; #endif #endif -static int home_added; +static int home_added; #ifdef NDBM -static int pw_dbm_added; -static int gr_dbm_added; +static int pw_dbm_added; +static int gr_dbm_added; + #ifdef SHADOWPWD -static int sp_dbm_added; +static int sp_dbm_added; #endif #ifdef SHADOWGRP -static int sg_dbm_added; +static int sg_dbm_added; #endif -#endif /* NDBM */ +#endif /* NDBM */ #include "groupio.h" @@ -205,95 +203,112 @@ static int sg_dbm_added; #endif /* local function prototypes */ -static void fail_exit(int); -static struct group *getgr_nam_gid(const char *); -static long get_number(const char *); -static void get_defaults(void); -static void show_defaults(void); -static int set_defaults(void); -static int get_groups(char *); -static void usage(void); -static void new_pwent(struct passwd *); +static void fail_exit (int); +static struct group *getgr_nam_gid (const char *); +static long get_number (const char *); +static uid_t get_uid (const char *); +static void get_defaults (void); +static void show_defaults (void); +static int set_defaults (void); +static int get_groups (char *); +static void usage (void); +static void new_pwent (struct passwd *); + #ifdef SHADOWPWD -static long scale_age(long); -static void new_spent(struct spwd *); +static long scale_age (long); +static void new_spent (struct spwd *); #endif -static void grp_update(void); -static void find_new_uid(void); +static void grp_update (void); +static void find_new_uid (void); + #ifdef AUTH_METHODS -static void convert_auth(char *, const char *); -static int valid_auth(const char *); +static void convert_auth (char *, const char *); +static int valid_auth (const char *); #endif -static void process_flags(int argc, char **argv); -static void close_files(void); -static void open_files(void); -static void faillog_reset(uid_t); -static void lastlog_reset(uid_t); -static void usr_update(void); -static void create_home(void); +static void process_flags (int argc, char **argv); +static void close_files (void); +static void open_files (void); +static void faillog_reset (uid_t); +static void lastlog_reset (uid_t); +static void usr_update (void); +static void create_home (void); /* * fail_exit - undo as much as possible */ -static void -fail_exit(int code) +static void fail_exit (int code) { #ifdef NDBM - struct passwd pwent; + struct passwd pwent; if (pw_dbm_added) { pwent.pw_name = user_name; pwent.pw_uid = user_id; - pw_dbm_remove(&pwent); + pw_dbm_remove (&pwent); } if (gr_dbm_added) - fprintf(stderr, _("%s: rebuild the group database\n"), Prog); + fprintf (stderr, _("%s: rebuild the group database\n"), + Prog); #ifdef SHADOWPWD if (sp_dbm_added) - sp_dbm_remove(user_name); + sp_dbm_remove (user_name); #endif #ifdef SHADOWGRP if (sg_dbm_added) - fprintf(stderr, _("%s: rebuild the shadow group database\n"), - Prog); + fprintf (stderr, + _("%s: rebuild the shadow group database\n"), + Prog); #endif -#endif /* NDBM */ +#endif /* NDBM */ if (home_added) - rmdir(user_home); + rmdir (user_home); - SYSLOG((LOG_INFO, "failed adding user `%s', data deleted\n", - user_name)); - exit(code); + SYSLOG ((LOG_INFO, "failed adding user `%s', data deleted", + user_name)); + exit (code); } -static struct group * -getgr_nam_gid(const char *name) +static struct group *getgr_nam_gid (const char *name) { gid_t gid; char *ep; - gid = strtol(name, &ep, 10); - if (*name != '\0' && *ep == '\0') /* valid numeric gid */ - return getgrgid(gid); + gid = strtoul (name, &ep, 10); + if (*name != '\0' && *ep == '\0') /* valid numeric gid */ + return getgrgid (gid); - return getgrnam(name); + return getgrnam (name); } -static long -get_number(const char *cp) +static long get_number (const char *cp) { long val; char *ep; - val = strtol(cp, &ep, 10); - if (*cp != '\0' && *ep == '\0') /* valid number */ + val = strtol (cp, &ep, 10); + if (*cp != '\0' && *ep == '\0') /* valid number */ return val; - fprintf(stderr, _("%s: invalid numeric argument `%s'\n"), Prog, cp); - exit(E_BAD_ARG); + fprintf (stderr, _("%s: invalid numeric argument `%s'\n"), Prog, + cp); + exit (E_BAD_ARG); +} + +static uid_t get_uid (const char *cp) +{ + uid_t val; + char *ep; + + val = strtoul (cp, &ep, 10); + if (*cp != '\0' && *ep == '\0') /* valid number */ + return val; + + fprintf (stderr, _("%s: invalid numeric argument `%s'\n"), Prog, + cp); + exit (E_BAD_ARG); } #define MATCH(x,y) (strncmp((x),(y),strlen(y)) == 0) @@ -301,37 +316,35 @@ get_number(const char *cp) /* * get_defaults - read the defaults file * - * get_defaults() reads the defaults file for this command. It sets - * the various values from the file, or uses built-in default values - * if the file does not exist. + * get_defaults() reads the defaults file for this command. It sets the + * various values from the file, or uses built-in default values if the + * file does not exist. */ -static void -get_defaults(void) +static void get_defaults (void) { FILE *fp; char buf[1024]; char *cp, *ep; const struct group *grp; - long val; /* * Open the defaults file for reading. */ - if (!(fp = fopen(def_file, "r"))) + if (!(fp = fopen (def_file, "r"))) return; /* - * Read the file a line at a time. Only the lines that have - * relevant values are used, everything else can be ignored. + * Read the file a line at a time. Only the lines that have relevant + * values are used, everything else can be ignored. */ - while (fgets(buf, sizeof buf, fp)) { + while (fgets (buf, sizeof buf, fp)) { if ((cp = strrchr (buf, '\n'))) *cp = '\0'; - if (!(cp = strchr(buf, '='))) + if (!(cp = strchr (buf, '='))) continue; cp++; @@ -340,61 +353,63 @@ get_defaults(void) * Primary GROUP identifier */ - if (MATCH(buf, DGROUP)) { - val = strtol(cp, &ep, 10); - if (*cp != '\0' && *ep == '\0') { /* valid number */ + if (MATCH (buf, DGROUP)) { + unsigned int val = (unsigned int) strtoul (cp, &ep, 10); + + if (*cp != '\0' && *ep == '\0') { /* valid number */ def_group = val; - if ((grp = getgrgid(def_group))) { - def_gname = xstrdup(grp->gr_name); + if ((grp = getgrgid (def_group))) { + def_gname = xstrdup (grp->gr_name); } else { - fprintf(stderr, - _("%s: unknown gid %s\n"), - Prog, cp); + fprintf (stderr, + _("%s: unknown gid %s\n"), + Prog, cp); } - } else if ((grp = getgrnam(cp))) { + } else if ((grp = getgrnam (cp))) { def_group = grp->gr_gid; - def_gname = xstrdup(cp); + def_gname = xstrdup (cp); } else { - fprintf(stderr, _("%s: unknown group %s\n"), - Prog, cp); + fprintf (stderr, + _("%s: unknown group %s\n"), Prog, + cp); } } - + /* * Default HOME filesystem */ - - else if (MATCH(buf, HOME)) { - def_home = xstrdup(cp); + + else if (MATCH (buf, HOME)) { + def_home = xstrdup (cp); } /* * Default Login Shell command */ - else if (MATCH(buf, SHELL)) { - def_shell = xstrdup(cp); + else if (MATCH (buf, SHELL)) { + def_shell = xstrdup (cp); } - #ifdef SHADOWPWD /* * Default Password Inactive value */ - else if (MATCH(buf, INACT)) { - val = strtol(cp, &ep, 10); - if (*cp != '\0' && *ep == '\0') /* valid number */ + else if (MATCH (buf, INACT)) { + long val = strtol (cp, &ep, 10); + + if (*cp != '\0' && *ep == '\0') /* valid number */ def_inactive = val; else def_inactive = -1; } - + /* * Default account expiration date */ - else if (MATCH(buf, EXPIRE)) { - def_expire = xstrdup(cp); + else if (MATCH (buf, EXPIRE)) { + def_expire = xstrdup (cp); } #endif @@ -402,11 +417,11 @@ get_defaults(void) * Default Skeleton information */ - else if (MATCH(buf, SKEL)) { + else if (MATCH (buf, SKEL)) { if (*cp == '\0') - cp = SKEL_DIR; /* XXX warning: const */ - - def_template = xstrdup(cp); + cp = SKEL_DIR; /* XXX warning: const */ + + def_template = xstrdup (cp); } } } @@ -419,55 +434,55 @@ get_defaults(void) * file and the built-in values. */ -static void -show_defaults(void) +static void show_defaults (void) { #ifdef SVR4 - printf(_("group=%s,%ld basedir=%s skel=%s\n"), - def_gname, (long) def_group, def_home, def_template); + printf (_("group=%s,%u basedir=%s skel=%s\n"), + def_gname, (unsigned int) def_group, def_home, + def_template); - printf(_("shell=%s "), def_shell); + printf (_("shell=%s "), def_shell); #ifdef SHADOWPWD - printf(_("inactive=%ld expire=%s"), def_inactive, def_expire); + printf (_("inactive=%ld expire=%s"), def_inactive, def_expire); #endif - printf("\n"); -#else /* !SVR4 */ - printf(_("GROUP=%ld\n"), (long) def_group); - printf(_("HOME=%s\n"), def_home); + printf ("\n"); +#else /* !SVR4 */ + printf (_("GROUP=%u\n"), (unsigned int) def_group); + printf (_("HOME=%s\n"), def_home); #ifdef SHADOWPWD - printf(_("INACTIVE=%ld\n"), def_inactive); - printf(_("EXPIRE=%s\n"), def_expire); + printf (_("INACTIVE=%ld\n"), def_inactive); + printf (_("EXPIRE=%s\n"), def_expire); #endif - printf(_("SHELL=%s\n"), def_shell); - printf(_("SKEL=%s\n"), def_template); -#endif /* !SVR4 */ + printf (_("SHELL=%s\n"), def_shell); + printf (_("SKEL=%s\n"), def_template); +#endif /* !SVR4 */ } /* * set_defaults - write new defaults file * * set_defaults() re-writes the defaults file using the values that - * are currently set. Duplicated lines are pruned, missing lines are + * are currently set. Duplicated lines are pruned, missing lines are * added, and unrecognized lines are copied as is. */ -static int -set_defaults(void) +static int set_defaults (void) { - FILE *ifp; - FILE *ofp; - char buf[1024]; - static char new_file[] = NEW_USER_FILE; - char *cp; - int ofd; - int out_group = 0; - int out_home = 0; - int out_inactive = 0; - int out_expire = 0; - int out_shell = 0; - int out_skel = 0; + FILE *ifp; + FILE *ofp; + char buf[1024]; + static char new_file[] = NEW_USER_FILE; + char *cp; + int ofd; + int out_group = 0; + int out_home = 0; + int out_inactive = 0; + int out_expire = 0; + int out_shell = 0; + int out_skel = 0; + #ifdef SVR4 - int out_gname = 0; + int out_gname = 0; #endif /* @@ -479,97 +494,96 @@ set_defaults(void) #else if ((ofd = mktemp (new_file)) == -1) { #endif - fprintf(stderr, _("%s: cannot create new defaults file\n"), - Prog); - return -1; - } - - if (!(ofp = fdopen(ofd, "w"))) { - fprintf(stderr, _("%s: cannot open new defaults file\n"), - Prog); + fprintf (stderr, + _("%s: cannot create new defaults file\n"), Prog); + return -1; + } + + if (!(ofp = fdopen (ofd, "w"))) { + fprintf (stderr, _("%s: cannot open new defaults file\n"), + Prog); return -1; } /* * Open the existing defaults file and copy the lines to the - * temporary file, using any new values. Each line is checked + * temporary file, using any new values. Each line is checked * to insure that it is not output more than once. */ - if (!(ifp = fopen(def_file, "r"))) { - fprintf(ofp, "# useradd defaults file\n"); + if (!(ifp = fopen (def_file, "r"))) { + fprintf (ofp, "# useradd defaults file\n"); goto skip; } - while (fgets(buf, sizeof buf, ifp)) { - if ((cp = strrchr(buf, '\n'))) + while (fgets (buf, sizeof buf, ifp)) { + if ((cp = strrchr (buf, '\n'))) *cp = '\0'; - if (!out_group && MATCH(buf, DGROUP)) { - fprintf(ofp, DGROUP "%d\n", (int) def_group); + if (!out_group && MATCH (buf, DGROUP)) { + fprintf (ofp, DGROUP "%u\n", + (unsigned int) def_group); out_group++; } #ifdef SVR4 - else if (!out_gname && MATCH(buf, "defgname=")) { - fprintf(ofp, "defgname=%s\n", def_gname); + else if (!out_gname && MATCH (buf, "defgname=")) { + fprintf (ofp, "defgname=%s\n", def_gname); out_gname++; } #endif - else if (!out_home && MATCH(buf, HOME)) { - fprintf(ofp, HOME "%s\n", def_home); + else if (!out_home && MATCH (buf, HOME)) { + fprintf (ofp, HOME "%s\n", def_home); out_home++; #ifdef SHADOWPWD - } else if (!out_inactive && MATCH(buf, INACT)) { - fprintf(ofp, INACT "%ld\n", def_inactive); + } else if (!out_inactive && MATCH (buf, INACT)) { + fprintf (ofp, INACT "%ld\n", def_inactive); out_inactive++; - } else if (!out_expire && MATCH(buf, EXPIRE)) { - fprintf(ofp, EXPIRE "%s\n", def_expire); + } else if (!out_expire && MATCH (buf, EXPIRE)) { + fprintf (ofp, EXPIRE "%s\n", def_expire); out_expire++; } #endif - else if (!out_shell && MATCH(buf, SHELL)) { - fprintf(ofp, SHELL "%s\n", def_shell); + else if (!out_shell && MATCH (buf, SHELL)) { + fprintf (ofp, SHELL "%s\n", def_shell); out_shell++; - } - else if (!out_skel && MATCH(buf, SKEL)) { - fprintf(ofp, SKEL "%s\n", def_template); + } else if (!out_skel && MATCH (buf, SKEL)) { + fprintf (ofp, SKEL "%s\n", def_template); out_skel++; - } - else - fprintf(ofp, "%s\n", buf); + } else + fprintf (ofp, "%s\n", buf); } - fclose(ifp); + fclose (ifp); -skip: + skip: /* - * Check each line to insure that every line was output. This + * Check each line to insure that every line was output. This * causes new values to be added to a file which did not previously * have an entry for that value. */ if (!out_group) - fprintf(ofp, DGROUP "%d\n", (int) def_group); + fprintf (ofp, DGROUP "%u\n", (unsigned int) def_group); if (!out_home) - fprintf(ofp, HOME "%s\n", def_home); + fprintf (ofp, HOME "%s\n", def_home); #ifdef SHADOWPWD if (!out_inactive) - fprintf(ofp, INACT "%ld\n", def_inactive); + fprintf (ofp, INACT "%ld\n", def_inactive); if (!out_expire) - fprintf(ofp, EXPIRE "%s\n", def_expire); + fprintf (ofp, EXPIRE "%s\n", def_expire); #endif if (!out_shell) - fprintf(ofp, SHELL "%s\n", def_shell); + fprintf (ofp, SHELL "%s\n", def_shell); if (!out_skel) - fprintf(ofp, SKEL "%s\n", def_template); + fprintf (ofp, SKEL "%s\n", def_template); /* - * Flush and close the file. Check for errors to make certain + * Flush and close the file. Check for errors to make certain * the new file is intact. */ - fflush(ofp); - if (ferror(ofp) || fclose(ofp)) { - unlink(new_file); + fflush (ofp); + if (ferror (ofp) || fclose (ofp)) { + unlink (new_file); return -1; } @@ -577,11 +591,12 @@ skip: * Rename the current default file to its backup name. */ - snprintf(buf, sizeof buf, "%s-", def_file); - if (rename(def_file, buf) && errno != ENOENT) { - snprintf(buf, sizeof buf, _("%s: rename: %s"), Prog, def_file); - perror(buf); - unlink(new_file); + snprintf (buf, sizeof buf, "%s-", def_file); + if (rename (def_file, buf) && errno != ENOENT) { + snprintf (buf, sizeof buf, _("%s: rename: %s"), Prog, + def_file); + perror (buf); + unlink (new_file); return -1; } @@ -589,18 +604,20 @@ skip: * Rename the new default file to its correct name. */ - if (rename(new_file, def_file)) { - snprintf(buf, sizeof buf, _("%s: rename: %s"), Prog, new_file); - perror(buf); + if (rename (new_file, def_file)) { + snprintf (buf, sizeof buf, _("%s: rename: %s"), Prog, + new_file); + perror (buf); return -1; } #ifdef SHADOWPWD - SYSLOG((LOG_INFO, - "defaults: group=%d, home=%s, inactive=%ld, expire=%s\n", - (int) def_group, def_home, def_inactive, def_expire)); + SYSLOG ((LOG_INFO, + "defaults: group=%u, home=%s, inactive=%ld, expire=%s", + (unsigned int) def_group, def_home, def_inactive, + def_expire)); #else - SYSLOG((LOG_INFO, "defaults: group=%d, home=%s\n", - (int) def_group, def_home)); + SYSLOG ((LOG_INFO, "defaults: group=%u, home=%s", + (unsigned int) def_group, def_home)); #endif return 0; } @@ -609,12 +626,11 @@ skip: * get_groups - convert a list of group names to an array of group IDs * * get_groups() takes a comma-separated list of group names and - * converts it to a NULL-terminated array. Any unknown group + * converts it to a NULL-terminated array. Any unknown group * names are reported as errors. */ -static int -get_groups(char *list) +static int get_groups (char *list) { char *cp; const struct group *grp; @@ -627,12 +643,12 @@ get_groups(char *list) user_groups[0] = (char *) 0; - if (! *list) + if (!*list) return 0; /* * So long as there is some data to be converted, strip off - * each name and look it up. A mix of numerical and string + * each name and look it up. A mix of numerical and string * values for group identifiers is permitted. */ @@ -649,16 +665,16 @@ get_groups(char *list) * GID values, otherwise the string is looked up as is. */ - grp = getgr_nam_gid(list); + grp = getgr_nam_gid (list); /* * There must be a match, either by GID value or by * string name. */ - if (! grp) { - fprintf(stderr, _("%s: unknown group %s\n"), - Prog, list); + if (!grp) { + fprintf (stderr, _("%s: unknown group %s\n"), + Prog, list); errors++; } list = cp; @@ -667,26 +683,28 @@ get_groups(char *list) * If the group doesn't exist, don't dump core... * Instead, try the next one. --marekm */ - if (! grp) + if (!grp) continue; #ifdef USE_NIS /* - * Don't add this group if they are an NIS group. Tell + * Don't add this group if they are an NIS group. Tell * the user to go to the server for this group. */ if (__isgrNIS ()) { - fprintf(stderr, _("%s: group `%s' is a NIS group.\n"), - Prog, grp->gr_name); + fprintf (stderr, + _("%s: group `%s' is a NIS group.\n"), + Prog, grp->gr_name); continue; } #endif if (ngroups == sys_ngroups) { - fprintf(stderr, - _("%s: too many groups specified (max %d).\n"), - Prog, ngroups); + fprintf (stderr, + _ + ("%s: too many groups specified (max %d).\n"), + Prog, ngroups); break; } @@ -694,7 +712,7 @@ get_groups(char *list) * Add the group name to the user's list of groups. */ - user_groups[ngroups++] = xstrdup(grp->gr_name); + user_groups[ngroups++] = xstrdup (grp->gr_name); } while (list); user_groups[ngroups] = (char *) 0; @@ -713,30 +731,32 @@ get_groups(char *list) * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, - _("usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"), - Prog); - fprintf(stderr, - _("\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n")); - fprintf(stderr, "\t\t"); + fprintf (stderr, + _ + ("usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"), + Prog); + fprintf (stderr, + _ + ("\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n")); + fprintf (stderr, "\t\t"); #ifdef SHADOWPWD - fprintf(stderr, _("[-f inactive] [-e expire ] ")); + fprintf (stderr, _("[-f inactive] [-e expire ] ")); #endif #ifdef AUTH_METHODS - fprintf(stderr, _("[-A program] ")); + fprintf (stderr, _("[-A program] ")); #endif - fprintf(stderr, _("[-p passwd] name\n")); + fprintf (stderr, _("[-p passwd] name\n")); - fprintf(stderr, _(" %s\t-D [-g group] [-b base] [-s shell]\n"), - Prog); + fprintf (stderr, + _(" %s\t-D [-g group] [-b base] [-s shell]\n"), + Prog); #ifdef SHADOWPWD - fprintf(stderr, _("\t\t[-f inactive] [-e expire ]\n")); + fprintf (stderr, _("\t\t[-f inactive] [-e expire ]\n")); #endif - exit(E_USAGE); + exit (E_USAGE); } /* @@ -746,17 +766,16 @@ usage(void) * fills in a (struct passwd) with them. */ -static void -new_pwent(struct passwd *pwent) +static void new_pwent (struct passwd *pwent) { - memzero(pwent, sizeof *pwent); + memzero (pwent, sizeof *pwent); pwent->pw_name = (char *) user_name; #ifdef SHADOWPWD if (is_shadow_pwd) pwent->pw_passwd = (char *) SHADOW_PASSWD_STRING; else #endif - pwent->pw_passwd = (char *) user_pass; + pwent->pw_passwd = (char *) user_pass; #ifdef ATT_AGE pwent->pw_age = (char *) ""; @@ -775,13 +794,12 @@ new_pwent(struct passwd *pwent) } #ifdef SHADOWPWD -static long -scale_age(long x) +static long scale_age (long x) { if (x <= 0) return x; - return x * (DAY/SCALE); + return x * (DAY / SCALE); } /* @@ -791,18 +809,17 @@ scale_age(long x) * fills in a (struct spwd) with them. */ -static void -new_spent(struct spwd *spent) +static void new_spent (struct spwd *spent) { - memzero(spent, sizeof *spent); + memzero (spent, sizeof *spent); spent->sp_namp = (char *) user_name; spent->sp_pwdp = (char *) user_pass; - spent->sp_lstchg = time((time_t *) 0) / SCALE; - spent->sp_min = scale_age(getdef_num("PASS_MIN_DAYS", -1)); - spent->sp_max = scale_age(getdef_num("PASS_MAX_DAYS", -1)); - spent->sp_warn = scale_age(getdef_num("PASS_WARN_AGE", -1)); - spent->sp_inact = scale_age(def_inactive); - spent->sp_expire = scale_age(user_expire); + spent->sp_lstchg = time ((time_t *) 0) / SCALE; + spent->sp_min = scale_age (getdef_num ("PASS_MIN_DAYS", -1)); + spent->sp_max = scale_age (getdef_num ("PASS_MAX_DAYS", -1)); + spent->sp_warn = scale_age (getdef_num ("PASS_WARN_AGE", -1)); + spent->sp_inact = scale_age (def_inactive); + spent->sp_expire = scale_age (user_expire); spent->sp_flag = -1; } #endif @@ -814,39 +831,41 @@ new_spent(struct spwd *spent) * and adds the user to each group given by that set. */ -static void -grp_update(void) +static void grp_update (void) { const struct group *grp; struct group *ngrp; + #ifdef SHADOWGRP const struct sgrp *sgrp; struct sgrp *nsgrp; #endif /* - * Lock and open the group file. This will load all of the group + * Lock and open the group file. This will load all of the group * entries. */ - if (! gr_lock ()) { - fprintf(stderr, _("%s: error locking group file\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_lock ()) { + fprintf (stderr, _("%s: error locking group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } - if (! gr_open (O_RDWR)) { - fprintf(stderr, _("%s: error opening group file\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: error opening group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } #ifdef SHADOWGRP - if (is_shadow_grp && ! sgr_lock ()) { - fprintf(stderr, _("%s: error locking shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_lock ()) { + fprintf (stderr, + _("%s: error locking shadow group file\n"), Prog); + fail_exit (E_GRP_UPDATE); } - if (is_shadow_grp && ! sgr_open (O_RDWR)) { - fprintf(stderr, _("%s: error opening shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_open (O_RDWR)) { + fprintf (stderr, + _("%s: error opening shadow group file\n"), Prog); + fail_exit (E_GRP_UPDATE); } #endif @@ -855,14 +874,14 @@ grp_update(void) * the user is a member of. */ - for (gr_rewind (), grp = gr_next ();grp;grp = gr_next ()) { + for (gr_rewind (), grp = gr_next (); grp; grp = gr_next ()) { /* * See if the user specified this group as one of their * concurrent groups. */ - if (!is_on_list(user_groups, grp->gr_name)) + if (!is_on_list (user_groups, grp->gr_name)) continue; /* @@ -870,9 +889,9 @@ grp_update(void) * from the old entry, and we need it later. */ - ngrp = __gr_dup(grp); + ngrp = __gr_dup (grp); if (!ngrp) { - fail_exit(E_GRP_UPDATE); /* XXX */ + fail_exit (E_GRP_UPDATE); /* XXX */ } /* @@ -881,25 +900,27 @@ grp_update(void) */ ngrp->gr_mem = add_list (ngrp->gr_mem, user_name); - if (!gr_update(ngrp)) { - fprintf(stderr, "%s: error adding new group entry\n", - Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_update (ngrp)) { + fprintf (stderr, + "%s: error adding new group entry\n", + Prog); + fail_exit (E_GRP_UPDATE); } #ifdef NDBM /* * Update the DBM group file with the new entry as well. */ - if (!gr_dbm_update(ngrp)) { - fprintf(stderr, "%s: cannot add new dbm group entry\n", - Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_dbm_update (ngrp)) { + fprintf (stderr, + "%s: cannot add new dbm group entry\n", + Prog); + fail_exit (E_GRP_UPDATE); } else gr_dbm_added++; #endif - SYSLOG((LOG_INFO, "add `%s' to group `%s'\n", - user_name, ngrp->gr_name)); + SYSLOG ((LOG_INFO, "add `%s' to group `%s'", + user_name, ngrp->gr_name)); } #ifdef NDBM endgrent (); @@ -911,21 +932,21 @@ grp_update(void) /* * Scan through the entire shadow group file looking for the groups - * that the user is a member of. The administrative list isn't + * that the user is a member of. The administrative list isn't * modified. */ - for (sgr_rewind (), sgrp = sgr_next ();sgrp;sgrp = sgr_next ()) { + for (sgr_rewind (), sgrp = sgr_next (); sgrp; sgrp = sgr_next ()) { /* * See if the user specified this group as one of their * concurrent groups. */ - if (!gr_locate(sgrp->sg_name)) + if (!gr_locate (sgrp->sg_name)) continue; - if (!is_on_list(user_groups, sgrp->sg_name)) + if (!is_on_list (user_groups, sgrp->sg_name)) continue; /* @@ -933,9 +954,9 @@ grp_update(void) * from the old entry, and we need it later. */ - nsgrp = __sgr_dup(sgrp); + nsgrp = __sgr_dup (sgrp); if (!nsgrp) { - fail_exit(E_GRP_UPDATE); /* XXX */ + fail_exit (E_GRP_UPDATE); /* XXX */ } /* @@ -944,32 +965,32 @@ grp_update(void) */ nsgrp->sg_mem = add_list (nsgrp->sg_mem, user_name); - if (!sgr_update(nsgrp)) { - fprintf(stderr, - _("%s: error adding new group entry\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (!sgr_update (nsgrp)) { + fprintf (stderr, + _("%s: error adding new group entry\n"), + Prog); + fail_exit (E_GRP_UPDATE); } #ifdef NDBM /* * Update the DBM group file with the new entry as well. */ - if (!sg_dbm_update(nsgrp)) { - fprintf(stderr, - _("%s: cannot add new dbm group entry\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (!sg_dbm_update (nsgrp)) { + fprintf (stderr, + _("%s: cannot add new dbm group entry\n"), + Prog); + fail_exit (E_GRP_UPDATE); } else sg_dbm_added++; -#endif /* NDBM */ - SYSLOG((LOG_INFO, "add `%s' to shadow group `%s'\n", - user_name, nsgrp->sg_name)); +#endif /* NDBM */ + SYSLOG ((LOG_INFO, "add `%s' to shadow group `%s'", + user_name, nsgrp->sg_name)); } #ifdef NDBM endsgent (); -#endif /* NDBM */ -#endif /* SHADOWGRP */ +#endif /* NDBM */ +#endif /* SHADOWGRP */ } /* @@ -980,21 +1001,20 @@ grp_update(void) * uniqueness. */ -static void -find_new_uid(void) +static void find_new_uid (void) { const struct passwd *pwd; uid_t uid_min, uid_max; - uid_min = getdef_num("UID_MIN", 100); - uid_max = getdef_num("UID_MAX", 60000); + uid_min = getdef_unum ("UID_MIN", 100); + uid_max = getdef_unum ("UID_MAX", 60000); /* * Start with some UID value if the user didn't provide us with * one already. */ - if (! uflg) + if (!uflg) user_id = uid_min; /* @@ -1004,23 +1024,23 @@ find_new_uid(void) */ #ifdef NO_GETPWENT - pw_rewind(); - while ((pwd = pw_next())) { -#else /* using getpwent() we can check against NIS users etc. */ - setpwent(); - while ((pwd = getpwent())) { + pw_rewind (); + while ((pwd = pw_next ())) { +#else /* using getpwent() we can check against NIS users etc. */ + setpwent (); + while ((pwd = getpwent ())) { #endif - if (strcmp(user_name, pwd->pw_name) == 0) { - fprintf(stderr, _("%s: name %s is not unique\n"), - Prog, user_name); - exit(E_NAME_IN_USE); + if (strcmp (user_name, pwd->pw_name) == 0) { + fprintf (stderr, _("%s: name %s is not unique\n"), + Prog, user_name); + exit (E_NAME_IN_USE); } if (uflg && user_id == pwd->pw_uid) { - fprintf(stderr, _("%s: uid %d is not unique\n"), - Prog, (int) user_id); - exit(E_UID_IN_USE); + fprintf (stderr, _("%s: uid %u is not unique\n"), + Prog, (unsigned int) user_id); + exit (E_UID_IN_USE); } - if (! uflg && pwd->pw_uid >= user_id) { + if (!uflg && pwd->pw_uid >= user_id) { if (pwd->pw_uid > uid_max) continue; user_id = pwd->pw_uid + 1; @@ -1028,27 +1048,27 @@ find_new_uid(void) } /* * If a user with uid equal to UID_MAX exists, the above algorithm - * will give us UID_MAX+1 even if not unique. Search for the first + * will give us UID_MAX+1 even if not unique. Search for the first * free uid starting with UID_MIN (it's O(n*n) but can be avoided * by not having users with uid equal to UID_MAX). --marekm */ if (!uflg && user_id == uid_max + 1) { for (user_id = uid_min; user_id < uid_max; user_id++) { #ifdef NO_GETPWENT - pw_rewind(); - while ((pwd = pw_next()) && pwd->pw_uid != user_id) - ; + pw_rewind (); + while ((pwd = pw_next ()) + && pwd->pw_uid != user_id); if (!pwd) break; #else - if (!getpwuid(user_id)) + if (!getpwuid (user_id)) break; #endif } if (user_id == uid_max) { - fprintf(stderr, _("%s: can't get unique uid\n"), - Prog); - fail_exit(E_UID_IN_USE); + fprintf (stderr, _("%s: can't get unique uid\n"), + Prog); + fail_exit (E_UID_IN_USE); } } } @@ -1058,31 +1078,30 @@ find_new_uid(void) * convert_auth - convert the argument list to a authentication list */ -static void -convert_auth(char *auths, const char *list) +static void convert_auth (char *auths, const char *list) { - char *cp, *end; - char buf[257]; + char *cp, *end; + char buf[257]; /* - * Copy each method. DEFAULT is replaced by an encrypted string + * Copy each method. DEFAULT is replaced by an encrypted string * if one can be found in the current authentication list. */ - strcpy(buf, list); + strcpy (buf, list); auths[0] = '\0'; for (cp = buf; cp; cp = end) { if (auths[0]) - strcat(auths, ";"); + strcat (auths, ";"); - if ((end = strchr(cp, ','))) + if ((end = strchr (cp, ','))) *end++ = '\0'; - if (strcmp(cp, "DEFAULT") == 0) { - strcat(auths, user_pass); + if (strcmp (cp, "DEFAULT") == 0) { + strcat (auths, user_pass); } else { - strcat(auths, "@"); - strcat(auths, cp); + strcat (auths, "@"); + strcat (auths, cp); } } } @@ -1091,12 +1110,11 @@ convert_auth(char *auths, const char *list) * valid_auth - check authentication list for validity */ -static int -valid_auth(const char *methods) +static int valid_auth (const char *methods) { - char *cp, *end; - char buf[257]; - int default_cnt = 0; + char *cp, *end; + char buf[257]; + int default_cnt = 0; /* * Cursory checks, length and illegal characters @@ -1105,7 +1123,7 @@ valid_auth(const char *methods) if ((int) strlen (methods) > 256) return 0; - if (! VALID (methods)) + if (!VALID (methods)) return 0; /* @@ -1113,7 +1131,7 @@ valid_auth(const char *methods) */ strcpy (buf, methods); - for (cp = buf;cp;cp = end) { + for (cp = buf; cp; cp = end) { if ((end = strchr (cp, ','))) *end++ = '\0'; @@ -1124,18 +1142,17 @@ valid_auth(const char *methods) } return 1; } -#endif /* AUTH_METHODS */ +#endif /* AUTH_METHODS */ /* * process_flags - perform command line argument setting * * process_flags() interprets the command line arguments and sets - * the values that the user will be created with accordingly. The + * the values that the user will be created with accordingly. The * values are checked for sanity. */ -static void -process_flags(int argc, char **argv) +static void process_flags (int argc, char **argv) { const struct group *grp; int anyflag = 0; @@ -1147,16 +1164,16 @@ process_flags(int argc, char **argv) #else #define FLAGS "A:Du:og:G:d:s:c:mk:p:b:O:M" #endif - while ((arg = getopt(argc, argv, FLAGS)) != EOF) { + while ((arg = getopt (argc, argv, FLAGS)) != EOF) { #undef FLAGS switch (arg) { #ifdef AUTH_METHODS case 'A': - if (! valid_auth (optarg)) { - fprintf(stderr, - _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!valid_auth (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } auth_arg = optarg; Aflg++; @@ -1166,49 +1183,52 @@ process_flags(int argc, char **argv) if (!Dflg) usage (); - if (!VALID(optarg) || optarg[0] != '/') { - fprintf(stderr, - _("%s: invalid base directory `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg) || optarg[0] != '/') { + fprintf (stderr, + _ + ("%s: invalid base directory `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } def_home = optarg; bflg++; break; case 'c': - if (!VALID(optarg)) { - fprintf(stderr, - _("%s: invalid comment `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg)) { + fprintf (stderr, + _("%s: invalid comment `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } user_comment = optarg; cflg++; break; case 'd': - if (!VALID(optarg) || optarg[0] != '/') { - fprintf(stderr, - _("%s: invalid home directory `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg) || optarg[0] != '/') { + fprintf (stderr, + _ + ("%s: invalid home directory `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } user_home = optarg; dflg++; break; case 'D': if (anyflag) - usage(); + usage (); Dflg++; break; #ifdef SHADOWPWD case 'e': if (*optarg) { - user_expire = strtoday(optarg); + user_expire = strtoday (optarg); if (user_expire == -1) { - fprintf(stderr, - _("%s: invalid date `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + fprintf (stderr, + _ + ("%s: invalid date `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } } else user_expire = -1; @@ -1217,35 +1237,38 @@ process_flags(int argc, char **argv) * -e "" is allowed - it's a no-op without /etc/shadow */ if (*optarg && !is_shadow_pwd) { - fprintf(stderr, - _("%s: shadow passwords required for -e\n"), - Prog); - exit(E_USAGE); + fprintf (stderr, + _ + ("%s: shadow passwords required for -e\n"), + Prog); + exit (E_USAGE); } if (Dflg) def_expire = optarg; eflg++; break; case 'f': - def_inactive = get_number(optarg); + def_inactive = get_number (optarg); /* * -f -1 is allowed - it's a no-op without /etc/shadow */ if (def_inactive != -1 && !is_shadow_pwd) { - fprintf(stderr, - _("%s: shadow passwords required for -f\n"), - Prog); - exit(E_USAGE); + fprintf (stderr, + _ + ("%s: shadow passwords required for -f\n"), + Prog); + exit (E_USAGE); } fflg++; break; #endif case 'g': - grp = getgr_nam_gid(optarg); + grp = getgr_nam_gid (optarg); if (!grp) { - fprintf(stderr, _("%s: unknown group %s\n"), - Prog, optarg); - exit(E_NOTFOUND); + fprintf (stderr, + _("%s: unknown group %s\n"), Prog, + optarg); + exit (E_NOTFOUND); } if (Dflg) { def_group = grp->gr_gid; @@ -1256,8 +1279,8 @@ process_flags(int argc, char **argv) gflg++; break; case 'G': - if (get_groups(optarg)) - exit(E_NOTFOUND); + if (get_groups (optarg)) + exit (E_NOTFOUND); if (user_groups[0]) do_grp_update++; Gflg++; @@ -1284,43 +1307,46 @@ process_flags(int argc, char **argv) * example: -O UID_MIN=100 -O UID_MAX=499 * note: -O UID_MIN=10,UID_MAX=499 doesn't work yet */ - cp = strchr(optarg, '='); + cp = strchr (optarg, '='); if (!cp) { - fprintf(stderr, - _("%s: -O requires NAME=VALUE\n"), - Prog); - exit(E_BAD_ARG); + fprintf (stderr, + _("%s: -O requires NAME=VALUE\n"), + Prog); + exit (E_BAD_ARG); } /* terminate name, point to value */ *cp++ = '\0'; - if (putdef_str(optarg, cp) < 0) - exit(E_BAD_ARG); + if (putdef_str (optarg, cp) < 0) + exit (E_BAD_ARG); break; - case 'p': /* set encrypted password */ - if (!VALID(optarg)) { - fprintf(stderr, _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + case 'p': /* set encrypted password */ + if (!VALID (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } user_pass = optarg; break; case 's': - if (!VALID(optarg) || (optarg[0] && - (optarg[0] != '/' && optarg[0] != '*'))) { - fprintf(stderr, _("%s: invalid shell `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg) || (optarg[0] && + (optarg[0] != '/' + && optarg[0] != '*'))) { + fprintf (stderr, + _("%s: invalid shell `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } user_shell = optarg; def_shell = optarg; sflg++; break; case 'u': - user_id = get_number(optarg); + user_id = get_uid (optarg); uflg++; break; default: - usage(); + usage (); } anyflag++; } @@ -1330,40 +1356,41 @@ process_flags(int argc, char **argv) * Check it here so that they can be specified in any order. */ if ((oflg && !uflg) || (kflg && !mflg)) - usage(); + usage (); /* - * Either -D or username is required. Defaults can be set with -D + * Either -D or username is required. Defaults can be set with -D * for the -b, -e, -f, -g, -s options only. */ if (Dflg) { if (optind != argc) - usage(); + usage (); if (uflg || oflg || Gflg || dflg || cflg || mflg) - usage(); + usage (); } else { if (optind != argc - 1) - usage(); + usage (); user_name = argv[optind]; - if (!check_user_name(user_name)) { - fprintf(stderr, _("%s: invalid user name `%s'\n"), - Prog, user_name); - exit(E_BAD_ARG); + if (!check_user_name (user_name)) { + fprintf (stderr, _("%s: invalid user name `%s'\n"), + Prog, user_name); + exit (E_BAD_ARG); } if (!dflg) { char *uh; - uh = xmalloc(strlen(def_home) + strlen(user_name) + 2); - sprintf(uh, "%s/%s", def_home, user_name); + uh = xmalloc (strlen (def_home) + + strlen (user_name) + 2); + sprintf (uh, "%s/%s", def_home, user_name); user_home = uh; } } #ifdef SHADOWPWD if (!eflg) - user_expire = strtoday(def_expire); + user_expire = strtoday (def_expire); #endif if (!gflg) @@ -1377,46 +1404,49 @@ process_flags(int argc, char **argv) * close_files - close all of the files that were opened * * close_files() closes all of the files that were opened for this - * new user. This causes any modified entries to be written out. + * new user. This causes any modified entries to be written out. */ -static void -close_files(void) +static void close_files (void) { - if (!pw_close()) { - fprintf(stderr, _("%s: cannot rewrite password file\n"), Prog); - fail_exit(E_PW_UPDATE); + if (!pw_close ()) { + fprintf (stderr, _("%s: cannot rewrite password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #ifdef SHADOWPWD - if (is_shadow_pwd && !spw_close()) { - fprintf(stderr, _("%s: cannot rewrite shadow password file\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_close ()) { + fprintf (stderr, + _("%s: cannot rewrite shadow password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #endif if (do_grp_update) { - if (!gr_close()) { - fprintf(stderr, _("%s: cannot rewrite group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); - } - gr_unlock(); -#ifdef SHADOWGRP - if (is_shadow_grp && !sgr_close()) { + if (!gr_close ()) { fprintf (stderr, - _("%s: cannot rewrite shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + _("%s: cannot rewrite group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); + } + gr_unlock (); +#ifdef SHADOWGRP + if (is_shadow_grp && !sgr_close ()) { + fprintf (stderr, + _ + ("%s: cannot rewrite shadow group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } if (is_shadow_grp) - sgr_unlock(); + sgr_unlock (); #endif } #ifdef SHADOWPWD if (is_shadow_pwd) - spw_unlock(); + spw_unlock (); #endif - pw_unlock(); + pw_unlock (); } /* @@ -1425,63 +1455,64 @@ close_files(void) * open_files() opens the two password files. */ -static void -open_files(void) +static void open_files (void) { - if (!pw_lock()) { - fprintf(stderr, _("%s: unable to lock password file\n"), Prog); - exit(E_PW_UPDATE); + if (!pw_lock ()) { + fprintf (stderr, _("%s: unable to lock password file\n"), + Prog); + exit (E_PW_UPDATE); } - if (!pw_open(O_RDWR)) { - fprintf(stderr, _("%s: unable to open password file\n"), Prog); - pw_unlock(); - exit(E_PW_UPDATE); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("%s: unable to open password file\n"), + Prog); + pw_unlock (); + exit (E_PW_UPDATE); } #ifdef SHADOWPWD - if (is_shadow_pwd && !spw_lock()) { - fprintf(stderr, _("%s: cannot lock shadow password file\n"), - Prog); - pw_unlock(); - exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_lock ()) { + fprintf (stderr, + _("%s: cannot lock shadow password file\n"), + Prog); + pw_unlock (); + exit (E_PW_UPDATE); } - if (is_shadow_pwd && !spw_open(O_RDWR)) { - fprintf(stderr, _("%s: cannot open shadow password file\n"), - Prog); - spw_unlock(); - pw_unlock(); - exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_open (O_RDWR)) { + fprintf (stderr, + _("%s: cannot open shadow password file\n"), + Prog); + spw_unlock (); + pw_unlock (); + exit (E_PW_UPDATE); } #endif } -static void -faillog_reset(uid_t uid) +static void faillog_reset (uid_t uid) { struct faillog fl; int fd; - fd = open(FAILLOG_FILE, O_RDWR); + fd = open (FAILLOG_FILE, O_RDWR); if (fd >= 0) { - memzero(&fl, sizeof(fl)); - lseek(fd, (off_t) sizeof(fl) * uid, SEEK_SET); - write(fd, &fl, sizeof(fl)); - close(fd); + memzero (&fl, sizeof (fl)); + lseek (fd, (off_t) sizeof (fl) * uid, SEEK_SET); + write (fd, &fl, sizeof (fl)); + close (fd); } } -static void -lastlog_reset(uid_t uid) +static void lastlog_reset (uid_t uid) { struct lastlog ll; int fd; - fd = open(LASTLOG_FILE, O_RDWR); + fd = open (LASTLOG_FILE, O_RDWR); if (fd >= 0) { - memzero(&ll, sizeof(ll)); - lseek(fd, (off_t) sizeof(ll) * uid, SEEK_SET); - write(fd, &ll, sizeof(ll)); - close(fd); + memzero (&ll, sizeof (ll)); + lseek (fd, (off_t) sizeof (ll) * uid, SEEK_SET); + write (fd, &ll, sizeof (ll)); + close (fd); } } @@ -1492,20 +1523,20 @@ lastlog_reset(uid_t uid) * and will update the group entries if required. */ -static void -usr_update(void) +static void usr_update (void) { - struct passwd pwent; + struct passwd pwent; + #ifdef SHADOWPWD - struct spwd spent; + struct spwd spent; #endif - if (! oflg) + if (!oflg) find_new_uid (); #ifdef AUTH_METHODS if (Aflg) { - convert_auth(user_auth, auth_arg); + convert_auth (user_auth, auth_arg); user_pass = user_auth; } #endif @@ -1521,74 +1552,76 @@ usr_update(void) #endif /* - * Create a syslog entry. We need to do this now in case anything + * Create a syslog entry. We need to do this now in case anything * happens so we know what we were trying to accomplish. */ #ifdef AUTH_METHODS - SYSLOG((LOG_INFO, - "new user: name=%s, uid=%d, gid=%d, home=%s, shell=%s, auth=%s\n", - user_name, user_id, user_gid, user_home, user_shell, - Aflg ? auth_arg : "DEFAULT")); + SYSLOG ((LOG_INFO, + "new user: name=%s, uid=%u, gid=%u, home=%s, shell=%s, auth=%s", + user_name, (unsigned int) user_id, (unsigned int) user_gid, + user_home, user_shell, Aflg ? auth_arg : "DEFAULT")); #else - SYSLOG((LOG_INFO, - "new user: name=%s, uid=%d, gid=%d, home=%s, shell=%s\n", - user_name, user_id, user_gid, user_home, user_shell)); + SYSLOG ((LOG_INFO, + "new user: name=%s, uid=%u, gid=%u, home=%s, shell=%s", + user_name, (unsigned int) user_id, (unsigned int) user_gid, + user_home, user_shell)); #endif #ifdef AUTH_METHODS /* * Attempt to add the new user to any authentication programs - * which have been requested. Since this is more likely to fail + * which have been requested. Since this is more likely to fail * than the update of the password file, we do this first. */ - if (Aflg && pw_auth(user_auth, pwent.pw_name, PW_ADD, (char *) 0)) { - fprintf(stderr, _("%s: error adding authentication method\n"), - Prog); - fail_exit(E_PW_UPDATE); /* XXX */ + if (Aflg && pw_auth (user_auth, pwent.pw_name, PW_ADD, (char *) 0)) { + fprintf (stderr, + _("%s: error adding authentication method\n"), + Prog); + fail_exit (E_PW_UPDATE); /* XXX */ } -#endif /* AUTH_METHODS */ +#endif /* AUTH_METHODS */ /* * Initialize faillog and lastlog entries for this UID in case - * it belongs to a previously deleted user. We do it only if + * it belongs to a previously deleted user. We do it only if * no user with this UID exists yet (entries for shared UIDs * are left unchanged). --marekm */ - if (!getpwuid(user_id)) { - faillog_reset(user_id); - lastlog_reset(user_id); + if (!getpwuid (user_id)) { + faillog_reset (user_id); + lastlog_reset (user_id); } /* * Put the new (struct passwd) in the table. */ - if (! pw_update (&pwent)) { - fprintf(stderr, _("%s: error adding new password entry\n"), - Prog); - exit(E_PW_UPDATE); + if (!pw_update (&pwent)) { + fprintf (stderr, + _("%s: error adding new password entry\n"), Prog); + exit (E_PW_UPDATE); } - #ifdef NDBM /* - * Update the DBM files. This creates the user before the flat - * files are updated. This is safe before the password field is + * Update the DBM files. This creates the user before the flat + * files are updated. This is safe before the password field is * either locked, or set to a valid authentication string. */ - if (pw_dbm_present()) { - if (!pw_dbm_update(&pwent)) { - fprintf(stderr, - _("%s: error updating password dbm entry\n"), - Prog); - exit(E_PW_UPDATE); + if (pw_dbm_present ()) { + if (!pw_dbm_update (&pwent)) { + fprintf (stderr, + _ + ("%s: error updating password dbm entry\n"), + Prog); + exit (E_PW_UPDATE); } else pw_dbm_added = 1; } - endpwent(); + endpwent (); #endif #ifdef SHADOWPWD @@ -1596,63 +1629,63 @@ usr_update(void) * Put the new (struct spwd) in the table. */ - if (is_shadow_pwd && !spw_update(&spent)) { - fprintf(stderr, - _("%s: error adding new shadow password entry\n"), - Prog); - exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_update (&spent)) { + fprintf (stderr, + _("%s: error adding new shadow password entry\n"), + Prog); + exit (E_PW_UPDATE); } - #ifdef NDBM /* - * Update the DBM files for the shadow password. This entry is + * Update the DBM files for the shadow password. This entry is * output before the entry in the flat file, but this is safe as * the password is locked or the authentication string has the * proper values. */ - if (is_shadow_pwd && sp_dbm_present()) { - if (!sp_dbm_update(&spent)) { - fprintf(stderr, - _("%s: error updating shadow passwd dbm entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && sp_dbm_present ()) { + if (!sp_dbm_update (&spent)) { + fprintf (stderr, + _ + ("%s: error updating shadow passwd dbm entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } else sp_dbm_added++; - endspent(); + endspent (); } #endif -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ /* * Do any group file updates for this user. */ if (do_grp_update) - grp_update(); + grp_update (); } /* * create_home - create the user's home directory * * create_home() creates the user's home directory if it does not - * already exist. It will be created mode 755 owned by the user + * already exist. It will be created mode 755 owned by the user * with the user's default group. */ -static void -create_home(void) +static void create_home (void) { - if (access(user_home, F_OK)) { + if (access (user_home, F_OK)) { /* XXX - create missing parent directories. --marekm */ if (mkdir (user_home, 0)) { - fprintf(stderr, _("%s: cannot create directory %s\n"), - Prog, user_home); - fail_exit(E_HOMEDIR); + fprintf (stderr, + _("%s: cannot create directory %s\n"), + Prog, user_home); + fail_exit (E_HOMEDIR); } chown (user_home, user_id, user_gid); #if 1 - chmod(user_home, 0777 & ~getdef_num("UMASK", 077)); + chmod (user_home, 0777 & ~getdef_num ("UMASK", 077)); #else chmod (user_home, 0755); #endif @@ -1662,17 +1695,16 @@ create_home(void) #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* * main - useradd command */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { #ifdef USE_PAM pam_handle_t *pamh = NULL; @@ -1683,53 +1715,55 @@ main(int argc, char **argv) * Get my name so that I can use it to report errors. */ - sys_ngroups=sysconf(_SC_NGROUPS_MAX); - user_groups=malloc((1+sys_ngroups)*sizeof(char *)); - Prog = Basename(argv[0]); + sys_ngroups = sysconf (_SC_NGROUPS_MAX); + user_groups = malloc ((1 + sys_ngroups) * sizeof (char *)); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM retval = PAM_SUCCESS; - pampw = getpwuid(getuid()); + pampw = getpwuid (getuid ()); if (pampw == NULL) { retval = PAM_USER_UNKNOWN; } if (retval == PAM_SUCCESS) { - retval = pam_start("useradd", pampw->pw_name, &conv, &pamh); + retval = + pam_start ("useradd", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); + retval = pam_authenticate (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); + retval = pam_acct_mgmt (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ - OPENLOG(Prog); + OPENLOG (Prog); #ifdef SHADOWPWD - is_shadow_pwd = spw_file_present(); + is_shadow_pwd = spw_file_present (); #endif #ifdef SHADOWGRP - is_shadow_grp = sgr_file_present(); + is_shadow_grp = sgr_file_present (); #endif /* @@ -1747,9 +1781,9 @@ main(int argc, char **argv) sg_dbm_mode = O_RDWR; #endif #endif - get_defaults(); + get_defaults (); - process_flags(argc, argv); + process_flags (argc, argv); /* * See if we are messing with the defaults file, or creating @@ -1758,19 +1792,20 @@ main(int argc, char **argv) if (Dflg) { if (gflg || bflg || fflg || eflg || sflg) - exit (set_defaults () ? 1:0); + exit (set_defaults ()? 1 : 0); - show_defaults(); - exit(E_SUCCESS); + show_defaults (); + exit (E_SUCCESS); } /* * Start with a quick check to see if the user exists. */ - if (getpwnam(user_name)) { - fprintf(stderr, _("%s: user %s exists\n"), Prog, user_name); - exit(E_NAME_IN_USE); + if (getpwnam (user_name)) { + fprintf (stderr, _("%s: user %s exists\n"), Prog, + user_name); + exit (E_NAME_IN_USE); } /* @@ -1780,10 +1815,13 @@ main(int argc, char **argv) * --bero */ if (!gflg) { - if (getgrnam(user_name)) { - fprintf(stderr, _("%s: group %s exists - if you want to add this user to that group, use -g.\n"), Prog, user_name); - exit(E_NAME_IN_USE); - } + if (getgrnam (user_name)) { + fprintf (stderr, + _ + ("%s: group %s exists - if you want to add this user to that group, use -g.\n"), + Prog, user_name); + exit (E_NAME_IN_USE); + } } /* @@ -1798,31 +1836,32 @@ main(int argc, char **argv) if (mflg) { create_home (); copy_tree (def_template, user_home, user_id, user_gid); - } else if (getdef_str("CREATE_HOME")) { + } else if (getdef_str ("CREATE_HOME")) { /* * RedHat added the CREATE_HOME option in login.defs in their * version of shadow-utils (which makes -m the default, with - * new -M option to turn it off). Unfortunately, this + * new -M option to turn it off). Unfortunately, this * changes the way useradd works (it can be run by scripts * expecting some standard behaviour), compared to other * Unices and other Linux distributions, and also adds a lot * of confusion :-(. * So we now recognize CREATE_HOME and give a warning here * (better than "configuration error ... notify administrator" - * errors in every program that reads /etc/login.defs). -MM + * errors in every program that reads /etc/login.defs). -MM */ - fprintf(stderr, - _("%s: warning: CREATE_HOME not supported, please use -m instead.\n"), - Prog); + fprintf (stderr, + _ + ("%s: warning: CREATE_HOME not supported, please use -m instead.\n"), + Prog); } close_files (); #ifdef USE_PAM if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } @@ -1832,9 +1871,8 @@ main(int argc, char **argv) } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ - exit(E_SUCCESS); - /*NOTREACHED*/ -} + exit (E_SUCCESS); + /*NOTREACHED*/} diff --git a/src/userdel.c b/src/userdel.c index 88214490..78691174 100644 --- a/src/userdel.c +++ b/src/userdel.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: userdel.c,v 1.19 2000/10/09 19:02:20 kloczek Exp $") - +RCSID (PKG_VER "$Id: userdel.c,v 1.21 2002/01/05 15:41:44 kloczek Exp $") #include #include #include @@ -40,18 +39,15 @@ RCSID(PKG_VER "$Id: userdel.c,v 1.19 2000/10/09 19:02:20 kloczek Exp $") #include #include #include - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ #include "prototypes.h" #include "defines.h" #include "getdef.h" #include "pwauth.h" - /* * exit status values */ @@ -62,22 +58,23 @@ RCSID(PKG_VER "$Id: userdel.c,v 1.19 2000/10/09 19:02:20 kloczek Exp $") #define E_USER_BUSY 8 /* user currently logged in */ #define E_GRP_UPDATE 10 /* can't update group file */ #define E_HOMEDIR 12 /* can't remove home directory */ - static char *user_name; static uid_t user_id; static char *user_home; -static char *Prog; +static char *Prog; static int fflg = 0, rflg = 0; #ifdef NDBM -extern int pw_dbm_mode; +extern int pw_dbm_mode; + #ifdef SHADOWPWD -extern int sp_dbm_mode; +extern int sp_dbm_mode; #endif -extern int gr_dbm_mode; +extern int gr_dbm_mode; + #ifdef SHADOWGRP -extern int sg_dbm_mode; +extern int sg_dbm_mode; #endif #endif @@ -104,34 +101,33 @@ static int is_shadow_pwd; static int is_shadow_grp; #endif -extern int optind; - /* local function prototypes */ -static void usage(void); -static void update_groups(void); -static void close_files(void); -static void fail_exit(int); -static void open_files(void); -static void update_user(void); -static void user_busy(const char *, uid_t); -static void user_cancel(const char *); +static void usage (void); +static void update_groups (void); +static void close_files (void); +static void fail_exit (int); +static void open_files (void); +static void update_user (void); +static void user_busy (const char *, uid_t); +static void user_cancel (const char *); + #ifdef EXTRA_CHECK_HOME_DIR -static int path_prefix(const char *, const char *); +static int path_prefix (const char *, const char *); #endif -static int is_owner(uid_t, const char *); +static int is_owner (uid_t, const char *); + #ifndef NO_REMOVE_MAILBOX -static void remove_mailbox(void); +static void remove_mailbox (void); #endif /* * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, _("usage: %s [-r] name\n"), Prog); - exit(E_USAGE); + fprintf (stderr, _("usage: %s [-r] name\n"), Prog); + exit (E_USAGE); } /* @@ -145,29 +141,29 @@ usage(void) * is enabled). */ -static void -update_groups(void) +static void update_groups (void) { const struct group *grp; struct group *ngrp; + #ifdef SHADOWGRP const struct sgrp *sgrp; struct sgrp *nsgrp; -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * Scan through the entire group file looking for the groups that * the user is a member of. */ - for (gr_rewind (), grp = gr_next ();grp;grp = gr_next ()) { + for (gr_rewind (), grp = gr_next (); grp; grp = gr_next ()) { /* * See if the user specified this group as one of their * concurrent groups. */ - if (!is_on_list(grp->gr_mem, user_name)) + if (!is_on_list (grp->gr_mem, user_name)) continue; /* @@ -175,30 +171,31 @@ update_groups(void) * update the group entry to reflect the change. */ - ngrp = __gr_dup(grp); + ngrp = __gr_dup (grp); if (!ngrp) { - exit(13); /* XXX */ + exit (13); /* XXX */ } ngrp->gr_mem = del_list (ngrp->gr_mem, user_name); - if (!gr_update(ngrp)) - fprintf(stderr, _("%s: error updating group entry\n"), - Prog); + if (!gr_update (ngrp)) + fprintf (stderr, + _("%s: error updating group entry\n"), + Prog); /* * Update the DBM group file with the new entry as well. */ #ifdef NDBM - if (!gr_dbm_update(ngrp)) - fprintf(stderr, - _("%s: cannot update dbm group entry\n"), - Prog); -#endif /* NDBM */ - SYSLOG((LOG_INFO, "delete `%s' from group `%s'\n", - user_name, ngrp->gr_name)); + if (!gr_dbm_update (ngrp)) + fprintf (stderr, + _("%s: cannot update dbm group entry\n"), + Prog); +#endif /* NDBM */ + SYSLOG ((LOG_INFO, "delete `%s' from group `%s'\n", + user_name, ngrp->gr_name)); } #ifdef NDBM - endgrent(); + endgrent (); #endif /* * we've removed their name from all the groups above, so @@ -206,23 +203,24 @@ update_groups(void) * user name, with no members, we delete it. */ - grp = getgrnam(user_name); - if (grp && getdef_bool("USERGROUPS_ENAB") && (grp->gr_mem[0] == NULL)) { + grp = getgrnam (user_name); + if (grp && getdef_bool ("USERGROUPS_ENAB") + && (grp->gr_mem[0] == NULL)) { - gr_remove(grp->gr_name); + gr_remove (grp->gr_name); /* * Update the DBM group file with the new entry as well. */ #ifdef NDBM - if (!gr_dbm_remove(grp)) - fprintf(stderr, - _("%s: cannot remove dbm group entry\n"), - Prog); + if (!gr_dbm_remove (grp)) + fprintf (stderr, + _("%s: cannot remove dbm group entry\n"), + Prog); #endif - SYSLOG((LOG_INFO, "removed group `%s' owned by `%s'\n", - grp->gr_name, user_name)); + SYSLOG ((LOG_INFO, "removed group `%s' owned by `%s'\n", + grp->gr_name, user_name)); } #ifdef NDBM endgrent (); @@ -233,11 +231,11 @@ update_groups(void) /* * Scan through the entire shadow group file looking for the groups - * that the user is a member of. Both the administrative list and + * that the user is a member of. Both the administrative list and * the ordinary membership list is checked. */ - for (sgr_rewind (), sgrp = sgr_next ();sgrp;sgrp = sgr_next ()) { + for (sgr_rewind (), sgrp = sgr_next (); sgrp; sgrp = sgr_next ()) { int was_member, was_admin; /* @@ -245,95 +243,100 @@ update_groups(void) * concurrent groups. */ - was_member = is_on_list(sgrp->sg_mem, user_name); - was_admin = is_on_list(sgrp->sg_adm, user_name); + was_member = is_on_list (sgrp->sg_mem, user_name); + was_admin = is_on_list (sgrp->sg_adm, user_name); if (!was_member && !was_admin) continue; - nsgrp = __sgr_dup(sgrp); + nsgrp = __sgr_dup (sgrp); if (!nsgrp) { - exit(13); /* XXX */ + exit (13); /* XXX */ } if (was_member) - nsgrp->sg_mem = del_list (nsgrp->sg_mem, user_name); + nsgrp->sg_mem = + del_list (nsgrp->sg_mem, user_name); if (was_admin) - nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name); + nsgrp->sg_adm = + del_list (nsgrp->sg_adm, user_name); - if (!sgr_update(nsgrp)) - fprintf(stderr, _("%s: error updating group entry\n"), - Prog); + if (!sgr_update (nsgrp)) + fprintf (stderr, + _("%s: error updating group entry\n"), + Prog); #ifdef NDBM /* * Update the DBM group file with the new entry as well. */ - if (!sg_dbm_update(nsgrp)) - fprintf(stderr, - _("%s: cannot update dbm group entry\n"), - Prog); -#endif /* NDBM */ - SYSLOG((LOG_INFO, "delete `%s' from shadow group `%s'\n", - user_name, nsgrp->sg_name)); + if (!sg_dbm_update (nsgrp)) + fprintf (stderr, + _("%s: cannot update dbm group entry\n"), + Prog); +#endif /* NDBM */ + SYSLOG ((LOG_INFO, "delete `%s' from shadow group `%s'\n", + user_name, nsgrp->sg_name)); } #ifdef NDBM endsgent (); -#endif /* NDBM */ -#endif /* SHADOWGRP */ +#endif /* NDBM */ +#endif /* SHADOWGRP */ } /* * close_files - close all of the files that were opened * * close_files() closes all of the files that were opened for this - * new user. This causes any modified entries to be written out. + * new user. This causes any modified entries to be written out. */ -static void -close_files(void) +static void close_files (void) { - if (!pw_close()) - fprintf(stderr, _("%s: cannot rewrite password file\n"), Prog); + if (!pw_close ()) + fprintf (stderr, _("%s: cannot rewrite password file\n"), + Prog); #ifdef SHADOWPWD - if (is_shadow_pwd && !spw_close()) - fprintf(stderr, _("%s: cannot rewrite shadow password file\n"), - Prog); + if (is_shadow_pwd && !spw_close ()) + fprintf (stderr, + _("%s: cannot rewrite shadow password file\n"), + Prog); #endif #ifdef HAVE_TCFS - if (!tcfs_close()) - fprintf(stderr, _("%s: cannot rewrite TCFS key file\n"), Prog); + if (!tcfs_close ()) + fprintf (stderr, _("%s: cannot rewrite TCFS key file\n"), + Prog); #endif - if (! gr_close ()) - fprintf(stderr, _("%s: cannot rewrite group file\n"), - Prog); + if (!gr_close ()) + fprintf (stderr, _("%s: cannot rewrite group file\n"), + Prog); (void) gr_unlock (); #ifdef SHADOWGRP - if (is_shadow_grp && !sgr_close()) - fprintf(stderr, _("%s: cannot rewrite shadow group file\n"), - Prog); + if (is_shadow_grp && !sgr_close ()) + fprintf (stderr, + _("%s: cannot rewrite shadow group file\n"), + Prog); if (is_shadow_grp) - (void) sgr_unlock(); + (void) sgr_unlock (); #endif #ifdef SHADOWPWD if (is_shadow_pwd) - (void) spw_unlock(); + (void) spw_unlock (); #endif #ifdef HAVE_TCFS - (void) tcfs_unlock(); + (void) tcfs_unlock (); #endif - (void) pw_unlock(); + (void) pw_unlock (); } /* * fail_exit - exit with a failure code after unlocking the files */ -static void -fail_exit(int code) +static void fail_exit (int code) { (void) pw_unlock (); (void) gr_unlock (); @@ -349,7 +352,7 @@ fail_exit(int code) (void) tcfs_unlock (); #endif - exit(code); + exit (code); } /* @@ -358,57 +361,64 @@ fail_exit(int code) * open_files() opens the two password files. */ -static void -open_files(void) +static void open_files (void) { - if (!pw_lock()) { - fprintf(stderr, _("%s: unable to lock password file\n"), Prog); - exit(E_PW_UPDATE); + if (!pw_lock ()) { + fprintf (stderr, _("%s: unable to lock password file\n"), + Prog); + exit (E_PW_UPDATE); } - if (! pw_open (O_RDWR)) { - fprintf(stderr, _("%s: unable to open password file\n"), Prog); - fail_exit(E_PW_UPDATE); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("%s: unable to open password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #ifdef SHADOWPWD - if (is_shadow_pwd && ! spw_lock ()) { - fprintf(stderr, _("%s: cannot lock shadow password file\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_lock ()) { + fprintf (stderr, + _("%s: cannot lock shadow password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } - if (is_shadow_pwd && ! spw_open (O_RDWR)) { - fprintf(stderr, _("%s: cannot open shadow password file\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_open (O_RDWR)) { + fprintf (stderr, + _("%s: cannot open shadow password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #endif #ifdef HAVE_TCFS - if (!tcfs_lock()) { - fprintf(stderr, _("%s: cannot lock TCFS key file\n"), Prog); - fail_exit(E_PW_UPDATE); + if (!tcfs_lock ()) { + fprintf (stderr, _("%s: cannot lock TCFS key file\n"), + Prog); + fail_exit (E_PW_UPDATE); } - if (!tcfs_open(O_RDWR)) { - fprintf(stderr, _("%s: cannot open TCFS key file\n"), Prog); - fail_exit(E_PW_UPDATE); + if (!tcfs_open (O_RDWR)) { + fprintf (stderr, _("%s: cannot open TCFS key file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #endif - if (! gr_lock ()) { - fprintf(stderr, _("%s: unable to lock group file\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_lock ()) { + fprintf (stderr, _("%s: unable to lock group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } - if (! gr_open (O_RDWR)) { - fprintf(stderr, _("%s: cannot open group file\n"), Prog); - fail_exit(E_GRP_UPDATE); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: cannot open group file\n"), Prog); + fail_exit (E_GRP_UPDATE); } #ifdef SHADOWGRP - if (is_shadow_grp && ! sgr_lock ()) { - fprintf(stderr, _("%s: unable to lock shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_lock ()) { + fprintf (stderr, + _("%s: unable to lock shadow group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } - if (is_shadow_grp && ! sgr_open (O_RDWR)) { - fprintf(stderr, _("%s: cannot open shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + if (is_shadow_grp && !sgr_open (O_RDWR)) { + fprintf (stderr, _("%s: cannot open shadow group file\n"), + Prog); + fail_exit (E_GRP_UPDATE); } #endif } @@ -420,137 +430,145 @@ open_files(void) * and will update the group entries as required. */ -static void -update_user(void) +static void update_user (void) { #if defined(AUTH_METHODS) || defined(NDBM) - struct passwd *pwd; + struct passwd *pwd; #endif #ifdef AUTH_METHODS -#ifdef SHADOWPWD - struct spwd *spwd; +#ifdef SHADOWPWD + struct spwd *spwd; if (is_shadow_pwd && (spwd = spw_locate (user_name)) && spwd->sp_pwdp[0] == '@') { - if (pw_auth (spwd->sp_pwdp + 1, user_name, PW_DELETE, (char *) 0)) { - SYSLOG((LOG_ERR, - "failed deleting auth `%s' for user `%s'\n", - spwd->sp_pwdp + 1, user_name)); - fprintf(stderr, - _("%s: error deleting authentication\n"), - Prog); + if (pw_auth + (spwd->sp_pwdp + 1, user_name, PW_DELETE, + (char *) 0)) { + SYSLOG ((LOG_ERR, + "failed deleting auth `%s' for user `%s'\n", + spwd->sp_pwdp + 1, user_name)); + fprintf (stderr, + _("%s: error deleting authentication\n"), + Prog); } else { - SYSLOG((LOG_INFO, - "delete auth `%s' for user `%s'\n", - spwd->sp_pwdp + 1, user_name)); + SYSLOG ((LOG_INFO, + "delete auth `%s' for user `%s'\n", + spwd->sp_pwdp + 1, user_name)); } } -#endif /* SHADOWPWD */ - if ((pwd = pw_locate(user_name)) && pwd->pw_passwd[0] == '@') { - if (pw_auth(pwd->pw_passwd + 1, user_name, PW_DELETE, (char *) 0)) { - SYSLOG((LOG_ERR, - "failed deleting auth `%s' for user `%s'\n", - pwd->pw_passwd + 1, user_name)); - fprintf(stderr, - _("%s: error deleting authentication\n"), - Prog); +#endif /* SHADOWPWD */ + if ((pwd = pw_locate (user_name)) && pwd->pw_passwd[0] == '@') { + if (pw_auth + (pwd->pw_passwd + 1, user_name, PW_DELETE, + (char *) 0)) { + SYSLOG ((LOG_ERR, + "failed deleting auth `%s' for user `%s'\n", + pwd->pw_passwd + 1, user_name)); + fprintf (stderr, + _("%s: error deleting authentication\n"), + Prog); } else { - SYSLOG((LOG_INFO, "delete auth `%s' for user `%s'\n", - pwd->pw_passwd + 1, user_name); - } - } -#endif /* AUTH_METHODS */ - if (!pw_remove(user_name)) - fprintf(stderr, _("%s: error deleting password entry\n"), Prog); -#ifdef SHADOWPWD - if (is_shadow_pwd && ! spw_remove (user_name)) - fprintf(stderr, _("%s: error deleting shadow password entry\n"), - Prog); + SYSLOG ((LOG_INFO, + "delete auth `%s' for user `%s'\n", + pwd->pw_passwd + 1, user_name);} + } +#endif /* AUTH_METHODS */ + if (!pw_remove (user_name)) + fprintf (stderr, + _ + ("%s: error deleting password entry\n"), + Prog); +#ifdef SHADOWPWD + if (is_shadow_pwd && !spw_remove (user_name)) + fprintf (stderr, + _ + ("%s: error deleting shadow password entry\n"), + Prog); #endif #ifdef HAVE_TCFS - if (tcfs_locate (user_name)) { - if (!tcfs_remove (user_name)) { - SYSLOG((LOG_ERR, - "failed deleting TCFS entry for user `%s'\n", - user_name)); - fprintf(stderr, _("%s: error deleting TCFS entry\n"), - Prog); - } else { - SYSLOG((LOG_INFO, - "delete TCFS entry for user `%s'\n", - user_name)); - } - } -#endif /* HAVE_TCFS */ + if (tcfs_locate (user_name)) { + if (!tcfs_remove (user_name)) { + SYSLOG ((LOG_ERR, + "failed deleting TCFS entry for user `%s'\n", + user_name)); + fprintf (stderr, + _ + ("%s: error deleting TCFS entry\n"), + Prog);} + else { + SYSLOG ((LOG_INFO, + "delete TCFS entry for user `%s'\n", + user_name));} + } +#endif /* HAVE_TCFS */ #ifdef NDBM - if (pw_dbm_present()) { - if ((pwd = getpwnam (user_name)) && ! pw_dbm_remove (pwd)) - fprintf(stderr, - _("%s: error deleting password dbm entry\n"), - Prog); - } + if (pw_dbm_present ()) { + if ((pwd = getpwnam (user_name)) + && !pw_dbm_remove (pwd)) + fprintf (stderr, + _ + ("%s: error deleting password dbm entry\n"), + Prog); + /* + * If the user's UID is a + * duplicate the duplicated + * entry needs to be updated + * so that a UID match can + * be found in the DBM + * files. + */ + for (pw_rewind (), pwd = pw_next (); pwd; + pwd = pw_next ()) { + if (pwd->pw_uid == user_id) { + pw_dbm_update (pwd); break;} + } + } + } - /* - * If the user's UID is a duplicate the duplicated entry needs - * to be updated so that a UID match can be found in the DBM - * files. - */ - - for (pw_rewind (), pwd = pw_next ();pwd;pwd = pw_next ()) { - if (pwd->pw_uid == user_id) { - pw_dbm_update (pwd); - break; - } - } #ifdef SHADOWPWD - if (is_shadow_pwd && sp_dbm_present() && !sp_dbm_remove(user_name)) - fprintf(stderr, - _("%s: error deleting shadow passwd dbm entry\n"), - Prog); - - endspent (); + if (is_shadow_pwd && sp_dbm_present () + && !sp_dbm_remove (user_name)) + fprintf (stderr, + _ + ("%s: error deleting shadow passwd dbm entry\n"), + Prog); #endif - endpwent (); -#endif /* NDBM */ - SYSLOG((LOG_INFO, "delete user `%s'\n", user_name)); -} + endpwent (); +#endif /* NDBM */ + SYSLOG ((LOG_INFO, "delete user `%s'\n", + user_name));} /* * user_busy - see if user is logged in. * * XXX - should probably check if there are any processes owned - * by this user. Also, I think this check should be in usermod + * by this user. Also, I think this check should be in usermod * as well (at least when changing username or uid). --marekm */ -static void -user_busy(const char *name, uid_t uid) -{ - struct utmp *utent; + static void user_busy (const char *name, uid_t uid) { + struct utmp *utent; - /* - * We see if the user is logged in by looking for the user name - * in the utmp file. - */ - - setutent (); - - while ((utent = getutent ())) { + /* + * We see if the user is logged in by looking for the user name + * in the utmp file. + */ + setutent (); while ((utent = getutent ())) { #ifdef USER_PROCESS - if (utent->ut_type != USER_PROCESS) + if (utent->ut_type != USER_PROCESS) continue; #else - if (utent->ut_user[0] == '\0') + if (utent->ut_user[0] == '\0') continue; #endif - if (strncmp(utent->ut_user, name, sizeof utent->ut_user)) + if (strncmp + (utent->ut_user, name, sizeof utent->ut_user)) continue; - - fprintf(stderr, _("%s: user %s is currently logged in\n"), - Prog, name); - exit(E_USER_BUSY); - } -} + fprintf (stderr, + _ + ("%s: user %s is currently logged in\n"), + Prog, name); exit (E_USER_BUSY);} + } /* * user_cancel - cancel cron and at jobs @@ -562,7 +580,7 @@ user_busy(const char *name, uid_t uid) * We used to have all this stuff hardcoded here, but now * we just run an external script - it may need to do other * things as well (like removing print jobs) and we may not - * want to recompile userdel too often. Below is a sample + * want to recompile userdel too often. Below is a sample * script (should work at least on Debian 1.1). --marekm ========== #! /bin/sh @@ -576,11 +594,10 @@ fi # Remove cron jobs. crontab -r -u $1 -# Remove at jobs. XXX - will remove any jobs owned by the -# same UID, even if it was shared by a different username. -# at really should store the username somewhere, and atrm -# should support an option to remove all jobs owned by the -# specified user - for now we have to do this ugly hack... +# Remove at jobs. XXX - will remove any jobs owned by the same UID, even if +# it was shared by a different username. at really should store the username +# somewhere, and atrm should support an option to remove all jobs owned by +# the specified user - for now we have to do this ugly hack... find /var/spool/cron/atjobs -name "[^.]*" -type f -user $1 -exec rm {} \; # Remove print jobs. @@ -591,323 +608,249 @@ exit 0 ========== */ -static void -user_cancel(const char *user) -{ - char *cmd; - int pid, wpid; - int status; + static void user_cancel (const char *user) { + char *cmd; + int pid, wpid; + int status; + if (!(cmd = getdef_str ("USERDEL_CMD"))) + return; pid = fork (); if (pid == 0) { + execl (cmd, cmd, user, (char *) 0); + if (errno == ENOENT) { + perror (cmd); _exit (127);} + else { + perror (cmd); _exit (126);} + } + else + if (pid == -1) { + perror ("fork"); return;} - if (!(cmd = getdef_str("USERDEL_CMD"))) - return; - - pid = fork(); - if (pid == 0) { - execl(cmd, cmd, user, (char *) 0); - if (errno == ENOENT) { - perror(cmd); - _exit(127); - } else { - perror(cmd); - _exit(126); - } - } else if (pid == -1) { - perror("fork"); - return; - } - - do { - wpid = wait(&status); - } while (wpid != pid && wpid != -1); -} + do { + wpid = wait (&status);} while (wpid != pid + && wpid != -1);} #ifdef EXTRA_CHECK_HOME_DIR -static int -path_prefix(const char *s1, const char *s2) -{ - return (strncmp(s2, s1, strlen(s1)) == 0); -} + static int + path_prefix (const char *s1, const char *s2) { + return (strncmp (s2, s1, strlen (s1)) == 0);} #endif -static int -is_owner(uid_t uid, const char *path) -{ - struct stat st; - - if (stat(path, &st)) - return -1; - return (st.st_uid == uid); -} + static int is_owner (uid_t uid, const char *path) { + struct stat st; if (stat (path, &st)) + return -1; return (st.st_uid == uid);} #ifndef NO_REMOVE_MAILBOX -static void -remove_mailbox(void) -{ - const char *maildir; - char mailfile[1024]; - int i; - - maildir = getdef_str("MAIL_DIR"); + static void remove_mailbox (void) { + const char *maildir; + char mailfile[1024]; + int i; maildir = getdef_str ("MAIL_DIR"); #ifdef MAIL_SPOOL_DIR - if (!maildir && !getdef_str("MAIL_FILE")) - maildir = MAIL_SPOOL_DIR; + if (!maildir && !getdef_str ("MAIL_FILE")) + maildir = MAIL_SPOOL_DIR; #endif - if (!maildir) - return; - - snprintf(mailfile, sizeof mailfile, "%s/%s", maildir, user_name); - if (fflg) { - unlink(mailfile); /* always remove, ignore errors */ - return; - } - i = is_owner(user_id, mailfile); - if (i == 0) { - fprintf(stderr, - _("%s: warning: %s not owned by %s, not removing\n"), - Prog, mailfile, user_name); - return; - } else if (i == -1) - return; /* mailbox doesn't exist */ - if (unlink(mailfile)) { - fprintf(stderr, _("%s: warning: can't remove "), Prog); - perror(mailfile); - } -} + if (!maildir) + return; + snprintf (mailfile, sizeof mailfile, + "%s/%s", maildir, user_name); if (fflg) { + unlink (mailfile); /* always remove, ignore errors */ + return;} + i = is_owner (user_id, mailfile); if (i == 0) { + fprintf (stderr, + _ + ("%s: warning: %s not owned by %s, not removing\n"), + Prog, mailfile, user_name); return;} + else + if (i == -1) + return; /* mailbox doesn't exist */ + if (unlink (mailfile)) { + fprintf (stderr, + _("%s: warning: can't remove "), + Prog); perror (mailfile);} + } #endif #ifdef USE_PAM -static struct pam_conv conv = { - misc_conv, - NULL -}; -#endif /* USE_PAM */ - + static struct pam_conv conv = { + misc_conv, NULL}; +#endif /* USE_PAM */ /* * main - userdel command */ + int main (int argc, char **argv) { + struct passwd *pwd; int arg; int errors = 0; -int -main(int argc, char **argv) -{ - struct passwd *pwd; - int arg; - int errors = 0; #ifdef USE_PAM - pam_handle_t *pamh = NULL; - struct passwd *pampw; - int retval; + pam_handle_t * pamh = NULL; + struct passwd *pampw; int retval; #endif - - /* - * Get my name so that I can use it to report errors. - */ - - Prog = Basename(argv[0]); - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - + /* + * Get my name so that I can use it to report errors. + */ + Prog = Basename (argv[0]); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM - retval = PAM_SUCCESS; + retval = PAM_SUCCESS; + pampw = getpwuid (getuid ()); if (pampw == NULL) { + retval = PAM_USER_UNKNOWN;} - pampw = getpwuid(getuid()); - if (pampw == NULL) { - retval = PAM_USER_UNKNOWN; - } + if (retval == PAM_SUCCESS) { + retval = + pam_start ("shadow", pampw->pw_name, &conv, + &pamh);} - if (retval == PAM_SUCCESS) { - retval = pam_start("shadow", pampw->pw_name, &conv, &pamh); - } + if (retval == PAM_SUCCESS) { + retval = pam_authenticate (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval);} + } - if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); - if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); - } - } + if (retval == PAM_SUCCESS) { + retval = pam_acct_mgmt (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval);} + } - if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); - if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); - } - } - - if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); - exit (1); - } -#endif /* USE_PAM */ - - OPENLOG(Prog); + if (retval != PAM_SUCCESS) { + fprintf (stderr, + _ + ("%s: PAM authentication failed\n"), + Prog); exit (1);} +#endif /* USE_PAM */ + OPENLOG (Prog); #ifdef SHADOWPWD - is_shadow_pwd = spw_file_present(); + is_shadow_pwd = spw_file_present (); #endif - #ifdef SHADOWGRP - is_shadow_grp = sgr_file_present(); + is_shadow_grp = sgr_file_present (); #endif - - /* - * The open routines for the DBM files don't use read-write - * as the mode, so we have to clue them in. - */ - + /* + * The open routines for the DBM files don't use read-write + * as the mode, so we have to clue them in. + */ #ifdef NDBM - pw_dbm_mode = O_RDWR; + pw_dbm_mode = O_RDWR; #ifdef SHADOWPWD - sp_dbm_mode = O_RDWR; + sp_dbm_mode = O_RDWR; #endif - gr_dbm_mode = O_RDWR; + gr_dbm_mode = O_RDWR; #ifdef SHADOWGRP - sg_dbm_mode = O_RDWR; + sg_dbm_mode = O_RDWR; #endif #endif - while ((arg = getopt (argc, argv, "fr")) != EOF) { - switch (arg) { - case 'f': /* force remove even if not owned by user */ - fflg++; - break; - case 'r': /* remove home dir and mailbox */ - rflg++; - break; - default: - usage(); - } - } - - if (optind + 1 != argc) - usage (); + while ((arg = getopt (argc, argv, "fr")) != EOF) { + switch (arg) { +case 'f': /* force remove even if not owned by user */ +fflg++; break; case 'r': /* remove home dir and mailbox */ +rflg++; break; default: + usage ();} + } - /* - * Start with a quick check to see if the user exists. - */ - - user_name = argv[argc - 1]; - - if (! (pwd = getpwnam (user_name))) { - fprintf(stderr, _("%s: user %s does not exist\n"), - Prog, user_name); - exit(E_NOTFOUND); - } + if (optind + 1 != argc) + usage (); + /* + * Start with a quick check to see if the user exists. + */ + user_name = argv[argc - 1]; + if (!(pwd = getpwnam (user_name))) { + fprintf (stderr, + _("%s: user %s does not exist\n"), + Prog, user_name); exit (E_NOTFOUND);} #ifdef USE_NIS - /* - * Now make sure it isn't an NIS user. - */ + /* + * Now make sure it isn't an NIS user. + */ - if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf(stderr, _("%s: user %s is a NIS user\n"), - Prog, user_name); - - if (! yp_get_default_domain (&nis_domain) && - ! yp_master (nis_domain, "passwd.byname", - &nis_master)) { - fprintf(stderr, _("%s: %s is the NIS master\n"), - Prog, nis_master); - } - exit(E_NOTFOUND); - } + if (__ispwNIS ()) { + char *nis_domain; + char *nis_master; + fprintf (stderr, + _("%s: user %s is a NIS user\n"), + Prog, user_name); + if (!yp_get_default_domain (&nis_domain) + && !yp_master (nis_domain, + "passwd.byname", &nis_master)) { + fprintf (stderr, + _("%s: %s is the NIS master\n"), + Prog, nis_master);} + exit (E_NOTFOUND);} #endif - user_id = pwd->pw_uid; - user_home = xstrdup(pwd->pw_dir); - - /* - * Check to make certain the user isn't logged in. - */ - - user_busy (user_name, user_id); - - /* - * Do the hard stuff - open the files, create the user entries, - * create the home directory, then close and update the files. - */ - - open_files (); - - update_user (); - update_groups (); - + user_id = pwd->pw_uid; + user_home = xstrdup (pwd->pw_dir); + /* + * Check to make certain the user isn't logged in. + */ + user_busy (user_name, user_id); + /* + * Do the hard stuff - open the files, create the user entries, + * create the home directory, then close and update the files. + */ + open_files (); update_user (); update_groups (); #ifndef NO_REMOVE_MAILBOX - if (rflg) - remove_mailbox(); + if (rflg) + remove_mailbox (); #endif + if (rflg && !fflg + && !is_owner (user_id, user_home)) { + fprintf (stderr, + _ + ("%s: %s not owned by %s, not removing\n"), + Prog, user_home, user_name); + rflg = 0; errors++;} - if (rflg && !fflg && !is_owner(user_id, user_home)) { - fprintf(stderr, _("%s: %s not owned by %s, not removing\n"), - Prog, user_home, user_name); - rflg = 0; - errors++; - } - -/* This may be slow, the above should be good enough. */ +/* This may be slow, the above should be good enough. */ #ifdef EXTRA_CHECK_HOME_DIR - if (rflg && !fflg) { - /* - * For safety, refuse to remove the home directory - * if it would result in removing some other user's - * home directory. Still not perfect so be careful, - * but should prevent accidents if someone has /home - * or / as home directory... --marekm - */ - setpwent(); - while ((pwd = getpwent())) { - if (strcmp(pwd->pw_name, user_name) == 0) - continue; - - if (path_prefix(user_home, pwd->pw_dir)) { - fprintf(stderr, - _("%s: not removing directory %s (would remove home of user %s)\n"), - Prog, user_home, pwd->pw_name); - - rflg = 0; - errors++; - break; + if (rflg && !fflg) { + /* + * For safety, refuse to remove the home directory + * if it would result in removing some other user's + * home directory. Still not perfect so be careful, + * but should prevent accidents if someone has /home + * or / as home directory... --marekm + */ + setpwent (); while ((pwd = getpwent ())) { + if (strcmp (pwd->pw_name, user_name) == 0) + continue; if (path_prefix (user_home, pwd->pw_dir)) { + fprintf (stderr, + _ + ("%s: not removing directory %s (would remove home of user %s)\n"), + Prog, user_home, pwd->pw_name); + rflg = 0; errors++; break;} + } } - } - } #endif - if (rflg) { - if (remove_tree(user_home) || rmdir(user_home)) { - fprintf(stderr, _("%s: error removing directory %s\n"), - Prog, user_home); + if (rflg) { + if (remove_tree (user_home) + || rmdir (user_home)) { + fprintf (stderr, + _ + ("%s: error removing directory %s\n"), + Prog, user_home); errors++;} + } - errors++; - } - } - - /* - * Cancel any crontabs or at jobs. Have to do this before we - * remove the entry from /etc/passwd. - */ - - user_cancel(user_name); - - close_files (); + /* + * Cancel any crontabs or at jobs. Have to do this before we + * remove the entry from /etc/passwd. + */ + user_cancel (user_name); close_files (); #ifdef USE_PAM - if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); - if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); - } - } + if (retval == PAM_SUCCESS) { + retval = pam_chauthtok (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval);} + } - if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog); - exit (1); - } + if (retval != PAM_SUCCESS) { + fprintf (stderr, + _("%s: PAM chauthtok failed\n"), + Prog); exit (1);} - if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ - - exit(errors ? E_HOMEDIR : E_SUCCESS); - /*NOTREACHED*/ -} + if (retval == PAM_SUCCESS) + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ + exit (errors ? E_HOMEDIR : E_SUCCESS); + /*NOTREACHED*/} diff --git a/src/usermod.c b/src/usermod.c index 9b13606f..f8fa363d 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -17,7 +17,7 @@ * 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 + * 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) @@ -30,8 +30,7 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: usermod.c,v 1.22 2001/09/01 04:19:16 kloczek Exp $") - +RCSID (PKG_VER "$Id: usermod.c,v 1.25 2002/01/05 15:41:44 kloczek Exp $") #include #include #include @@ -41,13 +40,11 @@ RCSID(PKG_VER "$Id: usermod.c,v 1.22 2001/09/01 04:19:16 kloczek Exp $") #include #include #include - #ifdef USE_PAM #include #include #include -#endif /* USE_PAM */ - +#endif /* USE_PAM */ #include "prototypes.h" #include "defines.h" #include "chkname.h" @@ -59,7 +56,6 @@ RCSID(PKG_VER "$Id: usermod.c,v 1.22 2001/09/01 04:19:16 kloczek Exp $") #endif #include "pwauth.h" #include "getdef.h" - /* * exit status values * for E_GRP_UPDATE and E_NOSPACE (not used yet), other update requests @@ -70,16 +66,14 @@ RCSID(PKG_VER "$Id: usermod.c,v 1.22 2001/09/01 04:19:16 kloczek Exp $") #define E_USAGE 2 /* invalid command syntax */ #define E_BAD_ARG 3 /* invalid argument to option */ #define E_UID_IN_USE 4 /* uid already in use (and no -o) */ -/* #define E_BAD_PWFILE 5 */ /* passwd file contains errors */ +/* #define E_BAD_PWFILE 5 *//* passwd file contains errors */ #define E_NOTFOUND 6 /* specified user/group doesn't exist */ #define E_USER_BUSY 8 /* user to modify is logged in */ #define E_NAME_IN_USE 9 /* username already in use */ #define E_GRP_UPDATE 10 /* can't update group file */ -/* #define E_NOSPACE 11 */ /* insufficient space to move home dir */ +/* #define E_NOSPACE 11 *//* insufficient space to move home dir */ #define E_HOMEDIR 12 /* unable to complete home dir move */ - #define VALID(s) (strcspn (s, ":\n") == strlen (s)) - static char *user_name; static char *user_newname; static char *user_pass; @@ -91,49 +85,52 @@ static char *user_comment; static char *user_home; static char *user_newhome; static char *user_shell; + #ifdef SHADOWPWD static long user_expire; static long user_inactive; #endif static long sys_ngroups; -static char **user_groups; /* NULL-terminated list */ +static char **user_groups; /* NULL-terminated list */ static char *Prog; #ifdef AUTH_METHODS static char *auth_arg; static char user_auth[BUFSIZ]; -static int Aflg = 0; /* specify user defined authentication method */ +static int Aflg = 0; /* specify user defined authentication method */ #else #define Aflg 0 #endif static int - uflg = 0, /* specify new user ID */ - oflg = 0, /* permit non-unique user ID to be specified with -u */ - gflg = 0, /* new primary group ID */ - Gflg = 0, /* new secondary group set */ - dflg = 0, /* new home directory */ - sflg = 0, /* new shell program */ - cflg = 0, /* new comment (GECOS) field */ - mflg = 0, /* create user's home directory if it doesn't exist */ + uflg = 0, /* specify new user ID */ + oflg = 0, /* permit non-unique user ID to be specified with -u */ + gflg = 0, /* new primary group ID */ + Gflg = 0, /* new secondary group set */ + dflg = 0, /* new home directory */ + sflg = 0, /* new shell program */ + cflg = 0, /* new comment (GECOS) field */ + mflg = 0, /* create user's home directory if it doesn't exist */ #ifdef SHADOWPWD - fflg = 0, /* days until account with expired password is locked */ - eflg = 0, /* days since 1970-01-01 when account becomes expired */ + fflg = 0, /* days until account with expired password is locked */ + eflg = 0, /* days since 1970-01-01 when account becomes expired */ #endif - Lflg = 0, /* lock the password */ - Uflg = 0, /* unlock the password */ - pflg = 0, /* new encrypted password */ - lflg = 0; /* new user name */ + Lflg = 0, /* lock the password */ + Uflg = 0, /* unlock the password */ + pflg = 0, /* new encrypted password */ + lflg = 0; /* new user name */ #ifdef NDBM -extern int pw_dbm_mode; +extern int pw_dbm_mode; + #ifdef SHADOWPWD -extern int sp_dbm_mode; +extern int sp_dbm_mode; #endif -extern int gr_dbm_mode; +extern int gr_dbm_mode; + #ifdef SHADOWGRP -extern int sg_dbm_mode; +extern int sg_dbm_mode; #endif #endif @@ -156,56 +153,59 @@ static int is_shadow_grp; #include "shadowio.h" #endif -extern char *optarg; -extern int optind; - /* local function prototypes */ -static int get_groups(char *); -static void usage(void); -static void new_pwent(struct passwd *); +static int get_groups (char *); +static void usage (void); +static void new_pwent (struct passwd *); + #ifdef SHADOWPWD -static void new_spent(struct spwd *); +static void new_spent (struct spwd *); #endif -static void fail_exit(int); -static int update_group(void); +static void fail_exit (int); +static int update_group (void); + #ifdef SHADOWGRP -static int update_gshadow(void); +static int update_gshadow (void); #endif -static int grp_update(void); +static int grp_update (void); + #ifdef AUTH_METHODS -static char *get_password(const char *); -static void split_auths(char *, char **); -static void update_auths(const char *, const char *, char *); -static void add_auths(const char *, const char *, char *); -static void delete_auths(const char *, const char *, char *); -static void convert_auth(char *, const char *, const char *); -static int valid_auth(const char *); +static char *get_password (const char *); +static void split_auths (char *, char **); +static void update_auths (const char *, const char *, char *); +static void add_auths (const char *, const char *, char *); +static void delete_auths (const char *, const char *, char *); +static void convert_auth (char *, const char *, const char *); +static int valid_auth (const char *); #endif -static long get_number(const char *); -static void process_flags(int, char **); -static void close_files(void); -static void open_files(void); -static void usr_update(void); -static void move_home(void); -static void update_files(void); +static long get_number (const char *); +static uid_t get_id (const char *); +static void process_flags (int, char **); +static void close_files (void); +static void open_files (void); +static void usr_update (void); +static void move_home (void); +static void update_files (void); + #ifndef NO_MOVE_MAILBOX -static void move_mailbox(void); +static void move_mailbox (void); #endif -/* Had to move this over from useradd.c since we have groups named +/* + * Had to move this over from useradd.c since we have groups named * "56k-family"... ergh. - * --Pac. */ -static struct group * -getgr_nam_gid(const char *name) + * --Pac. + */ +static struct group *getgr_nam_gid (const char *name) { gid_t gid; char *ep; - gid = strtol(name, &ep, 10); - if (*name != '\0' && *ep == '\0') /* valid numeric gid */ - return getgrgid(gid); + gid = strtoul (name, &ep, 10); + if (*name != '\0' && *ep == '\0') /* valid numeric gid */ + return getgrgid (gid); - return getgrnam(name); + return getgrnam (name); } @@ -213,12 +213,11 @@ getgr_nam_gid(const char *name) * get_groups - convert a list of group names to an array of group IDs * * get_groups() takes a comma-separated list of group names and - * converts it to a NULL-terminated array. Any unknown group - * names are reported as errors. + * converts it to a NULL-terminated array. Any unknown group names are + * reported as errors. */ -static int -get_groups(char *list) +static int get_groups (char *list) { char *cp; const struct group *grp; @@ -231,13 +230,13 @@ get_groups(char *list) user_groups[0] = (char *) 0; - if (! *list) + if (!*list) return 0; /* - * So long as there is some data to be converted, strip off - * each name and look it up. A mix of numerical and string - * values for group identifiers is permitted. + * So long as there is some data to be converted, strip off each + * name and look it up. A mix of numerical and string values for + * group identifiers is permitted. */ do { @@ -248,46 +247,48 @@ get_groups(char *list) *cp++ = '\0'; /* - * Names starting with digits are treated as numerical - * GID values, otherwise the string is looked up as is. + * Names starting with digits are treated as numerical GID + * values, otherwise the string is looked up as is. */ - grp = getgr_nam_gid(list); + grp = getgr_nam_gid (list); /* * There must be a match, either by GID value or by * string name. */ if (!grp) { - fprintf(stderr, _("%s: unknown group %s\n"), - Prog, list); + fprintf (stderr, _("%s: unknown group %s\n"), + Prog, list); errors++; } list = cp; /* - * If the group doesn't exist, don't dump core... - * Instead, try the next one. --marekm + * If the group doesn't exist, don't dump core. Instead, + * try the next one. --marekm */ - if (! grp) + if (!grp) continue; #ifdef USE_NIS /* - * Don't add this group if they are an NIS group. Tell - * the user to go to the server for this group. + * Don't add this group if they are an NIS group. Tell the + * user to go to the server for this group. */ if (__isgrNIS ()) { - fprintf(stderr, _("%s: group `%s' is a NIS group.\n"), - Prog, grp->gr_name); + fprintf (stderr, + _("%s: group `%s' is a NIS group.\n"), + Prog, grp->gr_name); continue; } #endif if (ngroups == sys_ngroups) { - fprintf(stderr, - _("%s: too many groups specified (max %d).\n"), - Prog, ngroups); + fprintf (stderr, + _ + ("%s: too many groups specified (max %d).\n"), + Prog, ngroups); break; } @@ -295,7 +296,7 @@ get_groups(char *list) * Add the group name to the user's list of groups. */ - user_groups[ngroups++] = xstrdup(grp->gr_name); + user_groups[ngroups++] = xstrdup (grp->gr_name); } while (list); user_groups[ngroups] = (char *) 0; @@ -314,52 +315,52 @@ get_groups(char *list) * usage - display usage message and exit */ -static void -usage(void) +static void usage (void) { - fprintf(stderr, - _("usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"), - Prog); - fprintf(stderr, - _("\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n")); - fprintf(stderr, "\t\t"); + fprintf (stderr, + _ + ("usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"), + Prog); + fprintf (stderr, + _ + ("\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n")); + fprintf (stderr, "\t\t"); #ifdef SHADOWPWD - fprintf(stderr, _("[-f inactive] [-e expire ] ")); + fprintf (stderr, _("[-f inactive] [-e expire ] ")); #endif #ifdef AUTH_METHODS - fprintf(stderr, _("[-A {DEFAULT|program},... ] ")); + fprintf (stderr, _("[-A {DEFAULT|program},... ] ")); #endif - fprintf(stderr, _("[-p passwd] [-L|-U] name\n")); - exit(E_USAGE); + fprintf (stderr, _("[-p passwd] [-L|-U] name\n")); + exit (E_USAGE); } -/* update encrypted password string (for both shadow and non-shadow passwords) */ +/* + * update encrypted password string (for both shadow and non-shadow + * passwords) + */ -static char * -new_pw_passwd(char *pw_pass, const char *pw_name) +static char *new_pw_passwd (char *pw_pass, const char *pw_name) { if (Lflg && pw_pass[0] != '!') { - char *buf = xmalloc(strlen(pw_pass) + 2); + char *buf = xmalloc (strlen (pw_pass) + 2); - SYSLOG((LOG_INFO, "lock user `%s' password\n", - pw_name)); - strcpy(buf, "!"); - strcat(buf, pw_pass); + SYSLOG ((LOG_INFO, "lock user `%s' password", pw_name)); + strcpy (buf, "!"); + strcat (buf, pw_pass); pw_pass = buf; } else if (Uflg && pw_pass[0] == '!') { char *s; - SYSLOG((LOG_INFO, "unlock user `%s' password\n", - pw_name)); + SYSLOG ((LOG_INFO, "unlock user `%s' password", pw_name)); s = pw_pass; while (*s) { *s = *(s + 1); s++; } } else if (pflg) { - SYSLOG((LOG_INFO, "change user `%s' password\n", - pw_name)); - pw_pass = xstrdup(user_pass); + SYSLOG ((LOG_INFO, "change user `%s' password", pw_name)); + pw_pass = xstrdup (user_pass); } return pw_pass; } @@ -367,45 +368,48 @@ new_pw_passwd(char *pw_pass, const char *pw_name) /* * new_pwent - initialize the values in a password file entry * - * new_pwent() takes all of the values that have been entered and - * fills in a (struct passwd) with them. + * new_pwent() takes all of the values that have been entered and fills + * in a (struct passwd) with them. */ -static void -new_pwent(struct passwd *pwent) +static void new_pwent (struct passwd *pwent) { if (lflg) { - SYSLOG((LOG_INFO, "change user name `%s' to `%s'\n", - pwent->pw_name, user_newname)); + SYSLOG ((LOG_INFO, "change user name `%s' to `%s'", + pwent->pw_name, user_newname)); pwent->pw_name = xstrdup (user_newname); } - #ifdef SHADOWPWD if (!is_shadow_pwd) #endif - pwent->pw_passwd = new_pw_passwd(pwent->pw_passwd, pwent->pw_name); + pwent->pw_passwd = + new_pw_passwd (pwent->pw_passwd, pwent->pw_name); if (uflg) { - SYSLOG((LOG_INFO, "change user `%s' UID from `%d' to `%d'\n", - pwent->pw_name, pwent->pw_uid, user_newid)); + SYSLOG ((LOG_INFO, + "change user `%s' UID from `%d' to `%d'", + pwent->pw_name, pwent->pw_uid, user_newid)); pwent->pw_uid = user_newid; } if (gflg) { - SYSLOG((LOG_INFO, "change user `%s' GID from `%d' to `%d'\n", - pwent->pw_name, pwent->pw_gid, user_newgid)); + SYSLOG ((LOG_INFO, + "change user `%s' GID from `%d' to `%d'", + pwent->pw_name, pwent->pw_gid, user_newgid)); pwent->pw_gid = user_newgid; } if (cflg) pwent->pw_gecos = user_comment; if (dflg) { - SYSLOG((LOG_INFO, "change user `%s' home from `%s' to `%s'\n", - pwent->pw_name, pwent->pw_dir, user_newhome)); + SYSLOG ((LOG_INFO, + "change user `%s' home from `%s' to `%s'", + pwent->pw_name, pwent->pw_dir, user_newhome)); pwent->pw_dir = user_newhome; } if (sflg) { - SYSLOG((LOG_INFO, "change user `%s' shell from `%s' to `%s'\n", - pwent->pw_name, pwent->pw_shell, user_shell)); + SYSLOG ((LOG_INFO, + "change user `%s' shell from `%s' to `%s'", + pwent->pw_name, pwent->pw_shell, user_shell)); pwent->pw_shell = user_shell; } } @@ -414,39 +418,37 @@ new_pwent(struct passwd *pwent) /* * new_spent - initialize the values in a shadow password file entry * - * new_spent() takes all of the values that have been entered and - * fills in a (struct spwd) with them. + * new_spent() takes all of the values that have been entered and fills + * in a (struct spwd) with them. */ -static void -new_spent(struct spwd *spent) +static void new_spent (struct spwd *spent) { if (lflg) spent->sp_namp = xstrdup (user_newname); if (fflg) { - SYSLOG((LOG_INFO, - "change user `%s' inactive from `%ld' to `%ld'\n", - spent->sp_namp, spent->sp_inact, user_inactive)); + SYSLOG ((LOG_INFO, + "change user `%s' inactive from `%ld' to `%ld'", + spent->sp_namp, spent->sp_inact, user_inactive)); spent->sp_inact = user_inactive; } if (eflg) { /* XXX - dates might be better than numbers of days. --marekm */ - SYSLOG((LOG_INFO, - "change user `%s' expiration from `%ld' to `%ld'\n", - spent->sp_namp, spent->sp_expire, user_expire)); + SYSLOG ((LOG_INFO, + "change user `%s' expiration from `%ld' to `%ld'", + spent->sp_namp, spent->sp_expire, user_expire)); spent->sp_expire = user_expire; } - spent->sp_pwdp = new_pw_passwd(spent->sp_pwdp, spent->sp_namp); + spent->sp_pwdp = new_pw_passwd (spent->sp_pwdp, spent->sp_namp); } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ /* * fail_exit - exit with an error code after unlocking files */ -static void -fail_exit(int code) +static void fail_exit (int code) { (void) gr_unlock (); #ifdef SHADOWGRP @@ -458,12 +460,11 @@ fail_exit(int code) spw_unlock (); #endif (void) pw_unlock (); - exit(code); + exit (code); } -static int -update_group(void) +static int update_group (void) { int is_member; int was_member; @@ -472,18 +473,20 @@ update_group(void) struct group *ngrp; /* - * Lock and open the group file. This will load all of the group + * Lock and open the group file. This will load all of the group * entries. */ - if (! gr_lock ()) { - fprintf(stderr, _("%s: error locking group file\n"), Prog); - SYSLOG((LOG_ERR, "error locking group file")); + if (!gr_lock ()) { + fprintf (stderr, _("%s: error locking group file\n"), + Prog); + SYSLOG ((LOG_ERR, "error locking group file")); return -1; } - if (! gr_open (O_RDWR)) { - fprintf(stderr, _("%s: error opening group file\n"), Prog); - SYSLOG((LOG_ERR, "error opening group file")); - gr_unlock(); + if (!gr_open (O_RDWR)) { + fprintf (stderr, _("%s: error opening group file\n"), + Prog); + SYSLOG ((LOG_ERR, "error opening group file")); + gr_unlock (); return -1; } @@ -493,92 +496,94 @@ update_group(void) * Scan through the entire group file looking for the groups that * the user is a member of. */ - while ((grp = gr_next())) { + while ((grp = gr_next ())) { /* * See if the user specified this group as one of their * concurrent groups. */ - was_member = is_on_list(grp->gr_mem, user_name); - is_member = Gflg && is_on_list(user_groups, grp->gr_name); + was_member = is_on_list (grp->gr_mem, user_name); + is_member = Gflg && is_on_list (user_groups, grp->gr_name); if (!was_member && !is_member) continue; - ngrp = __gr_dup(grp); + ngrp = __gr_dup (grp); if (!ngrp) { - fprintf(stderr, - _("%s: out of memory in update_group\n"), - Prog); - gr_unlock(); + fprintf (stderr, + _("%s: out of memory in update_group\n"), + Prog); + gr_unlock (); return -1; } if (was_member && (!Gflg || is_member)) { if (lflg) { - ngrp->gr_mem = del_list(ngrp->gr_mem, - user_name); - ngrp->gr_mem = add_list(ngrp->gr_mem, - user_newname); + ngrp->gr_mem = del_list (ngrp->gr_mem, + user_name); + ngrp->gr_mem = add_list (ngrp->gr_mem, + user_newname); changed = 1; - SYSLOG((LOG_INFO, - "change `%s' to `%s' in group `%s'\n", - user_name, user_newname, - ngrp->gr_name)); + SYSLOG ((LOG_INFO, + "change `%s' to `%s' in group `%s'", + user_name, user_newname, + ngrp->gr_name)); } } else if (was_member && Gflg && !is_member) { ngrp->gr_mem = del_list (ngrp->gr_mem, user_name); changed = 1; - SYSLOG((LOG_INFO, "delete `%s' from group `%s'\n", - user_name, ngrp->gr_name)); + SYSLOG ((LOG_INFO, "delete `%s' from group `%s'", + user_name, ngrp->gr_name)); } else if (!was_member && Gflg && is_member) { ngrp->gr_mem = add_list (ngrp->gr_mem, - lflg ? user_newname:user_name); + lflg ? user_newname : + user_name); changed = 1; - SYSLOG((LOG_INFO, "add `%s' to group `%s'\n", - lflg ? user_newname:user_name, ngrp->gr_name)); + SYSLOG ((LOG_INFO, "add `%s' to group `%s'", + lflg ? user_newname : user_name, + ngrp->gr_name)); } if (!changed) continue; changed = 0; - if (! gr_update (ngrp)) { - fprintf(stderr, _("%s: error adding new group entry\n"), - Prog); - SYSLOG((LOG_ERR, "error adding group entry")); - gr_unlock(); + if (!gr_update (ngrp)) { + fprintf (stderr, + _("%s: error adding new group entry\n"), + Prog); + SYSLOG ((LOG_ERR, "error adding group entry")); + gr_unlock (); return -1; } #ifdef NDBM /* * Update the DBM group file with the new entry as well. */ - if (! gr_dbm_update (ngrp)) { - fprintf(stderr, - _("%s: cannot add new dbm group entry\n"), - Prog); - SYSLOG((LOG_ERR, "error adding dbm group entry")); - gr_unlock(); + if (!gr_dbm_update (ngrp)) { + fprintf (stderr, + _("%s: cannot add new dbm group entry\n"), + Prog); + SYSLOG ((LOG_ERR, "error adding dbm group entry")); + gr_unlock (); return -1; } -#endif /* NDBM */ +#endif /* NDBM */ } #ifdef NDBM endgrent (); -#endif /* NDBM */ - if (!gr_close()) { - fprintf(stderr, _("%s: cannot rewrite group file\n"), - Prog); - gr_unlock(); +#endif /* NDBM */ + if (!gr_close ()) { + fprintf (stderr, _("%s: cannot rewrite group file\n"), + Prog); + gr_unlock (); return -1; } - gr_unlock(); + gr_unlock (); return 0; } #ifdef SHADOWGRP -static int -update_gshadow(void) +static int update_gshadow (void) { int is_member; int was_member; @@ -587,17 +592,17 @@ update_gshadow(void) const struct sgrp *sgrp; struct sgrp *nsgrp; - if (!sgr_lock()) { - fprintf(stderr, _("%s: error locking shadow group file\n"), - Prog); - SYSLOG((LOG_ERR, "error locking shadow group file")); + if (!sgr_lock ()) { + fprintf (stderr, + _("%s: error locking shadow group file\n"), Prog); + SYSLOG ((LOG_ERR, "error locking shadow group file")); return -1; } - if (!sgr_open(O_RDWR)) { - fprintf(stderr, _("%s: error opening shadow group file\n"), - Prog); - SYSLOG((LOG_ERR, "error opening shadow group file")); - sgr_unlock(); + if (!sgr_open (O_RDWR)) { + fprintf (stderr, + _("%s: error opening shadow group file\n"), Prog); + SYSLOG ((LOG_ERR, "error opening shadow group file")); + sgr_unlock (); return -1; } @@ -607,67 +612,75 @@ update_gshadow(void) * Scan through the entire shadow group file looking for the groups * that the user is a member of. */ - while ((sgrp = sgr_next())) { + while ((sgrp = sgr_next ())) { /* * See if the user was a member of this group */ - was_member = is_on_list(sgrp->sg_mem, user_name); + was_member = is_on_list (sgrp->sg_mem, user_name); /* * See if the user was an administrator of this group */ - was_admin = is_on_list(sgrp->sg_adm, user_name); + was_admin = is_on_list (sgrp->sg_adm, user_name); /* * See if the user specified this group as one of their * concurrent groups. */ - is_member = Gflg && is_on_list(user_groups, sgrp->sg_name); + is_member = Gflg + && is_on_list (user_groups, sgrp->sg_name); if (!was_member && !was_admin && !is_member) continue; - nsgrp = __sgr_dup(sgrp); + nsgrp = __sgr_dup (sgrp); if (!nsgrp) { - fprintf(stderr, - _("%s: out of memory in update_gshadow\n"), - Prog); - sgr_unlock(); + fprintf (stderr, + _ + ("%s: out of memory in update_gshadow\n"), + Prog); + sgr_unlock (); return -1; } if (was_admin && lflg) { - nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name); - nsgrp->sg_adm = add_list (nsgrp->sg_adm, user_newname); + nsgrp->sg_adm = + del_list (nsgrp->sg_adm, user_name); + nsgrp->sg_adm = + add_list (nsgrp->sg_adm, user_newname); changed = 1; - SYSLOG((LOG_INFO, - "change admin `%s' to `%s' in shadow group `%s'\n", - user_name, user_newname, nsgrp->sg_name)); + SYSLOG ((LOG_INFO, + "change admin `%s' to `%s' in shadow group `%s'", + user_name, user_newname, nsgrp->sg_name)); } if (was_member && (!Gflg || is_member)) { if (lflg) { nsgrp->sg_mem = del_list (nsgrp->sg_mem, - user_name); + user_name); nsgrp->sg_mem = add_list (nsgrp->sg_mem, - user_newname); + user_newname); changed = 1; - SYSLOG((LOG_INFO, - "change `%s' to `%s' in shadow group `%s'\n", - user_name, user_newname, nsgrp->sg_name)); + SYSLOG ((LOG_INFO, + "change `%s' to `%s' in shadow group `%s'", + user_name, user_newname, + nsgrp->sg_name)); } } else if (was_member && Gflg && !is_member) { - nsgrp->sg_mem = del_list (nsgrp->sg_mem, user_name); + nsgrp->sg_mem = + del_list (nsgrp->sg_mem, user_name); changed = 1; - SYSLOG((LOG_INFO, - "delete `%s' from shadow group `%s'\n", - user_name, nsgrp->sg_name)); + SYSLOG ((LOG_INFO, + "delete `%s' from shadow group `%s'", + user_name, nsgrp->sg_name)); } else if (!was_member && Gflg && is_member) { nsgrp->sg_mem = add_list (nsgrp->sg_mem, - lflg ? user_newname:user_name); + lflg ? user_newname : + user_name); changed = 1; - SYSLOG((LOG_INFO, "add `%s' to shadow group `%s'\n", - lflg ? user_newname:user_name,nsgrp->sg_name)); + SYSLOG ((LOG_INFO, "add `%s' to shadow group `%s'", + lflg ? user_newname : user_name, + nsgrp->sg_name)); } if (!changed) continue; @@ -677,59 +690,60 @@ update_gshadow(void) /* * Update the group entry to reflect the changes. */ - if (! sgr_update (nsgrp)) { - fprintf(stderr, - _("%s: error adding new group entry\n"), - Prog); - SYSLOG((LOG_ERR, "error adding shadow group entry\n")); - sgr_unlock(); + if (!sgr_update (nsgrp)) { + fprintf (stderr, + _("%s: error adding new group entry\n"), + Prog); + SYSLOG ((LOG_ERR, + "error adding shadow group entry")); + sgr_unlock (); return -1; } #ifdef NDBM /* * Update the DBM group file with the new entry as well. */ - if (! sg_dbm_update (nsgrp)) { - fprintf(stderr, - _("%s: cannot add new dbm group entry\n"), - Prog); - SYSLOG((LOG_ERR, - "error adding dbm shadow group entry\n")); - sgr_unlock(); + if (!sg_dbm_update (nsgrp)) { + fprintf (stderr, + _("%s: cannot add new dbm group entry\n"), + Prog); + SYSLOG ((LOG_ERR, + "error adding dbm shadow group entry")); + sgr_unlock (); return -1; } -#endif /* NDBM */ +#endif /* NDBM */ } #ifdef NDBM endsgent (); -#endif /* NDBM */ - if (!sgr_close()) { - fprintf(stderr, _("%s: cannot rewrite shadow group file\n"), - Prog); - sgr_unlock(); +#endif /* NDBM */ + if (!sgr_close ()) { + fprintf (stderr, + _("%s: cannot rewrite shadow group file\n"), + Prog); + sgr_unlock (); return -1; } - sgr_unlock(); + sgr_unlock (); return 0; } -#endif /* SHADOWGRP */ +#endif /* SHADOWGRP */ /* * grp_update - add user to secondary group set * - * grp_update() takes the secondary group set given in user_groups - * and adds the user to each group given by that set. + * grp_update() takes the secondary group set given in user_groups and + * adds the user to each group given by that set. */ -static int -grp_update(void) +static int grp_update (void) { int ret; - ret = update_group(); + ret = update_group (); #ifdef SHADOWGRP if (!ret && is_shadow_grp) - ret = update_gshadow(); + ret = update_gshadow (); #endif return ret; } @@ -739,14 +753,13 @@ grp_update(void) * get_password - locate encrypted password in authentication list */ -static char * -get_password(const char *list) +static char *get_password (const char *list) { - char *cp, *end; - static char buf[257]; + char *cp, *end; + static char buf[257]; strcpy (buf, list); - for (cp = buf;cp;cp = end) { + for (cp = buf; cp; cp = end) { if ((end = strchr (cp, ';'))) *end++ = 0; @@ -762,13 +775,12 @@ get_password(const char *list) * split_auths - break up comma list into (char *) array */ -static void -split_auths(char *list, char **array) +static void split_auths (char *list, char **array) { - char *cp, *end; - int i = 0; + char *cp, *end; + int i = 0; - for (cp = list;cp;cp = end) { + for (cp = list; cp; cp = end) { if ((end = strchr (cp, ';'))) *end++ = '\0'; @@ -781,12 +793,11 @@ split_auths(char *list, char **array) * update_auths - find list of methods to update */ -static void -update_auths(const char *old, const char *new, char *update) +static void update_auths (const char *old, const char *new, char *update) { - char oldbuf[257], newbuf[257]; - char *oldv[32], *newv[32], *updatev[32]; - int i, j, k; + char oldbuf[257], newbuf[257]; + char *oldv[32], *newv[32], *updatev[32]; + int i, j, k; strcpy (oldbuf, old); split_auths (oldbuf, oldv); @@ -794,8 +805,8 @@ update_auths(const char *old, const char *new, char *update) strcpy (newbuf, new); split_auths (newbuf, newv); - for (i = j = k = 0;oldv[i];i++) { - for (j = 0;newv[j];j++) + for (i = j = k = 0; oldv[i]; i++) { + for (j = 0; newv[j]; j++) if (strcmp (oldv[i], newv[j]) != 0) break; @@ -805,7 +816,7 @@ update_auths(const char *old, const char *new, char *update) updatev[k] = 0; update[0] = '\0'; - for (i = 0;updatev[i];i++) { + for (i = 0; updatev[i]; i++) { if (i) strcat (update, ";"); @@ -817,12 +828,11 @@ update_auths(const char *old, const char *new, char *update) * add_auths - find list of methods to add */ -static void -add_auths(const char *old, const char *new, char *add) +static void add_auths (const char *old, const char *new, char *add) { - char oldbuf[257], newbuf[257]; - char *oldv[32], *newv[32], *addv[32]; - int i, j, k; + char oldbuf[257], newbuf[257]; + char *oldv[32], *newv[32], *addv[32]; + int i, j, k; strcpy (oldbuf, old); split_auths (oldbuf, oldv); @@ -830,8 +840,8 @@ add_auths(const char *old, const char *new, char *add) strcpy (newbuf, new); split_auths (newbuf, newv); - for (i = j = k = 0;newv[i];i++) { - for (j = 0;oldv[j];j++) + for (i = j = k = 0; newv[i]; i++) { + for (j = 0; oldv[j]; j++) if (strcmp (oldv[i], newv[j]) == 0) break; @@ -841,7 +851,7 @@ add_auths(const char *old, const char *new, char *add) addv[k] = 0; add[0] = '\0'; - for (i = 0;addv[i];i++) { + for (i = 0; addv[i]; i++) { if (i) strcat (add, ";"); @@ -853,12 +863,11 @@ add_auths(const char *old, const char *new, char *add) * delete_auths - find list of methods to delete */ -static void -delete_auths(const char *old, const char *new, char *remove) +static void delete_auths (const char *old, const char *new, char *remove) { - char oldbuf[257], newbuf[257]; - char *oldv[32], *newv[32], *removev[32]; - int i, j, k; + char oldbuf[257], newbuf[257]; + char *oldv[32], *newv[32], *removev[32]; + int i, j, k; strcpy (oldbuf, old); split_auths (oldbuf, oldv); @@ -866,8 +875,8 @@ delete_auths(const char *old, const char *new, char *remove) strcpy (newbuf, new); split_auths (newbuf, newv); - for (i = j = k = 0;oldv[i];i++) { - for (j = 0;newv[j];j++) + for (i = j = k = 0; oldv[i]; i++) { + for (j = 0; newv[j]; j++) if (strcmp (oldv[i], newv[j]) == 0) break; @@ -877,7 +886,7 @@ delete_auths(const char *old, const char *new, char *remove) removev[k] = 0; remove[0] = '\0'; - for (i = 0;removev[i];i++) { + for (i = 0; removev[i]; i++) { if (i) strcat (remove, ";"); @@ -890,20 +899,20 @@ delete_auths(const char *old, const char *new, char *remove) */ static void -convert_auth(char *auths, const char *oldauths, const char *list) +convert_auth (char *auths, const char *oldauths, const char *list) { - char *cp, *end; - char *old; - char buf[257]; + char *cp, *end; + char *old; + char buf[257]; /* - * Copy each method. DEFAULT is replaced by an encrypted string - * if one can be found in the current authentication list. + * Copy each method. DEFAULT is replaced by an encrypted string if + * one can be found in the current authentication list. */ strcpy (buf, list); auths[0] = '\0'; - for (cp = buf;cp;cp = end) { + for (cp = buf; cp; cp = end) { if (auths[0]) strcat (auths, ";"); @@ -926,12 +935,11 @@ convert_auth(char *auths, const char *oldauths, const char *list) * valid_auth - check authentication list for validity */ -static int -valid_auth(const char *methods) +static int valid_auth (const char *methods) { - char *cp, *end; - char buf[257]; - int default_cnt = 0; + char *cp, *end; + char buf[257]; + int default_cnt = 0; /* * Cursory checks, length and illegal characters @@ -940,7 +948,7 @@ valid_auth(const char *methods) if ((int) strlen (methods) > 256) return 0; - if (! VALID (methods)) + if (!VALID (methods)) return 0; /* @@ -948,7 +956,7 @@ valid_auth(const char *methods) */ strcpy (buf, methods); - for (cp = buf;cp;cp = end) { + for (cp = buf; cp; cp = end) { if ((end = strchr (cp, ','))) *end++ = '\0'; @@ -961,46 +969,60 @@ valid_auth(const char *methods) } #endif -static long -get_number(const char *cp) +static long get_number (const char *cp) { long val; char *ep; - val = strtol(cp, &ep, 10); - if (*cp != '\0' && *ep == '\0') /* valid number */ + val = strtol (cp, &ep, 10); + if (*cp != '\0' && *ep == '\0') /* valid number */ return val; - fprintf(stderr, _("%s: invalid numeric argument `%s'\n"), Prog, cp); - exit(E_BAD_ARG); + fprintf (stderr, _("%s: invalid numeric argument `%s'\n"), Prog, + cp); + exit (E_BAD_ARG); +} + +static uid_t get_id (const char *cp) +{ + uid_t val; + char *ep; + + val = strtoul (cp, &ep, 10); + if (*cp != '\0' && *ep == '\0') /* valid number */ + return val; + + fprintf (stderr, _("%s: invalid numeric argument `%s'\n"), Prog, + cp); + exit (E_BAD_ARG); } /* * process_flags - perform command line argument setting * - * process_flags() interprets the command line arguments and sets - * the values that the user will be created with accordingly. The - * values are checked for sanity. + * process_flags() interprets the command line arguments and sets the + * values that the user will be created with accordingly. The values + * are checked for sanity. */ -static void -process_flags(int argc, char **argv) +static void process_flags (int argc, char **argv) { const struct group *grp; const struct passwd *pwd; + #ifdef SHADOWPWD const struct spwd *spwd = NULL; #endif - int anyflag = 0; - int arg; + int anyflag = 0; + int arg; if (argc == 1 || argv[argc - 1][0] == '-') usage (); - if (! (pwd = getpwnam (argv[argc - 1]))) { - fprintf(stderr, _("%s: user %s does not exist\n"), - Prog, argv[argc - 1]); - exit(E_NOTFOUND); + if (!(pwd = getpwnam (argv[argc - 1]))) { + fprintf (stderr, _("%s: user %s does not exist\n"), + Prog, argv[argc - 1]); + exit (E_NOTFOUND); } user_name = argv[argc - 1]; @@ -1011,26 +1033,26 @@ process_flags(int argc, char **argv) */ if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; + char *nis_domain; + char *nis_master; - fprintf(stderr, _("%s: user %s is a NIS user\n"), - Prog, user_name); + fprintf (stderr, _("%s: user %s is a NIS user\n"), + Prog, user_name); - if (! yp_get_default_domain (&nis_domain) && - ! yp_master (nis_domain, "passwd.byname", + if (!yp_get_default_domain (&nis_domain) && + !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf(stderr, _("%s: %s is the NIS master\n"), - Prog, nis_master); + fprintf (stderr, _("%s: %s is the NIS master\n"), + Prog, nis_master); } - exit(E_NOTFOUND); + exit (E_NOTFOUND); } #endif user_id = pwd->pw_uid; user_gid = pwd->pw_gid; - user_comment = xstrdup(pwd->pw_gecos); - user_home = xstrdup(pwd->pw_dir); - user_shell = xstrdup(pwd->pw_shell); + user_comment = xstrdup (pwd->pw_gecos); + user_home = xstrdup (pwd->pw_dir); + user_shell = xstrdup (pwd->pw_shell); #ifdef SHADOWPWD if (is_shadow_pwd && (spwd = getspnam (user_name))) { @@ -1043,37 +1065,37 @@ process_flags(int argc, char **argv) #else #define FLAGS "A:u:og:G:d:s:c:ml:p:LU" #endif - while ((arg = getopt(argc, argv, FLAGS)) != EOF) { + while ((arg = getopt (argc, argv, FLAGS)) != EOF) { #undef FLAGS switch (arg) { #ifdef AUTH_METHODS case 'A': - if (! valid_auth (optarg)) { - fprintf(stderr, - _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!valid_auth (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } auth_arg = optarg; Aflg++; break; #endif case 'c': - if (! VALID (optarg)) { - fprintf(stderr, - _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } user_comment = optarg; cflg++; break; case 'd': - if (! VALID (optarg)) { - fprintf(stderr, - _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } dflg++; user_newhome = optarg; @@ -1081,51 +1103,52 @@ process_flags(int argc, char **argv) #ifdef SHADOWPWD case 'e': if (*optarg) { - user_expire = strtoday(optarg); + user_expire = strtoday (optarg); if (user_expire == -1) { - fprintf(stderr, - _("%s: invalid date `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + fprintf (stderr, + _ + ("%s: invalid date `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } - user_expire *= DAY/SCALE; + user_expire *= DAY / SCALE; } else user_expire = -1; eflg++; break; case 'f': - user_inactive = get_number(optarg); + user_inactive = get_number (optarg); fflg++; break; #endif case 'g': - grp = getgr_nam_gid(optarg); + grp = getgr_nam_gid (optarg); if (!grp) { - fprintf(stderr, - _("%s: unknown group %s\n"), - Prog, optarg); - exit(E_NOTFOUND); + fprintf (stderr, + _("%s: unknown group %s\n"), + Prog, optarg); + exit (E_NOTFOUND); } user_newgid = grp->gr_gid; gflg++; break; case 'G': - if (get_groups(optarg)) - exit(E_NOTFOUND); + if (get_groups (optarg)) + exit (E_NOTFOUND); Gflg++; break; case 'l': - if (!check_user_name(optarg)) { - fprintf(stderr, - _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!check_user_name (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } /* - * If the name does not really change, we - * mustn't set the flag as this will cause - * rather serious problems later! + * If the name does not really change, we mustn't + * set the flag as this will cause rather serious + * problems later! */ if (strcmp (user_name, optarg)) @@ -1140,13 +1163,13 @@ process_flags(int argc, char **argv) Lflg++; break; case 'm': - if (! dflg) + if (!dflg) usage (); mflg++; break; case 'o': - if (! uflg) + if (!uflg) usage (); oflg++; @@ -1159,17 +1182,17 @@ process_flags(int argc, char **argv) pflg++; break; case 's': - if (! VALID (optarg)) { - fprintf(stderr, - _("%s: invalid field `%s'\n"), - Prog, optarg); - exit(E_BAD_ARG); + if (!VALID (optarg)) { + fprintf (stderr, + _("%s: invalid field `%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } user_shell = optarg; sflg++; break; case 'u': - user_newid = get_number(optarg); + user_newid = get_id (optarg); uflg++; break; case 'U': @@ -1184,16 +1207,16 @@ process_flags(int argc, char **argv) anyflag++; } if (anyflag == 0) { - fprintf(stderr, _("%s: no flags given\n"), Prog); - exit(E_USAGE); + fprintf (stderr, _("%s: no flags given\n"), Prog); + exit (E_USAGE); } - #ifdef SHADOWPWD if (!is_shadow_pwd && (eflg || fflg)) { - fprintf(stderr, - _("%s: shadow passwords required for -e and -f\n"), - Prog); - exit(E_USAGE); + fprintf (stderr, + _ + ("%s: shadow passwords required for -e and -f\n"), + Prog); + exit (E_USAGE); } #endif @@ -1207,36 +1230,38 @@ process_flags(int argc, char **argv) uflg = oflg = 0; if (lflg && getpwnam (user_newname)) { - fprintf(stderr, _("%s: user %s exists\n"), Prog, user_newname); - exit(E_NAME_IN_USE); + fprintf (stderr, _("%s: user %s exists\n"), Prog, + user_newname); + exit (E_NAME_IN_USE); } - if (uflg && !oflg && getpwuid(user_newid)) { - fprintf(stderr, _("%s: uid %ld is not unique\n"), - Prog, (long) user_newid); - exit(E_UID_IN_USE); + if (uflg && !oflg && getpwuid (user_newid)) { + fprintf (stderr, _("%s: uid %lu is not unique\n"), + Prog, (unsigned long) user_newid); + exit (E_UID_IN_USE); } } /* * close_files - close all of the files that were opened * - * close_files() closes all of the files that were opened for this - * new user. This causes any modified entries to be written out. + * close_files() closes all of the files that were opened for this new + * user. This causes any modified entries to be written out. */ -static void -close_files(void) +static void close_files (void) { - if (! pw_close ()) { - fprintf(stderr, _("%s: cannot rewrite password file\n"), Prog); - fail_exit(E_PW_UPDATE); + if (!pw_close ()) { + fprintf (stderr, _("%s: cannot rewrite password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #ifdef SHADOWPWD - if (is_shadow_pwd && ! spw_close ()) { - fprintf(stderr, _("%s: cannot rewrite shadow password file\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_close ()) { + fprintf (stderr, + _("%s: cannot rewrite shadow password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #endif #ifdef SHADOWPWD @@ -1265,27 +1290,30 @@ close_files(void) * open_files() opens the two password files. */ -static void -open_files(void) +static void open_files (void) { - if (!pw_lock()) { - fprintf(stderr, _("%s: unable to lock password file\n"), Prog); - exit(E_PW_UPDATE); + if (!pw_lock ()) { + fprintf (stderr, _("%s: unable to lock password file\n"), + Prog); + exit (E_PW_UPDATE); } - if (! pw_open (O_RDWR)) { - fprintf(stderr, _("%s: unable to open password file\n"), Prog); - fail_exit(E_PW_UPDATE); + if (!pw_open (O_RDWR)) { + fprintf (stderr, _("%s: unable to open password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #ifdef SHADOWPWD - if (is_shadow_pwd && ! spw_lock ()) { - fprintf(stderr, _("%s: cannot lock shadow password file\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_lock ()) { + fprintf (stderr, + _("%s: cannot lock shadow password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } - if (is_shadow_pwd && ! spw_open (O_RDWR)) { - fprintf(stderr, _("%s: cannot open shadow password file\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (is_shadow_pwd && !spw_open (O_RDWR)) { + fprintf (stderr, + _("%s: cannot open shadow password file\n"), + Prog); + fail_exit (E_PW_UPDATE); } #endif } @@ -1293,33 +1321,33 @@ open_files(void) /* * usr_update - create the user entries * - * usr_update() creates the password file entries for this user - * and will update the group entries if required. + * 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 (void) { struct passwd pwent; const struct passwd *pwd; + #ifdef SHADOWPWD struct spwd spent; const struct spwd *spwd = NULL; #endif #ifdef AUTH_METHODS - char old_auth[BUFSIZ]; - char auth_buf[BUFSIZ]; + char old_auth[BUFSIZ]; + char auth_buf[BUFSIZ]; #endif /* * Locate the entry in /etc/passwd, which MUST exist. */ - pwd = pw_locate(user_name); + pwd = pw_locate (user_name); if (!pwd) { - fprintf(stderr, _("%s: %s not found in /etc/passwd\n"), - Prog, user_name); - fail_exit(E_NOTFOUND); + fprintf (stderr, _("%s: %s not found in /etc/passwd\n"), + Prog, user_name); + fail_exit (E_NOTFOUND); } pwent = *pwd; new_pwent (&pwent); @@ -1327,11 +1355,11 @@ usr_update(void) #ifdef SHADOWPWD /* - * Locate the entry in /etc/shadow. It doesn't have to - * exist, and won't be created if it doesn't. + * Locate the entry in /etc/shadow. It doesn't have to exist, and + * won't be created if it doesn't. */ - if (is_shadow_pwd && (spwd = spw_locate(user_name))) { + if (is_shadow_pwd && (spwd = spw_locate (user_name))) { spent = *spwd; new_spent (&spent); } @@ -1350,41 +1378,48 @@ usr_update(void) /* * XXX - this code needs some checking, changing the user name with - * "usermod -l new old" clears the password for this user :-(. - * For now, just don't define AUTH_METHODS and all will be well. - * Most programs don't support "administrator defined authentication + * "usermod -l new old" clears the password for this user :-(. For + * now, just don't define AUTH_METHODS and all will be well. Most + * programs don't support "administrator defined authentication * methods" and PAM (when done) will be better anyway :-). --marekm */ if (lflg || (Aflg && strcmp (old_auth, user_auth) != 0)) { delete_auths (old_auth, user_auth, auth_buf); if (auth_buf[0] && pw_auth (auth_buf, user_name, - PW_DELETE, (char *) 0)) { - fprintf(stderr, - _("%s: error deleting authentication method\n"), - Prog); - SYSLOG((LOG_ERR, "error deleting auth for `%s'\n", - user_name)); - fail_exit(E_PW_UPDATE); + PW_DELETE, (char *) 0)) { + fprintf (stderr, + _ + ("%s: error deleting authentication method\n"), + Prog); + SYSLOG ((LOG_ERR, "error deleting auth for `%s'", + user_name)); + fail_exit (E_PW_UPDATE); } add_auths (old_auth, user_auth, auth_buf); if (auth_buf[0] == '@' && pw_auth (auth_buf, - lflg ? user_newname:user_name, PW_ADD, (char *) 0)) { - fprintf(stderr, - _("%s: error adding authentication method\n"), - Prog); - SYSLOG((LOG_ERR, "error adding auth for `%s'\n", - lflg ? user_newname:user_name)); - fail_exit(E_PW_UPDATE); + lflg ? user_newname : + user_name, PW_ADD, + (char *) 0)) { + fprintf (stderr, + _ + ("%s: error adding authentication method\n"), + Prog); + SYSLOG ((LOG_ERR, "error adding auth for `%s'", + lflg ? user_newname : user_name)); + fail_exit (E_PW_UPDATE); } update_auths (old_auth, user_auth, auth_buf); if (lflg && auth_buf[0] == '@' && pw_auth (auth_buf, - user_newname, PW_CHANGE, user_name)) { - fprintf(stderr, - _("%s: error changing authentication method\n"), - Prog); - SYSLOG((LOG_ERR, "error changing auth for `%s'\n", - lflg ? user_newname:user_name)); - fail_exit(E_PW_UPDATE); + user_newname, + PW_CHANGE, + user_name)) { + fprintf (stderr, + _ + ("%s: error changing authentication method\n"), + Prog); + SYSLOG ((LOG_ERR, "error changing auth for `%s'", + lflg ? user_newname : user_name)); + fail_exit (E_PW_UPDATE); } #ifdef SHADOWPWD if (spwd) @@ -1393,193 +1428,201 @@ usr_update(void) #endif pwent.pw_passwd = user_auth; } -#endif /* AUTH_METHODS */ - if (lflg || uflg || gflg || cflg || dflg || sflg || Aflg || pflg || Lflg || Uflg) { - if (! pw_update (&pwent)) { - fprintf(stderr, - _("%s: error changing password entry\n"), - Prog); - fail_exit(E_PW_UPDATE); +#endif /* AUTH_METHODS */ + if (lflg || uflg || gflg || cflg || dflg || sflg || Aflg || pflg + || Lflg || Uflg) { + if (!pw_update (&pwent)) { + fprintf (stderr, + _("%s: error changing password entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } - if (lflg && ! pw_remove (user_name)) { - fprintf(stderr, - _("%s: error removing password entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (lflg && !pw_remove (user_name)) { + fprintf (stderr, + _("%s: error removing password entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } #ifdef NDBM - if (pw_dbm_present()) { - if (! pw_dbm_update (&pwent)) { - fprintf(stderr, - _("%s: error adding password dbm entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (pw_dbm_present ()) { + if (!pw_dbm_update (&pwent)) { + fprintf (stderr, + _ + ("%s: error adding password dbm entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } if (lflg && (pwd = getpwnam (user_name)) && - ! pw_dbm_remove (pwd)) { - fprintf(stderr, - _("%s: error removing passwd dbm entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + !pw_dbm_remove (pwd)) { + fprintf (stderr, + _ + ("%s: error removing passwd dbm entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } } #endif } #ifdef SHADOWPWD if (spwd && (lflg || eflg || fflg || Aflg || pflg || Lflg || Uflg)) { - if (! spw_update (&spent)) { - fprintf(stderr, - _("%s: error adding new shadow password entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (!spw_update (&spent)) { + fprintf (stderr, + _ + ("%s: error adding new shadow password entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } - if (lflg && ! spw_remove (user_name)) { - fprintf(stderr, - _("%s: error removing shadow password entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (lflg && !spw_remove (user_name)) { + fprintf (stderr, + _ + ("%s: error removing shadow password entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } } #ifdef NDBM - if (spwd && sp_dbm_present()) { - if (! sp_dbm_update (&spent)) { - fprintf(stderr, - _("%s: error updating shadow passwd dbm entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (spwd && sp_dbm_present ()) { + if (!sp_dbm_update (&spent)) { + fprintf (stderr, + _ + ("%s: error updating shadow passwd dbm entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } - if (lflg && ! sp_dbm_remove (user_name)) { - fprintf(stderr, - _("%s: error removing shadow passwd dbm entry\n"), - Prog); - fail_exit(E_PW_UPDATE); + if (lflg && !sp_dbm_remove (user_name)) { + fprintf (stderr, + _ + ("%s: error removing shadow passwd dbm entry\n"), + Prog); + fail_exit (E_PW_UPDATE); } } -#endif /* NDBM */ -#endif /* SHADOWPWD */ +#endif /* NDBM */ +#endif /* SHADOWPWD */ } /* * move_home - move the user's home directory * - * move_home() moves the user's home directory to a new location. - * The files will be copied if the directory cannot simply be - * renamed. + * move_home() moves the user's home directory to a new location. The + * files will be copied if the directory cannot simply be renamed. */ -static void -move_home(void) +static void move_home (void) { - struct stat sb; + struct stat sb; if (mflg && stat (user_home, &sb) == 0) { /* * Don't try to move it if it is not a directory * (but /dev/null for example). --marekm */ - if (!S_ISDIR(sb.st_mode)) + if (!S_ISDIR (sb.st_mode)) return; - if (access(user_newhome, F_OK) == 0) { - fprintf(stderr, _("%s: directory %s exists\n"), - Prog, user_newhome); - fail_exit(E_HOMEDIR); + if (access (user_newhome, F_OK) == 0) { + fprintf (stderr, _("%s: directory %s exists\n"), + Prog, user_newhome); + fail_exit (E_HOMEDIR); } else if (rename (user_home, user_newhome)) { if (errno == EXDEV) { - if (mkdir (user_newhome, sb.st_mode & 0777)) { - fprintf(stderr, - _("%s: can't create %s\n"), - Prog, user_newhome); + if (mkdir + (user_newhome, sb.st_mode & 0777)) { + fprintf (stderr, + _ + ("%s: can't create %s\n"), + Prog, user_newhome); } if (chown (user_newhome, - sb.st_uid, sb.st_gid)) { - fprintf(stderr, - _("%s: can't chown %s\n"), - Prog, user_newhome); + sb.st_uid, sb.st_gid)) { + fprintf (stderr, + _("%s: can't chown %s\n"), + Prog, user_newhome); rmdir (user_newhome); - fail_exit(E_HOMEDIR); + fail_exit (E_HOMEDIR); } if (copy_tree (user_home, user_newhome, - uflg ? user_newid:-1, - gflg ? user_newgid:-1) == 0 && - remove_tree (user_home) == 0 && - rmdir (user_home) == 0) + uflg ? user_newid : -1, + gflg ? user_newgid : -1) == + 0 && remove_tree (user_home) == 0 + && rmdir (user_home) == 0) return; (void) remove_tree (user_newhome); (void) rmdir (user_newhome); } - fprintf(stderr, - _("%s: cannot rename directory %s to %s\n"), - Prog, user_home, user_newhome); - fail_exit(E_HOMEDIR); + fprintf (stderr, + _ + ("%s: cannot rename directory %s to %s\n"), + Prog, user_home, user_newhome); + fail_exit (E_HOMEDIR); } } if (uflg || gflg) - chown (dflg ? user_newhome:user_home, - uflg ? user_newid:user_id, - gflg ? user_newgid:user_gid); + chown (dflg ? user_newhome : user_home, + uflg ? user_newid : user_id, + gflg ? user_newgid : user_gid); } /* * update_files - update the lastlog and faillog files */ -static void -update_files(void) +static void update_files (void) { - struct lastlog ll; - struct faillog fl; - int fd; + struct lastlog ll; + struct faillog fl; + int fd; /* - * Relocate the "lastlog" entries for the user. The old entry - * is left alone in case the UID was shared. It doesn't hurt - * anything to just leave it be. + * Relocate the "lastlog" entries for the user. The old entry is + * left alone in case the UID was shared. It doesn't hurt anything + * to just leave it be. */ - if ((fd = open(LASTLOG_FILE, O_RDWR)) != -1) { - lseek(fd, (off_t) user_id * sizeof ll, SEEK_SET); - if (read(fd, (char *) &ll, sizeof ll) == sizeof ll) { - lseek(fd, (off_t) user_newid * sizeof ll, SEEK_SET); - write(fd, (char *) &ll, sizeof ll); + if ((fd = open (LASTLOG_FILE, O_RDWR)) != -1) { + lseek (fd, (off_t) user_id * sizeof ll, SEEK_SET); + if (read (fd, (char *) &ll, sizeof ll) == sizeof ll) { + lseek (fd, (off_t) user_newid * sizeof ll, + SEEK_SET); + write (fd, (char *) &ll, sizeof ll); } - close(fd); + close (fd); } /* * Relocate the "faillog" entries in the same manner. */ - if ((fd = open(FAILLOG_FILE, O_RDWR)) != -1) { - lseek(fd, (off_t) user_id * sizeof fl, SEEK_SET); - if (read(fd, (char *) &fl, sizeof fl) == sizeof fl) { - lseek(fd, (off_t) user_newid * sizeof fl, SEEK_SET); - write(fd, (char *) &fl, sizeof fl); + if ((fd = open (FAILLOG_FILE, O_RDWR)) != -1) { + lseek (fd, (off_t) user_id * sizeof fl, SEEK_SET); + if (read (fd, (char *) &fl, sizeof fl) == sizeof fl) { + lseek (fd, (off_t) user_newid * sizeof fl, + SEEK_SET); + write (fd, (char *) &fl, sizeof fl); } - close(fd); + close (fd); } } #ifndef NO_MOVE_MAILBOX /* * This is the new and improved code to carefully chown/rename the user's - * mailbox. Maybe I am too paranoid but the mail spool dir sometimes + * mailbox. Maybe I am too paranoid but the mail spool dir sometimes * happens to be mode 1777 (this makes mail user agents work without * being setgid mail, but is NOT recommended; they all should be fixed * to use movemail). --marekm */ -static void -move_mailbox(void) +static void move_mailbox (void) { const char *maildir; char mailfile[1024], newmailfile[1024]; int fd; struct stat st; - maildir = getdef_str("MAIL_DIR"); + maildir = getdef_str ("MAIL_DIR"); #ifdef MAIL_SPOOL_DIR - if (!maildir && !getdef_str("MAIL_FILE")) + if (!maildir && !getdef_str ("MAIL_FILE")) maildir = MAIL_SPOOL_DIR; #endif if (!maildir) @@ -1592,115 +1635,118 @@ move_mailbox(void) * between stat and chown). --marekm */ - snprintf(mailfile, sizeof mailfile, "%s/%s", maildir, user_name); - fd = open(mailfile, O_RDONLY | O_NONBLOCK, 0); + snprintf (mailfile, sizeof mailfile, "%s/%s", maildir, user_name); + fd = open (mailfile, O_RDONLY | O_NONBLOCK, 0); if (fd < 0) { /* no need for warnings if the mailbox doesn't exist */ if (errno != ENOENT) - perror(mailfile); + perror (mailfile); return; } - if (fstat(fd, &st) < 0) { - perror("fstat"); - close(fd); + if (fstat (fd, &st) < 0) { + perror ("fstat"); + close (fd); return; } if (st.st_uid != user_id) { /* better leave it alone */ - fprintf(stderr, _("%s: warning: %s not owned by %s\n"), - Prog, mailfile, user_name); - close(fd); + fprintf (stderr, _("%s: warning: %s not owned by %s\n"), + Prog, mailfile, user_name); + close (fd); return; } - if (uflg && fchown(fd, user_newid, (gid_t) -1) < 0) - perror(_("failed to change mailbox owner")); + if (uflg && fchown (fd, user_newid, (gid_t) - 1) < 0) + perror (_("failed to change mailbox owner")); - close(fd); + close (fd); if (lflg) { - snprintf(newmailfile, sizeof newmailfile, "%s/%s", maildir, user_newname); - if (link(mailfile, newmailfile) || unlink(mailfile)) - perror(_("failed to rename mailbox")); + snprintf (newmailfile, sizeof newmailfile, "%s/%s", + maildir, user_newname); + if (link (mailfile, newmailfile) || unlink (mailfile)) + perror (_("failed to rename mailbox")); } } #endif #ifdef USE_PAM static struct pam_conv conv = { - misc_conv, - NULL + misc_conv, + NULL }; -#endif /* USE_PAM */ +#endif /* USE_PAM */ /* * main - usermod command */ -int -main(int argc, char **argv) +int main (int argc, char **argv) { int grp_err = 0; + #ifdef USE_PAM pam_handle_t *pamh = NULL; struct passwd *pampw; int retval; #endif - sys_ngroups=sysconf(_SC_NGROUPS_MAX); - user_groups=malloc((1+sys_ngroups)*sizeof(char *)); + sys_ngroups = sysconf (_SC_NGROUPS_MAX); + user_groups = malloc ((1 + sys_ngroups) * sizeof (char *)); /* * Get my name so that I can use it to report errors. */ - Prog = Basename(argv[0]); + Prog = Basename (argv[0]); - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); #ifdef USE_PAM retval = PAM_SUCCESS; - pampw = getpwuid(getuid()); + pampw = getpwuid (getuid ()); if (pampw == NULL) { retval = PAM_USER_UNKNOWN; } if (retval == PAM_SUCCESS) { - retval = pam_start("shadow", pampw->pw_name, &conv, &pamh); + retval = + pam_start ("shadow", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { - retval = pam_authenticate(pamh, 0); + retval = pam_authenticate (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval == PAM_SUCCESS) { - retval = pam_acct_mgmt(pamh, 0); + retval = pam_acct_mgmt (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } if (retval != PAM_SUCCESS) { - fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + fprintf (stderr, _("%s: PAM authentication failed\n"), + Prog); exit (1); } -#endif /* USE_PAM */ +#endif /* USE_PAM */ - OPENLOG(Prog); + OPENLOG (Prog); #ifdef SHADOWPWD - is_shadow_pwd = spw_file_present(); + is_shadow_pwd = spw_file_present (); #endif #ifdef SHADOWGRP - is_shadow_grp = sgr_file_present(); + is_shadow_grp = sgr_file_present (); #endif /* - * The open routines for the NDBM files don't use read-write - * as the mode, so we have to clue them in. + * The open routines for the NDBM files don't use read-write as the + * mode, so we have to clue them in. */ #ifdef NDBM @@ -1712,7 +1758,7 @@ main(int argc, char **argv) #ifdef SHADOWGRP sg_dbm_mode = O_RDWR; #endif -#endif /* NDBM */ +#endif /* NDBM */ process_flags (argc, argv); /* @@ -1720,44 +1766,44 @@ main(int argc, char **argv) * change the home directory, then close and update the files. */ - open_files(); + open_files (); - usr_update(); + usr_update (); - close_files(); + close_files (); if (Gflg || lflg) - grp_err = grp_update(); + grp_err = grp_update (); if (mflg) - move_home(); + move_home (); #ifndef NO_MOVE_MAILBOX if (lflg || uflg) - move_mailbox(); + move_mailbox (); #endif if (uflg) { - update_files(); + update_files (); /* - * Change the UID on all of the files owned by `user_id' - * to `user_newid' in the user's home directory. + * Change the UID on all of the files owned by `user_id' to + * `user_newid' in the user's home directory. */ - chown_tree(dflg ? user_newhome:user_home, - user_id, user_newid, - user_gid, gflg ? user_newgid:user_gid); + chown_tree (dflg ? user_newhome : user_home, + user_id, user_newid, + user_gid, gflg ? user_newgid : user_gid); } if (grp_err) - exit(E_GRP_UPDATE); + exit (E_GRP_UPDATE); #ifdef USE_PAM if (retval == PAM_SUCCESS) { - retval = pam_chauthtok(pamh, 0); + retval = pam_chauthtok (pamh, 0); if (retval != PAM_SUCCESS) { - pam_end(pamh, retval); + pam_end (pamh, retval); } } @@ -1767,9 +1813,8 @@ main(int argc, char **argv) } if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ + pam_end (pamh, PAM_SUCCESS); +#endif /* USE_PAM */ - exit(E_SUCCESS); - /*NOTREACHED*/ -} + exit (E_SUCCESS); + /*NOTREACHED*/} diff --git a/src/vipw.c b/src/vipw.c index ed450d47..cf2f8f19 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -11,7 +11,7 @@ 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 + 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 @@ -23,10 +23,8 @@ #include #include "rcsid.h" -RCSID(PKG_VER "$Id: vipw.c,v 1.2 2000/08/26 18:27:19 marekm Exp $") - +RCSID (PKG_VER "$Id: vipw.c,v 1.3 2002/01/05 15:41:44 kloczek Exp $") #include "defines.h" - #include #include #include @@ -40,67 +38,71 @@ RCSID(PKG_VER "$Id: vipw.c,v 1.2 2000/08/26 18:27:19 marekm Exp $") #include "shadowio.h" #include "groupio.h" #include "sgroupio.h" - - static const char *progname, *filename, *fileeditname; static int filelocked = 0, createedit = 0; -static int (*unlock)(void); +static int (*unlock) (void); /* local function prototypes */ -static int create_backup_file(FILE *, const char *, struct stat *); -static void vipwexit(const char *, int, int); -static void vipwedit(const char *, int (*)(void), int (*)(void)); +static int create_backup_file (FILE *, const char *, struct stat *); +static void vipwexit (const char *, int, int); +static void vipwedit (const char *, int (*)(void), int (*)(void)); static int -create_backup_file(FILE *fp, const char *backup, struct stat *sb) +create_backup_file (FILE * fp, const char *backup, struct stat *sb) { - struct utimbuf ub; - FILE *bkfp; - int c; - mode_t mask; + struct utimbuf ub; + FILE *bkfp; + int c; + mode_t mask; - mask = umask(077); - bkfp = fopen(backup, "w"); - umask(mask); - if (!bkfp) return -1; + mask = umask (077); + bkfp = fopen (backup, "w"); + umask (mask); + if (!bkfp) + return -1; - rewind(fp); - while ((c = getc(fp)) != EOF) { - if (putc(c, bkfp) == EOF) break; - } + rewind (fp); + while ((c = getc (fp)) != EOF) { + if (putc (c, bkfp) == EOF) + break; + } - if (c != EOF || fflush(bkfp)) { - fclose(bkfp); - unlink(backup); - return -1; - } - if (fclose(bkfp)) { - unlink(backup); - return -1; - } + if (c != EOF || fflush (bkfp)) { + fclose (bkfp); + unlink (backup); + return -1; + } + if (fclose (bkfp)) { + unlink (backup); + return -1; + } - ub.actime = sb->st_atime; - ub.modtime = sb->st_mtime; - if (utime(backup, &ub) || - chmod(backup, sb->st_mode) || - chown(backup, sb->st_uid, sb->st_gid)) { - unlink(backup); - return -1; - } - return 0; + ub.actime = sb->st_atime; + ub.modtime = sb->st_mtime; + if (utime (backup, &ub) || + chmod (backup, sb->st_mode) || + chown (backup, sb->st_uid, sb->st_gid)) { + unlink (backup); + return -1; + } + return 0; } -static void -vipwexit(const char *msg, int syserr, int ret) +static void vipwexit (const char *msg, int syserr, int ret) { - int err = errno; - if (filelocked) (*unlock)(); - if (createedit) unlink(fileeditname); - if (msg) fprintf(stderr, "%s: %s", progname, msg); - if (syserr) fprintf(stderr, ": %s", strerror(err)); - fprintf(stderr, _("\n%s: %s is unchanged\n"), progname, filename); - exit(ret); + int err = errno; + + if (filelocked) + (*unlock) (); + if (createedit) + unlink (fileeditname); + if (msg) + fprintf (stderr, "%s: %s", progname, msg); + if (syserr) + fprintf (stderr, ": %s", strerror (err)); + fprintf (stderr, _("\n%s: %s is unchanged\n"), progname, filename); + exit (ret); } #ifndef DEFAULT_EDITOR @@ -108,145 +110,160 @@ vipwexit(const char *msg, int syserr, int ret) #endif static void -vipwedit(const char *file, int (*file_lock)(void), int (*file_unlock)(void)) +vipwedit (const char *file, int (*file_lock) (void), + int (*file_unlock) (void)) { - const char *editor; - pid_t pid; - struct stat st1, st2; - int status; - FILE *f; - char filebackup[1024], fileedit[1024]; + const char *editor; + pid_t pid; + struct stat st1, st2; + int status; + FILE *f; + char filebackup[1024], fileedit[1024]; - snprintf(filebackup, sizeof filebackup, "%s-", file); - snprintf(fileedit, sizeof fileedit, "%s.edit", file); - unlock = file_unlock; - filename = file; - fileeditname = fileedit; - - if (access(file, F_OK)) vipwexit(file, 1, 1); - if (!file_lock()) vipwexit(_("Couldn't lock file"), errno, 5); - filelocked = 1; + snprintf (filebackup, sizeof filebackup, "%s-", file); + snprintf (fileedit, sizeof fileedit, "%s.edit", file); + unlock = file_unlock; + filename = file; + fileeditname = fileedit; - /* edited copy has same owners, perm */ - if (stat(file, &st1)) vipwexit(file, 1, 1); - if (!(f = fopen(file, "r"))) vipwexit(file, 1, 1); - if (create_backup_file(f, fileedit, &st1)) - vipwexit(_("Couldn't make backup"), errno, 1); - createedit = 1; - - editor = getenv("VISUAL"); - if (!editor) - editor = getenv("EDITOR"); - if (!editor) - editor = DEFAULT_EDITOR; - - if ((pid = fork()) == -1) vipwexit("fork", 1, 1); - else if (!pid) { + if (access (file, F_OK)) + vipwexit (file, 1, 1); + if (!file_lock ()) + vipwexit (_("Couldn't lock file"), errno, 5); + filelocked = 1; + + /* edited copy has same owners, perm */ + if (stat (file, &st1)) + vipwexit (file, 1, 1); + if (!(f = fopen (file, "r"))) + vipwexit (file, 1, 1); + if (create_backup_file (f, fileedit, &st1)) + vipwexit (_("Couldn't make backup"), errno, 1); + createedit = 1; + + editor = getenv ("VISUAL"); + if (!editor) + editor = getenv ("EDITOR"); + if (!editor) + editor = DEFAULT_EDITOR; + + if ((pid = fork ()) == -1) + vipwexit ("fork", 1, 1); + else if (!pid) { #if 0 - execlp(editor, editor, fileedit, (char *) 0); - fprintf(stderr, "%s: %s: %s\n", progname, editor, strerror(errno)); - exit(1); + execlp (editor, editor, fileedit, (char *) 0); + fprintf (stderr, "%s: %s: %s\n", progname, editor, + strerror (errno)); + exit (1); #else - /* use the system() call to invoke the editor so that it accepts - command line args in the EDITOR and VISUAL environment vars */ - char *buf; - buf = (char *) malloc (strlen(editor) + strlen(fileedit) + 2); - snprintf(buf, strlen(editor) + strlen(fileedit) + 2, "%s %s", - editor, fileedit); - if (system(buf) != 0) { - fprintf(stderr, "%s: %s: %s\n", progname, editor, strerror(errno)); - exit(1); - } else - exit(0); + /* use the system() call to invoke the editor so that it accepts + command line args in the EDITOR and VISUAL environment vars */ + char *buf; + + buf = + (char *) malloc (strlen (editor) + strlen (fileedit) + + 2); + snprintf (buf, strlen (editor) + strlen (fileedit) + 2, + "%s %s", editor, fileedit); + if (system (buf) != 0) { + fprintf (stderr, "%s: %s: %s\n", progname, editor, + strerror (errno)); + exit (1); + } else + exit (0); #endif - } + } - for (;;) { - pid = waitpid(pid, &status, WUNTRACED); - if (WIFSTOPPED(status)) { - kill(getpid(), SIGSTOP); - kill(getpid(), SIGCONT); - } - else break; - } + for (;;) { + pid = waitpid (pid, &status, WUNTRACED); + if (WIFSTOPPED (status)) { + kill (getpid (), SIGSTOP); + kill (getpid (), SIGCONT); + } else + break; + } - if (pid == -1 || !WIFEXITED(status) || WEXITSTATUS(status)) - vipwexit(editor, 1, 1); + if (pid == -1 || !WIFEXITED (status) || WEXITSTATUS (status)) + vipwexit (editor, 1, 1); - if (stat(fileedit, &st2)) vipwexit(fileedit, 1, 1); - if (st1.st_mtime == st2.st_mtime) vipwexit(0, 0, 0); + if (stat (fileedit, &st2)) + vipwexit (fileedit, 1, 1); + if (st1.st_mtime == st2.st_mtime) + vipwexit (0, 0, 0); - /* XXX - here we should check fileedit for errors; if there are any, - ask the user what to do (edit again, save changes anyway, or quit - without saving). Use pwck or grpck to do the check. --marekm */ + /* + * XXX - here we should check fileedit for errors; if there are any, + * ask the user what to do (edit again, save changes anyway, or quit + * without saving). Use pwck or grpck to do the check. --marekm + */ - createedit = 0; - unlink(filebackup); - link(file, filebackup); - if (rename(fileedit, file) == -1) { - fprintf(stderr, _("%s: can't restore %s: %s (your changes are in %s)\n"), - progname, file, strerror(errno), fileedit); - vipwexit(0,0,1); - } + createedit = 0; + unlink (filebackup); + link (file, filebackup); + if (rename (fileedit, file) == -1) { + fprintf (stderr, + _ + ("%s: can't restore %s: %s (your changes are in %s)\n"), + progname, file, strerror (errno), fileedit); + vipwexit (0, 0, 1); + } - (*file_unlock)(); + (*file_unlock) (); } -int -main(int argc, char **argv) +int main (int argc, char **argv) { - int flag; - int editshadow = 0; - char *c; - int e = 1; - int do_vipw; + int flag; + int editshadow = 0; + char *c; + int e = 1; + int do_vipw; - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); - progname = ((c = strrchr(*argv, '/')) ? c+1 : *argv); - do_vipw = (strcmp(progname, "vigr") != 0); + progname = ((c = strrchr (*argv, '/')) ? c + 1 : *argv); + do_vipw = (strcmp (progname, "vigr") != 0); - while ((flag = getopt(argc, argv, "ghps")) != EOF) { - switch (flag) { - case 'p': - do_vipw = 1; - break; - case 'g': - do_vipw = 0; - break; - case 's': - editshadow = 1; - break; - case 'h': - e = 0; - default: - printf(_("Usage:\n\ + while ((flag = getopt (argc, argv, "ghps")) != EOF) { + switch (flag) { + case 'p': + do_vipw = 1; + break; + case 'g': + do_vipw = 0; + break; + case 's': + editshadow = 1; + break; + case 'h': + e = 0; + default: + printf (_("Usage:\n\ `vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n\ `vigr' edits /etc/group `vigr -s' edits /etc/gshadow\n\ ")); - exit(e); - } - } + exit (e); + } + } - if (do_vipw) { + if (do_vipw) { #ifdef SHADOWPWD - if (editshadow) - vipwedit(SHADOW_FILE, spw_lock, spw_unlock); - else + if (editshadow) + vipwedit (SHADOW_FILE, spw_lock, spw_unlock); + else #endif - vipwedit(PASSWD_FILE, pw_lock, pw_unlock); - } - else { + vipwedit (PASSWD_FILE, pw_lock, pw_unlock); + } else { #ifdef SHADOWGRP - if (editshadow) - vipwedit(SGROUP_FILE, sgr_lock, sgr_unlock); - else + if (editshadow) + vipwedit (SGROUP_FILE, sgr_lock, sgr_unlock); + else #endif - vipwedit(GROUP_FILE, gr_lock, gr_unlock); - } + vipwedit (GROUP_FILE, gr_lock, gr_unlock); + } - return 0; + return 0; }