From 9db6abfa42c946b4046f4b2fe67dc43ba862eb0e Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Sun, 7 Oct 2007 11:44:59 +0000 Subject: [PATCH] [svn-upgrade] Integrating new upstream version, shadow (4.0.1) --- ABOUT-NLS | 234 ++-- ChangeLog | 230 +++- NEWS | 46 +- TODO | 4 +- aclocal.m4 | 86 +- config.h.in | 6 +- configure | 724 ++++++------ configure.in | 10 +- debian/Makefile.am | 2 +- debian/Makefile.in | 2 +- debian/tar.c | 409 ------- etc/Makefile.am | 2 +- etc/Makefile.in | 4 +- etc/useradd | 7 + intl/ChangeLog | 4 +- intl/Makefile.in | 23 +- intl/VERSION | 2 +- intl/bindtextdom.c | 17 +- intl/config.charset | 14 +- intl/dcgettext.c | 17 +- intl/dcigettext.c | 18 +- intl/dcngettext.c | 17 +- intl/dgettext.c | 17 +- intl/dngettext.c | 17 +- intl/explodename.c | 17 +- intl/finddomain.c | 17 +- intl/gettext.c | 17 +- intl/gettext.h | 17 +- intl/gettextP.h | 17 +- intl/hash-string.h | 17 +- intl/intl-compat.c | 27 +- intl/l10nflist.c | 17 +- intl/libgettext.h | 17 +- intl/libgnuintl.h | 17 +- intl/loadinfo.h | 17 +- intl/loadmsgcat.c | 17 +- intl/localcharset.c | 4 +- intl/locale.alias | 19 +- intl/localealias.c | 17 +- intl/ngettext.c | 17 +- intl/plural.c | 51 +- intl/plural.y | 17 +- intl/textdomain.c | 17 +- lib/.indent.pro | 1 + lib/commonio.c | 36 +- lib/defines.h | 6 +- lib/getdef.c | 25 +- lib/getdef.h | 1 + lib/getpass.c | 4 +- libmisc/Makefile.am | 3 + libmisc/Makefile.in | 36 +- libmisc/age.c | 58 +- libmisc/chkname.c | 17 +- libmisc/isexpired.c | 62 +- libmisc/nscd.c | 95 ++ libmisc/setupenv.c | 10 +- libmisc/utmp.c | 5 +- man/Makefile.am | 4 +- man/Makefile.in | 4 +- man/chpasswd.8 | 4 +- man/dpasswd.8 | 4 +- man/hu/Makefile.am | 12 + man/hu/Makefile.in | 295 +++++ man/hu/chsh.1 | 65 ++ man/hu/gpasswd.1 | 81 ++ man/hu/groups.1 | 55 + man/hu/newgrp.1 | 89 ++ man/hu/passwd.1 | 165 +++ man/hu/sg.1 | 1 + man/ja/Makefile.am | 46 +- man/ja/Makefile.in | 105 +- man/ja/adduser.8 | 1 + man/ja/chage.1 | 47 +- man/ja/chfn.1 | 46 +- man/ja/chpasswd.8 | 47 +- man/ja/chsh.1 | 35 +- man/ja/dpasswd.8 | 25 +- man/ja/faillog.5 | 20 +- man/ja/faillog.8 | 59 +- man/ja/gpasswd.1 | 41 +- man/ja/groupadd.8 | 37 +- man/ja/groupdel.8 | 31 +- man/ja/groupmod.8 | 39 +- man/ja/groups.1 | 60 + man/ja/grpck.8 | 40 +- man/ja/grpconv.8 | 1 + man/ja/grpunconv.8 | 1 + man/ja/id.1 | 57 + man/ja/lastlog.8 | 16 +- man/ja/limits.5 | 80 ++ man/ja/login.1 | 129 ++- man/ja/login.access.5 | 61 +- man/ja/login.defs.5 | 273 +++-- man/ja/logoutd.8 | 36 +- man/ja/mkpasswd.8 | 36 +- man/ja/newgrp.1 | 50 +- man/ja/newusers.8 | 73 ++ man/ja/passwd.1 | 49 +- man/ja/passwd.5 | 42 +- man/ja/porttime.5 | 30 +- man/ja/pw_auth.3 | 86 +- man/ja/pwauth.8 | 34 +- man/ja/pwck.8 | 38 +- man/ja/pwconv.8 | 140 +-- man/ja/pwunconv.8 | 1 + man/ja/sg.1 | 1 + man/ja/shadow.3 | 84 +- man/ja/shadow.5 | 40 +- man/ja/shadowconfig.8 | 25 + man/ja/su.1 | 53 +- man/ja/suauth.5 | 150 +-- man/ja/sulogin.8 | 36 +- man/ja/useradd.8 | 201 ++++ man/ja/userdel.8 | 40 +- man/ja/usermod.8 | 113 +- man/ja/vigr.8 | 1 + man/ja/vipw.8 | 37 + man/newgrp.1 | 4 +- man/newusers.8 | 4 +- man/passwd.1 | 4 +- man/pl/Makefile.am | 46 +- man/pl/Makefile.in | 105 +- man/pl/chfn.1 | 9 +- man/pl/chsh.1 | 11 +- man/pl/expiry.1 | 48 + man/pl/groupadd.8 | 11 +- man/pl/groupdel.8 | 11 +- man/pl/groupmod.8 | 11 +- man/pl/groups.1 | 9 +- man/pl/id.1 | 9 +- man/pl/login.1 | 9 +- man/pl/newgrp.1 | 9 +- man/pl/passwd.1 | 11 +- man/pl/sg.1 | 1 + man/pl/su.1 | 9 +- man/pl/useradd.8 | 204 +--- man/pl/userdel.8 | 86 +- man/pl/usermod.8 | 154 +-- man/pl/vigr.8 | 1 + man/pl/vipw.8 | 33 +- man/sg.1 | 1 + man/useradd.8 | 10 +- man/vigr.8 | 1 + po/ChangeLog | 24 +- po/cs.gmo | Bin 40465 -> 38068 bytes po/cs.po | 1249 +++++++++++---------- po/el.gmo | Bin 41376 -> 39316 bytes po/el.po | 1234 ++++++++++---------- po/fr.gmo | Bin 39598 -> 36400 bytes po/fr.po | 1244 ++++++++++----------- po/ja.gmo | Bin 0 -> 30128 bytes po/ja.po | 2475 ++++++++++++++++++++++++++++++++++++++++ po/ko.gmo | Bin 0 -> 37340 bytes po/ko.po | 2477 +++++++++++++++++++++++++++++++++++++++++ po/pl.gmo | Bin 40056 -> 37144 bytes po/pl.po | 1264 +++++++++++---------- po/shadow.pot | 1116 +++++++++---------- po/sv.gmo | Bin 38766 -> 36516 bytes po/sv.po | 1248 +++++++++++---------- po/uk.gmo | Bin 39483 -> 37097 bytes po/uk.po | 1253 +++++++++++---------- src/Makefile.am | 7 +- src/Makefile.in | 7 +- src/chage.c | 855 +++++++------- src/chfn.c | 552 ++++----- src/chpasswd.c | 250 +++-- src/chsh.c | 382 +++---- src/dpasswd.c | 182 ++- src/expiry.c | 98 +- src/faillog.c | 364 +++--- src/gpasswd.c | 485 ++++---- src/groupadd.c | 404 ++++--- src/groupmod.c | 449 ++++---- src/groups.c | 93 +- src/grpck.c | 377 +++---- src/grpconv.c | 152 +-- src/grpunconv.c | 130 +-- src/id.c | 125 +-- src/lastlog.c | 144 ++- src/login.c | 1198 ++++++++++---------- src/logoutd.c | 164 ++- src/mkpasswd.c | 325 +++--- src/newgrp.c | 506 +++++---- src/newusers.c | 432 +++---- src/passwd.c | 1166 +++++++++---------- src/pwck.c | 354 +++--- src/pwconv.c | 172 ++- src/pwunconv.c | 157 +-- src/su.c | 556 ++++----- src/sulogin.c | 170 +-- src/useradd.c | 1242 +++++++++++---------- src/userdel.c | 985 ++++++++-------- src/usermod.c | 1285 ++++++++++----------- src/vipw.c | 373 ++++--- 194 files changed, 20196 insertions(+), 14439 deletions(-) delete mode 100644 debian/tar.c create mode 100644 etc/useradd create mode 100644 libmisc/nscd.c create mode 100644 man/hu/Makefile.am create mode 100644 man/hu/Makefile.in create mode 100644 man/hu/chsh.1 create mode 100644 man/hu/gpasswd.1 create mode 100644 man/hu/groups.1 create mode 100644 man/hu/newgrp.1 create mode 100644 man/hu/passwd.1 create mode 100644 man/hu/sg.1 create mode 100644 man/ja/adduser.8 create mode 100644 man/ja/groups.1 create mode 100644 man/ja/grpconv.8 create mode 100644 man/ja/grpunconv.8 create mode 100644 man/ja/id.1 create mode 100644 man/ja/limits.5 create mode 100644 man/ja/newusers.8 create mode 100644 man/ja/pwunconv.8 create mode 100644 man/ja/sg.1 create mode 100644 man/ja/shadowconfig.8 create mode 100644 man/ja/useradd.8 create mode 100644 man/ja/vigr.8 create mode 100644 man/ja/vipw.8 create mode 100644 man/pl/expiry.1 create mode 100644 man/pl/sg.1 create mode 100644 man/pl/vigr.8 create mode 100644 man/sg.1 create mode 100644 man/vigr.8 create mode 100644 po/ja.gmo create mode 100644 po/ja.po create mode 100644 po/ko.gmo create mode 100644 po/ko.po 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. - - 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 +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 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: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:12011: result: found xgettext program is not GNU xgettext; ignore it" >&5 + 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 distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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 + Library General Public License for more details. + + 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 ´ØÏ¢¥³¥Þ¥ó¥É -.PP -getty(1M), -mail(1), -passwd(1), -sh(1), -su(1), -d_passwd(4), -passwd(4) -.SH ËÝÌõ¼Ô -¸Å¹âÏÂÄ÷ +.SH ´ØÏ¢¹àÌÜ +.PP +.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 -.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 \- ¸Å¤¤°Å¹æ²½¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥ÉµÚ¤Ó¤½¤ÎÍ­¸ú´ü¸Â +.B pwconv .br -/etc/shadow \- °ÊÁ°¤ËÊÑ´¹¤µ¤ì¤¿shadow¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë +.B pwunconv .br -./npasswd \- ¿·µ¬ºîÀ®¤µ¤ì¤ë¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë +.B grpconv .br -./nshadow \- ¿·µ¬ºîÀ®¤µ¤ì¤ëshadow¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë +.B grpunconv +.SH ÀâÌÀ +¤³¤ì¤é 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 78f03d4ab09ce094f8040eec6e84c1ac7fd97106..81ad562f080cf07c21ee05d962fbe7d510501081 100644 GIT binary patch delta 10691 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 delta 12649 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 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: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:120 +#: 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/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "Pou¾ití: %s [-vf] [-p|g|sp|sg] soubor\n" -#: src/newgrp.c:68 -msgid "usage: sg group [[-c] command ]\n" -msgstr "Pou¾ití: sg skupina [[-c] pøíkaz ]\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/newgrp.c:125 +#: src/mkpasswd.c:398 #, c-format -msgid "unknown uid: %d\n" +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 +#: src/usermod.c:332 +#, fuzzy msgid "[-A {DEFAULT|program},... ] " -msgstr "[-A {DEFAULT|program},... ] " +msgstr "[-A {DEFAULT|program},...] " -#: src/usermod.c:332 +#: 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 056a226dbe9985764e27d9cb6ea040dd8002ddbf..0dd2f61dcb66dac8831a2ce57c292e929bc67bec 100644 GIT binary patch delta 10407 zcmb8y34Bg>zQ^&C2tpDfv9AZQM8q!E5c@7l)fy2bgh(`z1PzZCMXBPUYG+gzZLjL1 z?YLb=wOVbJDQ!(VYMD|?Xl!lA)nz{4=l_q@ebC;#tj^YF*tp!6R-;9xu}NMVjS+n zvUm-v;T@z2r&2@53B``qKB(vJ$6!qM*Lxgi3W++(MGasjR>ilF#c;kr&HNnFwsQ+L z^Xg1X18Is{xgn?lOh*?Nqn>{bYv2)EzKmL-@Wzf)nf{%IB;_z3x#tYj4V;OZ@iL6Y z9jJkQf)(*w>mAgL!+A&(Xp50J!J3D9{xQ^mw<2?J-bIfdyiB4M_yskCYE6u-Q8OEa z`oUDxbE{A@dJ${kAzS_y>rxJkF)I{>>NpNH;{mAOr=Wgc5X1hffv0T6Yp4c}p=Npu z>tGnu(o)8v?hnIOn2Rnxhg!K0Q7d;H)j==^i}UM5p;odFYNe7V99;{Y+E?%TX)yvMrxL7QwlLjNNJ2+_W+MwzUCoO z!$(mw``$iKrGs_%*V-6X7tD^Ua4Y0C#} z`2_0uTj*lN_NM)|=zsqcNvd!o4J+Y1)PrkKGk?|IKaQF~A!

buhn+MV*mesOM8q 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 GTK@t_k%LbF delta 12176 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 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:129 +#: src/id.c:125 #, c-format -msgid "uid=%d" +msgid "uid=%u" msgstr "" -#: src/id.c:133 +#: src/id.c:129 #, c-format -msgid " gid=%d(%s)" +msgid " gid=%u(%s)" msgstr "" -#: src/id.c:135 +#: src/id.c:131 #, c-format -msgid " gid=%d" +msgid " gid=%u" msgstr "" -#: src/id.c:145 +#: src/id.c:141 #, c-format -msgid " euid=%d(%s)" +msgid " euid=%u(%s)" msgstr "" -#: src/id.c:147 +#: src/id.c:143 #, c-format -msgid " euid=%d" +msgid " euid=%u" msgstr "" -#: src/id.c:152 +#: src/id.c:148 #, c-format -msgid " egid=%d(%s)" +msgid " egid=%u(%s)" msgstr "" -#: src/id.c:154 +#: src/id.c:150 #, 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/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "×ñÞóç: %s [-vf] [-p|g|sp|sg] áñ÷åßï\n" -#: src/newgrp.c:68 -#, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "÷ñÞóç: 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/newgrp.c:125 +#: src/mkpasswd.c:398 #, c-format -msgid "unknown uid: %d\n" +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 +#: src/usermod.c:332 +#, fuzzy msgid "[-A {DEFAULT|program},... ] " -msgstr "[-A {DEFAULT|ðñüãñáììá},... ] " +msgstr "[-A {DEFAULT|ðñüãñáììá},...] " -#: src/usermod.c:332 +#: 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 046640d2f25bb6809173b5ab28fd5cde235b011e..593d5cefd8a8d4b3d96d61715798a7c245859d66 100644 GIT binary patch delta 9079 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 Aq5uE@ delta 11881 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 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: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:120 +#: 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/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:68 +#: 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 0000000000000000000000000000000000000000..ccd1ff53d5842e77297c37ffb200ba7bb1d9e604 GIT binary patch literal 30128 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8a88e887194c0a79ecbea9ee4b5dbbd7007c7e5a GIT binary patch literal 37340 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 literal 0 HcmV?d00001 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 7febab21f9bd86d3337a0693d4f5b6e99ddd13dc..b85e316b552bbf1644a0044379a15e9d37fd1aa7 100644 GIT binary patch delta 9850 zcmaLb2Yggj+Q;#mKp+GN3DR3`LJ0|^&>{40Km@5$LYO223?VZi35G;u=pcxQqjc02 zL>HA^%>rv#5fN;xC?aK1(X{|8cJ>t&<^BD0PJCTI@B7}5kKc37z4w&ooI9Xb{~Ese z;qc%G^{e0Sa6J&_I4!VFUB^iYcbscY)#^BZPH>za_>}b$wxk~4+HvY(e~iJ=7>hG( zy$I>jS%$T71vbPD$Un}b{43FMg3cQhvT67Zd*iq^j+2V(F$G`1j(8bcVbivb(+qoB z$6;gYepJURF$(vf*02wG)j5uJ@QO98ot_IiPBeu`ZZt(bkboK>4K?rxY=Wgoa-4fm zD}Mm#%h`)s`AO6SK0{?PisfkniRj`$)blym99OHI@ts}v#t~GCKF3BF)}F~>6Qs#W zM757bt#~FT;Ud%oAHxQC$a)I3^3PEViQ(ZJu&?zN4C)0h1EI&$DoVLP?_6>%G@zj{~sgg*ty=3{413SoHV5>1C@zv z)E+KF4e$_ZLPt>pe}X!U)j6rU-x_s46ZQTqRA$!N`qRjwom0r1ov<|1PfC!21|Eg# zun4un4XBRypjP&lz5lJfADeDgl8jo(Fx2xt)I`=J+wMGR+fSkTxrQ32RVPyq_NAZ~ zvr#XsKy|nmwWn{RCUn`}k08HFX)3D2iKqoEK&@e*$X2AZn$%Z2cu$zhLVT-OL1%(dD_}sI8fe+QPfA zjlTaUC}>7+qxR?uY65ZH&A`J@0~evbg6*gd_M@IVh04UwwmpuYOJ$-zHo$yTCKlWJ z4qJa3;~3vLPQk^mPy@vDG^aHg8&e;M4RJEM7(lK39(#W;Y5_-4dwa>YNA@yj#6>;d z2X%jnwG4wU4Vx(_HP4_{@;)jP*HLF6Im0*<_4&*|4Y<&@KZqLOS#57hI6 zP#t8UCO8k3u}!D}o=4q3gKEEwdM|dMIgA}q?*%g{#8L=g7hHn;MmYOW6Z#C}Flvy= zNHR91eiLd7W}=JhP|xp0b$kMKhOQz>aas>HnaDwnSBg>k{_mu)iiZ0z9$O4Csp^ON zp&5@FXd$-7ov4+)g0=7*M&hSPht8K+7k@yVjhaKviW{Nc>tgG}FWJ$%!)e}Ed`J6jJMX6lWw2JLN719z}yU^w+mY=bwUCOi*YGQLwzK`Ggc zTG1X<2YN(zVgg1DH|;5?&uRcF6Moc+%aC7TXB}#RFQT^e3w(cUXh07t)kU}%mtrnf8(|L7EaX?#*^TY-ebfYNj5LR?7iw#=u?rTU4(lIK zr~f(BR-ZyWcXcHBkD^fHCUc5ou>+pHTzG-OL{(*aLO?OHmWrhB~BsQ9n3`Q7ioi zD)m>;#rmU7|6Q;Z_0iY_{iv-BuA&f0VLfVZHlqgKi|X(w>V*$cGyVZxY&6D9s0Zr# zsi+Q%Q4_o!HIci~#V4>f{vDOMvq=9z=Q;(Yyy-1wfT5@@$-x*bKy|pt);FN`_F?4L z+Bt>wu)$c9i8iRr^hQm53@Y_Ld;e}6Lj4g;)%X7|3L3EKI5V?0*pd1OtV}tkhLLg{ zK>O?C`FkSPo?yZ+WY^-wm~}DX58fQR6JcSo|XfmAdCB zXz$*zzJqnBpTj125jl@e*ktp=F&eeP0IK7qs6E|+4e=oAD|y$p|AO(<+e|SN8-|)l z{uJ`BQ@NRjI6Qz_>1otTYECt$Hx4z?-l&d8q6RKOJ+~H9aVM&u6R5-YEjGuPY36sL zBle)4jmqGrY2;rke4d7;_%3P!Us>a_%>B{WiT2r;j9aZoP%Hl$)3MQXGr{53LhBaP z`!As;a0NAP$6&TS_1Kbz9BhY+t&dvYL{049*bUpxFwaj#4P1tOa1Uxi7qBbV^_U-` zL8#~EpjN&OHBRtF3Oy-Yz<6|XOezPVI+%z0Ja=PnJYnn6{4T3K1N-7k?2fxo@13*8 zdV7Sku zxH~FC({TuHMZJIC-fuF;^g94u+UKdx_|Cl)+Tvl<3zx7nCghvLG66NvI_!^!PT~j;GO*FskJ~;K5vcb0n2JxKPWgwZOf)GpzYAHYudEpL`K~J@|1Bu&q9G0sq4x44)ZRzV zGhautbvQPsJrDKVVob+Ju@#=d4){GPqpgcfznQ2E_)yP>P+R(P5&2i)5)FDWy4a*J z1GSPu?1c}aIy{To`|GF)CzO~!BL<=F&$Ql!dhTgke;0>Q{|TdU(0ub}#VtV!UGySm z;8u*qcd<2IK&`a)ZRYTG#v7=Qz$Q2y+hZv5TPHAuKMcs#*`A&?&Bd8AFLJf2owYL$s+s_fz-*k+@)u=7rg8HRB zg7NzPKc>)?hKPmclxAQL>SM4wu11}agQzX}1l3XG9cHCnQF}iUwdeD&1>R@dpTa)W zPvanLu*fWA5;kLer;I{9y?}gy&Ms6(^|{#;^_PTX9F59MIV$CkqW17K>isXVHvWP- zWKoMvds9>fl2H9+U`rg2K@C(yp+4S^sy~KW!5h|#s6!dC#2muL*pPY}YM`O0y&sQt z(T6p#6zkw3>sqWveKWSg?MukNX7(HnO7SsN$KRkjs=3tI5UW#fje4#<>bX&<_j6Gh zDM3wi7wXLH$C~&x>Z`em{jkn5lev-0NL4%yIW%ad%TX!ZfRVTZmD=6d4fmruyln4Z zL3R8y>I}p#H}*hfFblQPa$Dbm%JhCrz}JElDo?L9Vue{zD{C6^k28ROEySakiGx>~ z!?X@{%HKjA;vX>;(^i>GOvfSA3sHN%599D1RK|keQP9d;uQmgxV_WJ2Q60@f-QS2x z?M~E$_n}tsCbq$EPy;l&)7TZ2fw9;T1E@@IN4@s~vc*B?BMN%(E7ZVs)|i1hqdFdf zjnRk0a0w>jtEkj}ZSPlKYYt%x)csDVfhS`+uEZoffcmUIs%&Tfo7`m%S*CRox;)@T z?cGY$%pXCe?iFl@7f>mTUS}rW&zgrdX^v36;1s+)XG~@p07r(S;T$X z|Gt$~{@}qx`|_VC*P{HDy*HNfbX%@X`4Z*ZaV`-<`Ew$l@?C^hs&wnRLQJD=I4ZLq z%DS{@UBBq}|3=%WhEBFT%&PRiq#O3qe+TONqoML|J+|oli$XLJ&ogi16no<)WUCzy z@h$OZf}acL@5H1a4;N4;CO)P- zsIrAjP}dc}8Mv6x=hu_)(x&t0#861bW5fo^J&4A-Ni?Hv5uxj6qB-#_@dYuBc$vr{ zMi9C-5EaBVqL9#aFENQbIWTqmloL<;v1pAm7ysNeL}pYofuR$6)hPIBJB20q2=2i5Fp_9N=(>ltlXwSKUB3S*SB~%O=FYpsMB-L% zPR1rU7zbh=QAAnS1j?DF=zNMZsL#cA*qQjy-m790g)-X130((?V#;4*O|Ablg}Z4u zgx?T530))Y3v+OkX>yk1Tf{$!6U4uXVq%$n_6EwjLezceCH_DRBf8Kwl}M(%6$juE zt^Y8gYZdW2v6fiF0~fFtq3boG1`$hpKF-H_L^I;|*CyKf{-(Vl<)*|?Vhs;#%tn;^ z+p@!7fGe+T8lR+ez}9EtUu}5>_u3G;E)w;K0_yGX7TX@8dusWs?-3eWf6RRsrj&n0@nZzg5BeA}H zraJW-iN(~X;;qDp%6rNM*K{iL?86z93=Kt^eDKD|l zs(HLEZ?opvXRAn}{T7XXjz}dI(6H3rU2knmTPs@@NyIa@p3J=n;$~Za!z%tpJVrdB z%I~h0)FX)Yyj!{ccq$Wq^UyBJX~ZfXaEJ$p+7#a>R#I+3G^9L~$enJU6At^%QwspFcNHQ0OV~<@n}$E7Cd)s}|at`c}pIv?pp; zOzizewTi+0kA_$D8`L_yX722O8}KJpWDQBE)?jd8{@gr&Vu@Se$@jWBp4|NTg`q{m z9}jK3@#P9{W>Q2jWp0)`HKo8U@cFazJY~hIjpFeIzt$$XrJf>xRur?(WFns265nlJ zJvP+!E-3UBRhIMIxt`(@y_4n6FZLEiITMOKv%DE@+hU&lzsG27hy4Bf6@MG^OZCv6 zNp&j1C%zpP|oEXN9sR_X~YIc}i&9lyNbgQ_?%7q<42abXZlT`#Cr@zcz9 zVWAnmdKEKfhs9K^TyVU4#hg2ig@+EzY!Uj>J2v!TL9I}|`E^6<{mm*`E@>DZIkaly z(w5y>E&gVo*DVMf^n2XWviyMG^O>6;DD?Tl<@$cz-i+Uzq5p04|EH^pmK#2a2<2~STrqaj&EcWb zTUv!KEr|{_+&VC{VC(6=X449)w)xi?*p2>=`hRTo{6bGwX!y24p|jg&hqAXf{ckti BM&AGc delta 12425 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 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/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/newgrp.c:68 +#: 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 +#: src/chage.c:468 #, c-format -msgid "%s: PAM authentication failed\n" +msgid "%s: do not include \"l\" with other flags\n" msgstr "" -#: src/chage.c:536 +#: src/chage.c:481 src/chage.c:652 src/login.c:516 #, c-format -msgid "%s: do not include \"l\" with other flags\n" +msgid "%s: permission denied\n" msgstr "" -#: src/chage.c:548 src/chage.c:660 src/login.c:532 +#: 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: permission denied\n" +msgid "%s: PAM authentication failed\n" msgstr "" -#: src/chage.c:560 src/chpasswd.c:157 +#: 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:89 +msgid "Enter the new value, or press return for the default\n" msgstr "" -#: src/chsh.c:120 +#: 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:129 +#: src/id.c:125 #, c-format -msgid "uid=%d" +msgid "uid=%u" msgstr "" -#: src/id.c:133 +#: src/id.c:129 #, c-format -msgid " gid=%d(%s)" +msgid " gid=%u(%s)" msgstr "" -#: src/id.c:135 +#: src/id.c:131 #, c-format -msgid " gid=%d" +msgid " gid=%u" msgstr "" -#: src/id.c:145 +#: src/id.c:141 #, c-format -msgid " euid=%d(%s)" +msgid " euid=%u(%s)" msgstr "" -#: src/id.c:147 +#: src/id.c:143 #, c-format -msgid " euid=%d" +msgid " euid=%u" msgstr "" -#: src/id.c:152 +#: src/id.c:148 #, c-format -msgid " egid=%d(%s)" +msgid " egid=%u(%s)" msgstr "" -#: src/id.c:154 +#: src/id.c:150 #, 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" +#: src/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" msgstr "" -#: src/newgrp.c:68 -msgid "usage: sg group [[-c] command ]\n" +#: src/mkpasswd.c:395 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp] file\n" msgstr "" -#: src/newgrp.c:125 +#: src/mkpasswd.c:398 #, c-format -msgid "unknown uid: %d\n" +msgid "Usage: %s [-vf] [-p|g] file\n" +msgstr "" + +#: 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:201 +#: src/newgrp.c:136 #, c-format -msgid "unknown gid: %ld\n" +msgid "unknown uid: %u\n" msgstr "" -#: src/newgrp.c:245 +#: src/newgrp.c:219 #, c-format -msgid "unknown gid: %d\n" +msgid "unknown gid: %lu\n" msgstr "" -#: src/newgrp.c:323 src/newgrp.c:332 +#: 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 27340790d95ee36d185f2875f6acf33359711512..ab45c48ae8bfdc94671b7c797fa6f7783ee194b9 100644 GIT binary patch delta 10471 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 YUrvAb`tw&-RFob#vLP=pVPmuZ1^g2DAOHXW delta 12465 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 H+wuPZZd3RQ 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: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:120 +#: 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/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "Användning: %s [-vf] [-p|g|sp|sg] fil\n" -#: src/newgrp.c:68 -#, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "Användning: sg grupp [ kommando ]\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/newgrp.c:125 +#: src/mkpasswd.c:398 #, c-format -msgid "unknown uid: %d\n" +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 +#: src/usermod.c:332 +#, fuzzy msgid "[-A {DEFAULT|program},... ] " -msgstr "[-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 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 e37984270ebea6b07b966ae263113782ebe4c109..3db16d1d0f849255ce14f396202024e366c23b50 100644 GIT binary patch delta 10476 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 delta 12581 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 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:89 +#, fuzzy +msgid "Enter the new value, or press return for the default\n" +msgstr "" +"÷×ÅĦÔØ ÎÏ×Å ÚÎÁÞÅÎÎÑ, ÁÂÏ ÎÁÖͦÔØ ENTER, ÄÌÑ ÚÎÁÞÅÎÎÑ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ\n" +"\n" -#: src/chsh.c:120 +#: 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/mkpasswd.c:392 +#, c-format +msgid "Usage: %s [-vf] [-p|g|sp|sg] file\n" +msgstr "÷ÉËÏÒÉÓÔÏ×ÕÊÔÅ: %s [-vf] [-p|g|sp|sg] ÆÁÊÌ\n" -#: src/newgrp.c:68 -#, fuzzy -msgid "usage: sg group [[-c] command ]\n" -msgstr "×ÉËÏÒÉÓÔÏ×ÕÊÔÅ: 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/newgrp.c:125 +#: src/mkpasswd.c:398 #, c-format -msgid "unknown uid: %d\n" +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 +#: src/usermod.c:332 +#, fuzzy msgid "[-A {DEFAULT|program},... ] " -msgstr "[-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 ÐÁÒÏÌØ] ¦Í'Ñ\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. + * Global variables */ +static char *Prog; -#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; +static int locks; -#ifdef AGING /*{*/ +static long mindays; +static long maxdays; +static long lastday; -/* - * Global variables - */ - -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; - - pampw = getpwuid(getuid()); - if (pampw == NULL) { - retval = PAM_USER_UNKNOWN; - } + OPENLOG ("chage"); - 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); - } - 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); - } - if (!(pw = pw_locate(argv[optind]))) { - fprintf(stderr, _("%s: unknown user: %s\n"), Prog, argv[optind]); - cleanup(1); - 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); + } + 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); } 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); + } + + 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]); + 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. - */ - -static char *Prog; /* Program name */ -static int amroot; /* Real UID is root */ -static char loginsh[BUFSIZ]; /* Name of new login shell */ +/* external identifiers */ -/* - * 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 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) { - 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(); - - 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(); + 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 (); } } /* 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 (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 (nflg && !sg_dbm_remove (group_name)) { fprintf (stderr, - _("%s: error removing shadow group dbm entry\n"), - Prog); - exit(E_GRP_UPDATE); + _ + ("%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)) { - 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) { + if (!check_group_name (grp->gr_name)) { 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); - - fprintf(stderr, _("%s: not configured for shadow group support.\n"), - argv[0]); - exit(1); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + 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); - - fprintf(stderr, _("%s: not configured for shadow group support.\n"), argv[0]); - exit(1); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + 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__ /* - * Add remote hostname to the environment. I think - * (not sure) I saw it once on Irix. --marekm + * workaround for init/getty leaving junk in ut_host at least in + * some version of RedHat. --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++; - } + 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++; + if (rflg + && do_rlogin (hostname, username, sizeof username, + term, sizeof term)) + preauth_flag++; #endif - OPENLOG("login"); + OPENLOG ("login"); - setup_tty(); + setup_tty (); - umask(getdef_num("UMASK", 077)); + 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. - */ + { + /* + * 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); + long limit = getdef_long ("ULIMIT", -1L); - if (limit != -1) - set_filesize_limit(limit); - } + if (limit != -1) + set_filesize_limit (limit); + } - /* - * The entire environment will be preserved if the -p flag - * is used. - */ + /* + * 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 */ + if (pflg) + while (*envp) /* add inherited environment, */ + addenv (*envp++, NULL); /* some variables change later */ #ifdef RLOGIN - if (term[0] != '\0') - addenv("TERM", term); - else + if (term[0] != '\0') + addenv ("TERM", term); + else #endif - /* preserve TERM from getty */ - if (!pflg && (tmp = getenv("TERM"))) - addenv("TERM", tmp); + /* preserve TERM from getty */ + if (!pflg && (tmp = getenv ("TERM"))) + addenv ("TERM", tmp); - init_env(); + init_env (); - if (optind < argc) { /* get the user name */ - if (rflg || fflg) - usage(); + 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=... - */ + /* + * The "-h" option can't be used with a command-line username, + * because telnetd invokes us as: login -h host TERM=... + */ - if (! hflg) + if (!hflg) #endif - { - STRFCPY(username, argv[optind]); - strzero(argv[optind]); - ++optind; + { + STRFCPY (username, argv[optind]); + strzero (argv[optind]); + ++optind; + } } - } #ifdef SVR4 - /* - * check whether ttymon has done the prompt for us already - */ + /* + * check whether ttymon has done the prompt for us already + */ - { - char *ttymon_prompt; + { + char *ttymon_prompt; - 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 ((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 + 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); + 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; - - /* 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); + retcode = pam_fail_delay (pamh, 1000000 * delay); + PAM_FAIL_CHECK; #endif - fprintf(stderr, "Login incorrect\n\n"); - pam_set_item(pamh, PAM_USER, NULL); - retcode = pam_authenticate(pamh, 0); - } + /* 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); - if (retcode != PAM_SUCCESS) { - pam_get_item(pamh, PAM_USER, (const void **) &pam_user); + /* + * 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? + */ - if (retcode == PAM_MAXTRIES) - syslog(LOG_NOTICE, - "TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s", + 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)); - 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); - } + 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_acct_mgmt(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); + } - if(retcode == PAM_NEW_AUTHTOK_REQD) { - retcode = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK); - } + retcode = pam_acct_mgmt (pamh, 0); - PAM_FAIL_CHECK; - } + if (retcode == PAM_NEW_AUTHTOK_REQD) { + retcode = + pam_chauthtok (pamh, + PAM_CHANGE_EXPIRED_AUTHTOK); + } - /* 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); + PAM_FAIL_CHECK; + } - if (!pwd || setup_groups(pwd)) - exit(1); + /* 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); - retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED); - PAM_FAIL_CHECK; + if (!pwd || setup_groups (pwd)) + exit (1); - retcode = pam_open_session(pamh, 0); - PAM_FAIL_CHECK; + 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 */ +#else /* ! USE_PAM */ + while (1) { /* repeatedly get login/password pairs */ + failed = 0; /* haven't failed authentication yet */ #ifdef RADIUS - is_rad_login = 0; + is_rad_login = 0; #endif - if (! username[0]) { /* need to get a login id */ + 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); - - fprintf(stderr, - _("%s: no DBM database on system - no action performed\n"), - argv[0]); + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + 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 (); -#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(); +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 */ - - struct group *group=NULL; /* Pointer to group 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 */ + #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 (); - - break; - default: - usage(); + case 'p': + pflg++; + if (gflg) + 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); - /* - * 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. + * 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); - 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. + * 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. */ - /* - * 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. - */ + shell (prog, initflag ? (char *) 0 : cp); + /*NOTREACHED*/ failure: - 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. + * 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 */ - 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 */ -#endif - qflg = 0, /* -q - quiet mode */ - aflg = 0, /* -a - show status for all users */ - Sflg = 0; /* -S - show password status */ + 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 + 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; -#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" +extern int sp_dbm_mode; +extern int pw_dbm_mode; #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 +#ifdef HAVE_TCFS + case 't': + tcfs_force = 1; + break; +#endif +#ifdef SHADOWPWD case 'x': - age_max = getnumber(optarg); + age_max = getnumber (optarg); xflg++; anyflag = 1; break; case 'n': - age_min = getnumber(optarg); + age_min = getnumber (optarg); nflg++; anyflag = 1; break; -#ifdef HAVE_TCFS - case 't': - tcfs_force = 1; - break; -#endif -#ifdef SHADOWPWD 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); - - if (new_password(pw)) { - fprintf(stderr, - _("The password for %s is unchanged.\n"), - name); - closelog(); - exit(E_NOPERM); + 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); } 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 /*{*/ - -char *l64a (); +#else /*{ */ +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. - */ - - /* 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 - */ + /* + * 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 + */ 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); +} + +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); + 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())) { -#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); + 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 (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); + 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()) { + if (is_shadow_grp && !sgr_close ()) { fprintf (stderr, - _("%s: cannot rewrite shadow group file\n"), - Prog); - fail_exit(E_GRP_UPDATE); + _ + ("%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 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. - */ + 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;} + } + } + } - 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 (); -#endif - endpwent (); -#endif /* NDBM */ - SYSLOG((LOG_INFO, "delete user `%s'\n", user_name)); -} + 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));} /* * 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; - - 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; - } + 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;} - 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; -#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 && !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);} + } #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; -#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); - + 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); #ifdef USE_PAM - retval = PAM_SUCCESS; - - 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_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); - } - } + retval = PAM_SUCCESS; + 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_authenticate (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 */ + if (retval == PAM_SUCCESS) { + retval = pam_acct_mgmt (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval);} + } - 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; -#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 (); - - /* - * 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. - */ - - 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); - } + sg_dbm_mode = O_RDWR; #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 (); - -#ifndef NO_REMOVE_MAILBOX - if (rflg) - remove_mailbox(); #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 (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 (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 -/* This may be slow, the above should be good enough. */ + /* + * 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);} +#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 (); +#ifndef NO_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++;} + +/* 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); - - errors++; - } - } - - /* - * Cancel any crontabs or at jobs. Have to do this before we - * remove the entry from /etc/passwd. - */ - - user_cancel(user_name); + if (rflg) { + if (remove_tree (user_home) + || rmdir (user_home)) { + fprintf (stderr, + _ + ("%s: error removing directory %s\n"), + Prog, user_home); errors++;} + } - 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) { - fprintf (stderr, _("%s: PAM chauthtok failed\n"), Prog); - exit (1); - } + if (retval == PAM_SUCCESS) { + retval = pam_chauthtok (pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end (pamh, retval);} + } - if (retval == PAM_SUCCESS) - pam_end(pamh, PAM_SUCCESS); -#endif /* USE_PAM */ + if (retval != PAM_SUCCESS) { + fprintf (stderr, + _("%s: PAM chauthtok failed\n"), + Prog); exit (1);} - 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); +} + +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); + 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; - - 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; - } - - 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; + struct utimbuf ub; + FILE *bkfp; + int c; + mode_t mask; + + 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; + } + + 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; } -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]; - - 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; - - /* 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) { + 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; + + /* 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; - } - - 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); - - /* 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); - } - - (*file_unlock)(); + } + + 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 (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 + */ + + 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) (); } -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; - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - - 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\ + int flag; + int editshadow = 0; + char *c; + int e = 1; + int do_vipw; + + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + 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\ `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; } -- 2.40.0