mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-07 10:01:14 -03:00
refactor: improve widestring conversion utils
- Don't use `WString::from_str` for `str`s which are available at compile-time. Use `L!(input).to_owned()` instead. The reason for this is that `WString::from_str` can cause problems if the input contains PUA bytes which we use for our custom encoding scheme. In such cases, `bytes2wcstring` should be used, to avoid problems when decoding the `WString`. Removing harmless usages of `WString::from_str` allows us to focus on the potentially dangerous ones which don't convert `str`'s that are compiled into the binary. - Make `cstr2wcstring` actually take `CStr` as its input. The former version was only used in one place, and the conversion to `CStr` should happen there, where it can be checked that the conversion makes sense and is safe. The new version is used in `src/env/environmant.rs`, to avoid `to_bytes()` calls cluttering the code there. - Add `osstr2wcstring` function. This function also works for `Path`. Now, these types can be converted to widestrings with much less syntactic clutter.
This commit is contained in:
committed by
Johannes Altmanninger
parent
6a2f531f9b
commit
a93c24b084
@@ -8,7 +8,7 @@
|
||||
pub mod wcstoi;
|
||||
|
||||
use crate::common::{
|
||||
bytes2wcstring, fish_reserved_codepoint, wcs2bytes, wcs2osstring, wcs2zstring,
|
||||
bytes2wcstring, fish_reserved_codepoint, osstr2wcstring, wcs2bytes, wcs2osstring, wcs2zstring,
|
||||
};
|
||||
use crate::fds::BorrowedFdFile;
|
||||
use crate::flog;
|
||||
@@ -93,7 +93,7 @@ pub fn perror_io(s: &str, e: &io::Error) {
|
||||
/// Wide character version of getcwd().
|
||||
pub fn wgetcwd() -> WString {
|
||||
match std::env::current_dir() {
|
||||
Ok(cwd) => bytes2wcstring(cwd.into_os_string().as_bytes()),
|
||||
Ok(cwd) => osstr2wcstring(cwd),
|
||||
Err(e) => {
|
||||
flog!(error, "std::env::current_dir() failed with error:", e);
|
||||
WString::new()
|
||||
|
||||
Reference in New Issue
Block a user