Fossil SCM

On windows, make "gdiff" default to using WinDiff.exe.

drh 2012-09-07 21:12 trunk
Commit cad57bf65d1e8fba72213b46eba99499629a10ee
2 files changed +24 -2 +3 -3
+24 -2
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -451,10 +451,32 @@
451451
}
452452
}
453453
manifest_destroy(pFrom);
454454
manifest_destroy(pTo);
455455
}
456
+
457
+/*
458
+** Return the name of the external diff command, or return NULL if
459
+** no external diff command is defined.
460
+*/
461
+const char *diff_command_external(int guiDiff){
462
+ const char *zDefault;
463
+ const char *zName;
464
+
465
+ if( guiDiff ){
466
+#if defined(_WIN32)
467
+ zDefault = "WinDiff.exe";
468
+#else
469
+ zDefault = 0;
470
+#endif
471
+ zName = "gdiff-command";
472
+ }else{
473
+ zDefault = 0;
474
+ zName = "diff-command";
475
+ }
476
+ return db_get(zName, zDefault);
477
+}
456478
457479
/*
458480
** COMMAND: diff
459481
** COMMAND: gdiff
460482
**
@@ -522,11 +544,11 @@
522544
}
523545
if( zTo==0 ){
524546
db_must_be_within_tree();
525547
verify_all_options();
526548
if( !isInternDiff ){
527
- zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0);
549
+ zDiffCmd = diff_command_external(isGDiff);
528550
}
529551
if( g.argc>=3 ){
530552
for(f=2; f<g.argc; ++f){
531553
diff_one_against_disk(zFrom, zDiffCmd, diffFlags, g.argv[f]);
532554
}
@@ -537,11 +559,11 @@
537559
fossil_fatal("must use --from if --to is present");
538560
}else{
539561
db_find_and_open_repository(0, 0);
540562
verify_all_options();
541563
if( !isInternDiff ){
542
- zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0);
564
+ zDiffCmd = diff_command_external(isGDiff);
543565
}
544566
if( g.argc>=3 ){
545567
for(f=2; f<g.argc; ++f){
546568
diff_one_two_versions(zFrom, zTo, zDiffCmd, diffFlags, g.argv[f]);
547569
}
548570
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -451,10 +451,32 @@
451 }
452 }
453 manifest_destroy(pFrom);
454 manifest_destroy(pTo);
455 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
456
457 /*
458 ** COMMAND: diff
459 ** COMMAND: gdiff
460 **
@@ -522,11 +544,11 @@
522 }
523 if( zTo==0 ){
524 db_must_be_within_tree();
525 verify_all_options();
526 if( !isInternDiff ){
527 zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0);
528 }
529 if( g.argc>=3 ){
530 for(f=2; f<g.argc; ++f){
531 diff_one_against_disk(zFrom, zDiffCmd, diffFlags, g.argv[f]);
532 }
@@ -537,11 +559,11 @@
537 fossil_fatal("must use --from if --to is present");
538 }else{
539 db_find_and_open_repository(0, 0);
540 verify_all_options();
541 if( !isInternDiff ){
542 zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0);
543 }
544 if( g.argc>=3 ){
545 for(f=2; f<g.argc; ++f){
546 diff_one_two_versions(zFrom, zTo, zDiffCmd, diffFlags, g.argv[f]);
547 }
548
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -451,10 +451,32 @@
451 }
452 }
453 manifest_destroy(pFrom);
454 manifest_destroy(pTo);
455 }
456
457 /*
458 ** Return the name of the external diff command, or return NULL if
459 ** no external diff command is defined.
460 */
461 const char *diff_command_external(int guiDiff){
462 const char *zDefault;
463 const char *zName;
464
465 if( guiDiff ){
466 #if defined(_WIN32)
467 zDefault = "WinDiff.exe";
468 #else
469 zDefault = 0;
470 #endif
471 zName = "gdiff-command";
472 }else{
473 zDefault = 0;
474 zName = "diff-command";
475 }
476 return db_get(zName, zDefault);
477 }
478
479 /*
480 ** COMMAND: diff
481 ** COMMAND: gdiff
482 **
@@ -522,11 +544,11 @@
544 }
545 if( zTo==0 ){
546 db_must_be_within_tree();
547 verify_all_options();
548 if( !isInternDiff ){
549 zDiffCmd = diff_command_external(isGDiff);
550 }
551 if( g.argc>=3 ){
552 for(f=2; f<g.argc; ++f){
553 diff_one_against_disk(zFrom, zDiffCmd, diffFlags, g.argv[f]);
554 }
@@ -537,11 +559,11 @@
559 fossil_fatal("must use --from if --to is present");
560 }else{
561 db_find_and_open_repository(0, 0);
562 verify_all_options();
563 if( !isInternDiff ){
564 zDiffCmd = diff_command_external(isGDiff);
565 }
566 if( g.argc>=3 ){
567 for(f=2; f<g.argc; ++f){
568 diff_one_two_versions(zFrom, zTo, zDiffCmd, diffFlags, g.argv[f]);
569 }
570
+3 -3
--- src/stash.c
+++ src/stash.c
@@ -549,20 +549,20 @@
549549
"(SELECT origname FROM stashfile WHERE stashid=%d)",
550550
stashid);
551551
undo_finish();
552552
}else
553553
if( memcmp(zCmd, "diff", nCmd)==0 ){
554
- const char *zDiffCmd = db_get("diff-command", 0);
554
+ const char *zDiffCmd = diff_command_external(0);
555555
u64 diffFlags = diff_options();
556556
if( g.argc>4 ) usage("diff STASHID");
557557
stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0);
558558
stash_diff(stashid, zDiffCmd, diffFlags);
559559
}else
560560
if( memcmp(zCmd, "gdiff", nCmd)==0 ){
561
- const char *zDiffCmd = db_get("gdiff-command", 0);
561
+ const char *zDiffCmd = diff_command_external(1);
562562
u64 diffFlags = diff_options();
563
- if( g.argc>4 ) usage("diff STASHID");
563
+ if( g.argc>4 ) usage("gdiff STASHID");
564564
stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0);
565565
stash_diff(stashid, zDiffCmd, diffFlags);
566566
}else
567567
if( memcmp(zCmd, "help", nCmd)==0 ){
568568
g.argv[1] = "help";
569569
--- src/stash.c
+++ src/stash.c
@@ -549,20 +549,20 @@
549 "(SELECT origname FROM stashfile WHERE stashid=%d)",
550 stashid);
551 undo_finish();
552 }else
553 if( memcmp(zCmd, "diff", nCmd)==0 ){
554 const char *zDiffCmd = db_get("diff-command", 0);
555 u64 diffFlags = diff_options();
556 if( g.argc>4 ) usage("diff STASHID");
557 stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0);
558 stash_diff(stashid, zDiffCmd, diffFlags);
559 }else
560 if( memcmp(zCmd, "gdiff", nCmd)==0 ){
561 const char *zDiffCmd = db_get("gdiff-command", 0);
562 u64 diffFlags = diff_options();
563 if( g.argc>4 ) usage("diff STASHID");
564 stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0);
565 stash_diff(stashid, zDiffCmd, diffFlags);
566 }else
567 if( memcmp(zCmd, "help", nCmd)==0 ){
568 g.argv[1] = "help";
569
--- src/stash.c
+++ src/stash.c
@@ -549,20 +549,20 @@
549 "(SELECT origname FROM stashfile WHERE stashid=%d)",
550 stashid);
551 undo_finish();
552 }else
553 if( memcmp(zCmd, "diff", nCmd)==0 ){
554 const char *zDiffCmd = diff_command_external(0);
555 u64 diffFlags = diff_options();
556 if( g.argc>4 ) usage("diff STASHID");
557 stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0);
558 stash_diff(stashid, zDiffCmd, diffFlags);
559 }else
560 if( memcmp(zCmd, "gdiff", nCmd)==0 ){
561 const char *zDiffCmd = diff_command_external(1);
562 u64 diffFlags = diff_options();
563 if( g.argc>4 ) usage("gdiff STASHID");
564 stashid = stash_get_id(g.argc==4 ? g.argv[3] : 0);
565 stash_diff(stashid, zDiffCmd, diffFlags);
566 }else
567 if( memcmp(zCmd, "help", nCmd)==0 ){
568 g.argv[1] = "help";
569

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button