File tree Expand file tree Collapse file tree 3 files changed +29
-4
lines changed
Expand file tree Collapse file tree 3 files changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -61,6 +61,7 @@ mv-debug-skipped = skipped {$target}
6161
6262# Prompt messages
6363mv-prompt-overwrite = overwrite { $target } ?
64+ mv-prompt-overriding-mode = overwrite { $target } , overriding mode { $mode } ({ $modestr } )?
6465
6566# Progress messages
6667mv-progress-moving = moving
Original file line number Diff line number Diff line change @@ -59,6 +59,7 @@ mv-debug-skipped = ignoré {$target}
5959
6060# Messages de confirmation
6161mv-prompt-overwrite = écraser { $target } ?
62+ mv-prompt-overriding-mode = écraser { $target } , en ignorant le mode { $mode } ({ $modestr } ) ?
6263
6364# Messages de progression
6465mv-progress-moving = déplacement
Original file line number Diff line number Diff line change @@ -732,10 +732,33 @@ fn rename(
732732 return Ok ( ( ) ) ;
733733 }
734734 OverwriteMode :: Interactive => {
735- if !prompt_yes ! (
736- "{}" ,
737- translate!( "mv-prompt-overwrite" , "target" => to. quote( ) )
738- ) {
735+ let mut msg = translate ! ( "mv-prompt-overwrite" , "target" => to. quote( ) ) ;
736+
737+ #[ cfg( unix) ]
738+ {
739+ use libc:: mode_t;
740+ use std:: os:: unix:: fs:: PermissionsExt ;
741+
742+ if let Ok ( meta) = fs:: metadata ( to) {
743+ let mode = meta. permissions ( ) . mode ( ) & 0o777 ;
744+
745+ // Check if the owner's write bit (0o200) is missing
746+ if ( mode & 0o200 ) == 0 {
747+ let octal_mode = format ! ( "{mode:04o}" ) ;
748+ // Prepend Zero-Width Non-Joiner (\u{200c}) to stop Fluent from formatting it as a number
749+ let mode_string = format ! ( "\u{200c} {octal_mode}" ) ;
750+
751+ msg = translate ! (
752+ "mv-prompt-overriding-mode" ,
753+ "target" => to. quote( ) ,
754+ "mode" => mode_string,
755+ "modestr" => uucore:: fs:: display_permissions_unix( mode as mode_t, false )
756+ ) ;
757+ }
758+ }
759+ }
760+
761+ if !prompt_yes ! ( "{}" , msg) {
739762 return Err ( io:: Error :: other ( "" ) ) ;
740763 }
741764 }
You can’t perform that action at this time.
0 commit comments