Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/uu/cksum/locales/en-US.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ cksum-after-help = DIGEST determines the digest algorithm and default output for
- sha512: (equivalent to sha512sum)
- blake2b: (equivalent to b2sum)
- sm3: (only available through cksum)
- sha3: (requires --length: 224, 256, 384, or 512)
- shake128: (requires --length)
- shake256: (requires --length)

# Help messages
cksum-help-algorithm = select the digest type to use. See DIGEST below
Expand All @@ -29,6 +32,7 @@ cksum-help-status = don't output anything, status code shows success
cksum-help-quiet = don't print OK for each successfully verified file
cksum-help-ignore-missing = don't fail or report status for missing files
cksum-help-zero = end each output line with NUL, not newline, and disable file name escaping
cksum-help-debug = indicate which implementation used

# Error messages
cksum-error-is-directory = { $file }: Is a directory
Expand Down
10 changes: 7 additions & 3 deletions src/uu/cksum/locales/fr-FR.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@ cksum-after-help = DIGEST détermine l'algorithme de condensé et le format de s
- sha256 : (équivalent à sha256sum)
- sha384 : (équivalent à sha384sum)
- sha512 : (équivalent à sha512sum)
- blake2b : (équivalent à b2sum)
- sm3 : (disponible uniquement via cksum)
- blake2b: (équivalent à b2sum)
- sm3: (uniquement disponible via cksum)
- sha3: (nécessite --length: 224, 256, 384, ou 512)
- shake128: (nécessite --length)
- shake256: (nécessite --length)

# Messages d'aide
cksum-help-algorithm = sélectionner le type de condensé à utiliser. Voir DIGEST ci-dessous
Expand All @@ -28,7 +31,8 @@ cksum-help-warn = avertir des lignes de somme de contrôle mal formatées
cksum-help-status = ne rien afficher, le code de statut indique le succès
cksum-help-quiet = ne pas afficher OK pour chaque fichier vérifié avec succès
cksum-help-ignore-missing = ne pas échouer ou signaler le statut pour les fichiers manquants
cksum-help-zero = terminer chaque ligne de sortie avec NUL, pas un saut de ligne, et désactiver l'échappement des noms de fichiers
cksum-help-zero = terminer chaque ligne de sortie par NUL, et non par newline, et désactiver l'échappement des noms de fichiers
cksum-help-debug = indiquer quelle implémentation est utilisée

# Messages d'erreur
cksum-error-is-directory = { $file } : Est un répertoire
Expand Down
27 changes: 26 additions & 1 deletion src/uu/cksum/src/cksum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ mod options {
pub const IGNORE_MISSING: &str = "ignore-missing";
pub const QUIET: &str = "quiet";
pub const ZERO: &str = "zero";
pub const DEBUG: &str = "debug";
}

/***
Expand Down Expand Up @@ -256,6 +257,12 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
Some(length) => {
if algo_name == ALGORITHM_OPTIONS_BLAKE2B {
calculate_blake2b_length(*length)?
} else if algo_name.starts_with("sha3")
|| algo_name == "shake128"
|| algo_name == "shake256"
{
// SHA3 and SHAKE algorithms require --length in bits
Some(*length)
} else {
return Err(ChecksumError::LengthOnlyForBlake2b.into());
}
Expand Down Expand Up @@ -308,7 +315,19 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {

let (tag, asterisk) = handle_tag_text_binary_flags(std::env::args_os())?;

let algo = detect_algo(algo_name, length)?;
let algo = detect_algo(algo_name, length).map_err(|e| {
// Remap error messages for cksum context (uses --length, not --bits)
let err_msg = e.to_string();
if err_msg.contains("--bits required for SHA3") {
USimpleError::new(1, "--length required for SHA3")
} else if err_msg.contains("--bits required for SHAKE128") {
USimpleError::new(1, "--length required for SHAKE128")
} else if err_msg.contains("--bits required for SHAKE256") {
USimpleError::new(1, "--length required for SHAKE256")
} else {
e
}
})?;
let line_ending = LineEnding::from_zero_flag(matches.get_flag(options::ZERO));

let output_format = if matches.get_flag(options::RAW) {
Expand Down Expand Up @@ -462,5 +481,11 @@ pub fn uu_app() -> Command {
.help(translate!("cksum-help-zero"))
.action(ArgAction::SetTrue),
)
.arg(
Arg::new(options::DEBUG)
.long(options::DEBUG)
.help(translate!("cksum-help-debug"))
.action(ArgAction::SetTrue),
)
.after_help(translate!("cksum-after-help"))
}
Loading