Fossil SCM

Replaced dir=... with glob=... and fixed (i think) the traversal of pFileTo/From.

stephan 2014-01-21 18:49 UTC vdiff-subdir
Commit fa16c3a72bb4d1c661063db76372d2286da96aef
1 file changed +19 -32
+19 -32
--- src/info.c
+++ src/info.c
@@ -939,13 +939,12 @@
939939
const char *zBranch;
940940
const char *zFrom;
941941
const char *zTo;
942942
const char *zRe;
943943
const char *zVerbose;
944
- const char *zDir;
944
+ const char *zGlob;
945945
ReCompiled *pRe = 0;
946
- int nDir = 0;
947946
login_check_credentials();
948947
if( !g.perm.Read ){ login_needed(); return; }
949948
login_anonymous_available();
950949
951950
zRe = P("regex");
@@ -967,15 +966,15 @@
967966
if( !zVerbose ){
968967
zVerbose = P("detail"); /* deprecated */
969968
}
970969
verboseFlag = (zVerbose!=0) && !is_false(zVerbose);
971970
if( !verboseFlag && sideBySide ) verboseFlag = 1;
972
- zDir = P("dir");
971
+ zGlob = P("glob");
973972
zFrom = P("from");
974973
zTo = P("to");
975
- if( zDir && *zDir ){
976
- nDir = (int)strlen(zDir);
974
+ if(zGlob && !*zGlob){
975
+ zGlob = NULL;
977976
}
978977
if( sideBySide || verboseFlag ){
979978
style_submenu_element("Hide Diff", "hidediff",
980979
"%R/vdiff?from=%T&to=%T&sbs=0",
981980
zFrom, zTo);
@@ -1010,52 +1009,40 @@
10101009
manifest_file_rewind(pTo);
10111010
pFileTo = manifest_file_next(pTo, 0);
10121011
diffFlags = construct_diff_flags(verboseFlag, sideBySide);
10131012
while( pFileFrom || pFileTo ){
10141013
int cmp;
1015
- if( nDir>0 ){
1016
- int dirMatch = 0;
1017
- if( pFileFrom && pFileFrom->zName ){
1018
- if( 0 == fossil_strncmp(pFileFrom->zName, zDir, nDir) ){
1019
- ++dirMatch;
1020
- }
1021
- }
1022
- if( !dirMatch && pFileTo && pFileTo->zName ){
1023
- if( 0 == fossil_strncmp(pFileTo->zName, zDir, nDir) ){
1024
- ++dirMatch;
1025
- }
1026
- }
1027
- if(!dirMatch){
1028
- pFileFrom = manifest_file_next(pFrom, 0);
1029
- pFileTo = manifest_file_next(pTo, 0);
1030
- continue;
1031
- }
1032
- }
10331014
if( pFileFrom==0 ){
10341015
cmp = +1;
10351016
}else if( pFileTo==0 ){
10361017
cmp = -1;
10371018
}else{
10381019
cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
10391020
}
10401021
if( cmp<0 ){
1041
- append_file_change_line(pFileFrom->zName,
1042
- pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
1022
+ if(!zGlob || strglob(zGlob, pFileFrom->zName)){
1023
+ append_file_change_line(pFileFrom->zName,
1024
+ pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
1025
+ }
10431026
pFileFrom = manifest_file_next(pFrom, 0);
10441027
}else if( cmp>0 ){
1045
- append_file_change_line(pFileTo->zName,
1046
- 0, pFileTo->zUuid, 0, diffFlags, pRe,
1047
- manifest_file_mperm(pFileTo));
1028
+ if(!zGlob || strglob(zGlob, pFileTo->zName)){
1029
+ append_file_change_line(pFileTo->zName,
1030
+ 0, pFileTo->zUuid, 0, diffFlags, pRe,
1031
+ manifest_file_mperm(pFileTo));
1032
+ }
10481033
pFileTo = manifest_file_next(pTo, 0);
10491034
}else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
10501035
pFileFrom = manifest_file_next(pFrom, 0);
10511036
pFileTo = manifest_file_next(pTo, 0);
10521037
}else{
1053
- append_file_change_line(pFileFrom->zName,
1054
- pFileFrom->zUuid,
1055
- pFileTo->zUuid, 0, diffFlags, pRe,
1056
- manifest_file_mperm(pFileTo));
1038
+ if(!zGlob || (strglob(zGlob, pFileFrom->zName) || strglob(zGlob, pFileTo->zName))){
1039
+ append_file_change_line(pFileFrom->zName,
1040
+ pFileFrom->zUuid,
1041
+ pFileTo->zUuid, 0, diffFlags, pRe,
1042
+ manifest_file_mperm(pFileTo));
1043
+ }
10571044
pFileFrom = manifest_file_next(pFrom, 0);
10581045
pFileTo = manifest_file_next(pTo, 0);
10591046
}
10601047
}
10611048
manifest_destroy(pFrom);
10621049
--- src/info.c
+++ src/info.c
@@ -939,13 +939,12 @@
939 const char *zBranch;
940 const char *zFrom;
941 const char *zTo;
942 const char *zRe;
943 const char *zVerbose;
944 const char *zDir;
945 ReCompiled *pRe = 0;
946 int nDir = 0;
947 login_check_credentials();
948 if( !g.perm.Read ){ login_needed(); return; }
949 login_anonymous_available();
950
951 zRe = P("regex");
@@ -967,15 +966,15 @@
967 if( !zVerbose ){
968 zVerbose = P("detail"); /* deprecated */
969 }
970 verboseFlag = (zVerbose!=0) && !is_false(zVerbose);
971 if( !verboseFlag && sideBySide ) verboseFlag = 1;
972 zDir = P("dir");
973 zFrom = P("from");
974 zTo = P("to");
975 if( zDir && *zDir ){
976 nDir = (int)strlen(zDir);
977 }
978 if( sideBySide || verboseFlag ){
979 style_submenu_element("Hide Diff", "hidediff",
980 "%R/vdiff?from=%T&to=%T&sbs=0",
981 zFrom, zTo);
@@ -1010,52 +1009,40 @@
1010 manifest_file_rewind(pTo);
1011 pFileTo = manifest_file_next(pTo, 0);
1012 diffFlags = construct_diff_flags(verboseFlag, sideBySide);
1013 while( pFileFrom || pFileTo ){
1014 int cmp;
1015 if( nDir>0 ){
1016 int dirMatch = 0;
1017 if( pFileFrom && pFileFrom->zName ){
1018 if( 0 == fossil_strncmp(pFileFrom->zName, zDir, nDir) ){
1019 ++dirMatch;
1020 }
1021 }
1022 if( !dirMatch && pFileTo && pFileTo->zName ){
1023 if( 0 == fossil_strncmp(pFileTo->zName, zDir, nDir) ){
1024 ++dirMatch;
1025 }
1026 }
1027 if(!dirMatch){
1028 pFileFrom = manifest_file_next(pFrom, 0);
1029 pFileTo = manifest_file_next(pTo, 0);
1030 continue;
1031 }
1032 }
1033 if( pFileFrom==0 ){
1034 cmp = +1;
1035 }else if( pFileTo==0 ){
1036 cmp = -1;
1037 }else{
1038 cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
1039 }
1040 if( cmp<0 ){
1041 append_file_change_line(pFileFrom->zName,
1042 pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
 
 
1043 pFileFrom = manifest_file_next(pFrom, 0);
1044 }else if( cmp>0 ){
1045 append_file_change_line(pFileTo->zName,
1046 0, pFileTo->zUuid, 0, diffFlags, pRe,
1047 manifest_file_mperm(pFileTo));
 
 
1048 pFileTo = manifest_file_next(pTo, 0);
1049 }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
1050 pFileFrom = manifest_file_next(pFrom, 0);
1051 pFileTo = manifest_file_next(pTo, 0);
1052 }else{
1053 append_file_change_line(pFileFrom->zName,
1054 pFileFrom->zUuid,
1055 pFileTo->zUuid, 0, diffFlags, pRe,
1056 manifest_file_mperm(pFileTo));
 
 
1057 pFileFrom = manifest_file_next(pFrom, 0);
1058 pFileTo = manifest_file_next(pTo, 0);
1059 }
1060 }
1061 manifest_destroy(pFrom);
1062
--- src/info.c
+++ src/info.c
@@ -939,13 +939,12 @@
939 const char *zBranch;
940 const char *zFrom;
941 const char *zTo;
942 const char *zRe;
943 const char *zVerbose;
944 const char *zGlob;
945 ReCompiled *pRe = 0;
 
946 login_check_credentials();
947 if( !g.perm.Read ){ login_needed(); return; }
948 login_anonymous_available();
949
950 zRe = P("regex");
@@ -967,15 +966,15 @@
966 if( !zVerbose ){
967 zVerbose = P("detail"); /* deprecated */
968 }
969 verboseFlag = (zVerbose!=0) && !is_false(zVerbose);
970 if( !verboseFlag && sideBySide ) verboseFlag = 1;
971 zGlob = P("glob");
972 zFrom = P("from");
973 zTo = P("to");
974 if(zGlob && !*zGlob){
975 zGlob = NULL;
976 }
977 if( sideBySide || verboseFlag ){
978 style_submenu_element("Hide Diff", "hidediff",
979 "%R/vdiff?from=%T&to=%T&sbs=0",
980 zFrom, zTo);
@@ -1010,52 +1009,40 @@
1009 manifest_file_rewind(pTo);
1010 pFileTo = manifest_file_next(pTo, 0);
1011 diffFlags = construct_diff_flags(verboseFlag, sideBySide);
1012 while( pFileFrom || pFileTo ){
1013 int cmp;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1014 if( pFileFrom==0 ){
1015 cmp = +1;
1016 }else if( pFileTo==0 ){
1017 cmp = -1;
1018 }else{
1019 cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
1020 }
1021 if( cmp<0 ){
1022 if(!zGlob || strglob(zGlob, pFileFrom->zName)){
1023 append_file_change_line(pFileFrom->zName,
1024 pFileFrom->zUuid, 0, 0, diffFlags, pRe, 0);
1025 }
1026 pFileFrom = manifest_file_next(pFrom, 0);
1027 }else if( cmp>0 ){
1028 if(!zGlob || strglob(zGlob, pFileTo->zName)){
1029 append_file_change_line(pFileTo->zName,
1030 0, pFileTo->zUuid, 0, diffFlags, pRe,
1031 manifest_file_mperm(pFileTo));
1032 }
1033 pFileTo = manifest_file_next(pTo, 0);
1034 }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
1035 pFileFrom = manifest_file_next(pFrom, 0);
1036 pFileTo = manifest_file_next(pTo, 0);
1037 }else{
1038 if(!zGlob || (strglob(zGlob, pFileFrom->zName) || strglob(zGlob, pFileTo->zName))){
1039 append_file_change_line(pFileFrom->zName,
1040 pFileFrom->zUuid,
1041 pFileTo->zUuid, 0, diffFlags, pRe,
1042 manifest_file_mperm(pFileTo));
1043 }
1044 pFileFrom = manifest_file_next(pFrom, 0);
1045 pFileTo = manifest_file_next(pTo, 0);
1046 }
1047 }
1048 manifest_destroy(pFrom);
1049

Keyboard Shortcuts

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