From 71b8110ff065cba7cbbfb075b8164773df6a7e54 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 3 Apr 2026 18:38:14 +0900 Subject: [PATCH] fix(zip): parse zipinfo file entries with preserved filenames Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- .../zip-entry-listing/zipinfo-zip-entry-listing.test.ts | 4 +++- src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.test.ts b/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.test.ts index f78e55db2..04f12f861 100644 --- a/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.test.ts +++ b/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.test.ts @@ -1,3 +1,5 @@ +/// + import { describe, expect, it } from "bun:test" import { parseZipInfoListedEntry } from "./zipinfo-zip-entry-listing" @@ -7,7 +9,7 @@ describe("parseZipInfoListedEntry", () => { it("#when parsing the line #then preserves the original trailing whitespace", () => { // given const listedLine = - "-rw-a-- 2.0 fat 4 b- defN 03-Apr-26 12:34 trailing-space.txt " + "?rw------- 2.0 unx 1 b- 1 stor 26-Apr-03 18:33 trailing-space.txt " // when const parsedEntry = parseZipInfoListedEntry(listedLine) diff --git a/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts b/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts index 8f520a4ac..2fd638525 100644 --- a/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts +++ b/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts @@ -5,7 +5,7 @@ import { readZipSymlinkTarget } from "./read-zip-symlink-target" export function parseZipInfoListedEntry(line: string): ArchiveEntry | null { const match = line.match( - /^([dl-])\S*\s+\S+\s+\S+\s+\d+\s+\S+\s+\d+\s+\S+\s+\S+\s+\S+\s+(.*)$/ + /^([-dl?])\S*\s+\S+\s+\S+\s+\d+\s+\S+\s+\d+\s+\S+\s+\S+\s+\S+\s+(.*)$/ ) if (!match) { return null