/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=4 sw=2 et cindent: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* Unix-specific local file uri parsing */ #include"nsURLHelper.h" #include"nsEscape.h" #include"nsIFile.h" #include"nsNativeCharsetUtils.h" #include"mozilla/Utf8.h"
rv = aFile->GetNativePath(nativePath); if (NS_FAILED(rv)) return rv;
// Convert to unicode and back to check correct conversion to native charset
NS_CopyNativeToUnicode(nativePath, path);
NS_CopyUnicodeToNative(path, ePath);
// Use UTF8 version if conversion was successful if (nativePath == ePath) {
CopyUTF16toUTF8(path, ePath);
} else {
ePath = nativePath;
}
nsAutoCString escPath;
constexpr auto prefix = "file://"_ns;
// Escape the path with the directory mask if (NS_EscapeURL(ePath.get(), -1, esc_Directory + esc_Forced, escPath)) {
escPath.Insert(prefix, 0);
} else {
escPath.Assign(prefix + ePath);
}
// esc_Directory does not escape the semicolons, so if a filename // contains semicolons we need to manually escape them. // This replacement should be removed in bug #473280
escPath.ReplaceSubstring(";", "%3b");
result = escPath; return NS_OK;
}
nsresult net_GetFileFromURLSpec(const nsACString& aURL, nsIFile** result) { // NOTE: See also the implementation in nsURLHelperOSX.cpp, // which is based on this.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.