Mercurial > hg
annotate rust/hg-core/src/utils/files.rs @ 42484:f305f1d7d559
rust-filepatterns: add comment about Windows path handling
As I replied to the Phabricator message, this is wrong. And I even suspect
it wouldn't compile because of multiple type mismatches.
I think, in Rust where type system is rock solid, we can live with UTF-8
strings except for the bottom storage layer and the top UI/command layer.
We'll still have to get around undecodable characters not to be lost, but
I think it's okay to drop such filenames from match result if they don't
match in UTF-8 world, not in Latin-1 world.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 15 Jun 2019 10:58:53 +0900 |
parents | 9609430d3625 |
children | cad3dde7a573 |
rev | line source |
---|---|
42437
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
1 use std::path::Path; |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
2 |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
3 pub fn get_path_from_bytes(bytes: &[u8]) -> &Path { |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
4 let os_str; |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
5 #[cfg(unix)] |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
6 { |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
7 use std::os::unix::ffi::OsStrExt; |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
8 os_str = std::ffi::OsStr::from_bytes(bytes); |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
9 } |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
10 #[cfg(windows)] |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
11 { |
42484
f305f1d7d559
rust-filepatterns: add comment about Windows path handling
Yuya Nishihara <yuya@tcha.org>
parents:
42437
diff
changeset
|
12 // TODO: convert from Windows MBCS (ANSI encoding) to WTF8. |
f305f1d7d559
rust-filepatterns: add comment about Windows path handling
Yuya Nishihara <yuya@tcha.org>
parents:
42437
diff
changeset
|
13 // Perhaps, the return type would have to be Result<PathBuf>. |
42437
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
14 use std::os::windows::ffi::OsStrExt; |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
15 os_str = std::ffi::OsString::from_wide(bytes); |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
16 } |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
17 |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
18 Path::new(os_str) |
9609430d3625
rust-filepatterns: use bytes instead of String
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
19 } |