Repository navigation
fix: a game folder whose deepest file passes 260 characters builds and plays (#1468) - #1497
Merged
Merged
Conversation
NotRexed
pushed a commit
that referenced
this pull request
Nov 10, 2026
Keep the new nn::fs wide conversions explicit about UTF-8, matching the game's char strings and the existing source check. Compare equivalent plain and extended Windows paths in the extraction fixture without changing the paths passed to real metadata calls or allowing sibling paths. Add a native fixture for the actual conversion helpers, including Unicode directory-entry names and long drive/UNC paths. This supplements PR #1497. Assisted-by: OpenAI Codex Co-authored-by: OpenAI Codex <noreply@openai.com>
…d plays (#1468) The builder's unpack, damaged-file scan, stand-ins, romfs links and shader list take extended-length paths (\?\) on Windows; the game's file layer (host/nn_fs.c) keeps paths up to 1024 bytes and calls the wide file functions, a long absolute path given the extended prefix. Neither needs Windows' long-paths setting. Short paths are as they were. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep the new nn::fs wide conversions explicit about UTF-8, matching the game's char strings and the existing source check. Compare equivalent plain and extended Windows paths in the extraction fixture without changing the paths passed to real metadata calls or allowing sibling paths. Add a native fixture for the actual conversion helpers, including Unicode directory-entry names and long drive/UNC paths. This supplements PR #1497. Assisted-by: OpenAI Codex Co-authored-by: OpenAI Codex <noreply@openai.com>
…rs since this PR) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NotRexed
force-pushed
the
fix/long-paths
branch
from
November 10, 2026 16:42
40abdab to
5a8eec2
Compare
NotRexed
added a commit
that referenced
this pull request
Nov 10, 2026
…path (#1497 extracts through \?\ paths) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NotRexed
added a commit
that referenced
this pull request
Nov 10, 2026
…y renames; long-path out-of-space folder; DrawParameters Ctx) (#1793) * tests: the lift cleanup fixture defines PREPARE; the RecompLauncher keys read ini_key's own renames Main's Python source checks failed on both since today's merges: - test_lift_cleanup_error runs make_game.py's say()/fail() in its own namespace, and say() now reads PREPARE (#1102's --prepare): NameError. The fixture gives it PREPARE=False, its value at the start. - test_recomplauncher_json allowed only output_res as a row whose saved key is not its name; ini_key also saves resolution, upscaling and dlss, and the manifest uses the first two. The test now reads those renames from ini_key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * tests: the out-of-space check accepts the folder as its Windows long path (#1497 extracts through \?\ paths) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * tests: the DrawParameters fixture's Ctx has mesh_fallback (the block reads it since the mesh fallback skips a task's DrawIndex) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(wayland): the libdecor hint check is Linux's (POSIX setenv in its harness), skipped on Windows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(antilag): the present stage is checked in present_out, present_image's end since present ahead Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1468: in a deeply nested folder, the unpack stopped with
FileNotFoundErroron a 262-character path inromfs\Event\EventSetting. Windows' 260-character limit (MAX_PATH) applies unless the program uses extended-length paths or the system's long-paths setting is on, and that setting is off by default.Builder (Python): the unpack, the damaged-file scan and stand-ins, the romfs links into the game folder and the shader list step use extended-length paths (
\?\...) on Windows.nup.long_path()andmake_game.long_path()do nothing elsewhere. The scan still returns paths in the form it was given, so callers and tests see no change.Game (
host/nn_fs.c): path buffers go from 260 to 1024 bytes. Each file call (CreateFile, GetFileAttributes, Find*, CreateDirectory, Delete, Move, RemoveDirectory) goes through its wide function. The path is converted with the process code page (UTF-8 under the game's manifest), and a long absolute path gets the extended prefix. Short paths behave exactly as before.Tested:
test_make_game_cache,test_nup_stand_in,test_nup_verify,test_finish_outputandtest_shader_census_cmdpass. The last now expects the long form on Windows.nn_fs.cis clean with-Wall -Wextra.🤖 Generated with Claude Code