rust: str: add {make,to}_{upper,lower}case() to CString
authorDanilo Krummrich <dakr@redhat.com>
Fri, 23 Feb 2024 16:37:09 +0000 (17:37 +0100)
committerMiguel Ojeda <ojeda@kernel.org>
Tue, 2 Apr 2024 15:41:56 +0000 (17:41 +0200)
commita321f3ad0a5ddcd1da221cc056ef4fd5a49fa0f7
tree51f2e544128a039a42ab0e39747daf40d25abcfa
parentdbef1811c8865562127a6e04c3364f35ceaaa94d
rust: str: add {make,to}_{upper,lower}case() to CString

Add functions to convert a CString to upper- / lowercase, either
in-place or by creating a copy of the original CString.

Naming follows the one from the Rust stdlib, where functions starting
with 'to' create a copy and functions starting with 'make' perform an
in-place conversion.

This is required by the Nova project (GSP only Rust successor of
Nouveau) to convert stringified enum values (representing different GPU
chipsets) to strings in order to generate the corresponding firmware
paths. See also [1].

Link: https://rust-for-linux.zulipchat.com/#narrow/stream/288089-General/topic/String.20manipulation.20in.20kernel.20Rust
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Reviewed-by: Benno Lossin <benno.lossin@proton.me>
Link: https://lore.kernel.org/r/20240223163726.12397-1-dakr@redhat.com
[ Reworded to fix typo and to make the link use the `Link:` tag. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/str.rs