Compare commits

...

13 Commits

Author SHA1 Message Date
Alejandro Colomar 6a2ab3d760 Release 4.17.2
Signed-off-by: Alejandro Colomar <alx@kernel.org>
2025-01-10 19:39:46 -06:00
Remus-Gabriel Chelu bb4a2daade man/, po/: Update Romanian translation
Add translation of manual pages, and update the translation of strings.

Bug-Debian: https://bugs.debian.org/1080487
[alx: fix typo: po => ro]
Reviewed-by: Alejandro Colomar <alx@kernel.org>
2025-01-10 13:22:17 +01:00
Tobias Stoeckmann aebc4dd8c6 lib/: Set O_CLOEXEC for static FILE handles
With glibc we can use "e" in mode argument to set O_CLOEXEC on
opened files. The /etc/shadow and /etc/gshadow file handles should
be protected to make sure that they are never passed to child
processes by accident.

Reviewed-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2025-01-10 10:23:57 +01:00
Tobias Stoeckmann a772484f00 lib/: Use _exit in case of execv errors
Calling exit might trigger cleanup functions registered through
atexit. Since some programs use this mechanism, be extra cautious to
never release passwd/group locks too early.

Reviewed-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2025-01-10 10:23:57 +01:00
bubu f2b5eb1274 Update French translation
Bug-Debian: https://bugs.debian.org/1076260
2025-01-10 00:18:32 +01:00
Américo Monteiro bc619a89da man: Add Portuguese translation
Bug-Debian: https://bugs.debian.org/968304
2025-01-10 00:14:13 +01:00
Tobias Stoeckmann c45b076b1c login: Fix no-pam authorization regression
The list_match function handles EXCEPT entries through recursive
calls. It calls itself with NULL, which was then passed to strtok so
parsing continued at current position.

Replacing strtok with strsep, this means that EXCEPT entries never
match, because strsep(NULL, ...) always returns NULL, i.e. the
code treats everything after EXCEPT as non-existing.

Fix this by passing current list pointer to recursive call.

Fixes: 90afe61003 (2024-07-04; "lib/, src/: Use strsep(3) instead of strtok(3)")
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2025-01-08 18:01:27 +01:00
Alexander Kanavin 15524dd613 lib/attr.h: use C23 attributes only with gcc >= 10
These are not available on earlier versions and builds break there.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
2025-01-08 17:18:27 +01:00
Scott Martin cc2ef99a49 man/: Update link to Wikipedia to use HTTPS
The link to Wikipedia's article "Password strength" was added here in
2008 and Wikipedia went HTTPS-only 7 years later.

Link: <https://diff.wikimedia.org/2015/06/12/securing-wikimedia-sites-with-https/>
2025-01-07 16:05:27 +01:00
Alejandro Colomar 8b36662205 lib/chkname.c: login_name_max_size(): Put limits for LOGIN_NAME_MAX and sysconf(_SC_LOGIN_NAME_MAX)
GNU Hurd doesn't define LOGIN_NAME_MAX.  GNU Hurd recommends having no
system limits.  When a program needs a limit, because it needs to
validate user input, it is recommended that each program defines its own
limit macros.  The rationale is that this avoids hard-coded limits in
ABIs, which cannot be modified ever.

However, that doesn't mean that programs should have no limits at all.
We use this limit for validating user input, and so we shouldn't allow
anything just because the system doesn't want to set a limit.

So, when sysconf(2) returns -1, either due to an error or due to a claim
for no limits, we must fall back to the LOGIN_NAME_MAX value.  And if
the system doesn't define that value, we must define it ourselves (we're
more or less free to choose any value, so let's pick the one that glibc
provides nowadays).

Fixes: 6a1f45d932 (2024-02-04; "lib/chkname.c: Support unlimited user name lengths")
Closes: <https://github.com/shadow-maint/shadow/issues/1166>
Cc: Chris Hofstaedtler <zeha@debian.org>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Reviewed-by: Iker Pedrosa <ipedrosa@redhat.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
2025-01-07 15:25:31 +01:00
Tobias Stoeckmann 0b30e1ed29 src/login_nopam.c: Fix compiler warnings
The function user_match actually modifies the string passed as its
first argument, so use char * instead of const char *.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2025-01-07 14:46:31 +01:00
Serge Hallyn 2bbe1af294 Release 4.17.1
Signed-off-by: Serge Hallyn <serge@hallyn.com>
2024-12-31 13:23:26 -06:00
Tobias Stoeckmann e3d051e4a8 su: Fix su - regression
Launch a login shell again if requested through "su -" or "su -l".

Fixes: d9923431eb ("src/: Use xasprintf() instead of its pattern")
Closes: <https://github.com/shadow-maint/shadow/issues/1160>
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2024-12-31 19:06:00 +01:00
15 changed files with 19034 additions and 1392 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ m4_define([libsubid_abi_major], 5)
m4_define([libsubid_abi_minor], 0) m4_define([libsubid_abi_minor], 0)
m4_define([libsubid_abi_micro], 0) m4_define([libsubid_abi_micro], 0)
m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro]) m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro])
AC_INIT([shadow], [4.17.0], [pkg-shadow-devel@lists.alioth.debian.org], [], AC_INIT([shadow], [4.17.2], [pkg-shadow-devel@lists.alioth.debian.org], [],
[https://github.com/shadow-maint/shadow]) [https://github.com/shadow-maint/shadow])
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax]) AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax])
AC_CONFIG_MACRO_DIRS([m4]) AC_CONFIG_MACRO_DIRS([m4])
+1 -1
View File
@@ -5,7 +5,7 @@
#include "config.h" #include "config.h"
#if defined(__GNUC__) #if (__GNUC__ >= 10)
# define MAYBE_UNUSED [[gnu::unused]] # define MAYBE_UNUSED [[gnu::unused]]
# define NORETURN [[gnu::__noreturn__]] # define NORETURN [[gnu::__noreturn__]]
# define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]] # define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]]
+8 -6
View File
@@ -2,7 +2,7 @@
// SPDX-FileCopyrightText: 1996-2000, Marek Michałkiewicz // SPDX-FileCopyrightText: 1996-2000, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2001-2005, Tomasz Kłoczko // SPDX-FileCopyrightText: 2001-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2005-2008, Nicolas François // SPDX-FileCopyrightText: 2005-2008, Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org> // SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
@@ -27,8 +27,6 @@
#include <limits.h> #include <limits.h>
#include <stdbool.h> #include <stdbool.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h>
#include <sys/param.h>
#include <unistd.h> #include <unistd.h>
#include "defines.h" #include "defines.h"
@@ -36,6 +34,11 @@
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#ifndef LOGIN_NAME_MAX
# define LOGIN_NAME_MAX 256
#endif
int allow_bad_names = false; int allow_bad_names = false;
@@ -44,12 +47,11 @@ login_name_max_size(void)
{ {
long conf; long conf;
errno = 0;
conf = sysconf(_SC_LOGIN_NAME_MAX); conf = sysconf(_SC_LOGIN_NAME_MAX);
if (conf == -1 && errno != 0) if (conf == -1)
return LOGIN_NAME_MAX; return LOGIN_NAME_MAX;
return MIN(conf, PTRDIFF_MAX); return conf;
} }
+1 -1
View File
@@ -55,7 +55,7 @@ void setsgent (void)
if (NULL != shadow) { if (NULL != shadow) {
rewind (shadow); rewind (shadow);
} else { } else {
shadow = fopen (SGROUP_FILE, "r"); shadow = fopen (SGROUP_FILE, "re");
} }
} }
+1 -1
View File
@@ -32,7 +32,7 @@ static int run_part(char *script_path, const char *name, const char *action)
setenv("SUBJECT",name,1); setenv("SUBJECT",name,1);
execv(script_path,args); execv(script_path,args);
fprintf(shadow_logfd, "execv: %s\n", strerror(errno)); fprintf(shadow_logfd, "execv: %s\n", strerror(errno));
exit(1); _exit(1);
} }
pid_status = wait(&wait_status); pid_status = wait(&wait_status);
+1 -1
View File
@@ -41,7 +41,7 @@ void setspent (void)
if (NULL != shadow) { if (NULL != shadow) {
rewind (shadow); rewind (shadow);
}else { }else {
shadow = fopen (SHADOW_FILE, "r"); shadow = fopen (SHADOW_FILE, "re");
} }
} }
+2 -2
View File
@@ -35,11 +35,11 @@ run_command(const char *cmd, const char *argv[],
(void) execve (cmd, (char * const *) argv, (void) execve (cmd, (char * const *) argv,
(char * const *) envp); (char * const *) envp);
if (ENOENT == errno) { if (ENOENT == errno) {
exit (E_CMD_NOTFOUND); _exit (E_CMD_NOTFOUND);
} }
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
shadow_progname, cmd, strerror (errno)); shadow_progname, cmd, strerror (errno));
exit (E_CMD_NOEXEC); _exit (E_CMD_NOEXEC);
} else if ((pid_t)-1 == pid) { } else if ((pid_t)-1 == pid) {
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
shadow_progname, cmd, strerror (errno)); shadow_progname, cmd, strerror (errno));
+1 -1
View File
@@ -137,7 +137,7 @@
<para> <para>
You can find advice on how to choose a strong password on You can find advice on how to choose a strong password on
http://en.wikipedia.org/wiki/Password_strength https://en.wikipedia.org/wiki/Password_strength
</para> </para>
</refsect2> </refsect2>
</refsect1> </refsect1>
+1 -1
View File
@@ -1,6 +1,6 @@
# LINGUAS # LINGUAS
LINGUAS = da de fr it pl ru sv uk zh_CN LINGUAS = da de fr it pl pt ro ru sv uk zh_CN
# These variables are generated based on the LINGUAS list # These variables are generated based on the LINGUAS list
POFILES = $(patsubst %,$(srcdir)/%.po,$(LINGUAS)) POFILES = $(patsubst %,$(srcdir)/%.po,$(LINGUAS))
+9452
View File
File diff suppressed because it is too large Load Diff
+8236
View File
File diff suppressed because it is too large Load Diff
+133 -180
View File
@@ -1,7 +1,7 @@
# translation of shadow-man.po to French # translation of shadow-man.po to French
# French translation of the shadow's man pages # French translation of the shadow's man pages
# Traduction des pages de manuel livrées avec shadow # Traduction des pages de manuel livrées avec shadow
# Copyright (C) 2011-2022 Debian French l10n team <debian-l10n-french@lists.debian.org> # Copyright (C) 2011-2024 Debian French l10n team <debian-l10n-french@lists.debian.org>
# #
# Certaines pages étaient déjà traduites: # Certaines pages étaient déjà traduites:
# chpasswd: Amand Tihon <amand@alrj.org> # chpasswd: Amand Tihon <amand@alrj.org>
@@ -17,13 +17,13 @@
# useradd: Frédéric Delanoy, 2000. # useradd: Frédéric Delanoy, 2000.
# Christian Perrier <bubulle@debian.org>, 2009, 2012. # Christian Perrier <bubulle@debian.org>, 2009, 2012.
# Thomas Blein <tblein@tblein.eu>, 2011, 2012, 2013, 2015. # Thomas Blein <tblein@tblein.eu>, 2011, 2012, 2013, 2015.
# bubu <bubub@no-log.org>, 2022, 2023 # bubu <bubub@no-log.org>, 2022, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: shadow-man-pages 4.0.18\n" "Project-Id-Version: shadow-man-pages 4.16.0\n"
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
"POT-Creation-Date: 2024-03-14 18:23-0500\n" "POT-Creation-Date: 2024-06-18 16:40-0500\n"
"PO-Revision-Date: 2023-04-26 20:04+0200\n" "PO-Revision-Date: 2024-07-06 15:36+0200\n"
"Last-Translator: bubu <bubub@no-log.org>\n" "Last-Translator: bubu <bubub@no-log.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"Language: fr\n" "Language: fr\n"
@@ -31,7 +31,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.4.2\n" "X-Generator: Poedit 3.2.2\n"
#, c-format #, c-format
msgid "Warning: unknown group %s\n" msgid "Warning: unknown group %s\n"
@@ -53,7 +53,7 @@ msgid " Contact the system administrator."
msgstr " Contactez l'administrateur système." msgstr " Contactez l'administrateur système."
msgid " Choose a new password." msgid " Choose a new password."
msgstr " Choisissez un nouveau mot de passe " msgstr " Choisissez un nouveau mot de passe"
msgid "You must change your password." msgid "You must change your password."
msgstr "Vous devez changer votre mot de passe." msgstr "Vous devez changer votre mot de passe."
@@ -98,9 +98,6 @@ msgid "crypt method not supported by libcrypt? (%s)\n"
msgstr "" msgstr ""
"la méthode de chiffrement n'est pas prise en charge par libcrypt ? (%s)\n" "la méthode de chiffrement n'est pas prise en charge par libcrypt ? (%s)\n"
msgid "Environment overflow\n"
msgstr "Débordement de l'environnement\n"
#, c-format #, c-format
msgid "You may not change $%s\n" msgid "You may not change $%s\n"
msgstr "Vous ne devriez pas changer $%s\n" msgstr "Vous ne devriez pas changer $%s\n"
@@ -259,10 +256,9 @@ msgstr ""
msgid "%s: Could not set caps\n" msgid "%s: Could not set caps\n"
msgstr "%s : Impossible de définir les plafonds\n" msgstr "%s : Impossible de définir les plafonds\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: snprintf failed!\n"
msgid "%s: stpeprintf failed!\n" msgid "%s: stpeprintf failed!\n"
msgstr "%s : échec de snprintf !\n" msgstr "%s : échec de stpeprintf !\n"
#, c-format #, c-format
msgid "%s: open of %s failed: %s\n" msgid "%s: open of %s failed: %s\n"
@@ -272,10 +268,9 @@ msgstr "%s : échec de l'ouverture de %s : %s\n"
msgid "%s: write to %s failed: %s\n" msgid "%s: write to %s failed: %s\n"
msgstr "%s : échec de l'écriture sur %s : %s\n" msgstr "%s : échec de l'écriture sur %s : %s\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: open of %s failed: %s\n"
msgid "%s: closing %s failed: %s\n" msgid "%s: closing %s failed: %s\n"
msgstr "%s : échec de l'ouverture de %s : %s\n" msgstr "%s : échec de la fermeture de %s : %s\n"
msgid "Too many logins.\n" msgid "Too many logins.\n"
msgstr "Trop de connexions.\n" msgstr "Trop de connexions.\n"
@@ -325,7 +320,7 @@ msgstr "trop court"
#, c-format #, c-format
msgid "Bad password: %s. " msgid "Bad password: %s. "
msgstr "Mot de passe erroné : %s." msgstr "Mot de passe erroné : %s. "
#, c-format #, c-format
msgid "passwd: pam_start() failed, error %d\n" msgid "passwd: pam_start() failed, error %d\n"
@@ -363,11 +358,11 @@ msgstr ""
"%s\n" "%s\n"
msgid "Password: " msgid "Password: "
msgstr "Mot de passe :" msgstr "Mot de passe : "
#, c-format #, c-format
msgid "%s's Password: " msgid "%s's Password: "
msgstr "Mot de passe de %s :" msgstr "Mot de passe de %s : "
#, c-format #, c-format
msgid "Incorrect password for %s.\n" msgid "Incorrect password for %s.\n"
@@ -399,10 +394,9 @@ msgstr "%s : Impossible d'accéder au répertoire chroot %s : %s\n"
msgid "%s: unable to chroot to directory %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n"
msgstr "%s : chroot impossible sur répertoire %s : %s\n" msgstr "%s : chroot impossible sur répertoire %s : %s\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: cannot chdir to chroot directory %s: %s\n"
msgid "%s: cannot chdir in chroot directory %s: %s\n" msgid "%s: cannot chdir in chroot directory %s: %s\n"
msgstr "%s : chdir impossible sur répertoire chroot %s : %s\n" msgstr "%s : chdir impossible dans le répertoire chroot %s : %s\n"
#, c-format #, c-format
msgid "" msgid ""
@@ -460,10 +454,9 @@ msgstr "Impossible de commencer la transaction SELinux\n"
msgid "Could not query seuser for %s\n" msgid "Could not query seuser for %s\n"
msgstr "Impossible d'interroger seuser pour %s\n" msgstr "Impossible d'interroger seuser pour %s\n"
#, fuzzy, c-format #, c-format
#| msgid "Could not set serange for %s\n"
msgid "Could not set serange for %s to %s\n" msgid "Could not set serange for %s to %s\n"
msgstr "Impossible de définir serange pour %s\n" msgstr "Impossible de définir serange pour %s à %s\n"
#, c-format #, c-format
msgid "Could not set sename for %s\n" msgid "Could not set sename for %s\n"
@@ -546,15 +539,15 @@ msgstr "Impossible d'exécuter %s"
#, c-format #, c-format
msgid "Maximum subsystem depth reached\n" msgid "Maximum subsystem depth reached\n"
msgstr "" msgstr "Profondeur maximale du sous-système atteinte\n"
#, c-format #, c-format
msgid "Invalid root directory '%s'\n" msgid "Invalid root directory '%s'\n"
msgstr "Répertoire root '%s' non valable\n" msgstr "Répertoire du superutilisateur '%s' non valable\n"
#, c-format #, c-format
msgid "Can't change root directory to '%s'\n" msgid "Can't change root directory to '%s'\n"
msgstr "Impossible de changer le répertoire root pour '%s'\n" msgstr "Impossible de changer le répertoire du superutilisateur pour '%s'\n"
#, c-format #, c-format
msgid "%s: out of memory\n" msgid "%s: out of memory\n"
@@ -681,7 +674,7 @@ msgstr " -h, --help afficher ce message d'aide et quitter\n"
msgid " -i, --iso8601 use YYYY-MM-DD when printing dates\n" msgid " -i, --iso8601 use YYYY-MM-DD when printing dates\n"
msgstr "" msgstr ""
" -i, --iso8601 utiliser YYYY-MM-DD lors de l'affichage de " " -i, --iso8601 utiliser AAAA-MM-JJ lors de l'affichage de "
"dates\n" "dates\n"
msgid "" msgid ""
@@ -717,10 +710,8 @@ msgid " -R, --root CHROOT_DIR directory to chroot into\n"
msgstr "" msgstr ""
" -R, --root CHROOT_DIR répertoire dans lequel faire un chroot\n" " -R, --root CHROOT_DIR répertoire dans lequel faire un chroot\n"
#, fuzzy
#| msgid " -P, --prefix PREFIX_DI directory prefix\n"
msgid " -P, --prefix PREFIX_DIR directory prefix\n" msgid " -P, --prefix PREFIX_DIR directory prefix\n"
msgstr " -P, --prefix PREFIX_DI préfixe de répertoire\n" msgstr " -P, --prefix PREFIX_DIR préfixe de répertoire\n"
msgid "" msgid ""
" -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n"
@@ -733,16 +724,16 @@ msgstr ""
"Entrer la nouvelle valeur, ou appuyer sur ENTER pour la valeur par défaut" "Entrer la nouvelle valeur, ou appuyer sur ENTER pour la valeur par défaut"
msgid "Minimum Password Age" msgid "Minimum Password Age"
msgstr "Âge minimal du mot de passe " msgstr "Âge minimal du mot de passe"
msgid "Maximum Password Age" msgid "Maximum Password Age"
msgstr "Âge maximal du mot de passe " msgstr "Âge maximal du mot de passe"
msgid "Last Password Change (YYYY-MM-DD)" msgid "Last Password Change (YYYY-MM-DD)"
msgstr "Dernière modification du mot de passe (YYYY-MM-DD)" msgstr "Dernière modification du mot de passe (YYYY-MM-DD)"
msgid "Password Expiration Warning" msgid "Password Expiration Warning"
msgstr "Avertissement d'expiration du mot de passe " msgstr "Avertissement d'expiration du mot de passe"
msgid "Password Inactive" msgid "Password Inactive"
msgstr "Mot de passe inactif" msgstr "Mot de passe inactif"
@@ -754,16 +745,16 @@ msgid "never"
msgstr "jamais" msgstr "jamais"
msgid "future" msgid "future"
msgstr "" msgstr "futur"
msgid "Last password change\t\t\t\t\t: " msgid "Last password change\t\t\t\t\t: "
msgstr "Dernière modification du mot de passe\t\t\t\t\t :" msgstr "Dernière modification du mot de passe\t\t\t\t\t : "
msgid "password must be changed" msgid "password must be changed"
msgstr "le mot de passe doit être changé" msgstr "le mot de passe doit être changé"
msgid "Password expires\t\t\t\t\t: " msgid "Password expires\t\t\t\t\t: "
msgstr "Le mot de passe expire\t\t\t\t\t :" msgstr "Le mot de passe expire\t\t\t\t\t : "
msgid "Password inactive\t\t\t\t\t: " msgid "Password inactive\t\t\t\t\t: "
msgstr "Mot de passe inactif\t\t\t\t\t : " msgstr "Mot de passe inactif\t\t\t\t\t : "
@@ -942,14 +933,6 @@ msgstr "%s : '%s' contient des caractères illégaux\n"
msgid "%s: user '%s' does not exist\n" msgid "%s: user '%s' does not exist\n"
msgstr "%s : l'utilisateur '%s' n'existe pas\n" msgstr "%s : l'utilisateur '%s' n'existe pas\n"
#, c-format
msgid "%s: cannot change user '%s' on NIS client.\n"
msgstr "%s : impossible de changer l'utilisateur '%s' sur le client NIS.\n"
#, c-format
msgid "%s: '%s' is the NIS master for this client.\n"
msgstr "%s : '%s' est le NIS maître pour ce client.\n"
#, c-format #, c-format
msgid "Changing the user information for %s\n" msgid "Changing the user information for %s\n"
msgstr "Modifier les informations associées à un utilisateur pour %s\n" msgstr "Modifier les informations associées à un utilisateur pour %s\n"
@@ -988,10 +971,9 @@ msgstr ""
"chiffrement\n" "chiffrement\n"
" SHA ou BCRYPT ou YESCRYPT\n" " SHA ou BCRYPT ou YESCRYPT\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: unsupported crypt method: %s\n"
msgid "%s: no crypt method defined\n" msgid "%s: no crypt method defined\n"
msgstr "%s : la méthode de chiffrement n'est pas prise en charge : %s\n" msgstr "%s : aucune méthode de chiffrement définie\n"
#, c-format #, c-format
msgid "%s: %s flag is only allowed with the %s flag\n" msgid "%s: %s flag is only allowed with the %s flag\n"
@@ -1046,16 +1028,16 @@ msgstr ""
msgid "Login Shell" msgid "Login Shell"
msgstr "Interpréteur de commandes de connexion" msgstr "Interpréteur de commandes de connexion"
#, fuzzy, c-format #, c-format
#| msgid "%s: Cannot get the size of %s: %s\n"
msgid "Cannot parse shell files: %s" msgid "Cannot parse shell files: %s"
msgstr "%s : Impossible d'obtenir la taille de %s : %s\n" msgstr ""
"Impossible d'analyser les fichiers de l'interpréteur de commandes : %s"
#, fuzzy, c-format #, c-format
#| msgid "%s: cannot create new defaults file: %s\n"
msgid "Cannot evaluate entries in shell files: %s" msgid "Cannot evaluate entries in shell files: %s"
msgstr "" msgstr ""
"%s : impossible de créer le nouveau fichier des valeurs par défaut : %s\n" "Impossible d'évaluer les entrées dans les fichiers de l'interpréteur de "
"commande : %s"
#, c-format #, c-format
msgid "You may not change the shell for '%s'.\n" msgid "You may not change the shell for '%s'.\n"
@@ -1069,11 +1051,10 @@ msgstr "Changer l'interpréteur de commandes de connexion pour %s\n"
msgid "%s: Invalid entry: %s\n" msgid "%s: Invalid entry: %s\n"
msgstr "%s : Entrée non valable : %s\n" msgstr "%s : Entrée non valable : %s\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: %s is an invalid shell\n"
msgid "%s: Warning: %s is an invalid shell\n" msgid "%s: Warning: %s is an invalid shell\n"
msgstr "" msgstr ""
"%s : %s est un interpréteur de commandes non valable\n" "%s : Attention : %s est un interpréteur de commandes non valable\n"
"\n" "\n"
#, c-format #, c-format
@@ -1258,10 +1239,10 @@ msgid "Changing the password for group %s\n"
msgstr "Modifier le mot de passe pour le groupe %s\n" msgstr "Modifier le mot de passe pour le groupe %s\n"
msgid "New Password: " msgid "New Password: "
msgstr "Nouveau mot de passe :" msgstr "Nouveau mot de passe : "
msgid "Re-enter new password: " msgid "Re-enter new password: "
msgstr "Réentrez le nouveau mot de passe :" msgstr "Réentrez le nouveau mot de passe : "
msgid "They don't match; try again" msgid "They don't match; try again"
msgstr "Ils ne correspondent pas ; essayez à nouveau" msgstr "Ils ne correspondent pas ; essayez à nouveau"
@@ -1343,8 +1324,7 @@ msgstr "Nom de membre utilisateur '%s' non valable\n"
msgid "%s: '%s' is not a valid group name\n" msgid "%s: '%s' is not a valid group name\n"
msgstr "%s : '%s' n'est pas un nom de groupe valable\n" msgstr "%s : '%s' n'est pas un nom de groupe valable\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: Cannot open %s: %s\n"
msgid "%s: cannot open %s: %s\n" msgid "%s: cannot open %s: %s\n"
msgstr "%s : Impossible d'ouvrir %s : %s\n" msgstr "%s : Impossible d'ouvrir %s : %s\n"
@@ -1395,16 +1375,6 @@ msgstr ""
msgid "%s: group '%s' does not exist\n" msgid "%s: group '%s' does not exist\n"
msgstr "%s : le groupe '%s' n'existe pas\n" msgstr "%s : le groupe '%s' n'existe pas\n"
#, c-format
msgid "%s: group '%s' is a NIS group\n"
msgstr "%s : le groupe '%s' est un groupe NIS\n"
#, c-format
msgid "%s: %s is the NIS master\n"
msgstr ""
"%s : %s est le NIS maître\n"
"\n"
#, c-format #, c-format
msgid "%s: user '%s' is already a member of '%s'\n" msgid "%s: user '%s' is already a member of '%s'\n"
msgstr "%s : l'utilisateur '%s' est déjà membre de '%s'\n" msgstr "%s : l'utilisateur '%s' est déjà membre de '%s'\n"
@@ -1430,7 +1400,7 @@ msgid ""
msgstr "" msgstr ""
" -g, --group groupname changer le nom de groupe au lieu du groupe " " -g, --group groupname changer le nom de groupe au lieu du groupe "
"de l'utilisateur\n" "de l'utilisateur\n"
" (seulement pour root)\n" " (seulement pour le superutilisateur)\n"
msgid "\n" msgid "\n"
msgstr "\n" msgstr "\n"
@@ -1463,7 +1433,7 @@ msgstr "%s : votre nom de groupe ne correspond pas à votre nom utilisateur\n"
#, c-format #, c-format
msgid "%s: only root can use the -g/--group option\n" msgid "%s: only root can use the -g/--group option\n"
msgstr "%s : seul root peut utiliser l'option -g/--group\n" msgstr "%s : seul le superutilisateur peut utiliser l'option -g/--group\n"
msgid "" msgid ""
" -a, --append append the users mentioned by -U option to " " -a, --append append the users mentioned by -U option to "
@@ -1499,10 +1469,6 @@ msgstr ""
msgid "%s: invalid group name '%s'\n" msgid "%s: invalid group name '%s'\n"
msgstr "%s : nom de groupe '%s' non valable\n" msgstr "%s : nom de groupe '%s' non valable\n"
#, c-format
msgid "%s: group %s is a NIS group\n"
msgstr "%s : le groupe %s est un groupe NIS\n"
#, c-format #, c-format
msgid "%s: unknown user %s\n" msgid "%s: unknown user %s\n"
msgstr "%s : utilisateur inconnu %s\n" msgstr "%s : utilisateur inconnu %s\n"
@@ -1552,7 +1518,7 @@ msgstr "entrée de fichier de groupe non valable"
#, c-format #, c-format
msgid "delete line '%s'? " msgid "delete line '%s'? "
msgstr "effacer la ligne '%s' ?" msgstr "effacer la ligne '%s' ? "
msgid "duplicate group entry" msgid "duplicate group entry"
msgstr "dupliquer l'entrée de groupe" msgstr "dupliquer l'entrée de groupe"
@@ -1630,10 +1596,6 @@ msgstr ""
" -b, --before DAYS afficher uniquement les enregistrements de " " -b, --before DAYS afficher uniquement les enregistrements de "
"journaux plus vieux que DAYS\n" "journaux plus vieux que DAYS\n"
#, fuzzy
#| msgid ""
#| " -C, --clear clear lastlog record of an user (usable "
#| "only with -u)\n"
msgid "" msgid ""
" -C, --clear clear lastlog record of a user (usable only " " -C, --clear clear lastlog record of a user (usable only "
"with -u)\n" "with -u)\n"
@@ -1714,10 +1676,6 @@ msgstr "Utilisation : %s[-p][nom]\n"
msgid " %s [-p] [-h host] [-f name]\n" msgid " %s [-p] [-h host] [-f name]\n"
msgstr "\t%s [-p][-h host][-f nom]\n" msgstr "\t%s [-p][-h host][-f nom]\n"
#, c-format
msgid " %s [-p] -r host\n"
msgstr " %s [-p] -r host\n"
#, c-format #, c-format
msgid "configuration error - cannot parse %s value: '%d'" msgid "configuration error - cannot parse %s value: '%d'"
msgstr "erreur de paramétrage - ne peut pas analyser %s valeur : '%d'" msgstr "erreur de paramétrage - ne peut pas analyser %s valeur : '%d'"
@@ -1757,10 +1715,10 @@ msgstr "connexion : abandon, échec PAM : %s\n"
#, c-format #, c-format
msgid "%s login: " msgid "%s login: "
msgstr "%s connexion :" msgstr "%s connexion : "
msgid "login: " msgid "login: "
msgstr "login :" msgstr "login : "
#, c-format #, c-format
msgid "Maximum number of tries exceeded (%u)\n" msgid "Maximum number of tries exceeded (%u)\n"
@@ -1782,7 +1740,7 @@ msgstr "%s : échec de la création d'un processus enfant : %s"
#, c-format #, c-format
msgid "TIOCSCTTY failed on %s" msgid "TIOCSCTTY failed on %s"
msgstr " échec du TIOCSCTTY sur %s" msgstr "échec du TIOCSCTTY sur %s"
msgid "Warning: login re-enabled after temporary lockout." msgid "Warning: login re-enabled after temporary lockout."
msgstr "Attention : connexion réactivée après blocage temporaire." msgstr "Attention : connexion réactivée après blocage temporaire."
@@ -1809,16 +1767,13 @@ msgstr "Utilisation : logoutd\n"
msgid "%s: gid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgid "%s: gid range [%lu-%lu) -> [%lu-%lu) not allowed\n"
msgstr "%s : éventail de GID [%lu-%lu)-> [%lu-%lu) non autorisé\n" msgstr "%s : éventail de GID [%lu-%lu)-> [%lu-%lu) non autorisé\n"
#, fuzzy, c-format #, c-format
#| msgid ""
#| "usage: %s <pid> <gid> <lowergid> <count> [ <gid> <lowergid> "
#| "<count> ] ... \n"
msgid "" msgid ""
"usage: %s [<pid|fd:<pidfd>] <gid> <lowergid> <count> [ <gid> <lowergid> " "usage: %s [<pid|fd:<pidfd>] <gid> <lowergid> <count> [ <gid> <lowergid> "
"<count> ] ... \n" "<count> ] ... \n"
msgstr "" msgstr ""
"utilisation : %s <pid> <gid> <lowergid> <count> [ <gid> <lowergid> " "utilisation : %s [<pid|fd:<pidfd>] <gid> <lowergid> <count> [ <gid> "
"<count> ] ... \n" "<lowergid> <count> ] ... \n"
#, c-format #, c-format
msgid "%s: kernel doesn't support setgroups restrictions\n" msgid "%s: kernel doesn't support setgroups restrictions\n"
@@ -1842,20 +1797,16 @@ msgstr ""
"%s : Echec de la politique %s setgroups : %s\n" "%s : Echec de la politique %s setgroups : %s\n"
" \n" " \n"
#, fuzzy, c-format #, c-format
#| msgid "%s: Could not stat directory for target %u\n"
msgid "%s: Could not stat directory for process\n" msgid "%s: Could not stat directory for process\n"
msgstr "%s : Impossible de statuer sur le répertoire de la cible %u\n" msgstr "%s : Impossible de statuer sur le répertoire du processus\n"
#, fuzzy, c-format #, c-format
#| msgid ""
#| "%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu "
#| "st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n"
msgid "" msgid ""
"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" "%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:"
"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" "%lu, gid:%lu pw_gid:%lu st_gid:%lu\n"
msgstr "" msgstr ""
"%s : Le processus cible %u appartient à un utilisateur différent : uid :%lu " "%s : Le processus cible appartient à un utilisateur différent : uid :%lu "
"pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" "pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n"
msgid "Usage: newgrp [-] [group]\n" msgid "Usage: newgrp [-] [group]\n"
@@ -1887,21 +1838,17 @@ msgstr "trop de groupes\n"
msgid "%s: uid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgid "%s: uid range [%lu-%lu) -> [%lu-%lu) not allowed\n"
msgstr "%s : gamme d'uid [%lu-%lu) -> [%lu-%lu) non autorisés\n" msgstr "%s : gamme d'uid [%lu-%lu) -> [%lu-%lu) non autorisés\n"
#, fuzzy, c-format #, c-format
#| msgid ""
#| "usage: %s <pid> <uid> <loweruid> <count> [ <uid> <loweruid> "
#| "<count> ] ... \n"
msgid "" msgid ""
"usage: %s [<pid>|fd:<pidfd>] <uid> <loweruid> <count> [ <uid> <loweruid> " "usage: %s [<pid>|fd:<pidfd>] <uid> <loweruid> <count> [ <uid> <loweruid> "
"<count> ] ... \n" "<count> ] ... \n"
msgstr "" msgstr ""
"utilisation : %s <pid> <uid> <loweruid> <count> [ <uid> <loweruid> " "utilisation : %s [<pid>|fd:<pidfd>] <uid> <loweruid> <count> [ <uid> "
"<count> ] ... \n" "<loweruid> <count> ] ... \n"
#, fuzzy, c-format #, c-format
#| msgid "%s: Could not stat directory for target %u\n"
msgid "%s: Could not stat directory for target process\n" msgid "%s: Could not stat directory for target process\n"
msgstr "%s : Impossible de statuer sur le répertoire de la cible %u\n" msgstr "%s : Impossible de statuer sur le répertoire du processus cible\n"
msgid " -b, --badname allow bad names\n" msgid " -b, --badname allow bad names\n"
msgstr " -b, --badname autoriser les mauvais noms\n" msgstr " -b, --badname autoriser les mauvais noms\n"
@@ -1925,7 +1872,7 @@ msgstr ""
#, c-format #, c-format
msgid "%s: Provide '--crypt-method' before number of rounds\n" msgid "%s: Provide '--crypt-method' before number of rounds\n"
msgstr "" msgstr "%s: Fournir '--crypt-method' avant le nombre de tours\n"
#, c-format #, c-format
msgid "%s: line %d: invalid line\n" msgid "%s: line %d: invalid line\n"
@@ -1949,10 +1896,9 @@ msgstr "%s : ligne %d : impossible de créer le groupe\n"
msgid "%s: line %d: user '%s' does not exist in %s\n" msgid "%s: line %d: user '%s' does not exist in %s\n"
msgstr "%s : ligne %d : l'utilisateur '%s' n'existe pas dans %s\n" msgstr "%s : ligne %d : l'utilisateur '%s' n'existe pas dans %s\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: unlink: %s: %s\n"
msgid "%s: line %d: %s\n" msgid "%s: line %d: %s\n"
msgstr "%s : délier : %s : %s\n" msgstr "%s : ligne : %d : %s\n"
#, c-format #, c-format
msgid "%s: line %d: can't update password\n" msgid "%s: line %d: can't update password\n"
@@ -2069,15 +2015,11 @@ msgstr ""
"de changer le mot de passe\n" "de changer le mot de passe\n"
" à MAX_DAYS\n" " à MAX_DAYS\n"
#, fuzzy
#| msgid " -l, --list show account aging information\n"
msgid " -s, --stdin read new token from stdin\n" msgid " -s, --stdin read new token from stdin\n"
msgstr "" msgstr " -s, --stdin lire le nouveau jeton depuis stdin\n"
" -l, --list afficher les informations sur l'âge des "
"comptes\n"
msgid "Old password: " msgid "Old password: "
msgstr "Ancien mot de passe :" msgstr "Ancien mot de passe : "
#, c-format #, c-format
msgid "" msgid ""
@@ -2098,13 +2040,11 @@ msgstr ""
"Utilisez une combinaison de lettres minuscules et majuscules et des " "Utilisez une combinaison de lettres minuscules et majuscules et des "
"chiffres.\n" "chiffres.\n"
#, fuzzy
#| msgid "%s: fields too long\n"
msgid "Password is too long.\n" msgid "Password is too long.\n"
msgstr "%s : champs trop longs\n" msgstr "Mot de passe trop long.\n"
msgid "New password: " msgid "New password: "
msgstr "Nouveau mot de passe :" msgstr "Nouveau mot de passe : "
msgid "Try again." msgid "Try again."
msgstr "Essayez à nouveau." msgstr "Essayez à nouveau."
@@ -2115,7 +2055,7 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
"Attention : mot de passe faible (entrez le à nouveau pour l'utiliser quand " "Attention : mot de passe faible (entrez le à nouveau pour l'utiliser quand "
"même). " "même)."
msgid "They don't match; try again.\n" msgid "They don't match; try again.\n"
msgstr "Ils sont différents ; essayez à nouveau.\n" msgstr "Ils sont différents ; essayez à nouveau.\n"
@@ -2149,10 +2089,9 @@ msgstr ""
"%s : le dépot %s n'est pas pris en charge\n" "%s : le dépot %s n'est pas pris en charge\n"
" \n" " \n"
#, fuzzy, c-format #, c-format
#| msgid "%s: only root can use the -g/--group option\n"
msgid "%s: only root can use --stdin/-s option\n" msgid "%s: only root can use --stdin/-s option\n"
msgstr "%s : seul root peut utiliser l'option -g/--group\n" msgstr "%s : seul le superutilisateur peut utiliser l'option --stdin/-s\n"
#, c-format #, c-format
msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n"
@@ -2208,7 +2147,7 @@ msgstr ""
"activé.\n" "activé.\n"
msgid "invalid password file entry" msgid "invalid password file entry"
msgstr "entrée de fichier de mots de passe non valable " msgstr "entrée de fichier de mots de passe non valable"
msgid "duplicate password entry" msgid "duplicate password entry"
msgstr "entrée de mot de passe dupliqué" msgstr "entrée de mot de passe dupliqué"
@@ -2321,7 +2260,7 @@ msgid " ...waiting for child to terminate.\n"
msgstr " ... attente de la fin du processus enfant.\n" msgstr " ... attente de la fin du processus enfant.\n"
msgid " ...terminated.\n" msgid " ...terminated.\n"
msgstr "...terminé.\n" msgstr " ...terminé.\n"
#, c-format #, c-format
msgid "%s: %s\n" msgid "%s: %s\n"
@@ -2396,10 +2335,9 @@ msgstr "%s : Vous n'avez pas les autorisations superutilisateur\n"
msgid "No passwd entry for user '%s'\n" msgid "No passwd entry for user '%s'\n"
msgstr "Pas d'entrée de mot de passe pour l'utilisateur '%s'\n" msgstr "Pas d'entrée de mot de passe pour l'utilisateur '%s'\n"
#, fuzzy, c-format #, c-format
#| msgid "Invalid member username %s\n"
msgid "Overlong user name '%s'\n" msgid "Overlong user name '%s'\n"
msgstr "Nom de membre utilisateur '%s' non valable\n" msgstr "Nom d'utilisateur '%s' trop long\n"
#, c-format #, c-format
msgid "%s: must be run from a terminal\n" msgid "%s: must be run from a terminal\n"
@@ -2446,12 +2384,13 @@ msgstr "%s : %s a été créé, mais n'a pas pu être supprimé\n"
msgid "%s: the %s configuration in %s will be ignored\n" msgid "%s: the %s configuration in %s will be ignored\n"
msgstr "%s : le paramétrage %s dans %s sera ignoré \n" msgstr "%s : le paramétrage %s dans %s sera ignoré \n"
#, fuzzy, c-format #, c-format
#| msgid "%s: the %s configuration in %s will be ignored\n"
msgid "" msgid ""
"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " "%s: the '%s' configuration in %s has an invalid group, ignoring the bad "
"group\n" "group\n"
msgstr "%s : le paramétrage %s dans %s sera ignoré \n" msgstr ""
"%s : la configuration '%s' dans %s a un groupe non valable, et ignore ce "
"mauvais groupe\n"
#, c-format #, c-format
msgid "%s: cannot create new defaults file: %s\n" msgid "%s: cannot create new defaults file: %s\n"
@@ -2462,10 +2401,6 @@ msgstr ""
msgid "%s: cannot create directory for defaults file\n" msgid "%s: cannot create directory for defaults file\n"
msgstr "%s : impossible de créer répertoire pour les fichiers par défaut\n" msgstr "%s : impossible de créer répertoire pour les fichiers par défaut\n"
#, c-format
msgid "%s: cannot create new defaults file\n"
msgstr "%s : impossible de créer un nouveau fichier des valeurs par défaut\n"
#, c-format #, c-format
msgid "%s: cannot open new defaults file\n" msgid "%s: cannot open new defaults file\n"
msgstr "%s : impossible d'ouvrir le nouveau fichier des valeurs par défaut\n" msgstr "%s : impossible d'ouvrir le nouveau fichier des valeurs par défaut\n"
@@ -2482,10 +2417,6 @@ msgstr "%s : Impossible de créer un fichier de sauvegarde (%s) : %s\n"
msgid "%s: rename: %s: %s\n" msgid "%s: rename: %s: %s\n"
msgstr "%s : renommer : %s : %s\n" msgstr "%s : renommer : %s : %s\n"
#, c-format
msgid "%s: group '%s' is a NIS group.\n"
msgstr "%s : le groupe '%s' est un groupe NIS.\n"
#, c-format #, c-format
msgid "%s: too many groups specified (max %d).\n" msgid "%s: too many groups specified (max %d).\n"
msgstr "%s : trop de groupes sont spécifiés (max %d).\n" msgstr "%s : trop de groupes sont spécifiés (max %d).\n"
@@ -2637,15 +2568,11 @@ msgstr ""
" -Z, --selinux-user SEUSER utiliser un SEUSER spécifique pour le " " -Z, --selinux-user SEUSER utiliser un SEUSER spécifique pour le "
"mappage de l'utilisateur SELinux\n" "mappage de l'utilisateur SELinux\n"
#, fuzzy
#| msgid ""
#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux "
#| "user mapping\n"
msgid "" msgid ""
" --selinux-range SERANGE use a specific MLS range for the SELinux " " --selinux-range SERANGE use a specific MLS range for the SELinux "
"user mapping\n" "user mapping\n"
msgstr "" msgstr ""
" -Z, --selinux-user SEUSER utiliser un SEUSER spécifique pour le " " --selinux-range SERANGE utiliser une plage MLS spécifique pour le "
"mappage de l'utilisateur SELinux\n" "mappage de l'utilisateur SELinux\n"
#, c-format #, c-format
@@ -2790,15 +2717,11 @@ msgstr ""
msgid "Setting mailbox file permissions" msgid "Setting mailbox file permissions"
msgstr "Indiquez les permissions du fichier mailbox" msgstr "Indiquez les permissions du fichier mailbox"
#, fuzzy
#| msgid "Creating mailbox file"
msgid "Synchronize mailbox file" msgid "Synchronize mailbox file"
msgstr "Création du fichier mailbox - boîte au lettres" msgstr "Synchroniser le fichier mailbox - boîte au lettres"
#, fuzzy
#| msgid "Creating mailbox file"
msgid "Closing mailbox file" msgid "Closing mailbox file"
msgstr "Création du fichier mailbox - boîte au lettres" msgstr "Fermeture du fichier mailbox - boîte au lettres"
#, c-format #, c-format
msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"
@@ -2938,10 +2861,6 @@ msgstr "%s : Impossible de supprimer le contenu de %s: %s\n"
msgid "%s: Cannot remove tcb files for %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n"
msgstr "%s : Impossible de supprimer les fichiers tcb de %s: %s\n" msgstr "%s : Impossible de supprimer les fichiers tcb de %s: %s\n"
#, c-format
msgid "%s: user %s is a NIS user\n"
msgstr "%s : l'utilisateur %s est un utilisateur NIS\n"
#, c-format #, c-format
msgid "%s: %s home directory (%s) not found\n" msgid "%s: %s home directory (%s) not found\n"
msgstr "%s : %s le répertoire personnel (%s) n'a pas été trouvé\n" msgstr "%s : %s le répertoire personnel (%s) n'a pas été trouvé\n"
@@ -3079,15 +2998,11 @@ msgstr ""
" -Z, --selinux-user SEUSER nouveau mappage d'utilisateur SELinux pour le " " -Z, --selinux-user SEUSER nouveau mappage d'utilisateur SELinux pour le "
"compte utilisateur\n" "compte utilisateur\n"
#, fuzzy
#| msgid ""
#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user "
#| "account\n"
msgid "" msgid ""
" --selinux-range SERANGE new SELinux MLS range for the user account\n" " --selinux-range SERANGE new SELinux MLS range for the user account\n"
msgstr "" msgstr ""
" -Z, --selinux-user SEUSER nouveau mappage d'utilisateur SELinux pour le " " --selinux-range SERANGE nouvelle plage MLS de SELinux pour le compte "
"compte utilisateur\n" "utilisateur\n"
#, c-format #, c-format
msgid "" msgid ""
@@ -3188,25 +3103,23 @@ msgstr ""
"%s : la copie de l'entrée lastlog de l'utilisateur %lu à l'utilisateur %lu a " "%s : la copie de l'entrée lastlog de l'utilisateur %lu à l'utilisateur %lu a "
"échoué : %s\n" "échoué : %s\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"
msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n"
msgstr "" msgstr ""
"%s : la copie de l'entrée lastlog de l'utilisateur %lu à l'utilisateur %lu a " "%s : la copie de l'entrée lastlog de l'utilisateur %ju à l'utilisateur %ju a "
"échoué : %s\n" "échoué : %s\n"
#, c-format #, c-format
msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"
msgstr "" msgstr ""
"%s : échec à copier l'entrée de faillog de l'utilisateur %lu vers " "%s : la copie de l'entrée de faillog de l'utilisateur %lu vers "
"l'utilisateur %lu : %s\n" "l'utilisateur %lu a échoué : %s\n"
#, fuzzy, c-format #, c-format
#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"
msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n"
msgstr "" msgstr ""
"%s : échec à copier l'entrée de faillog de l'utilisateur %lu vers " "%s : la copie de l'entrée de faillog de l'utilisateur %ju vers "
"l'utilisateur %lu : %s\n" "l'utilisateur %ju a échoué : %s\n"
#, c-format #, c-format
msgid "%s: warning: %s not owned by %s\n" msgid "%s: warning: %s not owned by %s\n"
@@ -3313,10 +3226,8 @@ msgstr "impossible de délier le fichier scratch"
msgid "failed to stat edited file" msgid "failed to stat edited file"
msgstr "impossible de statuer sur le fichier édité" msgstr "impossible de statuer sur le fichier édité"
#, fuzzy
#| msgid "%s: snprintf failed!\n"
msgid "asprintf(3) failed" msgid "asprintf(3) failed"
msgstr "%s : échec de snprintf !\n" msgstr "échec de asprintf(3) "
msgid "failed to create backup file" msgid "failed to create backup file"
msgstr "échec à la création d'un fichier de sauvegarde" msgstr "échec à la création d'un fichier de sauvegarde"
@@ -3331,6 +3242,48 @@ msgstr ""
"%s : impossible de trouver le répertoire tcb pour %s\n" "%s : impossible de trouver le répertoire tcb pour %s\n"
"\n" "\n"
#~ msgid "Environment overflow\n"
#~ msgstr "Débordement de l'environnement\n"
#, c-format
#~ msgid "%s: cannot change user '%s' on NIS client.\n"
#~ msgstr "%s : impossible de changer l'utilisateur '%s' sur le client NIS.\n"
#, c-format
#~ msgid "%s: '%s' is the NIS master for this client.\n"
#~ msgstr "%s : '%s' est le NIS maître pour ce client.\n"
#, c-format
#~ msgid "%s: group '%s' is a NIS group\n"
#~ msgstr "%s : le groupe '%s' est un groupe NIS\n"
#, c-format
#~ msgid "%s: %s is the NIS master\n"
#~ msgstr ""
#~ "%s : %s est le NIS maître\n"
#~ "\n"
#, c-format
#~ msgid "%s: group %s is a NIS group\n"
#~ msgstr "%s : le groupe %s est un groupe NIS\n"
#, c-format
#~ msgid " %s [-p] -r host\n"
#~ msgstr " %s [-p] -r host\n"
#, c-format
#~ msgid "%s: cannot create new defaults file\n"
#~ msgstr ""
#~ "%s : impossible de créer un nouveau fichier des valeurs par défaut\n"
#, c-format
#~ msgid "%s: group '%s' is a NIS group.\n"
#~ msgstr "%s : le groupe '%s' est un groupe NIS.\n"
#, c-format
#~ msgid "%s: user %s is a NIS user\n"
#~ msgstr "%s : l'utilisateur %s est un utilisateur NIS\n"
#, c-format #, c-format
#~ msgid "%s: Not enough arguments to form %u mappings\n" #~ msgid "%s: Not enough arguments to form %u mappings\n"
#~ msgstr "%s : Pas assez d'arguments pour former %u mappages\n" #~ msgstr "%s : Pas assez d'arguments pour former %u mappages\n"
+1188 -1190
View File
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -68,9 +68,9 @@
#define TABLE "/etc/login.access" #define TABLE "/etc/login.access"
#endif #endif
static bool list_match (char *list, const char *item, bool (*match_fn) (const char *, const char *)); static bool list_match (char *list, const char *item, bool (*match_fn) (char *, const char *));
static bool user_match (const char *tok, const char *string); static bool user_match (char *tok, const char *string);
static bool from_match (const char *tok, const char *string); static bool from_match (char *tok, const char *string);
static bool string_match (const char *tok, const char *string); static bool string_match (const char *tok, const char *string);
static const char *resolve_hostname (const char *string); static const char *resolve_hostname (const char *string);
@@ -143,7 +143,7 @@ login_access(const char *user, const char *from)
/* list_match - match an item against a list of tokens with exceptions */ /* list_match - match an item against a list of tokens with exceptions */
static bool static bool
list_match(char *list, const char *item, bool (*match_fn)(const char *, const char*)) list_match(char *list, const char *item, bool (*match_fn)(char *, const char*))
{ {
static const char sep[] = ", \t"; static const char sep[] = ", \t";
@@ -171,7 +171,7 @@ list_match(char *list, const char *item, bool (*match_fn)(const char *, const ch
while ( (NULL != (tok = strsep(&list, sep))) while ( (NULL != (tok = strsep(&list, sep)))
&& (strcasecmp (tok, "EXCEPT") != 0)) && (strcasecmp (tok, "EXCEPT") != 0))
/* VOID */ ; /* VOID */ ;
if (tok == NULL || !list_match(NULL, item, match_fn)) { if (tok == NULL || !list_match(list, item, match_fn)) {
return (match); return (match);
} }
} }
@@ -209,7 +209,7 @@ netgroup_match (const char *group, const char *machine, const char *user)
#endif #endif
/* user_match - match a username against one token */ /* user_match - match a username against one token */
static bool user_match (const char *tok, const char *string) static bool user_match (char *tok, const char *string)
{ {
struct group *group; struct group *group;
@@ -289,7 +289,7 @@ static const char *resolve_hostname (const char *string)
/* from_match - match a host or tty against a list of tokens */ /* from_match - match a host or tty against a list of tokens */
static bool from_match (const char *tok, const char *string) static bool from_match (char *tok, const char *string)
{ {
size_t tok_len; size_t tok_len;
+1
View File
@@ -1212,6 +1212,7 @@ int main (int argc, char **argv)
} }
xasprintf(&arg0, "-%s", cp); xasprintf(&arg0, "-%s", cp);
cp = arg0;
} else { } else {
cp = Basename (shellstr); cp = Basename (shellstr);
} }