@@ -732,31 +732,42 @@ fn rename(
732732 return Ok ( ( ) ) ;
733733 }
734734 OverwriteMode :: Interactive => {
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- "mode_str" => uucore:: fs:: display_permissions_unix( mode as mode_t, false )
756- ) ;
735+ // We assign 'msg' the result of this block
736+ let msg = {
737+ let default_msg = translate ! ( "mv-prompt-overwrite" , "target" => to. quote( ) ) ;
738+
739+ #[ cfg( unix) ]
740+ {
741+ use libc:: mode_t;
742+ use std:: os:: unix:: fs:: PermissionsExt ;
743+
744+ // We use an 'if let' as an expression here
745+ if let Ok ( meta) = fs:: metadata ( to) {
746+ let mode = meta. permissions ( ) . mode ( ) & 0o777 ;
747+ if ( mode & 0o200 ) == 0 {
748+ let octal_mode = format ! ( "{mode:04o}" ) ;
749+ let mode_string = format ! ( "\u{200c} {octal_mode}" ) ;
750+
751+ // This is the "return" value of the inner block
752+ translate ! (
753+ "mv-prompt-overriding-mode" ,
754+ "target" => to. quote( ) ,
755+ "mode" => mode_string,
756+ "mode_str" => uucore:: fs:: display_permissions_unix( mode as mode_t, false )
757+ )
758+ } else {
759+ default_msg
760+ }
761+ } else {
762+ default_msg
757763 }
758764 }
759- }
765+
766+ #[ cfg( not( unix) ) ]
767+ {
768+ default_msg
769+ }
770+ } ;
760771
761772 if !prompt_yes ! ( "{}" , msg) {
762773 return Err ( io:: Error :: other ( "" ) ) ;
0 commit comments