summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Mraz <tm@t8m.info>2008-11-28 14:29:12 +0000
committerTomas Mraz <tm@t8m.info>2008-11-28 14:29:12 +0000
commit4a67d64dd0cb01c40e675f48f0c6ea3d08e53664 (patch)
tree4b6af66d5ccc14e896a2fa5eb2601627028fb359
parent51a9be048c75f86e2d2493a47b1f6fd25f5e549d (diff)
Relevant BUGIDs:
Purpose of commit: new feature Commit summary: --------------- 2008-11-28 Tomas Mraz <t8m@centrum.cz> * modules/pam_tally2/pam_tally2.c (tally_check): Fix info format to be the same as in pam_tally. * configure.in: Add modules/pam_timestamp/Makefile. * doc/sag/Linux-PAM_SAG.xml: Include pam_timestamp.xml. * doc/sag/pam_timestamp.xml: New. * libpam/pam_static_modules.h: Add pam_timestamp static struct. * modules/Makefile.am: Add pam_timestamp directory. * modules/pam_timestamp/Makefile.am: New. * modules/pam_timestamp/README.xml: New. * modules/pam_timestamp/hmacsha1.h: New. * modules/pam_timestamp/sha1.h: New. * modules/pam_timestamp/pam_timestamp.8.xml: New. * modules/pam_timestamp/pam_timestamp_check.8.xml: New. * modules/pam_timestamp/pam_timestamp.c: New. * modules/pam_timestamp/pam_timestamp_check.c: New. * modules/pam_timestamp/hmacfile.c: New. * modules/pam_timestamp/hmacsha1.c: New. * modules/pam_timestamp/sha1.c: New. * modules/pam_timestamp/tst-pam_timestamp: New. * po/POTFILES.in: Add pam_timestamp sources. * po/*.po: Regenerate. * po/cs.po: Updated translations.
-rw-r--r--ChangeLog24
-rw-r--r--NEWS2
-rw-r--r--configure.in4
-rw-r--r--doc/sag/Linux-PAM_SAG.xml2
-rw-r--r--doc/sag/pam_timestamp.xml42
-rw-r--r--libpam/pam_static_modules.h2
-rw-r--r--modules/Makefile.am3
-rw-r--r--modules/pam_tally2/pam_tally2.c4
-rw-r--r--modules/pam_timestamp/Makefile.am47
-rw-r--r--modules/pam_timestamp/README.xml46
-rw-r--r--modules/pam_timestamp/hmacfile.c157
-rw-r--r--modules/pam_timestamp/hmacsha1.c293
-rw-r--r--modules/pam_timestamp/hmacsha1.h15
-rw-r--r--modules/pam_timestamp/pam_timestamp.8.xml189
-rw-r--r--modules/pam_timestamp/pam_timestamp.c816
-rw-r--r--modules/pam_timestamp/pam_timestamp_check.8.xml208
-rw-r--r--modules/pam_timestamp/pam_timestamp_check.c42
-rw-r--r--modules/pam_timestamp/sha1.c254
-rw-r--r--modules/pam_timestamp/sha1.h60
-rwxr-xr-xmodules/pam_timestamp/tst-pam_timestamp2
-rw-r--r--po/Linux-PAM.pot38
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/ar.po38
-rw-r--r--po/as.po38
-rw-r--r--po/bn_IN.po42
-rw-r--r--po/ca.po45
-rw-r--r--po/cs.po51
-rw-r--r--po/da.po38
-rw-r--r--po/de.po41
-rw-r--r--po/es.po38
-rw-r--r--po/fi.po38
-rw-r--r--po/fr.po42
-rw-r--r--po/gu.po38
-rw-r--r--po/hi.po38
-rw-r--r--po/hu.po38
-rw-r--r--po/it.po42
-rw-r--r--po/ja.po42
-rw-r--r--po/km.po38
-rw-r--r--po/kn.po42
-rw-r--r--po/ko.po38
-rw-r--r--po/ml.po42
-rw-r--r--po/mr.po38
-rw-r--r--po/ms.po38
-rw-r--r--po/nb.po38
-rw-r--r--po/nl.po42
-rw-r--r--po/or.po38
-rw-r--r--po/pa.po38
-rw-r--r--po/pl.po42
-rw-r--r--po/pt.po38
-rw-r--r--po/pt_BR.po42
-rw-r--r--po/ru.po38
-rw-r--r--po/si.po38
-rw-r--r--po/sk.po42
-rw-r--r--po/sr.po38
-rw-r--r--po/sr@latin.po38
-rw-r--r--po/sv.po38
-rw-r--r--po/ta.po38
-rw-r--r--po/te.po42
-rw-r--r--po/tr.po38
-rw-r--r--po/uk.po38
-rw-r--r--po/zh_CN.po42
-rw-r--r--po/zh_TW.po38
-rw-r--r--po/zu.po38
63 files changed, 3071 insertions, 810 deletions
diff --git a/ChangeLog b/ChangeLog
index dc4ef37f..f58ef8a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,30 @@
* modules/pam_unix/unix_update.c (set_password): Allow root to change
passwords without verification of the old ones.
+ * modules/pam_tally2/pam_tally2.c (tally_check): Fix info format
+ to be the same as in pam_tally.
+
+ * configure.in: Add modules/pam_timestamp/Makefile.
+ * doc/sag/Linux-PAM_SAG.xml: Include pam_timestamp.xml.
+ * doc/sag/pam_timestamp.xml: New.
+ * libpam/pam_static_modules.h: Add pam_timestamp static struct.
+ * modules/Makefile.am: Add pam_timestamp directory.
+ * modules/pam_timestamp/Makefile.am: New.
+ * modules/pam_timestamp/README.xml: New.
+ * modules/pam_timestamp/hmacsha1.h: New.
+ * modules/pam_timestamp/sha1.h: New.
+ * modules/pam_timestamp/pam_timestamp.8.xml: New.
+ * modules/pam_timestamp/pam_timestamp_check.8.xml: New.
+ * modules/pam_timestamp/pam_timestamp.c: New.
+ * modules/pam_timestamp/pam_timestamp_check.c: New.
+ * modules/pam_timestamp/hmacfile.c: New.
+ * modules/pam_timestamp/hmacsha1.c: New.
+ * modules/pam_timestamp/sha1.c: New.
+ * modules/pam_timestamp/tst-pam_timestamp: New.
+ * po/POTFILES.in: Add pam_timestamp sources.
+ * po/*.po: Regenerate.
+ * po/cs.po: Updated translations.
+
2008-11-25 Thorsten Kukuk <kukuk@thkukuk.de>
* modules/pam_pwhistory/opasswd.c (save_old_password): Fix typo.
diff --git a/NEWS b/NEWS
index 932d90c8..e3f5623c 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,8 @@ Release 1.0.90
* New pam_tally2 module similar to pam_tally with wordsize independent
tally data format
* Make libpam not log missing module if its type is prepended with '-'
+* New pam_timestamp module for authentication based on recent successful
+ login.
Release 1.0.2
diff --git a/configure.in b/configure.in
index 087d88cf..b220a9a2 100644
--- a/configure.in
+++ b/configure.in
@@ -548,8 +548,8 @@ AC_CONFIG_FILES([Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile
modules/pam_sepermit/Makefile \
modules/pam_shells/Makefile modules/pam_stress/Makefile \
modules/pam_succeed_if/Makefile modules/pam_tally/Makefile \
- modules/pam_tally2/Makefile \
- modules/pam_time/Makefile modules/pam_tty_audit/Makefile \
+ modules/pam_tally2/Makefile modules/pam_time/Makefile \
+ modules/pam_timestamp/Makefile modules/pam_tty_audit/Makefile \
modules/pam_umask/Makefile \
modules/pam_unix/Makefile modules/pam_userdb/Makefile \
modules/pam_warn/Makefile modules/pam_wheel/Makefile \
diff --git a/doc/sag/Linux-PAM_SAG.xml b/doc/sag/Linux-PAM_SAG.xml
index a1989c9a..b83355ef 100644
--- a/doc/sag/Linux-PAM_SAG.xml
+++ b/doc/sag/Linux-PAM_SAG.xml
@@ -463,6 +463,8 @@ session required pam_warn.so
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_time.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_umask.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_unix.xml"/>
diff --git a/doc/sag/pam_timestamp.xml b/doc/sag/pam_timestamp.xml
new file mode 100644
index 00000000..833a6bac
--- /dev/null
+++ b/doc/sag/pam_timestamp.xml
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
+<section id='sag-pam_timestamp'>
+ <title>pam_timestamp - authenticate using cached successful authentication attempts</title>
+ <cmdsynopsis>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_timestamp-cmdsynopsis"]/*)'/>
+ </cmdsynopsis>
+ <section id='sag-pam_timestamp-description'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-description"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-options'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-options"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-types'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-types"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-return_values'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-return_values"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-notes'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-notes"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-examples'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-examples"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-files'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-files"]/*)'/>
+ </section>
+ <section id='sag-pam_timestamp-author'>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../../modules/pam_timestamp/pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-author"]/*)'/>
+ </section>
+</section>
diff --git a/libpam/pam_static_modules.h b/libpam/pam_static_modules.h
index 2d80cecb..999adc2a 100644
--- a/libpam/pam_static_modules.h
+++ b/libpam/pam_static_modules.h
@@ -76,6 +76,7 @@ extern struct pam_module _pam_succeed_if_modstruct;
extern struct pam_module _pam_tally_modstruct;
extern struct pam_module _pam_tally2_modstruct;
extern struct pam_module _pam_time_modstruct;
+extern struct pam_module _pam_timestamp_modstruct;
#ifdef HAVE_AUDIT_TTY_STATUS
extern struct pam_module _pam_tty_audit_modstruct;
#endif
@@ -136,6 +137,7 @@ static struct pam_module *static_modules[] = {
&_pam_tally_modstruct,
&_pam_tally2_modstruct,
&_pam_time_modstruct,
+ &_pam_timestamp_modstruct,
#ifdef HAVE_AUDIT_TTY_STATUS
&_pam_tty_audit_modstruct,
#endif
diff --git a/modules/Makefile.am b/modules/Makefile.am
index 37d5a739..0c80cea9 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -9,7 +9,8 @@ SUBDIRS = pam_access pam_cracklib pam_debug pam_deny pam_echo \
pam_mkhomedir pam_motd pam_namespace pam_nologin \
pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \
pam_selinux pam_sepermit pam_shells pam_stress \
- pam_succeed_if pam_tally pam_tally2 pam_time pam_tty_audit pam_umask \
+ pam_succeed_if pam_tally pam_tally2 pam_time pam_timestamp \
+ pam_tty_audit pam_umask \
pam_unix pam_userdb pam_warn pam_wheel pam_xauth
CLEANFILES = *~
diff --git a/modules/pam_tally2/pam_tally2.c b/modules/pam_tally2/pam_tally2.c
index 9ae3180d..5924edf9 100644
--- a/modules/pam_tally2/pam_tally2.c
+++ b/modules/pam_tally2/pam_tally2.c
@@ -517,8 +517,8 @@ tally_check (tally_t oldcnt, time_t oldtime, pam_handle_t *pamh, uid_t uid,
#endif
if (!(opts->ctrl & OPT_QUIET)) {
- pam_info(pamh, _("Account locked due to %hu failed logins"),
- tally->fail_cnt);
+ pam_info(pamh, _("Account locked due to %u failed logins"),
+ (unsigned int)tally->fail_cnt);
}
if (!(opts->ctrl & OPT_NOLOGNOTICE)) {
pam_syslog(pamh, LOG_NOTICE,
diff --git a/modules/pam_timestamp/Makefile.am b/modules/pam_timestamp/Makefile.am
new file mode 100644
index 00000000..51a3c215
--- /dev/null
+++ b/modules/pam_timestamp/Makefile.am
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2005 Thorsten Kukuk <kukuk@suse.de>
+# Copyright (c) 2005 Red Hat, Inc.
+#
+
+CLEANFILES = *~
+
+XMLS = README.xml pam_timestamp.8.xml pam_timestamp_check.8.xml
+man_MANS = pam_timestamp.8 pam_timestamp_check.8
+TESTS = tst-pam_timestamp
+
+EXTRA_DIST = $(man_MANS) hmactest.c $(XMLS) $(TESTS)
+
+securelibdir = $(SECUREDIR)
+secureconfdir = $(SCONFIGDIR)
+
+noinst_HEADERS = hmacsha1.h sha1.h
+
+AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include
+
+pam_timestamp_la_LDFLAGS = -no-undefined -avoid-version -module $(AM_LDFLAGS)
+pam_timestamp_la_LIBADD = -L$(top_builddir)/libpam -lpam
+if HAVE_VERSIONING
+ pam_timestamp_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
+endif
+
+securelib_LTLIBRARIES = pam_timestamp.la
+sbin_PROGRAMS = pam_timestamp_check
+
+pam_timestamp_la_SOURCES = pam_timestamp.c hmacsha1.c sha1.c
+pam_timestamp_la_CFLAGS = $(AM_CFLAGS)
+
+pam_timestamp_check_SOURCES = pam_timestamp_check.c
+pam_timestamp_check_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@
+pam_timestamp_check_LDADD = -L$(top_builddir)/libpam -lpam
+pam_timestamp_check_LDFLAGS = @PIE_LDFLAGS@
+
+hmacfile_SOURCES = hmacfile.c hmacsha1.c sha1.c
+hmacfile_LDADD = -L$(top_builddir)/libpam -lpam
+
+if ENABLE_REGENERATE_MAN
+noinst_DATA = README
+README: pam_timestamp.8.xml
+-include $(top_srcdir)/Make.xml.rules
+endif
+
+noinst_PROGRAMS = hmacfile
diff --git a/modules/pam_timestamp/README.xml b/modules/pam_timestamp/README.xml
new file mode 100644
index 00000000..5b72deb1
--- /dev/null
+++ b/modules/pam_timestamp/README.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.docbook.org/xml/4.3/docbookx.dtd"
+[
+<!--
+<!ENTITY pamaccess SYSTEM "pam_timestamp.8.xml">
+-->
+]>
+
+<article>
+
+ <articleinfo>
+
+ <title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_timestamp-name"]/*)'/>
+ </title>
+
+ </articleinfo>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-description"]/*)'/>
+ </section>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-options"]/*)'/>
+ </section>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-notes"]/*)'/>
+ </section>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-examples"]/*)'/>
+ </section>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_timestamp.8.xml" xpointer='xpointer(//refsect1[@id = "pam_timestamp-author"]/*)'/>
+ </section>
+
+</article>
diff --git a/modules/pam_timestamp/hmacfile.c b/modules/pam_timestamp/hmacfile.c
new file mode 100644
index 00000000..963f6f54
--- /dev/null
+++ b/modules/pam_timestamp/hmacfile.c
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2003,2004 Red Hat, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "hmacsha1.h"
+
+static void
+testvectors(void)
+{
+ void *hmac;
+ size_t hmac_len;
+ size_t i, j;
+ char hex[3];
+ struct vector {
+ const char *key;
+ int key_len;
+ const char *data;
+ int data_len;
+ const char *hmac;
+ } vectors[] = {
+ {
+ "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", 20,
+ "Hi There", 8,
+ "b617318655057264e28bc0b6fb378c8ef146be00",
+ },
+
+ {
+ "Jefe", 4,
+ "what do ya want for nothing?", 28,
+ "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79",
+ },
+
+ {
+ "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", 20,
+ "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", 50,
+ "125d7342b9ac11cd91a39af48aa17b4f63f175d3",
+ },
+
+ {
+ "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19", 25,
+ "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
+ 50,
+ "4c9007f4026250c6bc8414f9bf50c86c2d7235da",
+ },
+
+ {
+ "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c", 20,
+ "Test With Truncation", 20,
+ "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04",
+ },
+
+ {
+ "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
+ 80,
+ "Test Using Larger Than Block-Size Key - Hash Key First", 54,
+ "aa4ae5e15272d00e95705637ce8a3b55ed402112",
+ },
+
+ {
+ "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
+ 80,
+ "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data", 73,
+ "e8e99d0f45237d786d6bbaa7965c7808bbff1a91",
+ },
+ };
+ for (i = 0; i < sizeof(vectors) / sizeof(vectors[0]); i++) {
+ hmac = NULL;
+ hmac_len = 0;
+ hmac_sha1_generate(&hmac, &hmac_len,
+ vectors[i].key, vectors[i].key_len,
+ vectors[i].data, vectors[i].data_len);
+ if (hmac != NULL) {
+ unsigned char *hmacc = hmac;
+ for (j = 0; j < hmac_len; j++) {
+ snprintf(hex, sizeof(hex), "%02x",
+ hmacc[j] & 0xff);
+ if (strncasecmp(hex,
+ vectors[i].hmac + 2 * j,
+ 2) != 0) {
+ printf("Incorrect result for vector %lu\n", i + 1);
+ exit(1);
+
+ }
+ }
+ free(hmac);
+ } else {
+ printf("Error in vector %lu.\n", i + 1);
+ exit(1);
+ }
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ void *hmac;
+ size_t maclen;
+ const char *keyfile;
+ int i;
+ size_t j;
+
+ testvectors();
+
+ keyfile = argv[1];
+ for (i = 2; i < argc; i++) {
+ hmac_sha1_generate_file(NULL, &hmac, &maclen, keyfile, -1, -1,
+ argv[i], strlen(argv[i]));
+ if (hmac != NULL) {
+ unsigned char *hmacc = hmac;
+ for (j = 0; j < maclen; j++) {
+ printf("%02x", hmacc[j] & 0xff);
+ }
+ printf(" %s\n", argv[i]);
+ free(hmac);
+ }
+ }
+ return 0;
+}
diff --git a/modules/pam_timestamp/hmacsha1.c b/modules/pam_timestamp/hmacsha1.c
new file mode 100644
index 00000000..5b3774ff
--- /dev/null
+++ b/modules/pam_timestamp/hmacsha1.c
@@ -0,0 +1,293 @@
+/* An implementation of HMAC using SHA-1.
+ *
+ * Copyright (c) 2003 Red Hat, Inc.
+ * Written by Nalin Dahyabhai <nalin@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, 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.
+ *
+ */
+/* See RFC 2104 for descriptions. */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <syslog.h>
+#include <security/pam_ext.h>
+#include "hmacsha1.h"
+#include "sha1.h"
+
+#define MINIMUM_KEY_SIZE SHA1_OUTPUT_SIZE
+#define MAXIMUM_KEY_SIZE SHA1_BLOCK_SIZE
+
+static void
+hmac_key_create(pam_handle_t *pamh, const char *filename, size_t key_size,
+ uid_t owner, gid_t group)
+{
+ int randfd, keyfd, i;
+ size_t count;
+ char *key;
+
+ /* Open the destination file. */
+ keyfd = open(filename,
+ O_WRONLY | O_CREAT | O_EXCL | O_TRUNC,
+ S_IRUSR | S_IWUSR);
+ if (keyfd == -1) {
+ pam_syslog(pamh, LOG_ERR, "Cannot create %s: %m", filename);
+ return;
+ }
+
+
+ if (fchown(keyfd, owner, group) == -1) {
+ pam_syslog(pamh, LOG_ERR, "Cannot chown %s: %m", filename);
+ return;
+ }
+
+ /* Open the random device to get key data. */
+ randfd = open("/dev/urandom", O_RDONLY);
+ if (randfd == -1) {
+ pam_syslog(pamh, LOG_ERR, "Cannot open /dev/urandom: %m");
+ close(keyfd);
+ return;
+ }
+
+ /* Read random data for use as the key. */
+ key = malloc(key_size);
+ count = 0;
+ if (!key) {
+ close(keyfd);
+ close(randfd);
+ return;
+ }
+ while (count < key_size) {
+ i = read(randfd, key + count, key_size - count);
+ if ((i == 0) || (i == -1)) {
+ break;
+ }
+ count += i;
+ }
+
+ close(randfd);
+
+ /* If we didn't get enough, stop here. */
+ if (count < key_size) {
+ pam_syslog(pamh, LOG_ERR, "Short read on random device");
+ memset(key, 0, key_size);
+ free(key);
+ close(keyfd);
+ return;
+ }
+
+ /* Now write the key. */
+ count = 0;
+ while (count < key_size) {
+ i = write(keyfd, key + count, key_size - count);
+ if ((i == 0) || (i == -1)) {
+ break;
+ }
+ count += i;
+ }
+ memset(key, 0, key_size);
+ free(key);
+ close(keyfd);
+}
+
+static void
+hmac_key_read(pam_handle_t *pamh, const char *filename, size_t default_key_size,
+ uid_t owner, gid_t group,
+ void **key, size_t *key_size)
+{
+ char *tmp;
+ int keyfd, i, count;
+ struct stat st;
+
+ tmp = NULL;
+ *key = NULL;
+ *key_size = 0;
+
+ /* Try to open the key file. */
+ keyfd = open(filename, O_RDONLY);
+ if (keyfd == -1) {
+ /* No such thing? Create it. */
+ if (errno == ENOENT) {
+ hmac_key_create(pamh, filename, default_key_size,
+ owner, group);
+ keyfd = open(filename, O_RDONLY);
+ } else {
+ pam_syslog(pamh, LOG_ERR, "Cannot open %s: %m", filename);
+ }
+ if (keyfd == -1)
+ return;
+ }
+
+ /* If we failed to open the file, we're done. */
+ if (fstat(keyfd, &st) == -1) {
+ close(keyfd);
+ return;
+ }
+
+ /* Read the contents of the file. */
+ tmp = malloc(st.st_size);
+ if (!tmp) {
+ close(keyfd);
+ return;
+ }
+
+ count = 0;
+ while (count < st.st_size) {
+ i = read(keyfd, tmp + count, st.st_size - count);
+ if ((i == 0) || (i == -1)) {
+ break;
+ }
+ count += i;
+ }
+ close(keyfd);
+
+ /* Require that we got the expected amount of data. */
+ if (count < st.st_size) {
+ memset(tmp, 0, st.st_size);
+ free(tmp);
+ return;
+ }
+
+ /* Pass the key back. */
+ *key = tmp;
+ *key_size = st.st_size;
+}
+
+static void
+xor_block(unsigned char *p, unsigned char byte, size_t length)
+{
+ size_t i;
+ for (i = 0; i < length; i++) {
+ p[i] = p[i] ^ byte;
+ }
+}
+
+void
+hmac_sha1_generate(void **mac, size_t *mac_length,
+ const void *raw_key, size_t raw_key_size,
+ const void *text, size_t text_length)
+{
+ unsigned char key[MAXIMUM_KEY_SIZE], tmp_key[MAXIMUM_KEY_SIZE];
+ size_t maximum_key_size = SHA1_BLOCK_SIZE,
+ minimum_key_size = SHA1_OUTPUT_SIZE;
+ const unsigned char ipad = 0x36, opad = 0x5c;
+ struct sha1_context sha1;
+ unsigned char inner[SHA1_OUTPUT_SIZE], outer[SHA1_OUTPUT_SIZE];
+
+ *mac = NULL;
+ *mac_length = 0;
+
+#ifndef HMAC_ALLOW_SHORT_KEYS
+ /* If the key is too short, don't bother. */
+ if (raw_key_size < minimum_key_size) {
+ return;
+ }
+#endif
+
+ /* If the key is too long, "compress" it, else copy it and pad it
+ * out with zero bytes. */
+ memset(key, 0, sizeof(key));
+ if (raw_key_size > maximum_key_size) {
+ sha1_init(&sha1);
+ sha1_update(&sha1, raw_key, raw_key_size);
+ sha1_output(&sha1, key);
+ } else {
+ memmove(key, raw_key, raw_key_size);
+ }
+
+ /* Generate the inner sum. */
+ memcpy(tmp_key, key, sizeof(tmp_key));
+ xor_block(tmp_key, ipad, sizeof(tmp_key));
+
+ sha1_init(&sha1);
+ sha1_update(&sha1, tmp_key, sizeof(tmp_key));
+ sha1_update(&sha1, text, text_length);
+ sha1_output(&sha1, inner);
+
+ /* Generate the outer sum. */
+ memcpy(tmp_key, key, sizeof(tmp_key));
+ xor_block(tmp_key, opad, sizeof(tmp_key));
+
+ sha1_init(&sha1);
+ sha1_update(&sha1, tmp_key, sizeof(tmp_key));
+ sha1_update(&sha1, inner, sizeof(inner));
+ sha1_output(&sha1, outer);
+
+ /* We don't need any of the keys any more. */
+ memset(key, 0, sizeof(key));
+ memset(tmp_key, 0, sizeof(tmp_key));
+
+ /* Allocate space to store the output. */
+ *mac_length = sizeof(outer);
+ *mac = malloc(*mac_length);
+ if (*mac == NULL) {
+ *mac_length = 0;
+ return;
+ }
+
+ memcpy(*mac, outer, *mac_length);
+}
+
+void
+hmac_sha1_generate_file(pam_handle_t *pamh, void **mac, size_t *mac_length,
+ const char *keyfile, uid_t owner, gid_t group,
+ const void *text, size_t text_length)
+{
+ void *key;
+ size_t key_length;
+
+ hmac_key_read(pamh, keyfile,
+ MAXIMUM_KEY_SIZE, owner, group,
+ &key, &key_length);
+ if (key == NULL) {
+ *mac = NULL;
+ *mac_length = 0;
+ return;
+ }
+ hmac_sha1_generate(mac, mac_length,
+ key, key_length,
+ text, text_length);
+ memset(key, 0, key_length);
+ free(key);
+}
+
+size_t
+hmac_sha1_size(void)
+{
+ return SHA1_OUTPUT_SIZE;
+}
diff --git a/modules/pam_timestamp/hmacsha1.h b/modules/pam_timestamp/hmacsha1.h
new file mode 100644
index 00000000..200d1d06
--- /dev/null
+++ b/modules/pam_timestamp/hmacsha1.h
@@ -0,0 +1,15 @@
+#ifndef pam_timestamp_hmacfile_h
+#define pam_timestamp_hmacfile_h
+
+#include <sys/types.h>
+#include <security/pam_modules.h>
+
+size_t hmac_sha1_size(void);
+void hmac_sha1_generate(void **mac, size_t *mac_length,
+ const void *key, size_t key_length,
+ const void *text, size_t text_length);
+void hmac_sha1_generate_file(pam_handle_t *pamh, void **mac, size_t *mac_length,
+ const char *keyfile, uid_t owner, gid_t group,
+ const void *text, size_t text_length);
+
+#endif
diff --git a/modules/pam_timestamp/pam_timestamp.8.xml b/modules/pam_timestamp/pam_timestamp.8.xml
new file mode 100644
index 00000000..c96424ab
--- /dev/null
+++ b/modules/pam_timestamp/pam_timestamp.8.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<refentry id="pam_timestamp">
+
+ <refmeta>
+ <refentrytitle>pam_timestamp</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
+ </refmeta>
+
+ <refnamediv id="pam_timestamp-name">
+ <refname>pam_timestamp</refname>
+ <refpurpose>Authenticate using cached successful authentication attempts</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="pam_timestamp-cmdsynopsis">
+ <command>pam_timestamp.so</command>
+ <arg choice="opt">
+ timestamp_timeout=<replaceable>number</replaceable>
+ </arg>
+ <arg choice="opt">
+ verbose
+ </arg>
+ <arg choice="opt">
+ debug
+ </arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1 id="pam_timestamp-description">
+
+ <title>DESCRIPTION</title>
+
+ <para>
+ In a nutshell, <emphasis>pam_timestamp</emphasis> caches successful
+authentication attempts, and allows you to use a recent successful attempt as
+the basis for authentication. This is similar mechanism which is used in
+<command>sudo</command>.
+ </para>
+ <para>
+ When an application opens a session using <emphasis>pam_timestamp</emphasis>,
+a timestamp file is created in the <emphasis>timestampdir</emphasis> directory
+for the user. When an application attempts to authenticate the user, a
+<emphasis>pam_timestamp</emphasis> will treat a sufficiently recent timestamp
+file as grounds for succeeding.
+ </para>
+ </refsect1>
+
+ <refsect1 id="pam_timestamp-options">
+
+ <title>OPTIONS</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>timestamp_timeout=<replaceable>number</replaceable></option>
+ </term>
+ <listitem>
+ <para>
+ How long should pam_timestamp treat timestamp as valid after their
+ last modification date (in seconds). Default is 300 seconds.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>verbose</option>
+ </term>
+ <listitem>
+ <para>
+ Attempt to inform the user when access is granted.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>debug</option>
+ </term>
+ <listitem>
+ <para>
+ Turns on debugging messages sent to <citerefentry>
+ <refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum>
+ </citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id="pam_timestamp-types">
+ <title>MODULE TYPES PROVIDED</title>
+ <para>
+ The <option>auth</option> and <option>session</option>
+ module types are provided.
+ </para>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-return_values'>
+ <title>RETURN VALUES</title>
+ <variablelist>
+ <varlistentry>
+ <term>PAM_AUTH_ERR</term>
+ <listitem>
+ <para>
+ The module was not able to retrive the user name or
+ no valid timestamp file was found.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_SUCCESS</term>
+ <listitem>
+ <para>
+ Everything was successfull.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_SESSION_ERR</term>
+ <listitem>
+ <para>
+ Timestamp file could not be created or updated.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-notes'>
+ <title>NOTES</title>
+ <para>
+ Users can get confused when they are not always asked for passwords when
+running a given program. Some users reflexively begin typing information before
+noticing that it is not being asked for.
+ </para>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-examples'>
+ <title>EXAMPLES</title>
+ <programlisting>
+auth sufficient pam_timestamp.so verbose
+auth required pam_unix.so
+
+session required pam_unix.so
+session optional pam_timestamp.so
+ </programlisting>
+ </refsect1>
+
+ <refsect1 id="pam_timestamp-files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/var/run/sudo/...</filename></term>
+ <listitem>
+ <para>timestamp files and directories</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-see_also'>
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>pam_timestamp_check</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>
+ </para>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-author'>
+ <title>AUTHOR</title>
+ <para>
+ pam_tally was written by Nalin Dahyabhai.
+ </para>
+ </refsect1>
+
+</refentry>
+
diff --git a/modules/pam_timestamp/pam_timestamp.c b/modules/pam_timestamp/pam_timestamp.c
new file mode 100644
index 00000000..8a01c6f3
--- /dev/null
+++ b/modules/pam_timestamp/pam_timestamp.c
@@ -0,0 +1,816 @@
+/******************************************************************************
+ * A module for Linux-PAM that will cache authentication results, inspired by
+ * (and implemented with an eye toward being mixable with) sudo.
+ *
+ * Copyright (c) 2002 Red Hat, Inc.
+ * Written by Nalin Dahyabhai <nalin@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, 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.
+ *
+ */
+
+#define PAM_SM_AUTH
+#define PAM_SM_SESSION
+
+#include "config.h"
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <utmp.h>
+#include <syslog.h>
+#include "hmacsha1.h"
+
+#include <security/pam_modules.h>
+#include <security/_pam_macros.h>
+#include <security/pam_ext.h>
+#include <security/pam_modutil.h>
+
+/* The default timeout we use is 5 minutes, which matches the sudo default
+ * for the timestamp_timeout parameter. */
+#define DEFAULT_TIMESTAMP_TIMEOUT (5 * 60)
+#define MODULE "pam_timestamp"
+#define TIMESTAMPDIR "/var/run/sudo"
+#define TIMESTAMPKEY TIMESTAMPDIR "/_pam_timestamp_key"
+
+/* Various buffers we use need to be at least as large as either PATH_MAX or
+ * LINE_MAX, so choose the larger of the two. */
+#if (LINE_MAX > PATH_MAX)
+#define BUFLEN LINE_MAX
+#else
+#define BUFLEN PATH_MAX
+#endif
+
+/* Return PAM_SUCCESS if the given directory looks "safe". */
+static int
+check_dir_perms(pam_handle_t *pamh, const char *tdir)
+{
+ char scratch[BUFLEN];
+ struct stat st;
+ int i;
+ /* Check that the directory is "safe". */
+ if ((tdir == NULL) || (strlen(tdir) == 0)) {
+ return PAM_AUTH_ERR;
+ }
+ /* Iterate over the path, checking intermediate directories. */
+ memset(scratch, 0, sizeof(scratch));
+ for (i = 0; (tdir[i] != '\0') && (i < (int)sizeof(scratch)); i++) {
+ scratch[i] = tdir[i];
+ if ((scratch[i] == '/') || (tdir[i + 1] == '\0')) {
+ /* We now have the name of a directory in the path, so
+ * we need to check it. */
+ if ((lstat(scratch, &st) == -1) && (errno != ENOENT)) {
+ pam_syslog(pamh, LOG_ERR,
+ "unable to read `%s': %m",
+ scratch);
+ return PAM_AUTH_ERR;
+ }
+ if (!S_ISDIR(st.st_mode)) {
+ pam_syslog(pamh, LOG_ERR,
+ "`%s' is not a directory",
+ scratch);
+ return PAM_AUTH_ERR;
+ }
+ if (S_ISLNK(st.st_mode)) {
+ pam_syslog(pamh, LOG_ERR,
+ "`%s' is a symbolic link",
+ scratch);
+ return PAM_AUTH_ERR;
+ }
+ if (st.st_uid != 0) {
+ pam_syslog(pamh, LOG_ERR,
+ "`%s' owner UID != 0",
+ scratch);
+ return PAM_AUTH_ERR;
+ }
+ if (st.st_gid != 0) {
+ pam_syslog(pamh, LOG_ERR,
+ "`%s' owner GID != 0",
+ scratch);
+ return PAM_AUTH_ERR;
+ }
+ if ((st.st_mode & (S_IWGRP | S_IWOTH)) != 0) {
+ pam_syslog(pamh, LOG_ERR,
+ "`%s' permissions are lax",
+ scratch);
+ return PAM_AUTH_ERR;
+ }
+ }
+ }
+ return PAM_SUCCESS;
+}
+
+/* Validate a tty pathname as actually belonging to a tty, and return its base
+ * name if it's valid. */
+static const char *
+check_tty(const char *tty)
+{
+ /* Check that we're not being set up to take a fall. */
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ return NULL;
+ }
+ /* Pull out the meaningful part of the tty's name. */
+ if (strchr(tty, '/') != NULL) {
+ if (strncmp(tty, "/dev/", 5) != 0) {
+ /* Make sure the device node is actually in /dev/,
+ * noted by Michal Zalewski. */
+ return NULL;
+ }
+ tty = strrchr(tty, '/') + 1;
+ }
+ /* Make sure the tty wasn't actually a directory (no basename). */
+ if (strlen(tty) == 0) {
+ return NULL;
+ }
+ return tty;
+}
+
+/* Determine the right path name for a given user's timestamp. */
+static int
+format_timestamp_name(char *path, size_t len,
+ const char *timestamp_dir,
+ const char *tty,
+ const char *ruser,
+ const char *user)
+{
+ if (strcmp(ruser, user) == 0) {
+ return snprintf(path, len, "%s/%s/%s", timestamp_dir,
+ ruser, tty);
+ } else {
+ return snprintf(path, len, "%s/%s/%s:%s", timestamp_dir,
+ ruser, tty, user);
+ }
+}
+
+/* Check if a given timestamp date, when compared to a current time, fits
+ * within the given interval. */
+static int
+timestamp_good(time_t then, time_t now, time_t interval)
+{
+ if (((now >= then) && ((now - then) < interval)) ||
+ ((now < then) && ((then - now) < (2 * interval)))) {
+ return PAM_SUCCESS;
+ }
+ return PAM_AUTH_ERR;
+}
+
+static int
+check_login_time(const char *ruser, time_t timestamp)
+{
+ struct utmp utbuf, *ut;
+ time_t oldest_login = 0;
+
+ setutent();
+ while(!getutent_r(&utbuf, &ut)) {
+ if (ut->ut_type != USER_PROCESS) {
+ continue;
+ }
+ if (strncmp(ruser, ut->ut_user, sizeof(ut->ut_user) != 0)) {
+ continue;
+ }
+ if (oldest_login == 0 || oldest_login > ut->ut_tv.tv_sec) {
+ oldest_login = ut->ut_tv.tv_sec;
+ }
+ }
+ endutent();
+ if(oldest_login == 0 || timestamp < oldest_login) {
+ return PAM_AUTH_ERR;
+ }
+ return PAM_SUCCESS;
+}
+
+#ifndef PAM_TIMESTAMP_MAIN
+static int
+get_ruser(pam_handle_t *pamh, char *ruserbuf, size_t ruserbuflen)
+{
+ const void *ruser;
+ struct passwd *pwd;
+
+ if (ruserbuf == NULL || ruserbuflen < 1)
+ return -2;
+ /* Get the name of the source user. */
+ if (pam_get_item(pamh, PAM_RUSER, &ruser) != PAM_SUCCESS) {
+ ruser = NULL;
+ }
+ if ((ruser == NULL) || (strlen(ruser) == 0)) {
+ /* Barring that, use the current RUID. */
+ pwd = pam_modutil_getpwuid(pamh, getuid());
+ if (pwd != NULL) {
+ ruser = pwd->pw_name;
+ }
+ }
+ if (ruser == NULL || strlen(ruser) >= ruserbuflen) {
+ *ruserbuf = '\0';
+ return -1;
+ }
+ strcpy(ruserbuf, ruser);
+ return 0;
+}
+
+/* Get the path to the timestamp to use. */
+static int
+get_timestamp_name(pam_handle_t *pamh, int argc, const char **argv,
+ char *path, size_t len)
+{
+ const char *user, *tty;
+ const void *void_tty;
+ const char *tdir = TIMESTAMPDIR;
+ char ruser[BUFLEN];
+ int i, debug = 0;
+
+ /* Parse arguments. */
+ for (i = 0; i < argc; i++) {
+ if (strcmp(argv[i], "debug") == 0) {
+ debug = 1;
+ }
+ }
+ for (i = 0; i < argc; i++) {
+ if (strncmp(argv[i], "timestampdir=", 13) == 0) {
+ tdir = argv[i] + 13;
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG,
+ "storing timestamps in `%s'",
+ tdir);
+ }
+ }
+ }
+ i = check_dir_perms(pamh, tdir);
+ if (i != PAM_SUCCESS) {
+ return i;
+ }
+ /* Get the name of the target user. */
+ if (pam_get_user(pamh, &user, NULL) != PAM_SUCCESS) {
+ user = NULL;
+ }
+ if ((user == NULL) || (strlen(user) == 0)) {
+ return PAM_AUTH_ERR;
+ }
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG, "becoming user `%s'", user);
+ }
+ /* Get the name of the source user. */
+ if (get_ruser(pamh, ruser, sizeof(ruser)) || strlen(ruser) == 0) {
+ return PAM_AUTH_ERR;
+ }
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG, "currently user `%s'", ruser);
+ }
+ /* Get the name of the terminal. */
+ if (pam_get_item(pamh, PAM_TTY, &void_tty) != PAM_SUCCESS) {
+ tty = NULL;
+ } else {
+ tty = void_tty;
+ }
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ tty = ttyname(STDIN_FILENO);
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ tty = ttyname(STDOUT_FILENO);
+ }
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ tty = ttyname(STDERR_FILENO);
+ }
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ /* Match sudo's behavior for this case. */
+ tty = "unknown";
+ }
+ }
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG, "tty is `%s'", tty);
+ }
+ /* Snip off all but the last part of the tty name. */
+ tty = check_tty(tty);
+ if (tty == NULL) {
+ return PAM_AUTH_ERR;
+ }
+ /* Generate the name of the file used to cache auth results. These
+ * paths should jive with sudo's per-tty naming scheme. */
+ if (format_timestamp_name(path, len, tdir, tty, ruser, user) >= (int)len) {
+ return PAM_AUTH_ERR;
+ }
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG, "using timestamp file `%s'", path);
+ }
+ return PAM_SUCCESS;
+}
+
+/* Tell the user that access has been granted. */
+static void
+verbose_success(pam_handle_t *pamh, long diff)
+{
+ pam_info(pamh, _("Access granted (last access was %ld seconds ago)."), diff);
+}
+
+PAM_EXTERN int
+pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
+{
+ struct stat st;
+ time_t interval = DEFAULT_TIMESTAMP_TIMEOUT;
+ int i, fd, debug = 0, verbose = 0;
+ char path[BUFLEN], *p, *message, *message_end;
+ long tmp;
+ const void *void_service;
+ const char *service;
+ time_t now, then;
+
+ /* Parse arguments. */
+ for (i = 0; i < argc; i++) {
+ if (strcmp(argv[i], "debug") == 0) {
+ debug = 1;
+ }
+ }
+ for (i = 0; i < argc; i++) {
+ if (strncmp(argv[i], "timestamp_timeout=", 18) == 0) {
+ tmp = strtol(argv[i] + 18, &p, 0);
+ if ((p != NULL) && (*p == '\0')) {
+ interval = tmp;
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG,
+ "setting timeout to %ld"
+ " seconds", (long)interval);
+ }
+ }
+ } else
+ if (strcmp(argv[i], "verbose") == 0) {
+ verbose = 1;
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG,
+ "becoming more verbose");
+ }
+ }
+ }
+
+ if (flags & PAM_SILENT) {
+ verbose = 0;
+ }
+
+ /* Get the name of the timestamp file. */
+ if (get_timestamp_name(pamh, argc, argv,
+ path, sizeof(path)) != PAM_SUCCESS) {
+ return PAM_AUTH_ERR;
+ }
+
+ /* Get the name of the service. */
+ if (pam_get_item(pamh, PAM_SERVICE, &void_service) != PAM_SUCCESS) {
+ service = NULL;
+ } else {
+ service = void_service;
+ }
+ if ((service == NULL) || (strlen(service) == 0)) {
+ service = "(unknown)";
+ }
+
+ /* Open the timestamp file. */
+ fd = open(path, O_RDONLY | O_NOFOLLOW);
+ if (fd == -1) {
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG,
+ "cannot open timestamp `%s': %m",
+ path);
+ }
+ return PAM_AUTH_ERR;
+ }
+
+ if (fstat(fd, &st) == 0) {
+ int count;
+ void *mac;
+ size_t maclen;
+ char ruser[BUFLEN];
+
+ /* Check that the file is owned by the superuser. */
+ if ((st.st_uid != 0) || (st.st_gid != 0)) {
+ pam_syslog(pamh, LOG_ERR, "timestamp file `%s' is "
+ "not owned by root", path);
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ /* Check that the file is a normal file. */
+ if (!(S_ISREG(st.st_mode))) {
+ pam_syslog(pamh, LOG_ERR, "timestamp file `%s' is "
+ "not a regular file", path);
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ /* Check that the file is the expected size. */
+ if (st.st_size == 0) {
+ /* Invalid, but may have been created by sudo. */
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+ if (st.st_size !=
+ (off_t)(strlen(path) + 1 + sizeof(then) + hmac_sha1_size())) {
+ pam_syslog(pamh, LOG_NOTICE, "timestamp file `%s' "
+ "appears to be corrupted", path);
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ /* Read the file contents. */
+ message = malloc(st.st_size);
+ count = 0;
+ if (!message) {
+ close(fd);
+ return PAM_BUF_ERR;
+ }
+ while (count < st.st_size) {
+ i = read(fd, message + count, st.st_size - count);
+ if ((i == 0) || (i == -1)) {
+ break;
+ }
+ count += i;
+ }
+ if (count < st.st_size) {
+ pam_syslog(pamh, LOG_NOTICE, "error reading timestamp "
+ "file `%s': %m", path);
+ close(fd);
+ free(message);
+ return PAM_AUTH_ERR;
+ }
+ message_end = message + strlen(path) + 1 + sizeof(then);
+
+ /* Regenerate the MAC. */
+ hmac_sha1_generate_file(pamh, &mac, &maclen, TIMESTAMPKEY, 0, 0,
+ message, message_end - message);
+ if ((mac == NULL) ||
+ (memcmp(path, message, strlen(path)) != 0) ||
+ (memcmp(mac, message_end, maclen) != 0)) {
+ pam_syslog(pamh, LOG_NOTICE, "timestamp file `%s' is "
+ "corrupted", path);
+ close(fd);
+ free(message);
+ return PAM_AUTH_ERR;
+ }
+ free(mac);
+ memmove(&then, message + strlen(path) + 1, sizeof(then));
+ free(message);
+
+ /* Check oldest login against timestamp */
+ if (get_ruser(pamh, ruser, sizeof(ruser)))
+ {
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+ if (check_login_time(ruser, then) != PAM_SUCCESS)
+ {
+ pam_syslog(pamh, LOG_NOTICE, "timestamp file `%s' is "
+ "older than oldest login, disallowing "
+ "access to %s for user %s",
+ path, service, ruser);
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ /* Compare the dates. */
+ now = time(NULL);
+ if (timestamp_good(then, now, interval) == PAM_SUCCESS) {
+ close(fd);
+ pam_syslog(pamh, LOG_NOTICE, "timestamp file `%s' is "
+ "only %ld seconds old, allowing access to %s "
+ "for user %s", path, (long) (now - st.st_mtime),
+ service, ruser);
+ if (verbose) {
+ verbose_success(pamh, now - st.st_mtime);
+ }
+ return PAM_SUCCESS;
+ } else {
+ close(fd);
+ pam_syslog(pamh, LOG_NOTICE, "timestamp file `%s' has "
+ "unacceptable age (%ld seconds), disallowing "
+ "access to %s for user %s",
+ path, (long) (now - st.st_mtime),
+ service, ruser);
+ return PAM_AUTH_ERR;
+ }
+ }
+ close(fd);
+
+ /* Fail by default. */
+ return PAM_AUTH_ERR;
+}
+
+PAM_EXTERN int
+pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, int argc UNUSED, const char **argv UNUSED)
+{
+ return PAM_SUCCESS;
+}
+
+PAM_EXTERN int
+pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, int argc, const char **argv)
+{
+ char path[BUFLEN], subdir[BUFLEN], *text, *p;
+ void *mac;
+ size_t maclen;
+ time_t now;
+ int fd, i, debug = 0;
+
+ /* Parse arguments. */
+ for (i = 0; i < argc; i++) {
+ if (strcmp(argv[i], "debug") == 0) {
+ debug = 1;
+ }
+ }
+
+ /* Get the name of the timestamp file. */
+ if (get_timestamp_name(pamh, argc, argv,
+ path, sizeof(path)) != PAM_SUCCESS) {
+ return PAM_SESSION_ERR;
+ }
+
+ /* Create the directory for the timestamp file if it doesn't already
+ * exist. */
+ for (i = 1; path[i] != '\0'; i++) {
+ if (path[i] == '/') {
+ /* Attempt to create the directory. */
+ strncpy(subdir, path, i);
+ subdir[i] = '\0';
+ if (mkdir(subdir, 0700) == 0) {
+ /* Attempt to set the owner to the superuser. */
+ lchown(subdir, 0, 0);
+ } else {
+ if (errno != EEXIST) {
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG,
+ "error creating directory `%s': %m",
+ subdir);
+ }
+ return PAM_SESSION_ERR;
+ }
+ }
+ }
+ }
+
+ /* Generate the message. */
+ text = malloc(strlen(path) + 1 + sizeof(now) + hmac_sha1_size());
+ if (text == NULL) {
+ pam_syslog(pamh, LOG_ERR, "unable to allocate memory: %m");
+ return PAM_SESSION_ERR;
+ }
+ p = text;
+
+ strcpy(text, path);
+ p += strlen(path) + 1;
+
+ now = time(NULL);
+ memmove(p, &now, sizeof(now));
+ p += sizeof(now);
+
+ /* Generate the MAC and append it to the plaintext. */
+ hmac_sha1_generate_file(pamh, &mac, &maclen,
+ TIMESTAMPKEY,
+ 0, 0,
+ text, p - text);
+ if (mac == NULL) {
+ pam_syslog(pamh, LOG_ERR, "failure generating MAC: %m");
+ free(text);
+ return PAM_SESSION_ERR;
+ }
+ memmove(p, mac, maclen);
+ p += maclen;
+ free(mac);
+
+ /* Open the file. */
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
+ if (fd == -1) {
+ pam_syslog(pamh, LOG_ERR, "unable to open `%s': %m", path);
+ free(text);
+ return PAM_SESSION_ERR;
+ }
+
+ /* Attempt to set the owner to the superuser. */
+ fchown(fd, 0, 0);
+
+ /* Write the timestamp to the file. */
+ if (write(fd, text, p - text) != p - text) {
+ pam_syslog(pamh, LOG_ERR, "unable to write to `%s': %m", path);
+ close(fd);
+ free(text);
+ return PAM_SESSION_ERR;
+ }
+
+ /* Close the file and return successfully. */
+ close(fd);
+ free(text);
+ pam_syslog(pamh, LOG_DEBUG, "updated timestamp file `%s'", path);
+ return PAM_SUCCESS;
+}
+
+PAM_EXTERN int
+pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, int argc UNUSED, const char **argv UNUSED)
+{
+ return PAM_SUCCESS;
+}
+
+#ifdef PAM_STATIC
+/* static module data */
+
+struct pam_module _pam_timestamp_modstruct = {
+ "pam_timestamp",
+ pam_sm_authenticate,
+ pam_sm_setcred,
+ NULL,
+ pam_sm_open_session,
+ pam_sm_close_session,
+ NULL
+};
+#endif
+
+
+#else /* PAM_TIMESTAMP_MAIN */
+
+#define USAGE "Usage: %s [[-k] | [-d]] [target user]\n"
+#define CHECK_INTERVAL 7
+
+int
+main(int argc, char **argv)
+{
+ int i, pretval = -1, retval = 0, dflag = 0, kflag = 0;
+ const char *target_user = NULL, *user = NULL, *tty = NULL;
+ struct passwd *pwd;
+ struct timeval tv;
+ fd_set write_fds;
+ char path[BUFLEN];
+ struct stat st;
+
+ /* Check that there's nothing funny going on with stdio. */
+ if ((fstat(STDIN_FILENO, &st) == -1) ||
+ (fstat(STDOUT_FILENO, &st) == -1) ||
+ (fstat(STDERR_FILENO, &st) == -1)) {
+ /* Appropriate the "no controlling tty" error code. */
+ return 3;
+ }
+
+ /* Parse arguments. */
+ while ((i = getopt(argc, argv, "dk")) != -1) {
+ switch (i) {
+ case 'd':
+ dflag++;
+ break;
+ case 'k':
+ kflag++;
+ break;
+ default:
+ fprintf(stderr, USAGE, argv[0]);
+ return 1;
+ break;
+ }
+ }
+
+ /* Bail if both -k and -d are given together. */
+ if ((kflag + dflag) > 1) {
+ fprintf(stderr, USAGE, argv[0]);
+ return 1;
+ }
+
+ /* Check that we're setuid. */
+ if (geteuid() != 0) {
+ fprintf(stderr, "%s must be setuid root\n",
+ argv[0]);
+ retval = 2;
+ }
+
+ /* Check that we have a controlling tty. */
+ tty = ttyname(STDIN_FILENO);
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ tty = ttyname(STDOUT_FILENO);
+ }
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ tty = ttyname(STDERR_FILENO);
+ }
+ if ((tty == NULL) || (strlen(tty) == 0)) {
+ tty = "unknown";
+ }
+
+ /* Get the name of the invoking (requesting) user. */
+ pwd = getpwuid(getuid());
+ if (pwd == NULL) {
+ retval = 4;
+ }
+
+ /* Get the name of the target user. */
+ user = strdup(pwd->pw_name);
+ if (user == NULL) {
+ retval = 4;
+ } else {
+ target_user = (optind < argc) ? argv[optind] : user;
+ if ((strchr(target_user, '.') != NULL) ||
+ (strchr(target_user, '/') != NULL) ||
+ (strchr(target_user, '%') != NULL)) {
+ fprintf(stderr, "unknown user: %s\n",
+ target_user);
+ retval = 4;
+ }
+ }
+
+ /* Sanity check the tty to make sure we should be checking
+ * for timestamps which pertain to it. */
+ if (retval == 0) {
+ tty = check_tty(tty);
+ if (tty == NULL) {
+ fprintf(stderr, "invalid tty\n");
+ retval = 6;
+ }
+ }
+
+ do {
+ /* Sanity check the timestamp directory itself. */
+ if (retval == 0) {
+ if (check_dir_perms(NULL, TIMESTAMPDIR) != PAM_SUCCESS) {
+ retval = 5;
+ }
+ }
+
+ if (retval == 0) {
+ /* Generate the name of the timestamp file. */
+ format_timestamp_name(path, sizeof(path), TIMESTAMPDIR,
+ tty, user, target_user);
+ }
+
+ if (retval == 0) {
+ if (kflag) {
+ /* Remove the timestamp. */
+ if (lstat(path, &st) != -1) {
+ retval = unlink(path);
+ }
+ } else {
+ /* Check the timestamp. */
+ if (lstat(path, &st) != -1) {
+ /* Check oldest login against timestamp */
+ if (check_login_time(user, st.st_mtime) != PAM_SUCCESS) {
+ retval = 7;
+ } else if (!timestamp_good(st.st_mtime, time(NULL),
+ DEFAULT_TIMESTAMP_TIMEOUT) == PAM_SUCCESS) {
+ retval = 7;
+ }
+ } else {
+ retval = 7;
+ }
+ }
+ }
+
+ if (dflag > 0) {
+ struct timeval now;
+ /* Send the would-be-returned value to our parent. */
+ signal(SIGPIPE, SIG_DFL);
+ fprintf(stdout, "%d\n", retval);
+ fflush(stdout);
+ /* Wait. */
+ gettimeofday(&now, NULL);
+ tv.tv_sec = CHECK_INTERVAL;
+ /* round the sleep time to get woken up on a whole second */
+ tv.tv_usec = 1000000 - now.tv_usec;
+ if (now.tv_usec < 500000)
+ tv.tv_sec--;
+ FD_ZERO(&write_fds);
+ FD_SET(STDOUT_FILENO, &write_fds);
+ select(STDOUT_FILENO + 1,
+ NULL, NULL, &write_fds,
+ &tv);
+ pretval = retval;
+ retval = 0;
+ }
+ } while (dflag > 0);
+
+ return retval;
+}
+
+#endif
diff --git a/modules/pam_timestamp/pam_timestamp_check.8.xml b/modules/pam_timestamp/pam_timestamp_check.8.xml
new file mode 100644
index 00000000..85484a06
--- /dev/null
+++ b/modules/pam_timestamp/pam_timestamp_check.8.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<refentry id="pam_timestamp_check">
+
+ <refmeta>
+ <refentrytitle>pam_timestamp_check</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
+ </refmeta>
+
+ <refnamediv id="pam_timestamp_check-name">
+ <refname>pam_timestamp_check</refname>
+ <refpurpose>Check to see if the default timestamp is valid</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="pam_timestamp_check-cmdsynopsis">
+ <command>pam_timestamp_check</command>
+ <arg choice="opt">
+ -k
+ </arg>
+ <arg choice="opt">
+ -d
+ </arg>
+ <arg choice="opt">
+ <replaceable>target_user</replaceable>
+ </arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1 id="pam_timestamp_check-description">
+
+ <title>DESCRIPTION</title>
+
+ <para>
+ With no arguments <command>pam_timestamp_check</command> will check to
+see if the default timestamp is valid, or optionally remove it.
+ </para>
+ </refsect1>
+
+ <refsect1 id="pam_timestamp_check-options">
+
+ <title>OPTIONS</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>-k</option>
+ </term>
+ <listitem>
+ <para>
+ Instead of checking the validity of a timestamp, remove it.
+ This is analogous to sudo's <emphasis>-k</emphasis> option.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option>-d</option>
+ </term>
+ <listitem>
+ <para>
+ Instead of returning validity using an exit status,
+ loop indefinitely, polling regularly and printing the status on
+ standard output.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <option><replaceable>target_user</replaceable></option>
+ </term>
+ <listitem>
+ <para>
+ By default <command>pam_timestamp_check</command> checks or removes
+ timestamps generated by <emphasis>pam_timestamp</emphasis> when
+ the user authenticates as herself. When the user authenticates as a
+ different user, the name of the timestamp file changes to
+ accomodate this. <replaceable>target_user</replaceable> allows
+ to specify this user name.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp_check-return_values'>
+ <title>RETURN VALUES</title>
+ <variablelist>
+ <varlistentry>
+ <term>0</term>
+ <listitem>
+ <para>
+ The timestamp is valid.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>2</term>
+ <listitem>
+ <para>
+ The binary is not setuid root.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>3</term>
+ <listitem>
+ <para>
+ Invalid invocation.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>4</term>
+ <listitem>
+ <para>
+ User is unknown.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>5</term>
+ <listitem>
+ <para>
+ Permissions error.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>6</term>
+ <listitem>
+ <para>
+ Invalid controlling tty.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>7</term>
+ <listitem>
+ <para>
+ Timestamp is not valid.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-notes'>
+ <title>NOTES</title>
+ <para>
+ Users can get confused when they are not always asked for passwords when
+running a given program. Some users reflexively begin typing information before
+noticing that it is not being asked for.
+ </para>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-examples'>
+ <title>EXAMPLES</title>
+ <programlisting>
+auth sufficient pam_timestamp.so verbose
+auth required pam_unix.so
+
+session required pam_unix.so
+session optional pam_timestamp.so
+ </programlisting>
+ </refsect1>
+
+ <refsect1 id="pam_timestamp-files">
+ <title>FILES</title>
+ <variablelist>
+ <varlistentry>
+ <term><filename>/var/run/sudo/...</filename></term>
+ <listitem>
+ <para>timestamp files and directories</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-see_also'>
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>pam_timestamp_check</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>
+ </para>
+ </refsect1>
+
+ <refsect1 id='pam_timestamp-author'>
+ <title>AUTHOR</title>
+ <para>
+ pam_tally was written by Nalin Dahyabhai.
+ </para>
+ </refsect1>
+
+</refentry>
+
diff --git a/modules/pam_timestamp/pam_timestamp_check.c b/modules/pam_timestamp/pam_timestamp_check.c
new file mode 100644
index 00000000..52b5a95a
--- /dev/null
+++ b/modules/pam_timestamp/pam_timestamp_check.c
@@ -0,0 +1,42 @@
+/******************************************************************************
+ * A module for Linux-PAM that will cache authentication results, inspired by
+ * (and implemented with an eye toward being mixable with) sudo.
+ *
+ * Copyright (c) 2002 Red Hat, Inc.
+ * Written by Nalin Dahyabhai <nalin@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, 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.
+ *
+ */
+
+#define PAM_TIMESTAMP_MAIN 1
+#include "pam_timestamp.c"
diff --git a/modules/pam_timestamp/sha1.c b/modules/pam_timestamp/sha1.c
new file mode 100644
index 00000000..e6705eb5
--- /dev/null
+++ b/modules/pam_timestamp/sha1.c
@@ -0,0 +1,254 @@
+/* Yet another SHA-1 implementation.
+ *
+ * Copyright (c) 2003 Red Hat, Inc.
+ * Written by Nalin Dahyabhai <nalin@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, 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.
+ *
+ */
+/* See http://www.itl.nist.gov/fipspubs/fip180-1.htm for descriptions. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <netinet/in.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <endian.h>
+#include <unistd.h>
+#include "sha1.h"
+
+static unsigned char
+padding[SHA1_BLOCK_SIZE] = {
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static u_int32_t
+F(u_int32_t b, u_int32_t c, u_int32_t d)
+{
+ return (b & c) | ((~b) & d);
+}
+
+static u_int32_t
+G(u_int32_t b, u_int32_t c, u_int32_t d)
+{
+ return b ^ c ^ d;
+}
+
+static u_int32_t
+H(u_int32_t b, u_int32_t c, u_int32_t d)
+{
+ return (b & c) | (b & d) | (c & d);
+}
+
+static u_int32_t
+RL(u_int32_t n, u_int32_t s)
+{
+ return (n << s) | (n >> (32 - s));
+}
+
+static u_int32_t
+sha1_round(u_int32_t (*FUNC)(u_int32_t, u_int32_t, u_int32_t),
+ u_int32_t a, u_int32_t b, u_int32_t c, u_int32_t d, u_int32_t e,
+ u_int32_t i, u_int32_t n)
+{
+ return RL(a, 5) + FUNC(b, c, d) + e + i + n;
+}
+
+void
+sha1_init(struct sha1_context *ctx)
+{
+ memset(ctx, 0, sizeof(*ctx));
+ ctx->a = 0x67452301;
+ ctx->b = 0xefcdab89;
+ ctx->c = 0x98badcfe;
+ ctx->d = 0x10325476;
+ ctx->e = 0xc3d2e1f0;
+}
+
+static void
+sha1_process(struct sha1_context *ctx, u_int32_t buffer[SHA1_BLOCK_SIZE / 4])
+{
+ u_int32_t a, b, c, d, e, temp;
+ u_int32_t data[80];
+ int i;
+
+ for (i = 0; i < 16; i++) {
+ data[i] = htonl(buffer[i]);
+ }
+ for (i = 16; i < 80; i++) {
+ data[i] = RL(data[i - 3] ^ data[i - 8] ^ data[i - 14] ^ data[i - 16], 1);
+ }
+
+ a = ctx->a;
+ b = ctx->b;
+ c = ctx->c;
+ d = ctx->d;
+ e = ctx->e;
+
+ for (i = 0; i < 20; i++) {
+ temp = sha1_round(F, a, b, c, d, e, data[i], 0x5a827999);
+ e = d; d = c; c = RL(b, 30); b = a; a = temp;
+ }
+ for (i = 20; i < 40; i++) {
+ temp = sha1_round(G, a, b, c, d, e, data[i], 0x6ed9eba1);
+ e = d; d = c; c = RL(b, 30); b = a; a = temp;
+ }
+ for (i = 40; i < 60; i++) {
+ temp = sha1_round(H, a, b, c, d, e, data[i], 0x8f1bbcdc);
+ e = d; d = c; c = RL(b, 30); b = a; a = temp;
+ }
+ for (i = 60; i < 80; i++) {
+ temp = sha1_round(G, a, b, c, d, e, data[i], 0xca62c1d6);
+ e = d; d = c; c = RL(b, 30); b = a; a = temp;
+ }
+
+ ctx->a += a;
+ ctx->b += b;
+ ctx->c += c;
+ ctx->d += d;
+ ctx->e += e;
+
+ memset(buffer, 0, sizeof(buffer[0]) * SHA1_BLOCK_SIZE / 4);
+ memset(data, 0, sizeof(data));
+}
+
+void
+sha1_update(struct sha1_context *ctx, const unsigned char *data, size_t length)
+{
+ size_t i = 0, l = length, c, t;
+ u_int32_t count = 0;
+
+ /* Process any pending + data blocks. */
+ while (l + ctx->pending_count >= SHA1_BLOCK_SIZE) {
+ c = ctx->pending_count;
+ t = SHA1_BLOCK_SIZE - c;
+ memcpy(ctx->pending + c, &data[i], t);
+ sha1_process(ctx, (u_int32_t*) ctx->pending);
+ i += t;
+ l -= t;
+ ctx->pending_count = 0;
+ }
+
+ /* Save what's left of the data block as a pending data block. */
+ c = ctx->pending_count;
+ memcpy(ctx->pending + c, &data[i], l);
+ ctx->pending_count += l;
+
+ /* Update the message length. */
+ ctx->count += length;
+
+ /* Update our internal counts. */
+ if (length != 0) {
+ count = ctx->counts[0];
+ ctx->counts[0] += length;
+ if (count >= ctx->counts[0]) {
+ ctx->counts[1]++;
+ }
+ }
+}
+
+size_t
+sha1_output(struct sha1_context *ctx, unsigned char *out)
+{
+ struct sha1_context ctx2;
+
+ /* Output the sum. */
+ if (out != NULL) {
+ u_int32_t c;
+ memcpy(&ctx2, ctx, sizeof(ctx2));
+
+ /* Pad this block. */
+ c = ctx2.pending_count;
+ memcpy(ctx2.pending + c,
+ padding, SHA1_BLOCK_SIZE - c);
+
+ /* Do we need to process two blocks now? */
+ if (c >= (SHA1_BLOCK_SIZE - (sizeof(u_int32_t) * 2))) {
+ /* Process this block. */
+ sha1_process(&ctx2,
+ (u_int32_t*) ctx2.pending);
+ /* Set up another block. */
+ ctx2.pending_count = 0;
+ memset(ctx2.pending, 0, SHA1_BLOCK_SIZE);
+ ctx2.pending[0] =
+ (c == SHA1_BLOCK_SIZE) ? 0x80 : 0;
+ }
+
+ /* Process the final block. */
+ ctx2.counts[1] <<= 3;
+ if (ctx2.counts[0] >> 29) {
+ ctx2.counts[1] |=
+ (ctx2.counts[0] >> 29);
+ }
+ ctx2.counts[0] <<= 3;
+ ctx2.counts[0] = htonl(ctx2.counts[0]);
+ ctx2.counts[1] = htonl(ctx2.counts[1]);
+ memcpy(ctx2.pending + 56,
+ &ctx2.counts[1], sizeof(u_int32_t));
+ memcpy(ctx2.pending + 60,
+ &ctx2.counts[0], sizeof(u_int32_t));
+ sha1_process(&ctx2, (u_int32_t*) ctx2.pending);
+
+ /* Output the data. */
+ out[ 3] = (ctx2.a >> 0) & 0xff;
+ out[ 2] = (ctx2.a >> 8) & 0xff;
+ out[ 1] = (ctx2.a >> 16) & 0xff;
+ out[ 0] = (ctx2.a >> 24) & 0xff;
+
+ out[ 7] = (ctx2.b >> 0) & 0xff;
+ out[ 6] = (ctx2.b >> 8) & 0xff;
+ out[ 5] = (ctx2.b >> 16) & 0xff;
+ out[ 4] = (ctx2.b >> 24) & 0xff;
+
+ out[11] = (ctx2.c >> 0) & 0xff;
+ out[10] = (ctx2.c >> 8) & 0xff;
+ out[ 9] = (ctx2.c >> 16) & 0xff;
+ out[ 8] = (ctx2.c >> 24) & 0xff;
+
+ out[15] = (ctx2.d >> 0) & 0xff;
+ out[14] = (ctx2.d >> 8) & 0xff;
+ out[13] = (ctx2.d >> 16) & 0xff;
+ out[12] = (ctx2.d >> 24) & 0xff;
+
+ out[19] = (ctx2.e >> 0) & 0xff;
+ out[18] = (ctx2.e >> 8) & 0xff;
+ out[17] = (ctx2.e >> 16) & 0xff;
+ out[16] = (ctx2.e >> 24) & 0xff;
+ }
+
+ return SHA1_OUTPUT_SIZE;
+}
diff --git a/modules/pam_timestamp/sha1.h b/modules/pam_timestamp/sha1.h
new file mode 100644
index 00000000..667b87ca
--- /dev/null
+++ b/modules/pam_timestamp/sha1.h
@@ -0,0 +1,60 @@
+/* Yet another SHA-1 implementation.
+ *
+ * Copyright (c) 2003 Red Hat, Inc.
+ * Written by Nalin Dahyabhai <nalin@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, 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.
+ *
+ */
+#ifndef pam_timestamp_sha1_h
+#define pam_timestamp_sha1_h
+
+#include <sys/types.h>
+
+#define SHA1_BLOCK_SIZE 64
+
+struct sha1_context {
+ size_t count;
+ unsigned char pending[SHA1_BLOCK_SIZE];
+ u_int32_t counts[2];
+ size_t pending_count;
+ u_int32_t a, b, c, d, e;
+};
+
+#define SHA1_OUTPUT_SIZE 20
+
+void sha1_init(struct sha1_context *ctx);
+void sha1_update(struct sha1_context *ctx,
+ const unsigned char *data, size_t length);
+size_t sha1_output(struct sha1_context *ctx, unsigned char *out);
+
+#endif
diff --git a/modules/pam_timestamp/tst-pam_timestamp b/modules/pam_timestamp/tst-pam_timestamp
new file mode 100755
index 00000000..1d425b83
--- /dev/null
+++ b/modules/pam_timestamp/tst-pam_timestamp
@@ -0,0 +1,2 @@
+#!/bin/sh
+../../tests/tst-dlopen .libs/pam_timestamp.so
diff --git a/po/Linux-PAM.pot b/po/Linux-PAM.pot
index 55b4ff46..054b95af 100644
--- a/po/Linux-PAM.pot
+++ b/po/Linux-PAM.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr ""
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr ""
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr ""
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr ""
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr ""
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr ""
@@ -353,13 +353,13 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr ""
@@ -424,20 +424,20 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr ""
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr ""
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr ""
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr ""
@@ -446,7 +446,7 @@ msgstr ""
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -488,11 +488,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -506,6 +501,11 @@ msgid ""
" [-r] [--reset[=n]] [--quiet]\n"
msgstr ""
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 5ca1caa9..a5db7a10 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -74,6 +74,8 @@
./modules/pam_tally2/pam_tally2_app.c
./modules/pam_tally2/pam_tally2.c
./modules/pam_time/pam_time.c
+./modules/pam_timestamp/pam_timestamp.c
+./modules/pam_timestamp/pam_timestamp_check.c
./modules/pam_tty_audit/pam_tty_audit.c
./modules/pam_umask/pam_umask.c
./modules/pam_unix/bigcrypt.c
diff --git a/po/ar.po b/po/ar.po
index 68ecd939..77b6480f 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2001-07-13 15:36+0200\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
@@ -166,19 +166,19 @@ msgid "Unknown PAM error"
msgstr "خطأ PAM غير معروف"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "كلمة سر %s%s الجديدة: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "أعد كتابة كلمة سر %s%s الجديدة: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "عذرًا، يوجد عدم تطابق بين كلمات السر."
@@ -229,7 +229,7 @@ msgid "Password unchanged"
msgstr "لم يتم تغيير كلمة السر"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "كلمة سر سيئة: %s"
@@ -352,14 +352,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "لم يتم تغيير كلمة السر"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "كلمة السر التي تم إدخالها مستخدمة بالفعل. اختر كلمة سر أخرى."
@@ -428,20 +428,20 @@ msgstr "فشل pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "تسجيل الدخول: فشل تشعيب: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "تغيير كلمة سر STRESS لـ"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "أدخل كلمة سر STRESS الجديدة: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "أعد كتابة كلمة سر STRESS الجديدة: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "إعادة كتابة كلمة السر غير صحيحة؛ كلمة السر لم تتغير"
@@ -450,7 +450,7 @@ msgstr "إعادة كتابة كلمة السر غير صحيحة؛ كلمة ا
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -493,11 +493,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: لا يمكن إعادة تعيين كافة المستخدمين إلى رقم غير الصفر\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -512,6 +507,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "انتهت مدة صلاحية الحساب الخاص بك؛ الرجاء الاتصال بمسؤول النظام"
diff --git a/po/as.po b/po/as.po
index 4810e74e..b705ad97 100644
--- a/po/as.po
+++ b/po/as.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-13 11:23+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
"Language-Team: Assamese\n"
@@ -168,19 +168,19 @@ msgid "Unknown PAM error"
msgstr "অজ্ঞাত PAM ভুল"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "নতুন %s%s গুপ্তশব্দ: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "নতুন %s%s গুপ্তশব্দ পুনঃ লিখক: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "ক্ষমা কৰিব, গুপ্তশব্দৰ অমিল "
@@ -231,7 +231,7 @@ msgid "Password unchanged"
msgstr "গুপ্ত শব্দ অপৰিবৰ্ত্তিত"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "বেয়া গুপ্তশব্দ: %s"
@@ -354,14 +354,14 @@ msgstr "'%s' পঞ্জিকা সৃষ্টি কৰা হৈছে ।
msgid "Unable to create directory %s: %m"
msgstr "%s পঞ্জিকা সৃষ্টি কৰিব নোৱাৰি: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "গুপ্ত শব্দ অপৰিবৰ্ত্তিত"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "গুপ্তশব্দ ইতিমধ্যে ব্যৱহৃত । অন্য এটা বাচি লওক ।"
@@ -426,20 +426,20 @@ msgstr "pam_set_item() কৰোঁতে বিফল\n"
msgid "login: failure forking: %m"
msgstr "প্ৰৱেশ: forking ত বিফল: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s ৰ বাবে STRESS গুপ্তশব্দ সলনি কৰা হৈছে ।"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "নতুন STRESS গুপ্তশব্দ দিয়ক:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "নতুন STRESS গুপ্তশব্দ পুনঃ লিখক: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "সত্যৰ প্ৰতিপাদন ভুলকৈ লিখা গ'ল;গুপ্তশব্দ অপৰিবৰ্ত্তিত"
@@ -448,7 +448,7 @@ msgstr "সত্যৰ প্ৰতিপাদন ভুলকৈ লিখা
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -491,11 +491,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: সকলো ব্যৱহাৰকৰোঁতাক শূণ্য নোহোৱা অৱস্থালৈ পুনঃ প্ৰতিষ্ঠা কৰিব নোৱাৰি\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -510,6 +505,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "আপোনাৰ হিচাপ অন্ত হ'ল; অনুগ্ৰহ কৰি আপোনাৰ ব্যৱাস্থাপ্ৰণালীৰ "
diff --git a/po/bn_IN.po b/po/bn_IN.po
index b6c40529..0ddf5c46 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-20 12:40+0530\n"
"Last-Translator: Runa Bhattacharjee <runab@redhat.com>\n"
"Language-Team: Bengali INDIA <fedora-trans-bn_IN@redhat.com>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "PAM সংক্রান্ত অজানা ত্রুটি"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "নতুন %s%s পাসওয়ার্ড: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "নতুন %s%s পাসওয়ার্ড পুনরায় লিখুন: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "দুঃখিত, পাসওয়ার্ড দুটি এক নয়।"
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "পাসওয়ার্ড পরিবর্তন করা হয়নি"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "পাসওয়ার্ড ভাল নয়: %s"
@@ -353,13 +353,13 @@ msgstr "'%s' ডিরেক্টরি নির্মাণ করা হচ
msgid "Unable to create directory %s: %m"
msgstr "ডিরেক্টরি %s নির্মাণ করতে ব্যর্থ: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "পাসওয়ার্ড পরিবর্তনের কর্ম পরিত্যাগ করা হয়েছে।"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "পাসওয়ার্ড পূর্বে ব্যবহৃত হয়েছে। একটি পৃথক পাসওয়ার্ড নির্বাচন করুন।"
@@ -424,20 +424,20 @@ msgstr "pam_set_item() করতে ব্যর্থ\n"
msgid "login: failure forking: %m"
msgstr "লগ-ইন: fork করতে ব্যর্থ: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s-র STRESS পাসওয়ার্ড পরিবর্তন করা হচ্ছে।"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "নতুন STRESS পাসওয়ার্ড লিখুন: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "নতুন STRESS পাসওয়ার্ড পুনরায় লিখুন: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "নিশ্চায়ন কাল ভুল টাইপ করা হয়েছে; পাসওয়ার্ড পরিবর্তন করা হয়নি"
@@ -446,7 +446,7 @@ msgstr "নিশ্চায়ন কাল ভুল টাইপ করা হ
msgid "Account temporary locked (%ld seconds left)"
msgstr "সাময়িকরূপে অ্যাকাউন্ট লক করা হয়েছে (%ld সেকেন্ড অবশিষ্ট)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "%u ব্যর্থ লগ-ইনের ফলে অ্যাকাউন্ট লক করা হয়েছে"
@@ -489,11 +489,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: সব ব্যবহারকারীর জন্য শূণ্য-ভিন্ন মান ধার্য করতে ব্যর্থ\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "%u ব্যর্থ লগ-ইনের ফলে অ্যাকাউন্ট লক করা হয়েছে"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -508,6 +503,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
@@ -564,6 +564,10 @@ msgstr "নতুন UNIX পাসওয়ার্ড উল্লেখ কর
msgid "Retype new UNIX password: "
msgstr "নতুন UNIX পাসওয়ার্ড পুনরায় লিখুন: "
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "%u ব্যর্থ লগ-ইনের ফলে অ্যাকাউন্ট লক করা হয়েছে"
+
#~ msgid "has been already used"
#~ msgstr "পূর্বে ব্যবহৃত হয়েছে"
diff --git a/po/ca.po b/po/ca.po
index 69533a48..7ccb9b4b 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-15 16:10+0200\n"
"Last-Translator: Xavier Queralt Mateu <xqueralt@gmail.com>\n"
"Language-Team: Catalan <fedora@softcatala.net>\n"
@@ -177,19 +177,19 @@ msgid "Unknown PAM error"
msgstr "Error de PAM desconegut"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nova contrasenya de %s%s: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Torneu a escriure la nova contrasenya de %s%s: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Les contrasenyes no coincideixen."
@@ -240,7 +240,7 @@ msgid "Password unchanged"
msgstr "No s'ha canviat la contrasenya"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "CONTRASENYA INCORRECTA: %s"
@@ -363,13 +363,13 @@ msgstr "Creant el directori '%s'."
msgid "Unable to create directory %s: %m"
msgstr "No s'ha pogut crear el directori %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "No s'ha canviat la contrasenya."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Aquesta contrasenya ja s'ha fet servir. Trieu-ne una altra."
@@ -434,20 +434,20 @@ msgstr "s'ha produït un error en pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "entrada: ha fallat la bifurcació: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "S'està canviant la contrasenya d'STRESS per a %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Introduïu la nova contrasenya d'STRESS: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Torneu a escriure la nova contrasenya d'STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr ""
"Error d'escriptura durant la verificació; no s'ha canviat la contrasenya"
@@ -457,7 +457,7 @@ msgstr ""
msgid "Account temporary locked (%ld seconds left)"
msgstr "Compte bloquejat temporalment (queden %ld segons)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -502,12 +502,6 @@ msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
"%s: no es poden restablir tots els usuaris a un valor diferent de zero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-"El compte ha estat bloquejat ja que s'ha intentat entrar %u cops sense èxit"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -522,6 +516,11 @@ msgid ""
msgstr ""
"%s: [--file nom_fitxer_arrel] [--user nom_usuari] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "El vostre compte ha caducat. Contacteu amb l'administrador del sistema"
@@ -577,6 +576,12 @@ msgstr "Introduïu la nova contrasenya d'UNIX: "
msgid "Retype new UNIX password: "
msgstr "Torneu a escriure la nova contrasenya d'UNIX: "
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr ""
+#~ "El compte ha estat bloquejat ja que s'ha intentat entrar %u cops sense "
+#~ "èxit"
+
#~ msgid ""
#~ "There was %d failed login attempt since the last successful login.There "
#~ "were %d failed login attempts since the last successful login."
diff --git a/po/cs.po b/po/cs.po
index 4273cbf2..7bfa4125 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -2,13 +2,13 @@
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR Linux-PAM Project.
# Klara Cihlarova <koty@seznam.cz>, 2005, 2006.
-# fixes by Tomas Mraz <t8m@centrum.cz>, 2005.
+# Tomas Mraz <t8m@centrum.cz>, 2005, 2008.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
-"PO-Revision-Date: 2008-10-13 21:54+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
+"PO-Revision-Date: 2008-11-28 15:22+0100\n"
"Last-Translator: Tomas Mraz <t8m@centrum.cz>\n"
"Language-Team: cs_CZ <cs@li.org>\n"
"MIME-Version: 1.0\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "Neznámá chyba PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nové %s%sheslo: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Opakujte nové %s%sheslo: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Hesla se neshodují."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "Heslo nebylo změněno"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ŠPATNÉ HESLO: %s"
@@ -354,13 +354,13 @@ msgstr "Vytváření adresáře '%s'."
msgid "Unable to create directory %s: %m"
msgstr "Nezdařilo se vytvořit adresář %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Změna hesla přerušena."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Heslo již bylo použito. Zvolte jiné."
@@ -425,20 +425,20 @@ msgstr "chyba pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: chyba forku: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Změna STRESS hesla pro %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Zadejte nové STRESS heslo: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Opakujte nové STRESS heslo: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Chybné potvrzení. Heslo nezměněno"
@@ -447,7 +447,7 @@ msgstr "Chybné potvrzení. Heslo nezměněno"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Účet dočasně uzamčen (zbývá %ld vteřin)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Účet uzamčen z důvodu %u neúspěšných pokusů o přihlášení"
@@ -491,25 +491,26 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Nelze resetovat všechny uživatele nenulově\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Účet uzamčen z důvodu %u neúspěšných pokusů o přihlášení"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
-msgstr ""
+msgstr "Login Selhání Poslední selhání Od\n"
#: modules/pam_tally2/pam_tally2.c:881
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s: [-f rooted-filename] [--file rooted-filename]\n"
" [-u username] [--user username]\n"
" [-r] [--reset[=n]] [--quiet]\n"
msgstr ""
-"%s: [--file jmeno_souboru] [--user uzivatelske_jmeno] [--reset[=n]] [--"
-"quiet]\n"
+"%s: [-f plna-cesta-k-souboru] [--file plna-cesta-k-souboru]\n"
+" [-u uzivatelske-jmeno] [--user uzivatelske-jmeno]\n"
+" [-r] [--reset[=n]] [--quiet]\n"
+
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr "Přístup povolen (poslední přístup před %ld vteřinami)."
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
diff --git a/po/da.po b/po/da.po
index 8abc754f..3abfe1da 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2005-08-16 20:00+0200\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
@@ -171,19 +171,19 @@ msgid "Unknown PAM error"
msgstr "Ukendt PAM-fejl"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Ny %s%sadgangskode: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Genindtast ny %s%sadgangskode: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Adgangskoderne stemmer desværre ikke overens."
@@ -234,7 +234,7 @@ msgid "Password unchanged"
msgstr "Adgangskoden er uændret"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "DÅRLIG ADGANGSKODE: %s"
@@ -357,14 +357,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Adgangskoden er uændret"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Adgangskoden er allerede blevet brugt. Vælg en anden."
@@ -435,20 +435,20 @@ msgstr "pam_set_item() mislykkedes\n"
msgid "login: failure forking: %m"
msgstr "login: fejl ved forking: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "Ændrer STRESS-adgangskode for"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Indtast ny STRESS-adgangskode: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Genindtast ny STRESS-adgangskode: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Bekræftelsen blev angivet forkert. Adgangskoden forbliver uændret"
@@ -457,7 +457,7 @@ msgstr "Bekræftelsen blev angivet forkert. Adgangskoden forbliver uændret"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -500,11 +500,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Alle brugere kunne ikke nulstilles til ikke-nul\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -519,6 +514,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Din konto er udløbet. Kontakt din systemadministrator"
diff --git a/po/de.po b/po/de.po
index dae00135..fc18f978 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-27 07:45+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
@@ -170,19 +170,19 @@ msgid "Unknown PAM error"
msgstr "Unbekannter PAM-Fehler"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Geben Sie ein neues %s%sPasswort ein: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Geben Sie das neue %s%sPasswort erneut ein: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Die Passwörter stimmen nicht überein."
@@ -233,7 +233,7 @@ msgid "Password unchanged"
msgstr "Passwort nicht geändert"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "Schlechtes Passwort: %s"
@@ -359,13 +359,13 @@ msgstr "Erstelle Verzeichnis '%s'."
msgid "Unable to create directory %s: %m"
msgstr "Verzeichnis %s kann nicht erstellt werden: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Passwort Änderung wurde abgebrochen."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Passwort wurde bereits verwendet. Wählen Sie ein anderes aus."
@@ -430,20 +430,20 @@ msgstr "Fehler bei pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "Anmeldung: Fehler bei Abspaltung: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Ändern des STRESS-Passworts für %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Geben Sie ein neues STRESS-Passwort ein: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Geben Sie das neue STRESS-Passwort erneut ein: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Bestätigungspasswort falsch eingegeben; Passwort nicht geändert"
@@ -452,7 +452,7 @@ msgstr "Bestätigungspasswort falsch eingegeben; Passwort nicht geändert"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Account temporär gesperrt (noch %ld Sekunden)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Der Account ist wegen %u fehlgeschlagener Login-Versuche gesperrt"
@@ -496,11 +496,6 @@ msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
"%s: Es können nicht alle Benutzer auf Nicht-null zurückgesetzt werden\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Der Account ist wegen %hu fehlgeschlagener Login-Versuche gesperrt"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -517,6 +512,11 @@ msgstr ""
" [-u username] [--user username]\n"
" [-r] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Ihr Konto ist abgelaufen. Wenden Sie sich an den Systemadministrator"
@@ -571,6 +571,9 @@ msgstr "Geben Sie ein neues UNIX-Passwort ein: "
msgid "Retype new UNIX password: "
msgstr "Geben Sie das neue UNIX-Passwort erneut ein: "
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Der Account ist wegen %hu fehlgeschlagener Login-Versuche gesperrt"
+
#~ msgid "has been already used"
#~ msgstr "es wurde bereits verwendet"
diff --git a/po/es.po b/po/es.po
index c1151f95..2aeb0f1d 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip.es\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-02-21 00:03-0200\n"
"Last-Translator: Domingo Becker <domingobecker@gmail.com>\n"
"Language-Team: Spanish <fedora-trans-es@redhat.com>\n"
@@ -171,19 +171,19 @@ msgid "Unknown PAM error"
msgstr "Error desconocido de PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nueva %s%scontraseña:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Vuelva a escribir la nueva %s%scontraseña:"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Las contraseñas no coinciden."
@@ -234,7 +234,7 @@ msgid "Password unchanged"
msgstr "La contraseña no ha cambiado"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "CONTRASEÑA INCORRECTA: %s"
@@ -357,14 +357,14 @@ msgstr "Creando directorio '%s'."
msgid "Unable to create directory %s: %m"
msgstr "No se pudo crear el directorio %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "La contraseña no ha cambiado"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "La contraseña ya se ha utilizado. Seleccione otra."
@@ -429,20 +429,20 @@ msgstr "error en pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "inicio de sesión: error en horquilla: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Cambiando la contraseña STRESS para %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Introduzca la nueva contraseña STRESS:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Vuelva a escribir la nueva contraseña STRESS:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Error al escribir la verificación; la contraseña no ha cambiado"
@@ -451,7 +451,7 @@ msgstr "Error al escribir la verificación; la contraseña no ha cambiado"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -497,11 +497,6 @@ msgstr ""
"%s: No es posible restaurar a todos los usuarios a un número distinto de "
"cero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -517,6 +512,11 @@ msgstr ""
"%s: [--file nombre de archivo-raíz] [--user nombre de usuario] [--reset[=n]] "
"[--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/fi.po b/po/fi.po
index bbb39bf7..7caf446a 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2006-05-04 08:30+0200\n"
"Last-Translator: Jyri Palokangas <jmp@netti.fi>\n"
"Language-Team: <yast-trans-fi@kotoistaminen.novell.fi>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "Tuntematon PAM-virhe"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Uusi %s%ssalasana: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Anna uudelleen uusi %s%ssalasana: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Salasanat eivät täsmää."
@@ -232,7 +232,7 @@ msgid "Password unchanged"
msgstr "Salasanaa ei vaihdettu"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "HUONO SALASANA: %s"
@@ -355,14 +355,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Salasanaa ei vaihdettu"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Salasana on jo käytetty. Valitse toinen."
@@ -431,20 +431,20 @@ msgstr "pam_set_item() kutsu epäonnistui\n"
msgid "login: failure forking: %m"
msgstr "sisäänkirjautuminen: virhe haarautumisessa: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "Vaihdetaan STRESS-salasana "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Anna uusi STRESS-salasana: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Anna uusi STRESS-salasana uudelleen: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Salasanat eivät ole samat; salasanaa ei vaihdettu"
@@ -453,7 +453,7 @@ msgstr "Salasanat eivät ole samat; salasanaa ei vaihdettu"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -497,11 +497,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Ei voida palauttaa kaikkia käyttäjiä ei-nolliksi\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -517,6 +512,11 @@ msgstr ""
"%s: [--file juurrutettu-tiedostonimi] [--user käyttäjätunnus] [--reset[=n]] "
"[--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Käyttäjätilisi on vanhentunut; ota yhteyttä järjestelmän ylläpitäjään"
diff --git a/po/fr.po b/po/fr.po
index d00af2dc..a53eef91 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pam.fr2\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-19 18:59+0200\n"
"Last-Translator: Pablo Martin-Gomez <pablo.martin-gomez@laposte.net> \n"
"Language-Team: Français <fedora-trans-fr@redhat.com>\n"
@@ -178,19 +178,19 @@ msgid "Unknown PAM error"
msgstr "Erreur PAM inconnue"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nouveau %s%smot de passe : "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Retapez le nouveau %s%smot de passe : "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Les mots de passe ne correspondent pas."
@@ -241,7 +241,7 @@ msgid "Password unchanged"
msgstr "Mot de passe inchangé"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "MOT DE PASSE INCORRECT : %s"
@@ -366,13 +366,13 @@ msgstr "Création du répertoire « %s »."
msgid "Unable to create directory %s: %m"
msgstr "Impossible de créer le répertoire %s : %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Changement du mot de passe avorté."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Mot de passe déjà utilisé. Choisissez-en un autre."
@@ -437,20 +437,20 @@ msgstr "échec de pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login : échec d'autoclônage : %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Changement du mot de passe STRESS pour %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Entrer le nouveau mot de passe STRESS : "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Retaper le nouveau mot de passe STRESS : "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Vérification erronée : mot de passe inchangé"
@@ -459,7 +459,7 @@ msgstr "Vérification erronée : mot de passe inchangé"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Compte temporairement verrouillé (%ld secondes restantes)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Compte temporairement verrouillé dû à l'échec de %u connexions"
@@ -502,11 +502,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Impossible de réinitialiser tous les utilisateurs à non-zéro\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Compte temporairement verrouillé dû à l'échec de %u connexions"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -521,6 +516,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Votre compte a expiré. Contactez votre administrateur système"
@@ -575,6 +575,10 @@ msgstr "Entrez le nouveau mot de passe UNIX : "
msgid "Retype new UNIX password: "
msgstr "Retapez le nouveau mot de passe UNIX : "
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Compte temporairement verrouillé dû à l'échec de %u connexions"
+
#~ msgid "has been already used"
#~ msgstr "a déjà été utilisé"
diff --git a/po/gu.po b/po/gu.po
index 780f7648..737b4490 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip.gu\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-03-13 14:29+0530\n"
"Last-Translator: Ankit Patel <ankit@redhat.com>\n"
"Language-Team: Gujarati <fedora-trans-gu@redhat.com>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "અજ્ઞાત PAM ભૂલ"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "નવો %s%sપાસવર્ડ: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "નવો %s%sપાસવર્ડ ફરી લખો: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "માફ કરજો, પાસવર્ડો બંધબેસતા નથી."
@@ -232,7 +232,7 @@ msgid "Password unchanged"
msgstr "પાસવર્ડ બદલાયેલ નથી"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ખરાબ પાસવર્ડ: %s"
@@ -355,14 +355,14 @@ msgstr "ડિરેક્ટરી '%s' બનાવી રહ્યા છી
msgid "Unable to create directory %s: %m"
msgstr "ડિરેક્ટરી %s બનાવવામાં અસમર્થ: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "પાસવર્ડ બદલાયેલ નથી"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "પાસવર્ડ પહેલાથી જ વપરાઈ ગયેલ છે. બીજો પસંદ કરો."
@@ -427,20 +427,20 @@ msgstr "pam_set_item() કરવામાં નિષ્ફળ\n"
msgid "login: failure forking: %m"
msgstr "પ્રવેશ: ફોર્કમાં નિષ્ફળ: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "STRESS પાસવર્ડ %s માટે બદલો."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "નવો STRESS પાસવર્ડ દાખલ કરો: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "નવો STRESS પાસવર્ડ પુનઃલખો: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "ચકાસણી ખોટી-રીતે લખાઈ; પાસવર્ડ બદલાયેલ નથી"
@@ -449,7 +449,7 @@ msgstr "ચકાસણી ખોટી-રીતે લખાઈ; પાસવ
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -492,11 +492,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: બધા વપરાશકર્તાઓને બિન-શૂન્યમાં પુનઃસુયોજિત કરી શકતા નથી\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -511,6 +506,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "તમારું ખાતું નિવૃત્ત થઈ ગયું છે; મહેરબાની કરીને તમારા સિસ્ટમ સંચાલકનો સંપર્ક કરો"
diff --git a/po/hi.po b/po/hi.po
index 538fa17b..7edc79aa 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: hi\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2007-06-21 15:22+0530\n"
"Last-Translator: Rajesh Ranjan <rranjan@redhat.com>\n"
"Language-Team: Hindi <hindi.sf.net>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "अनजान PAM त्रुटि"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "नया %s%spassword: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "नया %s%spassword फिर टाइप करें: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "क्षमा करें, शब्दकूट नहीं मिलते हैं."
@@ -232,7 +232,7 @@ msgid "Password unchanged"
msgstr "शब्दकूट परिवर्तित"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "खराब शब्दकूट: %s"
@@ -355,14 +355,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "शब्दकूट परिवर्तित"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "शब्दकूट को पहले ही बदला जा चुका है. दूसरा चुनें."
@@ -431,20 +431,20 @@ msgstr "pam_set_item() में विफल\n"
msgid "login: failure forking: %m"
msgstr "लॉगिन: विफल फोर्किंग: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "इसके लिए स्ट्रेस शब्दकूट बदल रहा है "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "नया स्ट्रेस शब्दकूट दें: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "नया शब्दकूट फिर टाइप करें: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "जांच गलत टाइप किया गया; शब्दकूट बदला गया"
@@ -453,7 +453,7 @@ msgstr "जांच गलत टाइप किया गया; शब्द
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -496,11 +496,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: सभी उपयोक्ता को गैर शून्य में फिर सेट नहीं कर सकता है\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -515,6 +510,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "आपका खाता समाप्त हो चुका है; कृपया अपने सिस्टम प्रशासक को संपर्क करें"
diff --git a/po/hu.po b/po/hu.po
index 05f90755..8a1a39ab 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pam\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-04-30 08:23+0100\n"
"Last-Translator: Sulyok Péter <peti@sulyok.hu>\n"
"Language-Team: Hungarian <fedora-trans-hu@redhat.com>\n"
@@ -176,19 +176,19 @@ msgid "Unknown PAM error"
msgstr "Ismeretlen PAM hiba"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Új %s%sjelszó: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Ismét az új %s%sjelszó: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Sajnálom, de a jelszavak nem egyeznek."
@@ -239,7 +239,7 @@ msgid "Password unchanged"
msgstr "Változatlan jelszó"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ROSSZ JELSZÓ: %s"
@@ -362,14 +362,14 @@ msgstr "\"%s\" mappa teremtése"
msgid "Unable to create directory %s: %m"
msgstr "%s mapa nem teremthető meg: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Változatlan jelszó"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "A jelszót már használta. Válasszon másikat!"
@@ -434,20 +434,20 @@ msgstr "pam_set_item() meghiúsult\n"
msgid "login: failure forking: %m"
msgstr "bejelentkezés: elágazás hiba: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s STRESS jelszavának megváltoztatása."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Új STRESS jelszó: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Ismét az új STRESS jelszó: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Az ellenőrző jelszó nem egyezik; a jelszó nem került módosításra"
@@ -456,7 +456,7 @@ msgstr "Az ellenőrző jelszó nem egyezik; a jelszó nem került módosításra
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -499,11 +499,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Nem állítható vissza minden használó nem nullára\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -518,6 +513,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-fájlnév] [--user használó] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "A számla érvényessége lejárt; kérem keresse meg a rendszergazdát"
diff --git a/po/it.po b/po/it.po
index b55ec5a7..ba5e05ed 100644
--- a/po/it.po
+++ b/po/it.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-21 13:21+1000\n"
"Last-Translator: \n"
"Language-Team: <it@li.org>\n"
@@ -173,19 +173,19 @@ msgid "Unknown PAM error"
msgstr "Errore PAM sconosciuto"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nuova password%s%s: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Reimmettere la nuova password%s%s: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Le password non corrispondono."
@@ -236,7 +236,7 @@ msgid "Password unchanged"
msgstr "Password non modificata"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "PASSWORD ERRATA: %s"
@@ -365,13 +365,13 @@ msgstr "Creazione della directory \"%s\"."
msgid "Unable to create directory %s: %m"
msgstr "Impossibile creare la directory %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Cambio della password abortito."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Password già utilizzata. Sceglierne un'altra."
@@ -436,20 +436,20 @@ msgstr "Impossibile eseguire pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: forking fallito: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Cambio password STRESS per %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Immettere nuova password STRESS: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Reimmettere la nuova password STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Errore di digitazione per verifica; password non cambiata"
@@ -458,7 +458,7 @@ msgstr "Errore di digitazione per verifica; password non cambiata"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Account momentaneamente bloccato (%ld secondi rimanenti)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Account bloccato a causa di %u login falliti"
@@ -501,11 +501,6 @@ msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
"%s: Impossibile ripristinare tutti gli utenti a valori diversi da zero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Account bloccato a causa di %u login falliti"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -519,6 +514,11 @@ msgid ""
" [-r] [--reset[=n]] [--quiet]\n"
msgstr "%s: [--file NOMEFILE] [--user NOMEUTENTE] [--reset[=N]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Account scaduto; contattare l'amministratore di sistema"
@@ -575,3 +575,7 @@ msgstr "Immettere nuova password UNIX: "
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "Reimmettere la nuova password UNIX: "
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Account bloccato a causa di %u login falliti"
diff --git a/po/ja.po b/po/ja.po
index 18a43028..22618542 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip.ja\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-21 15:08+1000\n"
"Last-Translator: Kiyoto Hashida <khashida@redhat.com>\n"
"Language-Team: Japanese <jp@li.org>\n"
@@ -168,19 +168,19 @@ msgid "Unknown PAM error"
msgstr "不明なPAMエラー"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "新しい%s%sパスワード:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "新しい%s%sパスワードを再入力してください:"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "パスワードが一致しません。"
@@ -231,7 +231,7 @@ msgid "Password unchanged"
msgstr "パスワードが変更されていません"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "よくないパスワード: %s"
@@ -353,13 +353,13 @@ msgstr "ディレクトリ '%s' を作成中"
msgid "Unable to create directory %s: %m"
msgstr "ディレクトリ %s を作成できません: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "パスワードの変更は放棄されました"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr ""
@@ -425,20 +425,20 @@ msgstr "pam_set_item()に失敗しました\n"
msgid "login: failure forking: %m"
msgstr "ログイン: いまいましい失敗: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s 用の STRESS パスワードを変更中"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "新しいSTRESSパスワードを入力してください:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "新しいSTRESSパスワードを再入力してください:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "ミスタイプの確認、パスワードが変更されていません"
@@ -447,7 +447,7 @@ msgstr "ミスタイプの確認、パスワードが変更されていません
msgid "Account temporary locked (%ld seconds left)"
msgstr "アカウントは一時的にロックされています (残り %ld 秒)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "%u のログイン失敗の理由で アカウントはロックされました"
@@ -490,11 +490,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: すべてのユーザを非ゼロにリセットできません\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "%u のログイン失敗の理由で アカウントはロックされました"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -509,6 +504,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
@@ -562,3 +562,7 @@ msgstr "新しいUNIXパスワードを入力してください:"
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "新しいUNIX パスワードを再入力してください:"
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "%u のログイン失敗の理由で アカウントはロックされました"
diff --git a/po/km.po b/po/km.po
index 4f7ab9f6..c642235b 100644
--- a/po/km.po
+++ b/po/km.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2006-03-17 10:32+0700\n"
"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
"Language-Team: Khmer <support@khmeros.info>\n"
@@ -170,19 +170,19 @@ msgid "Unknown PAM error"
msgstr "មិន​ស្គាល់​កំហុស PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "ពាក្យ​សម្ងាត់ %s%s ថ្មី ៖"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "វាយ​ពាក្យ​សម្ងាត់ %s%s ថ្មី​ឡើង​វិញ ៖"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "សូម​ទោស ពាក្យ​សម្ងាត់​មិន​ដូច​គ្នា​ឡើយ ។"
@@ -233,7 +233,7 @@ msgid "Password unchanged"
msgstr "ពាក្យសម្ងាត់​មិន​បាន​ផ្លាស់ប្ដូរ​ឡើយ"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ពាក្យ​សម្ងាត់​មិន​ល្អ ៖ %s"
@@ -356,14 +356,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "ពាក្យសម្ងាត់​មិន​បាន​ផ្លាស់ប្ដូរ​ឡើយ"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "ពាក្យសម្ងាត់​ត្រូវ​បាន​ប្រើ​រួច​ហើយ ។ សូម​ជ្រើស​មួយ​ទៀត ។"
@@ -432,20 +432,20 @@ msgstr "បាន​បរាជ័យ pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "ចូល ៖ ចម្លង​ខ្លួន​ឯង​មិន​បាន​ជោគជ័យ ៖ %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "ការ​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ STRESS សម្រាប់ "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់ STRESS ថ្មី ៖ "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "វាយ​ពាក្យ​សម្ងាត់ STRESS ថ្មី​ម្ដង​ទៀត ៖ "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "ផ្ទៀងផ្ទាត់​អក្ខរាវិរុទ្ធ​ដែល​បាន​វាយខុស ពាក្យ​សម្ងាត់​មិន​បានផ្លាស់ប្ដូរ​"
@@ -454,7 +454,7 @@ msgstr "ផ្ទៀងផ្ទាត់​អក្ខរាវិរុទ្
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -497,11 +497,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s ៖ មិន​អាច​កំណត់​អ្នក​ប្រើ​ទាំងអស់​ទៅ​មិនមែន​សូន្យ​ឡើងវិញ​បានទេ\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -516,6 +511,11 @@ msgid ""
msgstr ""
"%s ៖ [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "គណនី​របស់​អ្នក​បាន​ផុតកំណត់​ហើយ សូម​ទាក់ទង​អ្នក​គ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក"
diff --git a/po/kn.po b/po/kn.po
index 5ce43d17..2b499202 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip.kn\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-20 12:29+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "ಗೊತ್ತಿರದ PAM ದೋಷ"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "ಹೊಸ %s%sಗುಪ್ತಪದ: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "ಹೊಸ %s%sಗುಪ್ತಪದವನ್ನು ಪುನರ್ ಟೈಪಿಸಿ: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "ಕ್ಷಮಿಸಿ, ಗುಪ್ತಪದಗಳು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "ಗುಪ್ತಪದ ಬದಲಾಗಿಲ್ಲ"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ಕೆಟ್ಟ ಗುಪ್ತಪದ: %s"
@@ -353,13 +353,13 @@ msgstr "ಕೋಶ '%s' ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದ
msgid "Unable to create directory %s: %m"
msgstr "ಕೋಶ '%s' ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "ಗುಪ್ತಪದ ಬದಲಾವಣೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "ಗುಪ್ತಪದವು ಈಗಾಗಲೆ ಬಳಸಲ್ಪಟ್ಟಿದೆ. ಬೇರೊಂದನ್ನು ಬಳಸಿ."
@@ -424,20 +424,20 @@ msgstr "pam_set_item() ಮಾಡುವಲ್ಲಿ ವಿಫಲತೆ\n"
msgid "login: failure forking: %m"
msgstr "ಲಾಗಿನ್: ಫೋರ್ಕಿಂಗ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲತೆ:%m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s ಗಾಗಿ STRESS ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "ಹೊಸ STRESS ಗುಪ್ತಪದವನ್ನು ಟೈಪಿಸಿ: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "ಹೊಸ STRESS ಗುಪ್ತಪದವನ್ನು ಪುನಃ ಟೈಪಿಸಿ: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "ತಪಾಸಣೆಗೆ ಟೈಪಿಸಿದ್ದು ತಪ್ಪಾಗಿದೆ; ಗುಪ್ತಪದ ಬದಲಾಗಿಲ್ಲ"
@@ -446,7 +446,7 @@ msgstr "ತಪಾಸಣೆಗೆ ಟೈಪಿಸಿದ್ದು ತಪ್ಪಾ
msgid "Account temporary locked (%ld seconds left)"
msgstr "ಖಾತೆಯನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ (%ld ಸೆಕೆಂಡುಗಳು ಉಳಿದಿವೆ)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "ವಿಫಲಗೊಂಡ %u ಪ್ರವೇಶಗಳಿಂದಾಗಿ ಖಾತೆಯನ್ನು ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ"
@@ -489,11 +489,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: ಎಲ್ಲಾ ಬಳಕೆದಾರರನ್ನು ಶೂನ್ಯವಲ್ಲದುದಕ್ಕೆ ಪುನರ್ ಸಂಯೋಜಿಸಲು ಆಗುವುದಿಲ್ಲ\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "ವಿಫಲಗೊಂಡ %u ಪ್ರವೇಶಗಳಿಂದಾಗಿ ಖಾತೆಯನ್ನು ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -508,6 +503,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "ನಿಮ್ಮ ಖಾತೆಯ ಅವಧಿ ಅಂತ್ಯಗೊಂಡಿದೆ; ದಯವಿಟ್ಟು ನಿಮ್ಮ ಗಣಕ ವ್ಯವಸ್ಥಾಪಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"
@@ -562,3 +562,7 @@ msgstr "ಹೊಸ UNIX ಗುಪ್ತಪದವನ್ನು ದಾಖಲಿಸ
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "ಹೊಸ UNIX ಗುಪ್ತಪದವನ್ನು ಪುನಃ ಟೈಪಿಸಿ: "
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "ವಿಫಲಗೊಂಡ %u ಪ್ರವೇಶಗಳಿಂದಾಗಿ ಖಾತೆಯನ್ನು ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ"
diff --git a/po/ko.po b/po/ko.po
index d5f158e2..45ea5090 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ko\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2007-06-22 10:02+1000\n"
"Last-Translator: Eunju Kim <eukim@redhat.com>\n"
"Language-Team: Korean <ko@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "알 수 없는 PAM 오류"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "새 %s%s 암호:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "새 %s%s 암호 재입력:"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "죄송합니다. 암호가 일치하지 않습니다."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "암호가 변경되지 않음"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "잘못된 암호: %s"
@@ -352,14 +352,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "암호가 변경되지 않음"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "이미 사용되고 있는 암호입니다. 다른 암호를 선택해 주십시오."
@@ -428,20 +428,20 @@ msgstr "pam_set_item() 실패\n"
msgid "login: failure forking: %m"
msgstr "로그인: 포크 작업(forking) 실패: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "STRESS 암호 변경"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "새 STRESS 암호 입력:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "새 STRESS 암호를 재입력:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "암호 확인에서 잘못 입력됨; 암호가 변경되지 않음"
@@ -450,7 +450,7 @@ msgstr "암호 확인에서 잘못 입력됨; 암호가 변경되지 않음"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -493,11 +493,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: 모든 사용자를 영이 아닌 값으로 설정할 수 없음\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -512,6 +507,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "계정이 만료되었습니다: 시스템 관리자에게 알려 주십시오"
diff --git a/po/ml.po b/po/ml.po
index f0daba80..2370671d 100644
--- a/po/ml.po
+++ b/po/ml.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip.ml\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-20 12:50+0530\n"
"Last-Translator: \n"
"Language-Team: <en@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "അപരിചിതമായ PAM പിശക്"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "പുതിയ %s%s പാസ്‌വേറ്‍ഡ്: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "വീണ്ടും %s%s പാസ്‌വേറ്‍ഡ് ടൈപ്പ് ചെയ്യുക: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "ക്ഷമിക്കണം, പാസ്‌വേറ്‍ഡുകള്‍ തമ്മില്‍ ചേരുന്നില്ല."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "പാസ്‌വേറ്‍ഡ് മാറ്റിയിട്ടില്ല"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "BAD PASSWORD: %s"
@@ -353,13 +353,13 @@ msgstr "'%s' ഡയറക്ടറി ഉണ്ടാക്കുന്നു."
msgid "Unable to create directory %s: %m"
msgstr "%s ഡയറക്ടറി ഉണ്ടാക്കുവാന്‍ സാധ്യമായില്ല: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "അടയാളവാക്ക് മാറ്റം വരുത്തുന്നതു് നിര്‍ത്തിയിരിക്കുന്നു."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "പാസ്‌വേറ്‍ഡ് നിലവില്‍ ഉപയോഗിത്തിലുള്ളതാണ്. മറ്റൊന്ന് നല്‍കുക."
@@ -424,20 +424,20 @@ msgstr "pam_set_item() ചെയ്യുന്നതില്‍ പരാജ
msgid "login: failure forking: %m"
msgstr "login: ഫോറ്‍ക്ക് ചെയ്യുന്നതില്‍ പരാജയം: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s-നുളള STRESS അടയാളവാക്ക് മാറ്റുന്നു."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "പുതിയ STRESS പാസ്‌വേറ്‍ഡ് നല്‍കുക: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "പുതിയ STRESS പാസ്‌വേറ്‍ഡ് വീണ്ടും ടൈപ്പ് ചെയ്യുക: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "പാസ്‌വേറ്‍ഡ് ഉറപ്പാക്കുന്നതിനായി ടൈപ്പ് ചെയ്തത് തെറ്റാണ്; പാസ്‌വേറ്‍ഡ് മാറ്റിയിട്ടില്ല"
@@ -446,7 +446,7 @@ msgstr "പാസ്‌വേറ്‍ഡ് ഉറപ്പാക്കുന
msgid "Account temporary locked (%ld seconds left)"
msgstr "അക്കൌണ്ട് താല്‍ക്കാലികമായി പൂട്ടിയിരിക്കുന്നു (%ld നിമിഷങ്ങള്‍ ബാക്കി)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "%u പരാജയപ്പെട്ട ലോഗിനുകള്‍ കാരണം അക്കൌണ്ട് താല്‍ക്കാലികമായി പൂട്ടിയിരിക്കുന്നു"
@@ -489,11 +489,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: എല്ലാ യൂസറുകളും പൂജ്യം അല്ലാതെ ക്റമികരിക്കുവാന്‍ സാധ്യമല്ല\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "%u പരാജയപ്പെട്ട ലോഗിനുകള്‍ കാരണം അക്കൌണ്ട് താല്‍ക്കാലികമായി പൂട്ടിയിരിക്കുന്നു"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -508,6 +503,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
@@ -563,3 +563,7 @@ msgstr "പുതിയ UNIX പാസ്‌വേറ്‍ഡ് നല്‍
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "പുതിയ UNIX പാസ്‌വേറ്‍ഡ് വീണ്ടും ടൈപ്പ് ചെയ്യുക: "
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "%u പരാജയപ്പെട്ട ലോഗിനുകള്‍ കാരണം അക്കൌണ്ട് താല്‍ക്കാലികമായി പൂട്ടിയിരിക്കുന്നു"
diff --git a/po/mr.po b/po/mr.po
index 1299782c..5b716436 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-10 07:07+0530\n"
"Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n"
"Language-Team: marathi\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "अपरिचीत PAM त्रुटी"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "नविन गुप्तशब्द %s%sp: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "नविन गुप्तशब्द %s%sp पुन्हा टाइप करा: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "माफ करा, गुप्तशब्द जुळत नाही."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "गुप्तशब्द बदलविला नाही"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "अयोग्य गुप्तशब्द: %s"
@@ -353,14 +353,14 @@ msgstr "संचयीका '%s' बनवित आहे."
msgid "Unable to create directory %s: %m"
msgstr "संचयीका %s बनवू शकत नाही: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "गुप्तशब्द बदलविला नाही"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "ह्या गुप्तशब्दचा आधीच वापर झाला आहे. दुसरा निवडा."
@@ -425,20 +425,20 @@ msgstr "pam_set_item() कार्यान्वीत करण्यास
msgid "login: failure forking: %m"
msgstr "दाखलन: विभाजन अपयशी: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s करीता STRESS गुप्तशब्द बदलवित आहे."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "नविन STRESS गुप्तशब्द प्रविष्ट करा: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "नविन STRESS गुप्तशब्द पुन्हा प्रविष्ट करा: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "तपासणी पूर्ण झाली नाही; गुप्तशब्द बदलविले नाही"
@@ -447,7 +447,7 @@ msgstr "तपासणी पूर्ण झाली नाही; गुप
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -490,11 +490,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: सर्व वापरकर्ता विना-शून्य असे पुन्हस्थापन करू शकत नाही\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -509,6 +504,11 @@ msgid ""
msgstr ""
"%s: [--file रूटेड-फाइलनाव] [--user वापरकर्त्याचे नाव] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "तुमचे खाते बंद झाले आहे, कृपया तुमच्या संगणक व्यवस्थापकाकडे जा"
diff --git a/po/ms.po b/po/ms.po
index e5df671a..300697c4 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: linux-pam\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-09-25 23:52+0800\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
@@ -182,19 +182,19 @@ msgid "Unknown PAM error"
msgstr "Ralat sistem tidak diketahui"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, fuzzy, c-format
msgid "New %s%spassword: "
msgstr "&Tetingkap Baru"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, fuzzy, c-format
msgid "Retype new %s%spassword: "
msgstr "Baru me&nggunakan Template"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
#, fuzzy
msgid "Sorry, passwords do not match."
msgstr "Sijil dan kekunci diberi tidak sepadan."
@@ -254,7 +254,7 @@ msgid "Password unchanged"
msgstr "Biarkan tanpa diubah"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, fuzzy, c-format
msgid "BAD PASSWORD: %s"
msgstr "Katalaluan Tidak Betul"
@@ -382,14 +382,14 @@ msgstr "Menbuat direktori initrd"
msgid "Unable to create directory %s: %m"
msgstr "gagal untuk mencipta direktori %s: %s\n"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Biarkan tanpa diubah"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr ""
@@ -458,21 +458,21 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr "Ben_arkan logmasuk luartalian"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "Greek 'astator' untuk 'menukar'"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
#, fuzzy
msgid "Enter new STRESS password: "
msgstr "Masukkkan Katalaluan Pemuat But"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr ""
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr ""
@@ -481,7 +481,7 @@ msgstr ""
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -527,11 +527,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -545,6 +540,11 @@ msgid ""
" [-r] [--reset[=n]] [--quiet]\n"
msgstr ""
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/nb.po b/po/nb.po
index 06f041b3..cddf89ff 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-04-30 12:59+0200\n"
"Last-Translator: Olav Pettershagen <olav.pet@online.no>\n"
"Language-Team: <nb@li.org>\n"
@@ -166,19 +166,19 @@ msgid "Unknown PAM error"
msgstr "Ukjent PAM-feil"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nytt %s%spassord: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Bekreft nytt %s%s-passord: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Beklager, ikke samsvar mellom passord."
@@ -229,7 +229,7 @@ msgid "Password unchanged"
msgstr "Passord uendret"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "SVAKT PASSORD: %s"
@@ -352,14 +352,14 @@ msgstr "Oppretter katalog «%s»."
msgid "Unable to create directory %s: %m"
msgstr "Kan ikke opprette katalog %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Passord uendret"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Passordet er allerede benyttet. Velg et annet."
@@ -424,20 +424,20 @@ msgstr "kunne ikke pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: feil under forgrening: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Endrer STRESS-passord for %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Angi nytt STRESS-passord: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Bekreft nytt STRESS-passord: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Bekreftelse feil skrevet; passord uendret"
@@ -446,7 +446,7 @@ msgstr "Bekreftelse feil skrevet; passord uendret"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -489,11 +489,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Kan ikke tilbakestille alle brukere til non-zero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -508,6 +503,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filnavn] [--user brukernavn] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Din konto er utløpt; kontakt systemadministratoren"
diff --git a/po/nl.po b/po/nl.po
index c04ee38a..1a3e71c7 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-20 23:45+0200\n"
"Last-Translator: Peter van Egdom <p.van.egdom@gmail.com>\n"
"Language-Team: Dutch <fedora-trans-list@redhat.com>\n"
@@ -168,19 +168,19 @@ msgid "Unknown PAM error"
msgstr "Onbekende PAM-fout"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nieuw %s%swachtwoord: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Nieuw %s%swachtwoord herhalen: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Sorry, wachtwoorden komen niet overeen."
@@ -231,7 +231,7 @@ msgid "Password unchanged"
msgstr "Wachtwoord is niet gewijzigd"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "SLECHT WACHTWOORD: %s"
@@ -359,13 +359,13 @@ msgstr "Aanmaken van map '%s'."
msgid "Unable to create directory %s: %m"
msgstr "Niet in staat om map %s aan te maken: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Wachtwoord wijzigen afgebroken."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Wachtwoord is al gebruikt. Kies een ander wachtwoord."
@@ -430,20 +430,20 @@ msgstr "pam_set_item() is mislukt\n"
msgid "login: failure forking: %m"
msgstr "login: beginnen van nieuw proces mislukt: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Veranderen van STRESS-wachtwoord voor %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Nieuw STRESS-wachtwoord invoeren: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Nieuw STRESS-wachtwoord herhalen: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Verificatie onjuist getypt; wachtwoord blijft ongewijzigd"
@@ -452,7 +452,7 @@ msgstr "Verificatie onjuist getypt; wachtwoord blijft ongewijzigd"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Account tijdelijk vergrendeld (%ld seconden resterend)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Account vergrendeld wegens %u mislukte aanmeldingen"
@@ -496,11 +496,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: kan niet alle gebruikers terugzetten naar non-zero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Account vergrendeld wegens %u mislukte aanmeldingen"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -516,6 +511,11 @@ msgstr ""
"%s [--file rooted-bestandsnaam] [--user gebruikersnaam] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Uw account is verlopen; neem contact op met uw systeembeheerder"
@@ -572,6 +572,10 @@ msgstr "Nieuw UNIX-wachtwoord invoeren: "
msgid "Retype new UNIX password: "
msgstr "Nieuw UNIX-wachtwoord herhalen: "
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Account vergrendeld wegens %u mislukte aanmeldingen"
+
#~ msgid "has been already used"
#~ msgstr "is al gebruikt"
diff --git a/po/or.po b/po/or.po
index 117e5375..f4db9a90 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip.or\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-09-30 11:42+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya\n"
@@ -171,19 +171,19 @@ msgid "Unknown PAM error"
msgstr "ଅଜଣା PAM ତୃଟି"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "ନୂତନ %s%s ପ୍ରବେଶ ସଙ୍କେତ: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "ନୂତନ %s%s ପ୍ରବେଶ ସଙ୍କେତକୁ ପୁନର୍ବାର ଟାଇପ କରନ୍ତୁ: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "କ୍ଷମା କରିବେ, ପ୍ରବେଶ ସଙ୍କେତ ମିଶୁ ନାହିଁ।"
@@ -234,7 +234,7 @@ msgid "Password unchanged"
msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଅପରିବର୍ତ୍ତିତ ଅଛି"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ଖରାପ ପ୍ରବେଶ ସଙ୍କେତ: %s"
@@ -357,14 +357,14 @@ msgstr "ଡ଼ିରେକ୍ଟୋରୀ '%s' ନିର୍ମାଣ କରୁ
msgid "Unable to create directory %s: %m"
msgstr "ଡ଼ିରେକ୍ଟୋରୀ '%s' ନିର୍ମାଣ କରିବାରେ ଅସମର୍ଥ: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଅପରିବର୍ତ୍ତିତ ଅଛି"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ପୂର୍ବରୁ ବ୍ଯବହୃତ ହେଉଛି। ଅନ୍ଯ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରନ୍ତୁ।"
@@ -429,20 +429,20 @@ msgstr "pam_set_item() କରିବାରେ ବିଫଳ\n"
msgid "login: failure forking: %m"
msgstr "ଲଗଇନ: fork କରିବାରେ ବିଫଳ: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "%s ପାଇଁ STRESS ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଉଛି."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "ନୂତନ STRESS ପ୍ରବେଶ ସଙ୍କେତ ଭରଣ କରନ୍ତୁ: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "ନୂତନ STRESS ପ୍ରବେଶ ସଙ୍କେତକୁ ପୁନର୍ବାର ଟାଇପ କରନ୍ତୁ: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "ଯାଞ୍ଚକରଣ ସମୟରେ ଭୂଲ ଟାଇପ କରିଛନ୍ତି, ପ୍ରବେଶ ସଙ୍କେତଟି ବଦଳି ନାହିଁ"
@@ -451,7 +451,7 @@ msgstr "ଯାଞ୍ଚକରଣ ସମୟରେ ଭୂଲ ଟାଇପ କର
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -494,11 +494,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: ସମସ୍ତ ଚାଳକ ମାନଙ୍କୁ ଶୂନ୍ଯ ବିହୀନ ଭାବରେ ପୁନର୍ବାର ବିନ୍ଯାସ କରିପାରିବ ନାହିଁ\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -513,6 +508,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "ଆପଣଙ୍କର ଖାତା ଅଚଳ ହୋଇଯାଇଛି; ଦୟାକରି ଆପଣଙ୍କ ତନ୍ତ୍ର ପ୍ରଶାସକଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ"
diff --git a/po/pa.po b/po/pa.po
index 61bbaa22..ddd22104 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.pa\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2005-08-06 08:34+0530\n"
"Last-Translator: Amanpreet Singh Alam[ਆਲਮ] <amanpreetalam@yahoo.com>\n"
"Language-Team: Panjabi <pa@li.org>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "ਅਣਜਾਣ PAM ਗਲਤੀ"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, fuzzy, c-format
msgid "New %s%spassword: "
msgstr "ਗੁਪਤ-ਕੋਡ ਨਾ-ਤਬਦੀਲ ਹੈ"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, fuzzy, c-format
msgid "Retype new %s%spassword: "
msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਮੁੜ-ਲਿਖੋ: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
#, fuzzy
msgid "Sorry, passwords do not match."
msgstr "NIS ਗੁਪਤ-ਕੋਡ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
@@ -233,7 +233,7 @@ msgid "Password unchanged"
msgstr "ਗੁਪਤ-ਕੋਡ ਨਾ-ਤਬਦੀਲ ਹੈ"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr ""
@@ -357,14 +357,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "ਗੁਪਤ-ਕੋਡ ਨਾ-ਤਬਦੀਲ ਹੈ"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "ਗੁਪਤ-ਕੋਡ ਪਹਿਲਾਂ ਵੀ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਵੱਖਰਾ ਚੁਣੋ।"
@@ -433,20 +433,20 @@ msgstr "pam_set_item() ਲਈ ਫੇਲ\n"
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਦਿਓ: "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਦਿਓ: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਮੁੜ-ਲਿਖੋ: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr ""
@@ -455,7 +455,7 @@ msgstr ""
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -498,11 +498,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -517,6 +512,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 62c92a45..9ceda20b 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-14 23:49+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
@@ -168,19 +168,19 @@ msgid "Unknown PAM error"
msgstr "Nieznany błąd PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nowe hasło %s%s: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Ponownie podaj nowe hasło %s%s: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Podane hasła nie są zgodne."
@@ -231,7 +231,7 @@ msgid "Password unchanged"
msgstr "Hasło nie zostało zmienione"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "BŁĘDNE HASŁO: %s"
@@ -359,13 +359,13 @@ msgstr "Tworzenie katalogu \"%s\"."
msgid "Unable to create directory %s: %m"
msgstr "Nie można utworzyć katalogu %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Przerwano zmianę hasła."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Hasło było już używane. Wybierz inne."
@@ -430,20 +430,20 @@ msgstr "pam_set_item() nie powiodło się\n"
msgid "login: failure forking: %m"
msgstr "login: rozdzielenie nie powiodło się: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Zmienianie hasła STRESS dla %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Podaj nowe hasło STRESS: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Ponownie podaj hasła STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Sprawdzenie nie powiodło się; hasło nie zostało zmienione"
@@ -452,7 +452,7 @@ msgstr "Sprawdzenie nie powiodło się; hasło nie zostało zmienione"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Konto zostało tymczasowo zablokowane (pozostało %ld sekund)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Konto zostało zablokowane z powodu %u nieudanych logowań"
@@ -496,11 +496,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: nie można przywrócić wszystkich użytkowników\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Konto zostało zablokowane z powodu %u nieudanych logowań"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -516,6 +511,11 @@ msgstr ""
"%s: [--file nazwa-pliku-root] [--user nazwa-użytkownika] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Konto wygasło; skontaktuj się z administratorem systemu"
@@ -570,3 +570,7 @@ msgstr "Podaj nowe hasło UNIX: "
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "Ponownie podaj hasło UNIX: "
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Konto zostało zablokowane z powodu %u nieudanych logowań"
diff --git a/po/pt.po b/po/pt.po
index acfeaf7f..303c6208 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.pt\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2006-05-03 21:54+0200\n"
"Last-Translator: Antonio Cardoso Martins <digiplan@netvisao.pt>\n"
"Language-Team: portuguese\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "Erro PAM desconhecido"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nova %s%spalavra passe: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Digite novamente a nova %s%spalavra passe: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Lamento, as palavras passe não coincidem."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "Palavra passe inalterada"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "MÁ PALAVRA PASSE: %s"
@@ -353,14 +353,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Palavra passe inalterada"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "A palavra passe já foi anteriormente utilizada. Escolha outra."
@@ -429,20 +429,20 @@ msgstr "falha em pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "sessão: falha ao executar o forking: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "A alterar a palavra passe de STRESS para "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Digite a nova palavra passe de STRESS: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Digite novamente a nova palavra passe de STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "A verificação não coincide; palavra passe inalterada"
@@ -451,7 +451,7 @@ msgstr "A verificação não coincide; palavra passe inalterada"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -494,11 +494,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Não foi possível reiniciar todos os utilizadores para não zero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -513,6 +508,11 @@ msgid ""
msgstr ""
"%s: [--file ficheiro-raiz] [--user nome-utilizador] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index f34c072c..f235f646 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-22 17:25-0300\n"
"Last-Translator: Taylon <taylonsilva@gmail.com>\n"
"Language-Team: Brazilian Portuguese <fedora-trans-pt_br@redhat.com>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "Erro desconhecido no PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nova %s%ssenha:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Redigite a nova %s%ssenha:"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "As senhas não são iguais."
@@ -232,7 +232,7 @@ msgid "Password unchanged"
msgstr "Senha inalterada"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "SENHA INCORRETA: %s"
@@ -355,13 +355,13 @@ msgstr "Criando o diretório '%s'."
msgid "Unable to create directory %s: %m"
msgstr "Impossível criar o diretório %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "A alteração de senha foi abortada."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "A senha já foi usada. Escolha outra."
@@ -426,20 +426,20 @@ msgstr "falha em pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: falha na bifurcação: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Mudando senha STRESS para %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Digite a nova senha STRESS:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Digite novamente a nova senha STRESS:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Verificação digitada incorretamente; senha inalterada"
@@ -448,7 +448,7 @@ msgstr "Verificação digitada incorretamente; senha inalterada"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Conta temporariamente bloqueada (restam %ld segundos)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Conta bloqueada devido a %u falhas de login"
@@ -491,11 +491,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Impossível redefinir todos os usuários para não-zero\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Conta bloqueada devido a %u falhas de login"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -510,6 +505,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Sua conta expirou; entre em contato com o administrador do sistema"
@@ -564,6 +564,10 @@ msgstr "Digite a nova senha UNIX:"
msgid "Retype new UNIX password: "
msgstr "Redigite a nova senha UNIX:"
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Conta bloqueada devido a %u falhas de login"
+
#~ msgid "has been already used"
#~ msgstr "já foi usada"
diff --git a/po/ru.po b/po/ru.po
index e2708a2b..0cc6d9dd 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-02-23 20:11+0300\n"
"Last-Translator: Andrew Martynov <andrewm@inventa.ru>\n"
"Language-Team: Russian <fedora-trans-ru@redhat,com>\n"
@@ -175,20 +175,20 @@ msgid "Unknown PAM error"
msgstr "Неизвестная ошибка PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Новый пароль %s%s: "
# Keep the newlines and spaces after ':'!
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Повторите ввод нового пароля %s%s: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Извините, но пароли не совпадают."
@@ -240,7 +240,7 @@ msgid "Password unchanged"
msgstr "Пароль не изменен"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "НЕВЕРНЫЙ ПАРОЛЬ: %s"
@@ -365,14 +365,14 @@ msgid "Unable to create directory %s: %m"
msgstr "Невозможно создать каталог %s: %m"
# password dialog title
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Пароль не изменен"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Этот пароль уже был использован. Выберите другой."
@@ -439,21 +439,21 @@ msgstr "не удалось выполнить pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "регистрация: сбой при создании нового процесса: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Смена пароля STRESS для %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Введите новый пароль STRESS: "
# Keep the newlines and spaces after ':'!
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Повторите ввод нового пароля STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Подтверждение введено неправильно; пароль не изменен"
@@ -462,7 +462,7 @@ msgstr "Подтверждение введено неправильно; пар
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -507,11 +507,6 @@ msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
"%s: не удается выполнить сброс всех пользователей в ненулевое значение\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -527,6 +522,11 @@ msgstr ""
"%s: [--file имя_корневого_файла] [--user имя_пользователя] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/si.po b/po/si.po
index a8fa2d1f..ac57fe16 100644
--- a/po/si.po
+++ b/po/si.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: si\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2007-06-22 12:24+0530\n"
"Last-Translator: Danishka Navin <snavin@redhat.com>\n"
"Language-Team: Sinhala <en@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "නොදන්නා PAM දෝෂය"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "නව %s%sරහස්පදය: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "නව %s%sරහස්පදය නැවත ඇතුළත් කරන්න: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "සමාවෙන්න, රහස්පද ගැලපෙන්නේ නැත."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "රහස්පදය වෙනස් නොවිනි"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "BAD PASSWORD: %s"
@@ -353,14 +353,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "රහස්පදය වෙනස් නොවිනි"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "රහස්පදය දැනටමත් භාවිතා වේ. වෙනත් එකක් තෝරාගන්න."
@@ -429,20 +429,20 @@ msgstr "pam_set_item() අසමත් විය\n"
msgid "login: failure forking: %m"
msgstr "පිවිසුම: ෆොර්කින් බිදවැටීමක්: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "STRESS රහස්පදය වෙනස් කරමින්"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "නව STRESS රහස්පදය ඇතුළත් කරන්න:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "නව STRESS රහස්පදය නැවත ඇතුළත් කරන්න:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "ස්ථිරකර ගැනීම සඳහා වැරදි ඇතුලත් කිරීමක්; රහස්පදය වෙනස් කළ නොහැක"
@@ -451,7 +451,7 @@ msgstr "ස්ථිරකර ගැනීම සඳහා වැරදි ඇ
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -494,11 +494,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: ශුන්‍ය නොවන අගයට සියළුම පරිශීලකයින් නැවත සැකසිය නොහැක\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -513,6 +508,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "ඔබගේ ගිණුම කල්ඉකුත් වී ඇත; කරුණාකර ඔබගේ පද්ධති කළමණාකරු හමුවන්න"
diff --git a/po/sk.po b/po/sk.po
index 01e13953..7e7c7612 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-21 09:13+0200\n"
"Last-Translator: Ondrej Šulek <feonsu@gmail.com>\n"
"Language-Team: Slovak <fedora-trans-sk@redhat.com>\n"
@@ -166,19 +166,19 @@ msgid "Unknown PAM error"
msgstr "Neznáme chyba PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nové %s%sheslo: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Opakujte nové %s%sheslo: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Heslá sa nezhodujú."
@@ -229,7 +229,7 @@ msgid "Password unchanged"
msgstr "Heslo nebolo zmenené"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "NESPRÁVNE HESLO: %s"
@@ -361,13 +361,13 @@ msgstr "Vytváranie priečinka '%s'."
msgid "Unable to create directory %s: %m"
msgstr "Nedá sa vytvoriť priečinok %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "Zmena hesla prerušená."
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Heslo už bolo použité. Vyberte iné."
@@ -432,20 +432,20 @@ msgstr "chyba pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: chyba forku: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Zmena STRESS hesla pre %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Zadajte nové STRESS heslo: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Znovu zadajte nové STRESS heslo: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Chybné potvrdenie; heslo nezmenené"
@@ -454,7 +454,7 @@ msgstr "Chybné potvrdenie; heslo nezmenené"
msgid "Account temporary locked (%ld seconds left)"
msgstr "Účet dočasne uzamknutý (zostáva %ld sekúnd)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "Účet uzamknutý z dôvodu %u neúspešných prihlásení"
@@ -498,11 +498,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Nedá sa resetovať všetkých používateľov nenulovo\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "Účet uzamknutý z dôvodu %u neúspešných prihlásení"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -518,6 +513,11 @@ msgstr ""
"%s: [--file meno_suboru] [--user pouzivatelske_meno] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
@@ -574,6 +574,10 @@ msgstr "Zadajte nové UNIX heslo: "
msgid "Retype new UNIX password: "
msgstr "Opakujte nové UNIX heslo: "
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "Účet uzamknutý z dôvodu %u neúspešných prihlásení"
+
#~ msgid "has been already used"
#~ msgstr "už bolo použité"
diff --git a/po/sr.po b/po/sr.po
index 2696833a..10b664fb 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-04-05 10:48+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
@@ -171,19 +171,19 @@ msgid "Unknown PAM error"
msgstr "Непозната PAM грешка"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Нова %s%sлозинка: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Поновите нову %s%sлозинку: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Извините, лозинке се не подударају."
@@ -234,7 +234,7 @@ msgid "Password unchanged"
msgstr "Лозинка непромењена"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ЛОША ЛОЗИНКА: %s"
@@ -358,14 +358,14 @@ msgstr "Правим директоријум „%s“."
msgid "Unable to create directory %s: %m"
msgstr "Не могу да направим директоријум %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Лозинка непромењена"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Лозинка је већ у употреби. Изаберите другу."
@@ -430,20 +430,20 @@ msgstr "неуспешно покретање функције pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "пријава: грешка при гранању: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Промена STRESS лозинке за %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Унесите нову STRESS лозинку: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Поново унесите нову STRESS лозинку: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Провера неуспешна; лозинка непромењена"
@@ -452,7 +452,7 @@ msgstr "Провера неуспешна; лозинка непромењена
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -496,11 +496,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: не могу да поништим све кориснике на не-нулту вредност\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -516,6 +511,11 @@ msgstr ""
"%s: [--file коренски-називдатотеке] [--user корисничкоиме] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Ваш налог је истекао; молим контактирајте администратора система"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index ff5743fe..117774fe 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-04-05 10:48+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
@@ -171,19 +171,19 @@ msgid "Unknown PAM error"
msgstr "Nepoznata PAM greška"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nova %s%slozinka: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Ponovite novu %s%slozinku: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Izvinite, lozinke se ne podudaraju."
@@ -234,7 +234,7 @@ msgid "Password unchanged"
msgstr "Lozinka nepromenjena"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "LOŠA LOZINKA: %s"
@@ -358,14 +358,14 @@ msgstr "Pravim direktorijum „%s“."
msgid "Unable to create directory %s: %m"
msgstr "Ne mogu da napravim direktorijum %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Lozinka nepromenjena"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Lozinka je već u upotrebi. Izaberite drugu."
@@ -430,20 +430,20 @@ msgstr "neuspešno pokretanje funkcije pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "prijava: greška pri grananju: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "Promena STRESS lozinke za %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Unesite novu STRESS lozinku: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Ponovo unesite novu STRESS lozinku: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Provera neuspešna; lozinka nepromenjena"
@@ -452,7 +452,7 @@ msgstr "Provera neuspešna; lozinka nepromenjena"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -496,11 +496,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: ne mogu da poništim sve korisnike na ne-nultu vrednost\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -516,6 +511,11 @@ msgstr ""
"%s: [--file korenski-nazivdatoteke] [--user korisničkoime] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Vaš nalog je istekao; molim kontaktirajte administratora sistema"
diff --git a/po/sv.po b/po/sv.po
index f7b88bb7..be104909 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2007-12-24 13:39+0100\n"
"Last-Translator: Christer Andersson <klamm@comhem.se>\n"
"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
@@ -166,19 +166,19 @@ msgid "Unknown PAM error"
msgstr "Oknt PAM-fel"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Nytt %s%slsenord: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Ange nytt %s%slsenord igen: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Ledsen, lsenorden stmmer inte verens."
@@ -229,7 +229,7 @@ msgid "Password unchanged"
msgstr "Ofrndrat lsenord"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "DLIGT LSENORD: %s"
@@ -352,14 +352,14 @@ msgstr "Skapar katalogen \"%s\"."
msgid "Unable to create directory %s: %m"
msgstr "Kan inte skapa katalogen %s: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Ofrndrat lsenord"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Lsenordet har redan anvnds. Vlj ett annat."
@@ -424,20 +424,20 @@ msgstr "pam_set_item() misslyckades\n"
msgid "login: failure forking: %m"
msgstr "inloggning: fel vid grening: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "ndrar STRESS-lsenord fr %s."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Ange nytt STRESS-lsenord: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Ange nytt STRESS-lsenord igen: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Felskriven verifikation, lsenord ofrndrat"
@@ -446,7 +446,7 @@ msgstr "Felskriven verifikation, lsenord ofrndrat"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -489,11 +489,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Kan inte stlla om alla anvndare till nollskilt vrde\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -508,6 +503,11 @@ msgid ""
msgstr ""
"%s: [--file absolut-filnamn] [--user anvndarnamn] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Ditt konto har gtt ut. Kontakta din systemadministratr"
diff --git a/po/ta.po b/po/ta.po
index eec8d21c..7deb035d 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ta\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2007-06-21 15:33+0530\n"
"Last-Translator: I felix <ifelix@redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "தெரியாத PAM பிழை"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "புதிய %s%spassword: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "புதிய %s%spassword மீண்டும் உள்ளிடவும்: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "கடவுச்சொல் பொருந்தவில்லை."
@@ -232,7 +232,7 @@ msgid "Password unchanged"
msgstr "கடவுச்சொல் மாற்றப்படவில்லை"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "தவறான கடவுச்சொல்: %s"
@@ -355,14 +355,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "கடவுச்சொல் மாற்றப்படவில்லை"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "கடவுச்சொல் ஏற்கனவே பயன்படுத்தப்பட்டது. வேறொன்றை பயன்படுத்தவும்."
@@ -431,20 +431,20 @@ msgstr "pam_set_item() செயலிழக்கப்பட்டது\n"
msgid "login: failure forking: %m"
msgstr "login: failure forking: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "STRESS கடவுச்சொல்லை மாற்றுகிறது"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "புதிய STRESS கடவுச்சொல்லை உள்ளிடவும்: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "புதிய STRESS கடவுச்சொல்லை மீண்டும் உள்ளிடவும்: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "உறுதிப்படுத்தல் முரண்பாடு; கடவுச்சொல் மாற்றப்படவில்லை"
@@ -453,7 +453,7 @@ msgstr "உறுதிப்படுத்தல் முரண்பாட
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -496,11 +496,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: பூஜ்ஜியமில்லாததற்கு அனைத்து பயனர்களையும் மறு அமைக்க முடியவில்லை\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -515,6 +510,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "உங்கள் கணக்கு முடிவுற்றது, உங்கள் கணினி நிர்வாகியை அணுகவும்"
diff --git a/po/te.po b/po/te.po
index 1cfffc13..702a53fe 100644
--- a/po/te.po
+++ b/po/te.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: te\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-22 16:24+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n"
@@ -170,19 +170,19 @@ msgid "Unknown PAM error"
msgstr "తెలియని PAM దోషము"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "కొత్త %s%sసంకేతపదము: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "కొత్త %s%sసంకేతపదమును మరలాటైపుచేయుము: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "క్షమించాలి, సంకేతపదము సరిపోలలేదు."
@@ -233,7 +233,7 @@ msgid "Password unchanged"
msgstr "సంకేతపదము మార్చలేదు"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "చెడ్డ సంకేతపదము: %s"
@@ -356,13 +356,13 @@ msgstr "డెరెక్టరీ '%s' సృష్టించుట."
msgid "Unable to create directory %s: %m"
msgstr "డైరెక్టరీ %sను సృష్టించలేక పోయింది: %m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "సంకేతపదము మార్పు తప్పించబడింది"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "సంకేతపదము యిప్పటికే వుపయోగించబడింది. మరియొకదానిని యెంచుకొనుము."
@@ -427,20 +427,20 @@ msgstr "pam_set_item() విఫలమైంది\n"
msgid "login: failure forking: %m"
msgstr "login: failure forking: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "STRESS సంకేతపదమును %sకొరకు మార్చబడింది."
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "కొత్త STRESS సంకేతపదమును ప్రవేశపెట్టుము: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "కొత్త STRESS సంకేతపదమును తిరిగిటైపుచేయుము: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "తప్పుగా-చేసినటైపు నిర్ధారణ; సంకేతపదము మార్చబడలేదు"
@@ -449,7 +449,7 @@ msgstr "తప్పుగా-చేసినటైపు నిర్ధార
msgid "Account temporary locked (%ld seconds left)"
msgstr "ఖాతా తాత్కాలికంగా లాక్‌చేయబడింది (%ld సెకనులు మిగిలినవి)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "%u లాగిన్‌ల వైఫల్యం కారణంగా ఖాతా లాక్అయింది"
@@ -492,11 +492,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: వినియోగదారులనందరిని సున్నా-కానిదానికి తిరిగివుంచలేము\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "%u లాగిన్‌ల వైఫల్యం కారణంగా ఖాతా లాక్అయింది"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -511,6 +506,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "మీ ఖాతా కాలముతీరినది; దయచేసి మీ సిస్టమ్ నిర్వాహకుడిని సంప్రదించండి"
@@ -564,3 +564,7 @@ msgstr "కొత్త UNIX సంకేతపదమును ప్రవే
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "కొత్త UNIX సంకేతపదమును తిరిగిటైపు చేయుము: "
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "%u లాగిన్‌ల వైఫల్యం కారణంగా ఖాతా లాక్అయింది"
diff --git a/po/tr.po b/po/tr.po
index df141f73..9ad9187f 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2006-05-03 19:00+0200\n"
"Last-Translator: Koray Löker <loker@pardus.org.tr>\n"
"Language-Team: Türkçe <tr@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "Bilinmeyen PAM hatası"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Yeni %s%sparolası: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Yeni %s%sparolasını tekrar girin: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Üzgünüm, parolalar birbirine uymuyor."
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "Parola değiştirilmedi"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "YANLIŞ PAROLA: %s"
@@ -352,14 +352,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Parola değiştirilmedi"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Parola kullanımda. Lütfen başka bir parola seçin."
@@ -428,20 +428,20 @@ msgstr "pam_set_item() çalıştırılamadı\n"
msgid "login: failure forking: %m"
msgstr "giriş: çatallama yapılamadı: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "STRESS parolası değiştiriliyor "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Yeni STRESS parolası girin: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Yeni STRESS parolasını tekrar girin: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Doğrulama hatalı: parola değiştirilmedi"
@@ -450,7 +450,7 @@ msgstr "Doğrulama hatalı: parola değiştirilmedi"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -493,11 +493,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr ""
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -512,6 +507,11 @@ msgid ""
msgstr ""
"%s: [--file DosyanınTamYolu] [--user KullanıcıAdı] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "Hesabınızın süresi doldu; lütfen sistem yöneticinizle bağlantıya geçin"
diff --git a/po/uk.po b/po/uk.po
index 67525024..e258e6ae 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.uk\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2006-05-03 18:59+0200\n"
"Last-Translator: Ivan Petrouchtchak <ivanpetrouchtchak@yahoo.com>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
@@ -168,19 +168,19 @@ msgid "Unknown PAM error"
msgstr "Невідома помилка PAM"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "Новий пароль %s%s:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Повторіть новий пароль %s%s: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Ваші нові паролі не співпадають."
@@ -231,7 +231,7 @@ msgid "Password unchanged"
msgstr "Пароль не змінено"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "ПОГАНИЙ ПАРОЛЬ: %s"
@@ -355,14 +355,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Пароль не змінено"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Пароль вже вживається. Виберіть інший."
@@ -431,20 +431,20 @@ msgstr "помилка pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "вхід: помилка розгалуження: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "Зміна пароля STRESS для "
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Введіть новий пароль STRESS: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Повторіть новий пароль STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Перевірку не пройдено; пароль не змінено"
@@ -453,7 +453,7 @@ msgstr "Перевірку не пройдено; пароль не змінен
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -497,11 +497,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: Не вдається скинути всіх користувачів до не-нуль\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -517,6 +512,11 @@ msgstr ""
"%s: [--file rooted-filename] [--user ім'я користувача] [--reset[=n]] [--"
"quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 4d251989..32e41700 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-20 15:43+1000\n"
"Last-Translator: Leah Liu <lliu@redhat.com>\n"
"Language-Team: Simplified Chinese <zh@li.org>\n"
@@ -169,19 +169,19 @@ msgid "Unknown PAM error"
msgstr "未知的 PAM 错误"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "新的 %s%s密码:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "重新输入新的 %s%s密码:"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "抱歉,密码不匹配。"
@@ -232,7 +232,7 @@ msgid "Password unchanged"
msgstr "密码未更改"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "无效的密码: %s"
@@ -354,13 +354,13 @@ msgstr "创建目录 '%s'。"
msgid "Unable to create directory %s: %m"
msgstr "无法创建目录 %s:%m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
msgid "Password change aborted."
msgstr "密码更改取消。"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "密码已使用。请选择其他密码。"
@@ -425,20 +425,20 @@ msgstr "未能 pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "登录:故障派生:%m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "为 %s 更改 STRESS 密码。"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "输入新的 STRESS 密码:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "重新输入新的 STRESS 密码:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "校验类型错误;密码未更改"
@@ -447,7 +447,7 @@ msgstr "校验类型错误;密码未更改"
msgid "Account temporary locked (%ld seconds left)"
msgstr "帐户暂时锁住(还有 %ld 秒)"
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr "因为 %u 失败登录而锁定帐户"
@@ -489,11 +489,6 @@ msgstr "%s: [--文件 根文件名] [--用户 用户名] [--重设置[=n]] [--
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: 无法将所有用户重设置为非零\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, fuzzy, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr "因为 %u 失败登录而锁定帐户"
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -507,6 +502,11 @@ msgid ""
" [-r] [--reset[=n]] [--quiet]\n"
msgstr "%s: [--文件 根文件名] [--用户 用户名] [--重设置[=n]] [--安静]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "您的帐户已失效;请与系统管理员取得联系"
@@ -559,3 +559,7 @@ msgstr "输入新的 UNIX 密码:"
#: modules/pam_unix/pam_unix_passwd.c:678
msgid "Retype new UNIX password: "
msgstr "重新输入新的 UNIX 密码:"
+
+#, fuzzy
+#~ msgid "Account locked due to %hu failed logins"
+#~ msgstr "因为 %u 失败登录而锁定帐户"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index a712bb58..d1682ebe 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM.tip\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2008-10-21 15:51+1000\n"
"Last-Translator: Terry Chuang <tchuang@redhat.com>\n"
"Language-Team: <zh@li.org>\n"
@@ -167,19 +167,19 @@ msgid "Unknown PAM error"
msgstr "未知的 PAM 錯誤"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "新 %s%s密碼:"
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "再次輸入新的 %s%s密碼:"
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "抱歉,密碼不符合。"
@@ -230,7 +230,7 @@ msgid "Password unchanged"
msgstr "密碼未變更"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "不良的密碼: %s"
@@ -353,14 +353,14 @@ msgstr "建立目錄「%s」。"
msgid "Unable to create directory %s: %m"
msgstr "無法建立 %s 目錄:%m"
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "密碼未變更"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "密碼已經由其他使用者使用。請選擇其他密碼。"
@@ -425,20 +425,20 @@ msgstr "pam_set_item() 失敗\n"
msgid "login: failure forking: %m"
msgstr "登入:失敗的分叉:%m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, c-format
msgid "Changing STRESS password for %s."
msgstr "正在更改 %s 的 STRESS 密碼。"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "輸入新的 STRESS 密碼:"
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "再次輸入新的 STRESS 密碼:"
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "確認錯誤輸入;密碼未變更"
@@ -447,7 +447,7 @@ msgstr "確認錯誤輸入;密碼未變更"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -490,11 +490,6 @@ msgstr ""
msgid "%s: Can't reset all users to non-zero\n"
msgstr "%s: 無法將所有使用者重新設定為非零\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -509,6 +504,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr "您的帳戶已經逾期,請洽詢您的系統管理員"
diff --git a/po/zu.po b/po/zu.po
index a9c0afc1..195b8939 100644
--- a/po/zu.po
+++ b/po/zu.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n"
-"POT-Creation-Date: 2008-10-22 20:01+0200\n"
+"POT-Creation-Date: 2008-11-28 15:16+0100\n"
"PO-Revision-Date: 2006-11-03 12:03\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
@@ -163,19 +163,19 @@ msgid "Unknown PAM error"
msgstr "Iphutha le-PAM elingaziwa"
#: modules/pam_cracklib/pam_cracklib.c:64
-#: modules/pam_pwhistory/pam_pwhistory.c:61
+#: modules/pam_pwhistory/pam_pwhistory.c:62
#, c-format
msgid "New %s%spassword: "
msgstr "%s%siphasiwedi entsha: "
#: modules/pam_cracklib/pam_cracklib.c:66
-#: modules/pam_pwhistory/pam_pwhistory.c:62
+#: modules/pam_pwhistory/pam_pwhistory.c:64
#, c-format
msgid "Retype new %s%spassword: "
msgstr "Thayipha kabusha %s%siphasiwedi entsha: "
#: modules/pam_cracklib/pam_cracklib.c:67
-#: modules/pam_pwhistory/pam_pwhistory.c:63
+#: modules/pam_pwhistory/pam_pwhistory.c:65
msgid "Sorry, passwords do not match."
msgstr "Uxolo, amaphasiwedi awahambelani."
@@ -226,7 +226,7 @@ msgid "Password unchanged"
msgstr "Iphasiwedi ayishintshwanga"
#: modules/pam_cracklib/pam_cracklib.c:584
-#: modules/pam_cracklib/pam_cracklib.c:709
+#: modules/pam_cracklib/pam_cracklib.c:710
#, c-format
msgid "BAD PASSWORD: %s"
msgstr "IPHASIWEDI ENGASEBENZI: %s"
@@ -349,14 +349,14 @@ msgstr ""
msgid "Unable to create directory %s: %m"
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:224
-#: modules/pam_pwhistory/pam_pwhistory.c:258
+#: modules/pam_pwhistory/pam_pwhistory.c:231
+#: modules/pam_pwhistory/pam_pwhistory.c:267
#, fuzzy
msgid "Password change aborted."
msgstr "Iphasiwedi ayishintshwanga"
-#: modules/pam_pwhistory/pam_pwhistory.c:235
-#: modules/pam_pwhistory/pam_pwhistory.c:295
+#: modules/pam_pwhistory/pam_pwhistory.c:242
+#: modules/pam_pwhistory/pam_pwhistory.c:304
#: modules/pam_unix/pam_unix_passwd.c:470
msgid "Password has been already used. Choose another."
msgstr "Le phasiwedi isetshenziswa ngothile. Khetha enye."
@@ -425,20 +425,20 @@ msgstr "Ihlulekile ukwenza i-pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "ngena: Ihlulekile ukuhlukanisa: %m"
-#: modules/pam_stress/pam_stress.c:476
+#: modules/pam_stress/pam_stress.c:475
#, fuzzy, c-format
msgid "Changing STRESS password for %s."
msgstr "Ukushintsha iphasiwedi ye-STRESS ye-"
-#: modules/pam_stress/pam_stress.c:490
+#: modules/pam_stress/pam_stress.c:489
msgid "Enter new STRESS password: "
msgstr "Faka iphasiwedi entsha ye-STRESS: "
-#: modules/pam_stress/pam_stress.c:493
+#: modules/pam_stress/pam_stress.c:492
msgid "Retype new STRESS password: "
msgstr "Thayipha iphasiwedi entsha ye-STRESS: "
-#: modules/pam_stress/pam_stress.c:522
+#: modules/pam_stress/pam_stress.c:521
msgid "Verification mis-typed; password unchanged"
msgstr "Ukufakazela akuthayiphiwanga kahle; iphasiwedi ayishintshwanga"
@@ -447,7 +447,7 @@ msgstr "Ukufakazela akuthayiphiwanga kahle; iphasiwedi ayishintshwanga"
msgid "Account temporary locked (%ld seconds left)"
msgstr ""
-#: modules/pam_tally/pam_tally.c:566
+#: modules/pam_tally/pam_tally.c:566 modules/pam_tally2/pam_tally2.c:520
#, c-format
msgid "Account locked due to %u failed logins"
msgstr ""
@@ -492,11 +492,6 @@ msgstr ""
"%s: Ayikwazi ukusetha kabusha bonke abasebenzisi ibase enombolweni ongelona "
"iqanda\n"
-#: modules/pam_tally2/pam_tally2.c:520
-#, c-format
-msgid "Account locked due to %hu failed logins"
-msgstr ""
-
#: modules/pam_tally2/pam_tally2.c:865
#, c-format
msgid "Login Failures Latest failure From\n"
@@ -511,6 +506,11 @@ msgid ""
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#: modules/pam_timestamp/pam_timestamp.c:339
+#, c-format
+msgid "Access granted (last access was %ld seconds ago)."
+msgstr ""
+
#: modules/pam_unix/pam_unix_acct.c:228 modules/pam_unix/pam_unix_acct.c:250
msgid "Your account has expired; please contact your system administrator"
msgstr ""