mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:48:14 +00:00
open: Fix opening "." (again)
We can't always rely on the initial URL's path(), so use either the user-specified argument or the URL path for determining the realpath, depending on whether we got a file:// URL argument. Fixes #4950.
This commit is contained in:
parent
501952852c
commit
3532e1788f
1 changed files with 4 additions and 1 deletions
|
@ -48,7 +48,10 @@ int main(int argc, char* argv[])
|
||||||
auto url = URL::create_with_url_or_path(url_or_path);
|
auto url = URL::create_with_url_or_path(url_or_path);
|
||||||
|
|
||||||
if (url.protocol() == "file") {
|
if (url.protocol() == "file") {
|
||||||
auto real_path = Core::File::real_path_for(url.path());
|
// NOTE: Since URL::create_with_url_or_path() returns "file:///" for ".", and we chose
|
||||||
|
// to fix that in open(1) itself using Core::File::real_path_for(), we have to
|
||||||
|
// conditionally chose either the URL's path or user-specified argument (also a path).
|
||||||
|
auto real_path = Core::File::real_path_for(StringView(url_or_path).starts_with("file://") ? url.path() : url_or_path);
|
||||||
if (real_path.is_null()) {
|
if (real_path.is_null()) {
|
||||||
// errno *should* be preserved from Core::File::real_path_for().
|
// errno *should* be preserved from Core::File::real_path_for().
|
||||||
warnln("Failed to open '{}': {}", url.path(), strerror(errno));
|
warnln("Failed to open '{}': {}", url.path(), strerror(errno));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue