mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
kernel_cmdline: convert to ThisError and sort
BUG=b:197143586 TEST=cargo check Change-Id: Ic86f0d08b36e5f1b30ea35def38e3875c972c938 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3105081 Reviewed-by: Dennis Kempin <denniskempin@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
This commit is contained in:
parent
793b4703cf
commit
a5884b5a6e
3 changed files with 17 additions and 21 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -609,6 +609,8 @@ name = "kernel_cmdline"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
|
"remain",
|
||||||
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -5,6 +5,8 @@ edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libc = "*"
|
libc = "*"
|
||||||
|
remain = "*"
|
||||||
|
thiserror = "*"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
path = "src/kernel_cmdline.rs"
|
path = "src/kernel_cmdline.rs"
|
||||||
|
|
|
@ -4,37 +4,29 @@
|
||||||
|
|
||||||
//! Helper for creating valid kernel command line strings.
|
//! Helper for creating valid kernel command line strings.
|
||||||
|
|
||||||
use std::fmt::{self, Display};
|
|
||||||
use std::result;
|
use std::result;
|
||||||
|
|
||||||
|
use remain::sorted;
|
||||||
|
use thiserror::Error;
|
||||||
|
|
||||||
/// The error type for command line building operations.
|
/// The error type for command line building operations.
|
||||||
#[derive(PartialEq, Debug)]
|
#[sorted]
|
||||||
|
#[derive(Error, PartialEq, Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
/// Operation would have resulted in a non-printable ASCII character.
|
|
||||||
InvalidAscii,
|
|
||||||
/// Key/Value Operation would have had a space in it.
|
|
||||||
HasSpace,
|
|
||||||
/// Key/Value Operation would have had an equals sign in it.
|
/// Key/Value Operation would have had an equals sign in it.
|
||||||
|
#[error("string contains an equals sign")]
|
||||||
HasEquals,
|
HasEquals,
|
||||||
|
/// Key/Value Operation would have had a space in it.
|
||||||
|
#[error("string contains a space")]
|
||||||
|
HasSpace,
|
||||||
|
/// Operation would have resulted in a non-printable ASCII character.
|
||||||
|
#[error("string contains non-printable ASCII character")]
|
||||||
|
InvalidAscii,
|
||||||
/// Operation would have made the command line too large.
|
/// Operation would have made the command line too large.
|
||||||
|
#[error("inserting string would make command line too long")]
|
||||||
TooLarge,
|
TooLarge,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for Error {
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
||||||
use self::Error::*;
|
|
||||||
|
|
||||||
let description = match self {
|
|
||||||
InvalidAscii => "string contains non-printable ASCII character",
|
|
||||||
HasSpace => "string contains a space",
|
|
||||||
HasEquals => "string contains an equals sign",
|
|
||||||
TooLarge => "inserting string would make command line too long",
|
|
||||||
};
|
|
||||||
|
|
||||||
write!(f, "{}", description)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Specialized Result type for command line operations.
|
/// Specialized Result type for command line operations.
|
||||||
pub type Result<T> = result::Result<T, Error>;
|
pub type Result<T> = result::Result<T, Error>;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue