Skip to content

Commit dad13d7

Browse files
committed
Trim trailing separator before appending
Avoid double directory separators when constructing output paths by trimming any trailing Path.DirectorySeparatorChar from the full path before appending a single separator. Updated fullOutputDir, parallelFullOutputDir, and asyncFullOutputDir to use Path.GetFullPath(...).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar to ensure consistent path formatting and prevent duplicate separators.
1 parent 6a67404 commit dad13d7

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

RecursiveExtractor/Extractor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ public ExtractionStatusCode ExtractToDirectory(string outputDirectory, FileEntry
495495
opts ??= new ExtractorOptions();
496496
if (!opts.Parallel)
497497
{
498-
var fullOutputDir = Path.GetFullPath(outputDirectory) + Path.DirectorySeparatorChar;
498+
var fullOutputDir = Path.GetFullPath(outputDirectory).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;
499499
foreach (var entry in Extract(fileEntry, opts))
500500
{
501501
var targetPath = Path.Combine(outputDirectory, entry.GetSanitizedPath());
@@ -544,7 +544,7 @@ public ExtractionStatusCode ExtractToDirectory(string outputDirectory, FileEntry
544544
using var enumerator = extractedEnumeration.GetEnumerator();
545545
// Move to the first element to prepare
546546
ConcurrentBag<FileEntry> entryBatch = new();
547-
var parallelFullOutputDir = Path.GetFullPath(outputDirectory) + Path.DirectorySeparatorChar;
547+
var parallelFullOutputDir = Path.GetFullPath(outputDirectory).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;
548548
bool moreAvailable = enumerator.MoveNext();
549549
while (moreAvailable)
550550
{
@@ -659,7 +659,7 @@ public async Task<ExtractionStatusCode> ExtractToDirectoryAsync(string outputDir
659659
/// <param name="printNames">If we should print the filename when writing it out to disc.</param>
660660
public async Task<ExtractionStatusCode> ExtractToDirectoryAsync(string outputDirectory, FileEntry fileEntry, ExtractorOptions? opts = null, IEnumerable<Regex>? acceptFilters = null, IEnumerable<Regex>? denyFilters = null, bool printNames = false)
661661
{
662-
var asyncFullOutputDir = Path.GetFullPath(outputDirectory) + Path.DirectorySeparatorChar;
662+
var asyncFullOutputDir = Path.GetFullPath(outputDirectory).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;
663663
await foreach (var entry in ExtractAsync(fileEntry, opts))
664664
{
665665
if (opts?.FileNamePasses(entry.FullPath) ?? true)

0 commit comments

Comments
 (0)