Add functions to convert a CString to upper- / lowercase, either
in-place or by creating a copy of the original CString.
Naming followes 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].
[1] https://rust-for-linux.zulipchat.com/#narrow/stream/288089-General/topic/String.20manipulation.20in.20kernel.20Rust
Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx>
This looks good to me, so you may add my
Reviewed-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
However, it looks like this patch has some clippy warnings that need to
be fixed before it can be merged.
$ make LLVM=1 CLIPPY=1
error: unneeded `return` statement
--> rust/kernel/str.rs:267:9
|
267 | return Ok(s);
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
= note: `-D clippy::needless-return` implied by `-D clippy::style`
= help: to override `-D clippy::style` add `#[allow(clippy::needless_return)]`
help: remove `return`
|
267 - return Ok(s);
267 + Ok(s)
|
error: unneeded `return` statement
--> rust/kernel/str.rs:284:9
|
284 | return Ok(s);
| ^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
|
284 - return Ok(s);
284 + Ok(s)
|
error: deref which would be done by auto-deref
--> rust/kernel/str.rs:677:58
|
677 | unsafe { CStr::from_bytes_with_nul_unchecked_mut(&mut *self.buf) }
| ^^^^^^^^^^^^^^ help: try: `&mut self.buf`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref
= note: `-D clippy::explicit-auto-deref` implied by `-D clippy::complexity`
= help: to override `-D clippy::complexity` add `#[allow(clippy::explicit_auto_deref)]`
error: aborting due to 3 previous errors
Alice