Improving block file change detection#5071
Open
jtyr wants to merge 1 commit intoMidnightCommander:masterfrom
Open
Improving block file change detection#5071jtyr wants to merge 1 commit intoMidnightCommander:masterfrom
jtyr wants to merge 1 commit intoMidnightCommander:masterfrom
Conversation
Signed-off-by: Jiri Tyr <jiri.tyr@gmail.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.
Summary
Fixes two related issues with editor macro scripts and the block file.
Problem 1: Block file not saved before macro execution
edit_block_process_cmd()runs a numbered macro script that may reference%b(the block file). However, the selected block is not written to the block file before the script runs, so%bpoints to a stale or nonexistent file.The fix is to save the selected block to
EDIT_HOME_BLOCK_FILEat the start ofedit_block_process_cmd(), before callingedit_user_menu().Problem 2: Block file modification missed due to second-precision timestamps
edit_user_menu()detects whether a macro script modified the block file by comparingst_sizeandst_mtimebefore and after execution. Scripts that rearrange bytes without changing file size (e.g., word-wrap replacing spaces with newlines) and complete within the same second produce identicalst_sizeandst_mtime, causing a false negative - the editor does not reload the modified block.The fix is to use nanosecond-precision
st_mtim(viaHAVE_STRUCT_STAT_ST_MTIM, already detected by configure) instead of second-precisionst_mtime. Falls back tost_mtimeon platforms without nanosecond support.Test plan
st_mtim- should compile and fall back to second-precision comparison