[{"data":1,"prerenderedAt":685},["ShallowReactive",2],{"docs-navigation:de":3,"content-page:docs:i_jlhzSqyRf5xD_kvT2Wdp1mdAhiDOtaYzDSK7kzTc4":267,"content-page-surround:docs:i_jlhzSqyRf5xD_kvT2Wdp1mdAhiDOtaYzDSK7kzTc4":677,"i-lucide:file":679,"i-lucide:clipboard":683},[4,65,85,206],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Ableitungen",false,"1","de","content:de:1.dokumentation:1.anleitungen:.navigation.yml","lucide:route","section",[13,21,28,35,42,49,56],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"icon":17,"navigation":18,"path":20},"Guild Wars auf dem Mac installieren","content:de:1.dokumentation:1.anleitungen:1.installation.md","1\u002F1","lucide:download",{"title":19},"Install and sign in","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Finstallation",{"title":22,"id":23,"canonicalKey":24,"locale":8,"draft":6,"navigation":25,"icon":26,"path":27},"Konten & Mobile-Verknüpfung","content:de:1.dokumentation:1.anleitungen:2.konten.md","1\u002F2",{"title":22},"lucide:key-round","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fkonten",{"title":29,"id":30,"canonicalKey":31,"locale":8,"draft":6,"navigation":32,"icon":33,"path":34},"Auf dem Mac spielen: Optionen","content:de:1.dokumentation:1.anleitungen:3.guild-wars-auf-dem-mac-spielen.md","1\u002F3",{"title":29},"lucide:scale","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fguild-wars-auf-dem-mac-spielen",{"title":36,"id":37,"canonicalKey":38,"locale":8,"draft":6,"navigation":39,"icon":40,"path":41},"Leistung","content:de:1.dokumentation:1.anleitungen:4.leistung.md","1\u002F4",{"title":36},"lucide:gauge","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fleistung",{"title":43,"id":44,"canonicalKey":45,"locale":8,"draft":6,"navigation":46,"icon":47,"path":48},"Templates","content:de:1.dokumentation:1.anleitungen:5.templates.md","1\u002F5",{"title":43},"lucide:bookmark","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ftemplates",{"title":50,"id":51,"canonicalKey":52,"locale":8,"draft":6,"navigation":53,"icon":54,"path":55},"Fehlerbehebung","content:de:1.dokumentation:1.anleitungen:6.fehlerbehebung.md","1\u002F6",{"title":50},"lucide:wrench","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ffehlerbehebung",{"title":57,"id":58,"canonicalKey":59,"locale":60,"draft":6,"navigation":61,"icon":62,"fallback":63,"path":64},"Known issues","content:en:1.docs:1.guides:7.known-issues.md","1\u002F7","en",{"title":57},"lucide:triangle-alert",true,"\u002Fde\u002Fdokumentation\u002Fguides\u002Fknown-issues",{"title":66,"page":6,"canonicalKey":67,"locale":8,"id":68,"draft":6,"icon":69,"sidebar":70,"children":71},"Projekt","2","content:de:1.dokumentation:2.projekt:.navigation.yml","lucide:shield-check","group",[72,78],{"title":73,"id":74,"canonicalKey":75,"locale":8,"draft":6,"navigation":76,"icon":69,"path":77},"Sicherheit & Kontorisiko","content:de:1.dokumentation:2.projekt:1.sicherheit.md","2\u002F1",{"title":73},"\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fsicherheit",{"title":79,"id":80,"canonicalKey":81,"locale":8,"draft":6,"navigation":82,"icon":83,"path":84},"Über & Credits","content:de:1.dokumentation:2.projekt:2.ueber.md","2\u002F2",{"title":79},"lucide:users","\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fueber",{"title":86,"page":6,"canonicalKey":87,"locale":60,"id":88,"draft":6,"icon":89,"sidebar":11,"fallback":63,"children":90},"For ArenaNet","3","content:en:1.docs:3.upstream:.navigation.yml","lucide:send",[91,98,105,131,157,169,188],{"title":92,"id":93,"canonicalKey":94,"locale":60,"draft":6,"navigation":95,"icon":96,"fallback":63,"path":97},"Introduction","content:en:1.docs:3.upstream:1.introduction.md","3\u002F1",{"title":92},"lucide:book-open-check","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fintroduction",{"title":99,"id":100,"canonicalKey":101,"locale":60,"draft":6,"navigation":102,"icon":103,"fallback":63,"path":104},"Request summary","content:en:1.docs:3.upstream:2.request-summary.md","3\u002F2",{"title":99},"lucide:list-checks","\u002Fde\u002Fdokumentation\u002Fupstream\u002Frequest-summary",{"title":106,"page":6,"canonicalKey":107,"locale":60,"id":108,"draft":6,"icon":109,"sidebar":70,"fallback":63,"children":110},"File system","3\u002F3","content:en:1.docs:3.upstream:3.filesystem:.navigation.yml","lucide:folder-x",[111,117,124],{"title":112,"id":113,"canonicalKey":114,"locale":60,"draft":6,"navigation":115,"icon":109,"fallback":63,"path":116},"File routines (UR-01…04)","content:en:1.docs:3.upstream:3.filesystem:1.unimplemented-routines.md","3\u002F3\u002F1",{"title":112},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Funimplemented-routines",{"title":118,"id":119,"canonicalKey":120,"locale":60,"draft":6,"navigation":121,"icon":122,"fallback":63,"path":123},"RemoveExtension (UR-05)","content:en:1.docs:3.upstream:3.filesystem:2.path-remove-extension.md","3\u002F3\u002F2",{"title":118},"lucide:scissors","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Fpath-remove-extension",{"title":125,"id":126,"canonicalKey":127,"locale":60,"draft":6,"navigation":128,"icon":129,"fallback":63,"path":130},"File::Open mode (UR-06)","content:en:1.docs:3.upstream:3.filesystem:3.file-open-mode.md","3\u002F3\u002F3",{"title":125},"lucide:file-plus-2","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode",{"title":132,"page":6,"canonicalKey":133,"locale":60,"id":134,"draft":6,"icon":135,"sidebar":70,"fallback":63,"children":136},"Input","3\u002F4","content:en:1.docs:3.upstream:4.input:.navigation.yml","lucide:mouse-pointer-click",[137,143,150],{"title":138,"id":139,"canonicalKey":140,"locale":60,"draft":6,"navigation":141,"icon":135,"fallback":63,"path":142},"Double-click (UR-07)","content:en:1.docs:3.upstream:4.input:1.double-click-flag.md","3\u002F4\u002F1",{"title":138},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fdouble-click-flag",{"title":144,"id":145,"canonicalKey":146,"locale":60,"draft":6,"navigation":147,"icon":148,"fallback":63,"path":149},"Key labels (UR-08)","content:en:1.docs:3.upstream:4.input:2.key-labels.md","3\u002F4\u002F2",{"title":144},"lucide:keyboard","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fkey-labels",{"title":151,"id":152,"canonicalKey":153,"locale":60,"draft":6,"navigation":154,"icon":155,"fallback":63,"path":156},"Cursor re-test (UR-09)","content:en:1.docs:3.upstream:4.input:3.cursor-re-evaluation.md","3\u002F4\u002F3",{"title":151},"lucide:pointer","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fcursor-re-evaluation",{"title":158,"page":6,"canonicalKey":159,"locale":60,"id":160,"draft":6,"icon":161,"sidebar":70,"fallback":63,"children":162},"Runtime","3\u002F5","content:en:1.docs:3.upstream:5.runtime:.navigation.yml","lucide:cpu",[163],{"title":164,"id":165,"canonicalKey":166,"locale":60,"draft":6,"navigation":167,"icon":161,"fallback":63,"path":168},"Heap maximum (UR-10)","content:en:1.docs:3.upstream:5.runtime:1.heap-maximum.md","3\u002F5\u002F1",{"title":164},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fruntime\u002Fheap-maximum",{"title":170,"page":6,"canonicalKey":171,"locale":60,"id":172,"draft":6,"icon":173,"sidebar":70,"fallback":63,"children":174},"Interface proposals","3\u002F6","content:en:1.docs:3.upstream:6.proposals:.navigation.yml","lucide:plug",[175,182],{"title":176,"id":177,"canonicalKey":178,"locale":60,"draft":6,"navigation":179,"icon":180,"fallback":63,"path":181},"Build identity (UR-11)","content:en:1.docs:3.upstream:6.proposals:1.build-identification.md","3\u002F6\u002F1",{"title":176},"lucide:fingerprint","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fbuild-identification",{"title":183,"id":184,"canonicalKey":185,"locale":60,"draft":6,"navigation":186,"icon":173,"fallback":63,"path":187},"Host interface (UR-12)","content:en:1.docs:3.upstream:6.proposals:2.platform-host-interface.md","3\u002F6\u002F2",{"title":183},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fplatform-host-interface",{"title":189,"page":6,"canonicalKey":190,"locale":60,"id":191,"draft":6,"icon":192,"sidebar":70,"fallback":63,"children":193},"Reference","3\u002F7","content:en:1.docs:3.upstream:7.reference:.navigation.yml","lucide:microscope",[194,200],{"title":195,"id":196,"canonicalKey":197,"locale":60,"draft":6,"navigation":198,"icon":54,"fallback":63,"path":199},"Our workarounds","content:en:1.docs:3.upstream:7.reference:1.our-workarounds.md","3\u002F7\u002F1",{"title":195},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Four-workarounds",{"title":201,"id":202,"canonicalKey":203,"locale":60,"draft":6,"navigation":204,"icon":192,"fallback":63,"path":205},"Verification method","content:en:1.docs:3.upstream:7.reference:2.verification-method.md","3\u002F7\u002F2",{"title":201},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Fverification-method",{"title":207,"page":6,"canonicalKey":208,"locale":60,"id":209,"draft":6,"icon":210,"sidebar":11,"fallback":63,"children":211},"Features","4","content:en:1.docs:4.features:.navigation.yml","lucide:layout-grid",[212,218,225,232,239,246,253,260],{"title":213,"id":214,"canonicalKey":215,"locale":60,"draft":6,"navigation":216,"icon":83,"fallback":63,"path":217},"Accounts and launcher","content:en:1.docs:4.features:1.accounts.md","4\u002F1",{"title":213},"\u002Fde\u002Fdokumentation\u002Ffeatures\u002Faccounts",{"title":219,"id":220,"canonicalKey":221,"locale":60,"draft":6,"navigation":222,"icon":223,"fallback":63,"path":224},"Hub and Switch Character","content:en:1.docs:4.features:2.hub.md","4\u002F2",{"title":219},"lucide:search","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fhub",{"title":226,"id":227,"canonicalKey":228,"locale":60,"draft":6,"navigation":229,"icon":230,"fallback":63,"path":231},"Travel and maps","content:en:1.docs:4.features:3.travel-and-maps.md","4\u002F3",{"title":226},"lucide:map","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Ftravel-and-maps",{"title":233,"id":234,"canonicalKey":235,"locale":60,"draft":6,"navigation":236,"icon":237,"fallback":63,"path":238},"Chat and trade","content:en:1.docs:4.features:4.chat-and-trade.md","4\u002F4",{"title":233},"lucide:messages-square","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fchat-and-trade",{"title":240,"id":241,"canonicalKey":242,"locale":60,"draft":6,"navigation":243,"icon":244,"fallback":63,"path":245},"Inventory","content:en:1.docs:4.features:5.inventory.md","4\u002F5",{"title":240},"lucide:package","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Finventory",{"title":247,"id":248,"canonicalKey":249,"locale":60,"draft":6,"navigation":250,"icon":251,"fallback":63,"path":252},"Timers and readouts","content:en:1.docs:4.features:6.combat.md","4\u002F6",{"title":247},"lucide:timer","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fcombat",{"title":254,"id":255,"canonicalKey":256,"locale":60,"draft":6,"navigation":257,"icon":258,"fallback":63,"path":259},"Appearance","content:en:1.docs:4.features:7.appearance.md","4\u002F7",{"title":254},"lucide:palette","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fappearance",{"title":261,"id":262,"canonicalKey":263,"locale":60,"draft":6,"navigation":264,"icon":265,"fallback":63,"path":266},"Game files and updates","content:en:1.docs:4.features:8.game-files-and-updates.md","4\u002F8",{"title":261},"lucide:hard-drive-download","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fgame-files-and-updates",{"title":268,"ref":269,"description":270,"icon":129,"updated":271,"navigation":272,"body":273,"type":659,"id":126,"canonicalKey":127,"draft":6,"partial":6,"locale":60,"collection":660,"navigationFile":6,"file":661,"route":667,"resolution":674},"UR-06: File::Open mode 1 creates the file it tests for","docs\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode","Mode 1 is the open-an-existing-file mode, but it carries O_CREAT. The rename probe therefore creates the destination file and reports the name as taken.","2026-08-04",{"title":125},{"type":274,"children":275,"toc":642},"root",[276,297,309,326,336,341,354,361,373,402,420,425,431,463,469,485,491,499,504,525,531,580,586,625,631],{"type":277,"tag":278,"props":279,"children":280},"element","p",{},[281,288,290,295],{"type":277,"tag":282,"props":283,"children":284},"code",{},[285],{"type":286,"value":287},"text","File::Open",{"type":286,"value":289}," mode 1 is supposed to open a file that exists and fail when it's\nabsent. Today it carries ",{"type":277,"tag":282,"props":291,"children":292},{},[293],{"type":286,"value":294},"O_CREAT",{"type":286,"value":296},", so it creates the file instead.",{"type":277,"tag":278,"props":298,"children":299},{},[300,302,307],{"type":286,"value":301},"Build used for the measurements below:\n",{"type":277,"tag":282,"props":303,"children":304},{},[305],{"type":286,"value":306},"b0319704f3072d6948a66026a35af5eb0af12b48d70986783c293e7c77e98483",{"type":286,"value":308},".",{"type":277,"tag":278,"props":310,"children":311},{},[312,318,320,325],{"type":277,"tag":313,"props":314,"children":315},"strong",{},[316],{"type":286,"value":317},"Function 771",{"type":286,"value":319},", ",{"type":277,"tag":282,"props":321,"children":322},{},[323],{"type":286,"value":324},"File::Open(path, mode, err) -> handle",{"type":286,"value":308},{"type":277,"tag":278,"props":327,"children":328},{},[329,334],{"type":277,"tag":313,"props":330,"children":331},{},[332],{"type":286,"value":333},"Fix:",{"type":286,"value":335}," low effort, medium blast radius — the change is one flag in the mode\ntable, but every mode 1 caller changes behaviour. Code that depends on the\ncurrent create-on-open breaks; that's the correct outcome, but the mode 1\ncallers need a check. We identified two: function 9753 (template read) and\nfunction 9757 (rename probe).",{"type":277,"tag":278,"props":337,"children":338},{},[339],{"type":286,"value":340},"Mode 1 is the open-an-existing-file mode. Function 9753 uses it to read a\ntemplate, and function 9757 uses it to ask whether a rename destination is\nalready taken:",{"type":277,"tag":342,"props":343,"children":347},"pre",{"language":344,"class":345,"tabindex":346},"c","shiki dark:dark-plus","0",[348],{"type":277,"tag":282,"props":349,"children":351},{"class":350},"language-c",[352],{"type":286,"value":353},"if (!allowOverwrite) {\n    handle = File::Open(path, 1, NULL);\n    if (handle) return false;          \u002F\u002F the name is already in use\n}\nhandle = File::Open(path, 2, NULL);    \u002F\u002F create and write",{"type":277,"tag":355,"props":356,"children":358},"h2",{"id":357},"what-the-client-does-now",[359],{"type":286,"value":360},"What the client does now",{"type":277,"tag":278,"props":362,"children":363},{},[364,366,371],{"type":286,"value":365},"Both modes reach ",{"type":277,"tag":282,"props":367,"children":368},{},[369],{"type":286,"value":370},"openat",{"type":286,"value":372}," with identical flags. We captured a save and then a\nrename on a live client:",{"type":277,"tag":342,"props":374,"children":376},{"language":286,"class":375,"tabindex":346},"shiki shiki-themes light-plus dark-plus dark:dark-plus",[377],{"type":277,"tag":282,"props":378,"children":380},{"class":379},"language-text",[381,392,394],{"type":277,"tag":382,"props":383,"children":386},"span",{"class":384,"style":385},"line","display: inline",[387],{"type":277,"tag":382,"props":388,"children":389},{},[390],{"type":286,"value":391},"save    openat flags:32834 access:2 create:true errno:0 -> fd_pwrite 24\u002F24 -> fd_close",{"type":286,"value":393},"\n",{"type":277,"tag":382,"props":395,"children":396},{"class":384,"style":385},[397],{"type":277,"tag":382,"props":398,"children":399},{},[400],{"type":286,"value":401},"rename  openat flags:32834 access:2 create:true errno:0 -> fd_close",{"type":277,"tag":278,"props":403,"children":404},{},[405,407,412,414,419],{"type":286,"value":406},"The value ",{"type":277,"tag":282,"props":408,"children":409},{},[410],{"type":286,"value":411},"32834",{"type":286,"value":413}," is ",{"type":277,"tag":282,"props":415,"children":416},{},[417],{"type":286,"value":418},"O_RDWR | O_CREAT | O_LARGEFILE",{"type":286,"value":308},{"type":277,"tag":278,"props":421,"children":422},{},[423],{"type":286,"value":424},"Mode 1 therefore creates the very file it's testing for — the probe then sees\nthat the file exists and reports the name as taken.",{"type":277,"tag":355,"props":426,"children":428},{"id":427},"what-the-player-sees",[429],{"type":286,"value":430},"What the player sees",{"type":277,"tag":432,"props":433,"children":434},"ul",{},[435,441,453,458],{"type":277,"tag":436,"props":437,"children":438},"li",{},[439],{"type":286,"value":440},"Every rename fails, for every destination name.",{"type":277,"tag":436,"props":442,"children":443},{},[444,446,452],{"type":286,"value":445},"The client shows ",{"type":277,"tag":447,"props":448,"children":449},"em",{},[450],{"type":286,"value":451},"\"The attempt to rename the Skills Template named … failed\"",{"type":286,"value":308},{"type":277,"tag":436,"props":454,"children":455},{},[456],{"type":286,"value":457},"A file of zero length stays at the destination path.",{"type":277,"tag":436,"props":459,"children":460},{},[461],{"type":286,"value":462},"A load of an absent template creates an empty file instead of a failure.",{"type":277,"tag":355,"props":464,"children":466},{"id":465},"expected-behaviour",[467],{"type":286,"value":468},"Expected behaviour",{"type":277,"tag":278,"props":470,"children":471},{},[472,474,478,480,484],{"type":286,"value":473},"Mode 1 opens an existing file, without ",{"type":277,"tag":282,"props":475,"children":476},{},[477],{"type":286,"value":294},{"type":286,"value":479},", and fails when the file is\nabsent. Mode 2 keeps ",{"type":277,"tag":282,"props":481,"children":482},{},[483],{"type":286,"value":294},{"type":286,"value":308},{"type":277,"tag":355,"props":486,"children":488},{"id":487},"proposed-mode-table",[489],{"type":286,"value":490},"Proposed mode table",{"type":277,"tag":342,"props":492,"children":493},{"language":344,"class":345,"tabindex":346},[494],{"type":277,"tag":282,"props":495,"children":496},{"class":350},[497],{"type":286,"value":498},"\u002F\u002F File::Open(path, mode, err)\n\u002F\u002F\n\u002F\u002F mode 1  open existing    O_RDONLY  (or O_RDWR)      no O_CREAT\n\u002F\u002F mode 2  create and write O_RDWR | O_CREAT | O_TRUNC",{"type":277,"tag":278,"props":500,"children":501},{},[502],{"type":286,"value":503},"We don't know the full mode table. We report modes 1 and 2 only, because those\nare the two the template paths use.",{"type":277,"tag":505,"props":506,"children":508},"info",{"title":507},"Check for a read-only mount",[509,511,516,518,523],{"type":286,"value":510},"If a mode 1 open uses ",{"type":277,"tag":282,"props":512,"children":513},{},[514],{"type":286,"value":515},"O_RDWR",{"type":286,"value":517}," today, switching to ",{"type":277,"tag":282,"props":519,"children":520},{},[521],{"type":286,"value":522},"O_RDONLY",{"type":286,"value":524}," also changes\nbehaviour on a read-only file. Either choice works with our acceptance\ncriteria — just decide which one you want.",{"type":277,"tag":355,"props":526,"children":528},{"id":527},"acceptance-criteria",[529],{"type":286,"value":530},"Acceptance criteria",{"type":277,"tag":432,"props":532,"children":533},{},[534,544,556,565,570,575],{"type":277,"tag":436,"props":535,"children":536},{},[537,542],{"type":277,"tag":282,"props":538,"children":539},{},[540],{"type":286,"value":541},"File::Open(L\"Templates\u002FSkills\u002FAbsent.txt\", 1, NULL)",{"type":286,"value":543}," returns a null handle.",{"type":277,"tag":436,"props":545,"children":546},{},[547,549,554],{"type":286,"value":548},"After that call, ",{"type":277,"tag":282,"props":550,"children":551},{},[552],{"type":286,"value":553},"Templates\u002FSkills\u002FAbsent.txt",{"type":286,"value":555}," does not exist.",{"type":277,"tag":436,"props":557,"children":558},{},[559,563],{"type":277,"tag":282,"props":560,"children":561},{},[562],{"type":286,"value":287},{"type":286,"value":564}," mode 2 on the same path creates the file, as it does today.",{"type":277,"tag":436,"props":566,"children":567},{},[568],{"type":286,"value":569},"A rename to an unused name completes.",{"type":277,"tag":436,"props":571,"children":572},{},[573],{"type":286,"value":574},"A rename to a used name fails, and the existing file stays unchanged.",{"type":277,"tag":436,"props":576,"children":577},{},[578],{"type":286,"value":579},"A load of an absent template fails and creates no file.",{"type":277,"tag":355,"props":581,"children":583},{"id":582},"how-to-reproduce",[584],{"type":286,"value":585},"How to reproduce",{"type":277,"tag":587,"props":588,"children":590},"steps",{"mode":589},"numbered",[591,598,603,609,614,620],{"type":277,"tag":592,"props":593,"children":595},"h3",{"id":594},"how-to-reproduce-prepare-a-template",[596],{"type":286,"value":597},"Prepare a template",{"type":277,"tag":278,"props":599,"children":600},{},[601],{"type":286,"value":602},"Use a build in which the save path works. Save one template.",{"type":277,"tag":592,"props":604,"children":606},{"id":605},"how-to-reproduce-rename-it",[607],{"type":286,"value":608},"Rename it",{"type":277,"tag":278,"props":610,"children":611},{},[612],{"type":286,"value":613},"Rename the template to any unused name. The rename fails.",{"type":277,"tag":592,"props":615,"children":617},{"id":616},"how-to-reproduce-look-at-the-directory",[618],{"type":286,"value":619},"Look at the directory",{"type":277,"tag":278,"props":621,"children":622},{},[623],{"type":286,"value":624},"A file of zero length is now at the destination name.",{"type":277,"tag":355,"props":626,"children":628},{"id":627},"our-workaround-today",[629],{"type":286,"value":630},"Our workaround today",{"type":277,"tag":278,"props":632,"children":633},{},[634,636,640],{"type":286,"value":635},"The host adds a forwarder for the probe call site only. It asks the host\nwhether the file exists and calls the real ",{"type":277,"tag":282,"props":637,"children":638},{},[639],{"type":286,"value":287},{"type":286,"value":641}," only when it does; the\nwrite call site and the load path keep the real function. A corrected mode\ntable retires the forwarder.",{"title":643,"searchDepth":644,"depth":644,"links":645},"",4,[646,648,649,650,651,652,658],{"id":357,"depth":647,"text":360},2,{"id":427,"depth":647,"text":430},{"id":465,"depth":647,"text":468},{"id":487,"depth":647,"text":490},{"id":527,"depth":647,"text":530},{"id":582,"depth":647,"text":585,"children":653},[654,656,657],{"id":594,"depth":655,"text":597},3,{"id":605,"depth":655,"text":608},{"id":616,"depth":655,"text":619},{"id":627,"depth":647,"text":630},"markdown","docs",{"source":662,"path":663,"stem":664,"dir":665,"extension":666},"content","en\u002F1.docs\u002F3.upstream\u002F3.filesystem\u002F3.file-open-mode.md","en\u002F1.docs\u002F3.upstream\u002F3.filesystem\u002F3.file-open-mode","filesystem","md",{"requestedPath":130,"resolvedPath":668,"alternates":669},"\u002Fdocs\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode",[670,672],{"locale":60,"path":668,"source":671},"variant",{"locale":8,"path":130,"source":673,"resolvedLocale":60},"fallback",{"requested":675,"resolved":676,"usedFallback":63},{"locale":8},{"locale":60},{"previous":678,"next":678},null,{"left":680,"top":680,"width":681,"height":681,"rotate":680,"vFlip":6,"hFlip":6,"body":682},0,24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"\u002F>\u003Cpath d=\"M14 2v5a1 1 0 0 0 1 1h5\"\u002F>\u003C\u002Fg>",{"left":680,"top":680,"width":681,"height":681,"rotate":680,"vFlip":6,"hFlip":6,"body":684},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",1794063741179]