@@ -19,6 +19,7 @@ static const char *external_diff(void)
1919{
2020 static const char * external_diff_cmd = NULL ;
2121 static int done_preparing = 0 ;
22+ const char * env_diff_opts ;
2223
2324 if (done_preparing )
2425 return external_diff_cmd ;
@@ -31,11 +32,11 @@ static const char *external_diff(void)
3132 *
3233 * GIT_DIFF_OPTS="-c";
3334 */
34- if (gitenv ("GIT_EXTERNAL_DIFF" ))
35- external_diff_cmd = gitenv ("GIT_EXTERNAL_DIFF" );
35+ external_diff_cmd = gitenv ("GIT_EXTERNAL_DIFF" );
3636
3737 /* In case external diff fails... */
38- diff_opts = gitenv ("GIT_DIFF_OPTS" ) ? : diff_opts ;
38+ env_diff_opts = gitenv ("GIT_DIFF_OPTS" );
39+ if (env_diff_opts ) diff_opts = env_diff_opts ;
3940
4041 done_preparing = 1 ;
4142 return external_diff_cmd ;
@@ -530,10 +531,12 @@ static void run_external_diff(const char *pgm,
530531 pid_t pid ;
531532 int status ;
532533 static int atexit_asked = 0 ;
534+ const char * othername ;
533535
536+ othername = (other ? other : name );
534537 if (one && two ) {
535538 prepare_temp_file (name , & temp [0 ], one );
536- prepare_temp_file (other ? : name , & temp [1 ], two );
539+ prepare_temp_file (othername , & temp [1 ], two );
537540 if (! atexit_asked &&
538541 (temp [0 ].name == temp [0 ].tmp_path ||
539542 temp [1 ].name == temp [1 ].tmp_path )) {
@@ -574,7 +577,7 @@ static void run_external_diff(const char *pgm,
574577 * otherwise we use the built-in one.
575578 */
576579 if (one && two )
577- builtin_diff (name , other ? : name , temp , xfrm_msg ,
580+ builtin_diff (name , othername , temp , xfrm_msg ,
578581 complete_rewrite );
579582 else
580583 printf ("* Unmerged path %s\n" , name );
@@ -889,13 +892,13 @@ int diff_queue_is_empty(void)
889892void diff_debug_filespec (struct diff_filespec * s , int x , const char * one )
890893{
891894 fprintf (stderr , "queue[%d] %s (%s) %s %06o %s\n" ,
892- x , one ? : "" ,
895+ x , one ? one : "" ,
893896 s -> path ,
894897 DIFF_FILE_VALID (s ) ? "valid" : "invalid" ,
895898 s -> mode ,
896899 s -> sha1_valid ? sha1_to_hex (s -> sha1 ) : "" );
897900 fprintf (stderr , "queue[%d] %s size %lu flags %d\n" ,
898- x , one ? : "" ,
901+ x , one ? one : "" ,
899902 s -> size , s -> xfrm_flags );
900903}
901904
@@ -904,7 +907,7 @@ void diff_debug_filepair(const struct diff_filepair *p, int i)
904907 diff_debug_filespec (p -> one , i , "one" );
905908 diff_debug_filespec (p -> two , i , "two" );
906909 fprintf (stderr , "score %d, status %c stays %d broken %d\n" ,
907- p -> score , p -> status ? : '?' ,
910+ p -> score , p -> status ? p -> status : '?' ,
908911 p -> source_stays , p -> broken_pair );
909912}
910913
0 commit comments