1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 19:17:43 +00:00

Merge pull request #8183 from sylvestre/l10n-mknod

l10n: port mknod for translation + add french
This commit is contained in:
Daniel Hofstetter 2025-06-15 16:04:45 +02:00 committed by GitHub
commit f04187930a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 74 additions and 15 deletions

View file

@ -15,3 +15,20 @@ mknod-after-help = Mandatory arguments to long options are mandatory for short o
NOTE: your shell may have its own version of mknod, which usually supersedes
the version described here. Please refer to your shell's documentation
for details about the options it supports.
# Help messages
mknod-help-mode = set file permission bits to MODE, not a=rw - umask
mknod-help-name = name of the new file
mknod-help-type = type of the new file (b, c, u or p)
mknod-help-major = major file type
mknod-help-minor = minor file type
mknod-help-selinux = set SELinux security context of each created directory to the default type
mknod-help-context = like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX
# Error messages
mknod-error-fifo-no-major-minor = Fifos do not have major and minor device numbers.
mknod-error-special-require-major-minor = Special files require major and minor device numbers.
mknod-error-invalid-mode = invalid mode ({ $error })
mknod-error-mode-permission-bits-only = mode must specify only file permission bits
mknod-error-missing-device-type = missing device type
mknod-error-invalid-device-type = invalid device type { $type }

View file

@ -0,0 +1,34 @@
mknod-about = Créer le fichier spécial NOM du TYPE donné.
mknod-usage = mknod [OPTION]... NOM TYPE [MAJEUR MINEUR]
mknod-after-help = Les arguments obligatoires pour les options longues le sont aussi pour les options courtes.
-m, --mode=MODE définir les bits de permission de fichier à MODE, pas a=rw - umask
MAJEUR et MINEUR doivent tous deux être spécifiés quand TYPE est b, c, ou u, et ils
doivent être omis quand TYPE est p. Si MAJEUR ou MINEUR commence par 0x ou 0X,
il est interprété comme hexadécimal ; sinon, s'il commence par 0, comme octal ;
sinon, comme décimal. TYPE peut être :
- b créer un fichier spécial bloc (mis en mémoire tampon)
- c, u créer un fichier spécial caractère (non mis en mémoire tampon)
- p créer un FIFO
NOTE : votre shell peut avoir sa propre version de mknod, qui remplace généralement
la version décrite ici. Veuillez vous référer à la documentation de votre shell
pour les détails sur les options qu'il supporte.
# Messages d'aide
mknod-help-mode = définir les bits de permission de fichier à MODE, pas a=rw - umask
mknod-help-name = nom du nouveau fichier
mknod-help-type = type du nouveau fichier (b, c, u ou p)
mknod-help-major = type de fichier majeur
mknod-help-minor = type de fichier mineur
mknod-help-selinux = définir le contexte de sécurité SELinux de chaque répertoire créé au type par défaut
mknod-help-context = comme -Z, ou si CTX est spécifié, définir le contexte de sécurité SELinux ou SMACK à CTX
# Messages d'erreur
mknod-error-fifo-no-major-minor = Les fifos n'ont pas de numéros de périphérique majeur et mineur.
mknod-error-special-require-major-minor = Les fichiers spéciaux nécessitent des numéros de périphérique majeur et mineur.
mknod-error-invalid-mode = mode invalide ({ $error })
mknod-error-mode-permission-bits-only = le mode ne doit spécifier que les bits de permission de fichier
mknod-error-missing-device-type = type de périphérique manquant
mknod-error-invalid-device-type = type de périphérique invalide { $type }

View file

@ -8,13 +8,13 @@
use clap::{Arg, ArgAction, Command, value_parser};
use libc::{S_IFBLK, S_IFCHR, S_IFIFO, S_IRGRP, S_IROTH, S_IRUSR, S_IWGRP, S_IWOTH, S_IWUSR};
use libc::{dev_t, mode_t};
use std::collections::HashMap;
use std::ffi::CString;
use uucore::display::Quotable;
use uucore::error::{UResult, USimpleError, UUsageError, set_exit_code};
use uucore::format_usage;
use uucore::locale::get_message;
use uucore::locale::{get_message, get_message_with_args};
const MODE_RW_UGO: mode_t = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
@ -130,14 +130,14 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
(FileType::Fifo, _, _) => {
return Err(UUsageError::new(
1,
"Fifos do not have major and minor device numbers.",
get_message("mknod-error-fifo-no-major-minor"),
));
}
(_, Some(&major), Some(&minor)) => makedev(major, minor),
_ => {
return Err(UUsageError::new(
1,
"Special files require major and minor device numbers.",
get_message("mknod-error-special-require-major-minor"),
));
}
};
@ -166,38 +166,38 @@ pub fn uu_app() -> Command {
.short('m')
.long("mode")
.value_name("MODE")
.help("set file permission bits to MODE, not a=rw - umask"),
.help(get_message("mknod-help-mode")),
)
.arg(
Arg::new("name")
.value_name("NAME")
.help("name of the new file")
.help(get_message("mknod-help-name"))
.required(true)
.value_hint(clap::ValueHint::AnyPath),
)
.arg(
Arg::new(options::TYPE)
.value_name("TYPE")
.help("type of the new file (b, c, u or p)")
.help(get_message("mknod-help-type"))
.required(true)
.value_parser(parse_type),
)
.arg(
Arg::new(options::MAJOR)
.value_name(options::MAJOR)
.help("major file type")
.help(get_message("mknod-help-major"))
.value_parser(value_parser!(u64)),
)
.arg(
Arg::new(options::MINOR)
.value_name(options::MINOR)
.help("minor file type")
.help(get_message("mknod-help-minor"))
.value_parser(value_parser!(u64)),
)
.arg(
Arg::new(options::SELINUX)
.short('Z')
.help("set SELinux security context of each created directory to the default type")
.help(get_message("mknod-help-selinux"))
.action(ArgAction::SetTrue),
)
.arg(
@ -207,7 +207,7 @@ pub fn uu_app() -> Command {
.value_parser(value_parser!(String))
.num_args(0..=1)
.require_equals(true)
.help("like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX")
.help(get_message("mknod-help-context")),
)
}
@ -215,10 +215,15 @@ fn get_mode(str_mode: Option<&String>) -> Result<mode_t, String> {
match str_mode {
None => Ok(MODE_RW_UGO),
Some(str_mode) => uucore::mode::parse_mode(str_mode)
.map_err(|e| format!("invalid mode ({e})"))
.map_err(|e| {
get_message_with_args(
"mknod-error-invalid-mode",
HashMap::from([("error".to_string(), e.to_string())]),
)
})
.and_then(|mode| {
if mode > 0o777 {
Err("mode must specify only file permission bits".to_string())
Err(get_message("mknod-error-mode-permission-bits-only"))
} else {
Ok(mode)
}
@ -231,11 +236,14 @@ fn parse_type(tpe: &str) -> Result<FileType, String> {
// 'mknod /dev/rst0 character 18 0'.
tpe.chars()
.next()
.ok_or_else(|| "missing device type".to_string())
.ok_or_else(|| get_message("mknod-error-missing-device-type"))
.and_then(|first_char| match first_char {
'b' => Ok(FileType::Block),
'c' | 'u' => Ok(FileType::Character),
'p' => Ok(FileType::Fifo),
_ => Err(format!("invalid device type {}", tpe.quote())),
_ => Err(get_message_with_args(
"mknod-error-invalid-device-type",
HashMap::from([("type".to_string(), tpe.quote().to_string())]),
)),
})
}