{"version":3,"file":"path.mjs","names":["findIndex","Patch","PatchPath","_getRemap","ptr","str","_readCstr","shdr","_theShdrForAddress","data","Uint8Array","strd","TextEncoder","encode","fileI","_elf","bits","shAddr","BigInt"],"sources":["../../../../src/util/internal/linux/path.ts"],"sourcesContent":["import {findIndex} from '../data.ts';\n\nimport {Elf32, Elf64} from './elf.ts';\nimport {Patch} from './patch.ts';\n\n/**\n * PatchPath object.\n * Patch broken Linux projector path code.\n * Replaces bad \"file:\" prefix with \"file://\" for projector self URL.\n */\nexport abstract class PatchPath<T extends Elf32 | Elf64> extends Patch<T> {\n\t/**\n\t * Get a remapped pointer, if pointer needs remapping.\n\t *\n\t * @param ptr Current pointer.\n\t * @returns Remapped pointer or null.\n\t */\n\tprotected _getRemap(ptr: number | bigint) {\n\t\tconst str = this._readCstr(ptr);\n\t\tif (str !== 'file:') {\n\t\t\treturn null;\n\t\t}\n\t\tconst shdr = this._theShdrForAddress(ptr);\n\t\tconst data = new Uint8Array(shdr.data);\n\t\tconst strd = new TextEncoder().encode('\\0file://\\0');\n\t\tconst fileI = findIndex(data, strd) + 1;\n\t\tif (!fileI) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\tthis._elf.bits === 64\n\t\t\t\t? (shdr.shAddr as bigint) + BigInt(fileI)\n\t\t\t\t: (shdr.shAddr as number) + fileI\n\t\t) as T['elfHeader']['eEntry'];\n\t}\n}\n"],"mappings":"AAAA,SAAQA,SAAS,QAAO,aAAY;AAGpC,SAAQC,KAAK,QAAO,aAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAeC,SAAS,SAAkCD,KAAK,CAAI;EACzE;AACD;AACA;AACA;AACA;AACA;EACWE,SAASA,CAACC,GAAoB,EAAE;IACzC,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACF,GAAG,CAAC;IAC/B,IAAIC,GAAG,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI;IACZ;IACA,MAAME,IAAI,GAAG,IAAI,CAACC,kBAAkB,CAACJ,GAAG,CAAC;IACzC,MAAMK,IAAI,GAAG,IAAIC,UAAU,CAACH,IAAI,CAACE,IAAI,CAAC;IACtC,MAAME,IAAI,GAAG,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAAC,aAAa,CAAC;IACpD,MAAMC,KAAK,GAAGd,SAAS,CAACS,IAAI,EAAEE,IAAI,CAAC,GAAG,CAAC;IACvC,IAAI,CAACG,KAAK,EAAE;MACX,OAAO,IAAI;IACZ;IACA,OACC,IAAI,CAACC,IAAI,CAACC,IAAI,KAAK,EAAE,GACjBT,IAAI,CAACU,MAAM,GAAcC,MAAM,CAACJ,KAAK,CAAC,GACtCP,IAAI,CAACU,MAAM,GAAcH,KAAK;EAEpC;AACD","ignoreList":[]}