fix(ls): force C locale for consistent date parsing across locales#1358
Open
xingzhicn wants to merge 1 commit intortk-ai:developfrom
Open
fix(ls): force C locale for consistent date parsing across locales#1358xingzhicn wants to merge 1 commit intortk-ai:developfrom
xingzhicn wants to merge 1 commit intortk-ai:developfrom
Conversation
- Add LC_ALL=C environment variable to ls command execution - Fixes issue where non-English locales (Chinese, French, German, etc.) caused ls command to return empty results - Add test case for locale independence - Update CHANGELOG.md The date parsing regex only matches English month names (Jan|Feb|Mar...). On systems with non-English locales, ls -la outputs localized month names (e.g., "4月" in Chinese), causing the regex to fail and all files to be skipped. Forcing C locale ensures consistent English output format.
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.
Problem
The
lscommand returns "(empty)" on systems with non-English locales (Chinese, French, German, etc.) because the date parsing regex only matches English month names.Root Cause
The regex in
ls.rsonly matches English month abbreviations:r"\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+..."On systems with non-English locales,
ls -laoutputs localized month names (e.g., "4月" in Chinese, "fév" in French), causing the regex to fail. This makesparse_ls_line()returnNonefor all files, resulting in an empty directory listing.Solution
Force
LC_ALL=Cenvironment variable when executing thelscommand to ensure consistent English output format across all locales.Testing
test_locale_independence()to verify English date format parsingKnown Limitation
This fix assumes
lsrespectsLC_ALL=Con all platforms. This should work on macOS, Linux, and most Unix-like systems. Windows users typically don't uselsdirectly.Checklist
Related
Fixes the issue where RTK
lsshows "(empty)" on non-English systems whilertk proxy lsshows files correctly.Replaces #1357 (closed due to merge conflicts).