{"record":{"id":"cb443c458d5a7d2e","repo":"can1357/oh-my-pi","slug":"unsupported-high-sierra-cd-rom-filesystem-not-iso","errorCode":null,"errorMessage":"Unsupported High Sierra CD-ROM filesystem (not ISO 9660)","messagePattern":"Unsupported High Sierra CD-ROM filesystem \\(not ISO 9660\\)","errorType":"exception","errorClass":"ArchiveError","httpStatus":null,"severity":"error","filePath":"packages/utils/src/ar/iso.ts","lineNumber":299,"sourceCode":"\t\t\t\t\tdescriptor[88] === 0x25 &&\n\t\t\t\t\tdescriptor[89] === 0x2f &&\n\t\t\t\t\t[0x40, 0x43, 0x45].includes(descriptor[90]!)\n\t\t\t\t) {\n\t\t\t\t\tjoliet = parseVolumeDescriptor(descriptor, true);\n\t\t\t\t}\n\t\t\t\tif (type === 255) {\n\t\t\t\t\tterminated = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tpendingOffset += ISO_SECTOR_SIZE;\n\t\t\tscanned += ISO_SECTOR_SIZE;\n\t\t}\n\t\tposition += pending.byteLength;\n\t\tchunkSectors = Math.min(chunkSectors * 2, Math.ceil(limits.maxIndexSize / ISO_SECTOR_SIZE));\n\t}\n\tif (!primary && !joliet) {\n\t\tif (sawHighSierra) throw new ArchiveError(\"Unsupported High Sierra CD-ROM filesystem (not ISO 9660)\");\n\t\tif (sawUdf) throw new ArchiveError(\"Unsupported UDF-only image (no ISO 9660 volume descriptor)\");\n\t\tthrow invalidIso(\"primary volume descriptor not found\");\n\t}\n\tif (!terminated) throw invalidIso(\"volume descriptor terminator not found\");\n\tif (joliet) return { ...joliet, rockRidgeRoot: primary?.root };\n\treturn primary!;\n}\n\nfunction decodeIdentifier(identifier: Uint8Array, joliet: boolean): string {\n\tlet name: string;\n\tif (joliet) {\n\t\tif (identifier.byteLength % 2 !== 0) throw invalidIso(\"Joliet identifier has an odd byte length\");\n\t\tconst codeUnits = new Uint16Array(identifier.byteLength / 2);\n\t\tfor (let index = 0; index < codeUnits.length; index++) codeUnits[index] = readUInt16BE(identifier, index * 2);\n\t\tconst chunks: string[] = [];\n\t\tfor (let index = 0; index < codeUnits.length; index += 4096) {\n\t\t\tchunks.push(String.fromCharCode(...codeUnits.subarray(index, index + 4096)));\n\t\t}","sourceCodeStart":281,"sourceCodeEnd":317,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/utils/src/ar/iso.ts#L281-L317","documentation":"The ISO volume scan found no ISO 9660 primary (or Joliet) volume descriptor, but it did see a High Sierra (CD-ROM, the pre-ISO 9660 predecessor) descriptor. Since the reader only implements ISO 9660/Joliet, it raises this specific error to tell you the image is the older filesystem rather than a generic 'descriptor not found' failure.","triggerScenarios":"Calling the ISO reader (readVolume, reached through the volume/entry APIs) on a disc image whose descriptor sequence contains only High Sierra volume descriptors (CD-ROM signature at the descriptor type) and no primary ISO 9660 or Joliet descriptor before the terminator/limit.","commonSituations":"Archived CD-ROM images from the mid-1980s (pre-1988), images converted from old mastering software, or hybrid discs where the ISO session is missing and only the High Sierra session was dumped.","solutions":["Re-master the content as ISO 9660 with xorriso/genisoimage from the original files","Convert the High Sierra image with a conversion utility (e.g. isohybrid-era tools or hs2iso-style converters) that rewrites descriptors to ISO 9660","Mount/inspect the image with a filesystem driver that understands High Sierra (e.g. mount -t hfs/hsfs where available) outside this library","Check whether your dump contains multiple sessions and extract the ISO 9660 session instead"],"exampleFix":"// before: reading a High Sierra-only dump\nconst vol = await readIso(image); // ArchiveError: Unsupported High Sierra...\n// after: re-master as ISO 9660\n// $ xorriso -as mkisofs -o fixed.iso -r content-dir/\nconst vol = await readIso(fixedImage);","handlingStrategy":"fallback","validationCode":"// check descriptor type bytes at sectors 16.. for 'CD001' vs High Sierra 'CDROM'\nconst sector16 = new Uint8Array(await Bun.file(path).slice(32768 + 1, 32768 + 6).arrayBuffer());\nconst isIso = new TextDecoder().decode(sector16) === 'CD001';\nif (!isIso) console.warn('not ISO 9660; may be High Sierra');","typeGuard":"null","tryCatchPattern":"try {\n  vol = await readIso(image);\n} catch (err) {\n  if (err instanceof ArchiveError && err.message.includes('High Sierra')) {\n    return readWithExternalTool(image); // e.g. xorriso -osirrox extraction\n  }\n  throw err;\n}","preventionTips":["Detect 'CDROM' vs 'CD001' signature before choosing a reader","Keep High Sierra images out of ISO-only pipelines","Re-master legacy discs as ISO 9660 at dump time"],"tags":["iso9660","high-sierra","cdrom","unsupported-format"],"backgroundTag":"unsupported-filesystem-format","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}