Skip to content

Commit 3ebbac2

Browse files
committed
dd: Fix localization for too large skip|seek
1 parent 316c2b6 commit 3ebbac2

File tree

4 files changed

+10
-12
lines changed

4 files changed

+10
-12
lines changed

src/uu/dd/locales/en-US.ftl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ dd-error-status-not-recognized = status=LEVEL not recognized -> { $level }
142142
dd-error-unimplemented = feature not implemented on this system -> { $feature }
143143
dd-error-bs-out-of-range = { $param }=N cannot fit into memory
144144
dd-error-invalid-number = invalid number: ‘{ $input }
145+
dd-error-invalid-number-too-large = invalid number: { $input }: Value too large for defined data type
145146
146147
# Progress messages
147148
dd-progress-records-in = { $complete }+{ $partial } records in

src/uu/dd/locales/fr-FR.ftl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ dd-error-status-not-recognized = status=NIVEAU non reconnu -> { $level }
142142
dd-error-unimplemented = fonctionnalité non implémentée sur ce système -> { $feature }
143143
dd-error-bs-out-of-range = { $param }=N ne peut pas tenir en mémoire
144144
dd-error-invalid-number = nombre invalide : ‘{ $input }
145+
dd-error-invalid-number-too-large = nombre invalide : { $input }: Valeur trop grande pour le type défini de données
145146
146147
# Progress messages
147148
dd-progress-records-in = { $complete }+{ $partial } enregistrements en entrée

src/uu/dd/src/parseargs.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@ pub enum ParseError {
4747
BsOutOfRange(String),
4848
#[error("{}", translate!("dd-error-invalid-number", "input" => .0.clone()))]
4949
InvalidNumber(String),
50-
#[error("invalid number: ‘{0}’: {1}")]
51-
InvalidNumberWithErrMsg(String, String),
50+
// Add surrounding quotes in here to get around this bug in Fluent:
51+
// https://github.com/projectfluent/fluent-rs/issues/337
52+
#[error("{}", translate!("dd-error-invalid-number-too-large", "input" => format!("‘{}’", .0.clone())))]
53+
InvalidNumberTooLarge(String),
5254
}
5355

5456
/// Contains a temporary state during parsing of the arguments
@@ -247,10 +249,7 @@ impl Parser {
247249
.to_bytes(ibs as u64);
248250
// GNU coreutils has a limit of i64 (intmax_t)
249251
if skip > i64::MAX as u64 {
250-
return Err(ParseError::InvalidNumberWithErrMsg(
251-
format!("{skip}"),
252-
"Value too large for defined data type".to_string(),
253-
));
252+
return Err(ParseError::InvalidNumberTooLarge(format!("{skip}")));
254253
}
255254

256255
let seek = self
@@ -259,10 +258,7 @@ impl Parser {
259258
.to_bytes(obs as u64);
260259
// GNU coreutils has a limit of i64 (intmax_t)
261260
if seek > i64::MAX as u64 {
262-
return Err(ParseError::InvalidNumberWithErrMsg(
263-
format!("{seek}"),
264-
"Value too large for defined data type".to_string(),
265-
));
261+
return Err(ParseError::InvalidNumberTooLarge(format!("{seek}")));
266262
}
267263

268264
let count = self.count.map(|c| c.force_bytes_if(self.iflag.count_bytes));

tests/by-util/test_dd.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1837,7 +1837,7 @@ fn test_skip_overflow() {
18371837
.args(&["bs=1", "skip=9223372036854775808", "count=0"])
18381838
.fails()
18391839
.stderr_contains(
1840-
"dd: invalid number: ‘9223372036854775808’: Value too large for defined data type",
1840+
"dd: invalid number: ‘9223372036854775808’: Value too large for defined data type\n",
18411841
);
18421842
}
18431843

@@ -1847,6 +1847,6 @@ fn test_seek_overflow() {
18471847
.args(&["bs=1", "seek=9223372036854775809", "count=0"])
18481848
.fails()
18491849
.stderr_contains(
1850-
"dd: invalid number: ‘9223372036854775809’: Value too large for defined data type",
1850+
"dd: invalid number: ‘9223372036854775809’: Value too large for defined data type\n",
18511851
);
18521852
}

0 commit comments

Comments
 (0)