Fossil SCM

/vdiff: correct glob=... to support a comma-separated list, as some docs suggest it does. Fix the "Clear glob" link so that it clears the glob. This resolves problems reported way back in [forum:a574cf527b | forum post a574cf527b].

stephan 2024-10-12 06:35 trunk
Commit e576ce7b5598710a5ee05e338fb4fb80b1e36ede0d45b56879f5cd84256623a9
1 file changed +11 -6
+11 -6
--- src/info.c
+++ src/info.c
@@ -1193,10 +1193,11 @@
11931193
const char *zBranch;
11941194
const char *zFrom;
11951195
const char *zTo;
11961196
const char *zRe;
11971197
const char *zGlob;
1198
+ Glob * pGlob = 0;
11981199
char *zMergeOrigin = 0;
11991200
ReCompiled *pRe = 0;
12001201
DiffConfig DCfg, *pCfg = 0;
12011202
int graphFlags = 0;
12021203
Blob qp;
@@ -1244,15 +1245,18 @@
12441245
pTo = pFrom;
12451246
pFrom = pTemp;
12461247
zTo = zFrom;
12471248
zFrom = zTemp;
12481249
}
1249
- if( zGlob ){
1250
+ if( P("clearglob") ){
1251
+ zGlob = 0;
1252
+ }else if( zGlob){
12501253
if( !*zGlob ){
12511254
zGlob = NULL;
12521255
}else{
12531256
blob_appendf(&qp, "&glob=%T", zGlob);
1257
+ pGlob = glob_create(zGlob);
12541258
}
12551259
}
12561260
if( PB("nc") ){
12571261
graphFlags |= TIMELINE_NOCOLOR;
12581262
blob_appendf(&qp, "&nc");
@@ -1277,11 +1281,11 @@
12771281
}
12781282
if( zBranch==0 ){
12791283
style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp);
12801284
}
12811285
if( zGlob ){
1282
- style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b", diffType, &qp);
1286
+ style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b&clearglob", diffType, &qp);
12831287
}else{
12841288
style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo,
12851289
(DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":"");
12861290
}
12871291
if( diffType!=0 ){
@@ -1339,37 +1343,38 @@
13391343
cmp = -1;
13401344
}else{
13411345
cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
13421346
}
13431347
if( cmp<0 ){
1344
- if( !zGlob || sqlite3_strglob(zGlob, pFileFrom->zName)==0 ){
1348
+ if( !pGlob || glob_match(pGlob, pFileFrom->zName) ){
13451349
append_file_change_line(zFrom, pFileFrom->zName,
13461350
pFileFrom->zUuid, 0, 0, pCfg, 0);
13471351
}
13481352
pFileFrom = manifest_file_next(pFrom, 0);
13491353
}else if( cmp>0 ){
1350
- if( !zGlob || sqlite3_strglob(zGlob, pFileTo->zName)==0 ){
1354
+ if( !pGlob || glob_match(pGlob, pFileTo->zName) ){
13511355
append_file_change_line(zTo, pFileTo->zName,
13521356
0, pFileTo->zUuid, 0, pCfg,
13531357
manifest_file_mperm(pFileTo));
13541358
}
13551359
pFileTo = manifest_file_next(pTo, 0);
13561360
}else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
13571361
pFileFrom = manifest_file_next(pFrom, 0);
13581362
pFileTo = manifest_file_next(pTo, 0);
13591363
}else{
1360
- if(!zGlob || (sqlite3_strglob(zGlob, pFileFrom->zName)==0
1361
- || sqlite3_strglob(zGlob, pFileTo->zName)==0) ){
1364
+ if(!pGlob || (glob_match(pGlob, pFileFrom->zName)
1365
+ || glob_match(pGlob, pFileTo->zName)) ){
13621366
append_file_change_line(zFrom, pFileFrom->zName,
13631367
pFileFrom->zUuid,
13641368
pFileTo->zUuid, 0, pCfg,
13651369
manifest_file_mperm(pFileTo));
13661370
}
13671371
pFileFrom = manifest_file_next(pFrom, 0);
13681372
pFileTo = manifest_file_next(pTo, 0);
13691373
}
13701374
}
1375
+ glob_free(pGlob);
13711376
manifest_destroy(pFrom);
13721377
manifest_destroy(pTo);
13731378
append_diff_javascript(diffType);
13741379
style_finish_page();
13751380
}
13761381
--- src/info.c
+++ src/info.c
@@ -1193,10 +1193,11 @@
1193 const char *zBranch;
1194 const char *zFrom;
1195 const char *zTo;
1196 const char *zRe;
1197 const char *zGlob;
 
1198 char *zMergeOrigin = 0;
1199 ReCompiled *pRe = 0;
1200 DiffConfig DCfg, *pCfg = 0;
1201 int graphFlags = 0;
1202 Blob qp;
@@ -1244,15 +1245,18 @@
1244 pTo = pFrom;
1245 pFrom = pTemp;
1246 zTo = zFrom;
1247 zFrom = zTemp;
1248 }
1249 if( zGlob ){
 
 
1250 if( !*zGlob ){
1251 zGlob = NULL;
1252 }else{
1253 blob_appendf(&qp, "&glob=%T", zGlob);
 
1254 }
1255 }
1256 if( PB("nc") ){
1257 graphFlags |= TIMELINE_NOCOLOR;
1258 blob_appendf(&qp, "&nc");
@@ -1277,11 +1281,11 @@
1277 }
1278 if( zBranch==0 ){
1279 style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp);
1280 }
1281 if( zGlob ){
1282 style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b", diffType, &qp);
1283 }else{
1284 style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo,
1285 (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":"");
1286 }
1287 if( diffType!=0 ){
@@ -1339,37 +1343,38 @@
1339 cmp = -1;
1340 }else{
1341 cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
1342 }
1343 if( cmp<0 ){
1344 if( !zGlob || sqlite3_strglob(zGlob, pFileFrom->zName)==0 ){
1345 append_file_change_line(zFrom, pFileFrom->zName,
1346 pFileFrom->zUuid, 0, 0, pCfg, 0);
1347 }
1348 pFileFrom = manifest_file_next(pFrom, 0);
1349 }else if( cmp>0 ){
1350 if( !zGlob || sqlite3_strglob(zGlob, pFileTo->zName)==0 ){
1351 append_file_change_line(zTo, pFileTo->zName,
1352 0, pFileTo->zUuid, 0, pCfg,
1353 manifest_file_mperm(pFileTo));
1354 }
1355 pFileTo = manifest_file_next(pTo, 0);
1356 }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
1357 pFileFrom = manifest_file_next(pFrom, 0);
1358 pFileTo = manifest_file_next(pTo, 0);
1359 }else{
1360 if(!zGlob || (sqlite3_strglob(zGlob, pFileFrom->zName)==0
1361 || sqlite3_strglob(zGlob, pFileTo->zName)==0) ){
1362 append_file_change_line(zFrom, pFileFrom->zName,
1363 pFileFrom->zUuid,
1364 pFileTo->zUuid, 0, pCfg,
1365 manifest_file_mperm(pFileTo));
1366 }
1367 pFileFrom = manifest_file_next(pFrom, 0);
1368 pFileTo = manifest_file_next(pTo, 0);
1369 }
1370 }
 
1371 manifest_destroy(pFrom);
1372 manifest_destroy(pTo);
1373 append_diff_javascript(diffType);
1374 style_finish_page();
1375 }
1376
--- src/info.c
+++ src/info.c
@@ -1193,10 +1193,11 @@
1193 const char *zBranch;
1194 const char *zFrom;
1195 const char *zTo;
1196 const char *zRe;
1197 const char *zGlob;
1198 Glob * pGlob = 0;
1199 char *zMergeOrigin = 0;
1200 ReCompiled *pRe = 0;
1201 DiffConfig DCfg, *pCfg = 0;
1202 int graphFlags = 0;
1203 Blob qp;
@@ -1244,15 +1245,18 @@
1245 pTo = pFrom;
1246 pFrom = pTemp;
1247 zTo = zFrom;
1248 zFrom = zTemp;
1249 }
1250 if( P("clearglob") ){
1251 zGlob = 0;
1252 }else if( zGlob){
1253 if( !*zGlob ){
1254 zGlob = NULL;
1255 }else{
1256 blob_appendf(&qp, "&glob=%T", zGlob);
1257 pGlob = glob_create(zGlob);
1258 }
1259 }
1260 if( PB("nc") ){
1261 graphFlags |= TIMELINE_NOCOLOR;
1262 blob_appendf(&qp, "&nc");
@@ -1277,11 +1281,11 @@
1281 }
1282 if( zBranch==0 ){
1283 style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp);
1284 }
1285 if( zGlob ){
1286 style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b&clearglob", diffType, &qp);
1287 }else{
1288 style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo,
1289 (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":"");
1290 }
1291 if( diffType!=0 ){
@@ -1339,37 +1343,38 @@
1343 cmp = -1;
1344 }else{
1345 cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
1346 }
1347 if( cmp<0 ){
1348 if( !pGlob || glob_match(pGlob, pFileFrom->zName) ){
1349 append_file_change_line(zFrom, pFileFrom->zName,
1350 pFileFrom->zUuid, 0, 0, pCfg, 0);
1351 }
1352 pFileFrom = manifest_file_next(pFrom, 0);
1353 }else if( cmp>0 ){
1354 if( !pGlob || glob_match(pGlob, pFileTo->zName) ){
1355 append_file_change_line(zTo, pFileTo->zName,
1356 0, pFileTo->zUuid, 0, pCfg,
1357 manifest_file_mperm(pFileTo));
1358 }
1359 pFileTo = manifest_file_next(pTo, 0);
1360 }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
1361 pFileFrom = manifest_file_next(pFrom, 0);
1362 pFileTo = manifest_file_next(pTo, 0);
1363 }else{
1364 if(!pGlob || (glob_match(pGlob, pFileFrom->zName)
1365 || glob_match(pGlob, pFileTo->zName)) ){
1366 append_file_change_line(zFrom, pFileFrom->zName,
1367 pFileFrom->zUuid,
1368 pFileTo->zUuid, 0, pCfg,
1369 manifest_file_mperm(pFileTo));
1370 }
1371 pFileFrom = manifest_file_next(pFrom, 0);
1372 pFileTo = manifest_file_next(pTo, 0);
1373 }
1374 }
1375 glob_free(pGlob);
1376 manifest_destroy(pFrom);
1377 manifest_destroy(pTo);
1378 append_diff_javascript(diffType);
1379 style_finish_page();
1380 }
1381

Keyboard Shortcuts

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