Use Path.IsPathFullyQualified for absolute path detection (fixes #1473)

Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-02-12 10:43:24 +00:00
parent b58b159123
commit 9372ef87e8

View file

@ -1,4 +1,5 @@
using System; using System;
using System.IO;
using System.Text; using System.Text;
namespace DiscordChatExporter.Core.Utils; namespace DiscordChatExporter.Core.Utils;
@ -10,22 +11,14 @@ public static class Url
var buffer = new StringBuilder(); var buffer = new StringBuilder();
var position = 0; var position = 0;
// Check if the path is absolute (either Unix-style or Windows-style)
// Unix: starts with /
// Windows: starts with drive letter followed by colon (e.g., C:)
var isUnixAbsolute = filePath.StartsWith('/') || filePath.StartsWith('\\');
var isWindowsAbsolute =
filePath.Length >= 2 && char.IsLetter(filePath[0]) && filePath[1] == ':';
var isAbsolute = isUnixAbsolute || isWindowsAbsolute;
// For absolute paths, prepend file:// protocol for proper browser handling // For absolute paths, prepend file:// protocol for proper browser handling
if (isAbsolute) if (Path.IsPathFullyQualified(filePath))
{ {
buffer.Append("file://"); buffer.Append("file://");
// On Windows, we need to add an extra slash before the drive letter // On Windows, we need to add an extra slash before the drive letter
// e.g., file:///C:/path instead of file://C:/path // e.g., file:///C:/path instead of file://C:/path
if (isWindowsAbsolute) if (!filePath.StartsWith('/') && !filePath.StartsWith('\\'))
{ {
buffer.Append('/'); buffer.Append('/');
} }