Fossil SCM
A cleaner solution to the Clear Glob link fix in [e576ce7b5598710a5].
Commit
7f288c6d43ec7122ab29b78c003e0ea61f27c27a617668f2c74ded613bdb5075
Parent
e576ce7b5598710…
1 file changed
+13
-10
+13
-10
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -1198,18 +1198,20 @@ | ||
| 1198 | 1198 | Glob * pGlob = 0; |
| 1199 | 1199 | char *zMergeOrigin = 0; |
| 1200 | 1200 | ReCompiled *pRe = 0; |
| 1201 | 1201 | DiffConfig DCfg, *pCfg = 0; |
| 1202 | 1202 | int graphFlags = 0; |
| 1203 | - Blob qp; | |
| 1203 | + Blob qp; /* non-glob= query parameters for generated links */ | |
| 1204 | + Blob qpGlob; /* glob= query parameter for generated links */ | |
| 1204 | 1205 | int bInvert = PB("inv"); |
| 1205 | 1206 | |
| 1206 | 1207 | login_check_credentials(); |
| 1207 | 1208 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 1208 | 1209 | login_anonymous_available(); |
| 1209 | 1210 | fossil_nice_default(); |
| 1210 | 1211 | blob_init(&qp, 0, 0); |
| 1212 | + blob_init(&qpGlob, 0, 0); | |
| 1211 | 1213 | diffType = preferred_diff_type(); |
| 1212 | 1214 | zRe = P("regex"); |
| 1213 | 1215 | if( zRe ) re_compile(&pRe, zRe, 0); |
| 1214 | 1216 | zBranch = P("branch"); |
| 1215 | 1217 | if( zBranch && zBranch[0]==0 ) zBranch = 0; |
| @@ -1245,17 +1247,15 @@ | ||
| 1245 | 1247 | pTo = pFrom; |
| 1246 | 1248 | pFrom = pTemp; |
| 1247 | 1249 | zTo = zFrom; |
| 1248 | 1250 | zFrom = zTemp; |
| 1249 | 1251 | } |
| 1250 | - if( P("clearglob") ){ | |
| 1251 | - zGlob = 0; | |
| 1252 | - }else if( zGlob){ | |
| 1252 | + if( zGlob ){ | |
| 1253 | 1253 | if( !*zGlob ){ |
| 1254 | 1254 | zGlob = NULL; |
| 1255 | 1255 | }else{ |
| 1256 | - blob_appendf(&qp, "&glob=%T", zGlob); | |
| 1256 | + blob_appendf(&qpGlob, "&glob=%T", zGlob); | |
| 1257 | 1257 | pGlob = glob_create(zGlob); |
| 1258 | 1258 | } |
| 1259 | 1259 | } |
| 1260 | 1260 | if( PB("nc") ){ |
| 1261 | 1261 | graphFlags |= TIMELINE_NOCOLOR; |
| @@ -1269,23 +1269,25 @@ | ||
| 1269 | 1269 | style_set_current_feature("vdiff"); |
| 1270 | 1270 | if( zBranch==0 ){ |
| 1271 | 1271 | style_submenu_element("Path", "%R/timeline?me=%T&you=%T", zFrom, zTo); |
| 1272 | 1272 | } |
| 1273 | 1273 | if( diffType!=0 ){ |
| 1274 | - style_submenu_element("Hide Diff", "%R/vdiff?diff=0&%b", &qp); | |
| 1274 | + style_submenu_element("Hide Diff", "%R/vdiff?diff=0&%b%b", &qp, &qpGlob); | |
| 1275 | 1275 | } |
| 1276 | 1276 | if( diffType!=2 ){ |
| 1277 | - style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b", &qp); | |
| 1277 | + style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b%b", &qp, | |
| 1278 | + &qpGlob); | |
| 1278 | 1279 | } |
| 1279 | 1280 | if( diffType!=1 ) { |
| 1280 | - style_submenu_element("Unified Diff", "%R/vdiff?diff=1&%b", &qp); | |
| 1281 | + style_submenu_element("Unified Diff", "%R/vdiff?diff=1&%b%b", &qp, &qpGlob); | |
| 1281 | 1282 | } |
| 1282 | 1283 | if( zBranch==0 ){ |
| 1283 | - style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp); | |
| 1284 | + style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b%b", diffType, | |
| 1285 | + &qp, &qpGlob); | |
| 1284 | 1286 | } |
| 1285 | 1287 | if( zGlob ){ |
| 1286 | - style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b&clearglob", diffType, &qp); | |
| 1288 | + style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b", diffType, &qp); | |
| 1287 | 1289 | }else{ |
| 1288 | 1290 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, |
| 1289 | 1291 | (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":""); |
| 1290 | 1292 | } |
| 1291 | 1293 | if( diffType!=0 ){ |
| @@ -1327,10 +1329,11 @@ | ||
| 1327 | 1329 | @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p> |
| 1328 | 1330 | } |
| 1329 | 1331 | @<hr><p> |
| 1330 | 1332 | } |
| 1331 | 1333 | blob_reset(&qp); |
| 1334 | + blob_reset(&qpGlob); | |
| 1332 | 1335 | |
| 1333 | 1336 | manifest_file_rewind(pFrom); |
| 1334 | 1337 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1335 | 1338 | manifest_file_rewind(pTo); |
| 1336 | 1339 | pFileTo = manifest_file_next(pTo, 0); |
| 1337 | 1340 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1198,18 +1198,20 @@ | |
| 1198 | Glob * pGlob = 0; |
| 1199 | char *zMergeOrigin = 0; |
| 1200 | ReCompiled *pRe = 0; |
| 1201 | DiffConfig DCfg, *pCfg = 0; |
| 1202 | int graphFlags = 0; |
| 1203 | Blob qp; |
| 1204 | int bInvert = PB("inv"); |
| 1205 | |
| 1206 | login_check_credentials(); |
| 1207 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 1208 | login_anonymous_available(); |
| 1209 | fossil_nice_default(); |
| 1210 | blob_init(&qp, 0, 0); |
| 1211 | diffType = preferred_diff_type(); |
| 1212 | zRe = P("regex"); |
| 1213 | if( zRe ) re_compile(&pRe, zRe, 0); |
| 1214 | zBranch = P("branch"); |
| 1215 | if( zBranch && zBranch[0]==0 ) zBranch = 0; |
| @@ -1245,17 +1247,15 @@ | |
| 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; |
| @@ -1269,23 +1269,25 @@ | |
| 1269 | style_set_current_feature("vdiff"); |
| 1270 | if( zBranch==0 ){ |
| 1271 | style_submenu_element("Path", "%R/timeline?me=%T&you=%T", zFrom, zTo); |
| 1272 | } |
| 1273 | if( diffType!=0 ){ |
| 1274 | style_submenu_element("Hide Diff", "%R/vdiff?diff=0&%b", &qp); |
| 1275 | } |
| 1276 | if( diffType!=2 ){ |
| 1277 | style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b", &qp); |
| 1278 | } |
| 1279 | if( diffType!=1 ) { |
| 1280 | style_submenu_element("Unified Diff", "%R/vdiff?diff=1&%b", &qp); |
| 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 ){ |
| @@ -1327,10 +1329,11 @@ | |
| 1327 | @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p> |
| 1328 | } |
| 1329 | @<hr><p> |
| 1330 | } |
| 1331 | blob_reset(&qp); |
| 1332 | |
| 1333 | manifest_file_rewind(pFrom); |
| 1334 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1335 | manifest_file_rewind(pTo); |
| 1336 | pFileTo = manifest_file_next(pTo, 0); |
| 1337 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1198,18 +1198,20 @@ | |
| 1198 | Glob * pGlob = 0; |
| 1199 | char *zMergeOrigin = 0; |
| 1200 | ReCompiled *pRe = 0; |
| 1201 | DiffConfig DCfg, *pCfg = 0; |
| 1202 | int graphFlags = 0; |
| 1203 | Blob qp; /* non-glob= query parameters for generated links */ |
| 1204 | Blob qpGlob; /* glob= query parameter for generated links */ |
| 1205 | int bInvert = PB("inv"); |
| 1206 | |
| 1207 | login_check_credentials(); |
| 1208 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 1209 | login_anonymous_available(); |
| 1210 | fossil_nice_default(); |
| 1211 | blob_init(&qp, 0, 0); |
| 1212 | blob_init(&qpGlob, 0, 0); |
| 1213 | diffType = preferred_diff_type(); |
| 1214 | zRe = P("regex"); |
| 1215 | if( zRe ) re_compile(&pRe, zRe, 0); |
| 1216 | zBranch = P("branch"); |
| 1217 | if( zBranch && zBranch[0]==0 ) zBranch = 0; |
| @@ -1245,17 +1247,15 @@ | |
| 1247 | pTo = pFrom; |
| 1248 | pFrom = pTemp; |
| 1249 | zTo = zFrom; |
| 1250 | zFrom = zTemp; |
| 1251 | } |
| 1252 | if( zGlob ){ |
| 1253 | if( !*zGlob ){ |
| 1254 | zGlob = NULL; |
| 1255 | }else{ |
| 1256 | blob_appendf(&qpGlob, "&glob=%T", zGlob); |
| 1257 | pGlob = glob_create(zGlob); |
| 1258 | } |
| 1259 | } |
| 1260 | if( PB("nc") ){ |
| 1261 | graphFlags |= TIMELINE_NOCOLOR; |
| @@ -1269,23 +1269,25 @@ | |
| 1269 | style_set_current_feature("vdiff"); |
| 1270 | if( zBranch==0 ){ |
| 1271 | style_submenu_element("Path", "%R/timeline?me=%T&you=%T", zFrom, zTo); |
| 1272 | } |
| 1273 | if( diffType!=0 ){ |
| 1274 | style_submenu_element("Hide Diff", "%R/vdiff?diff=0&%b%b", &qp, &qpGlob); |
| 1275 | } |
| 1276 | if( diffType!=2 ){ |
| 1277 | style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b%b", &qp, |
| 1278 | &qpGlob); |
| 1279 | } |
| 1280 | if( diffType!=1 ) { |
| 1281 | style_submenu_element("Unified Diff", "%R/vdiff?diff=1&%b%b", &qp, &qpGlob); |
| 1282 | } |
| 1283 | if( zBranch==0 ){ |
| 1284 | style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b%b", diffType, |
| 1285 | &qp, &qpGlob); |
| 1286 | } |
| 1287 | if( zGlob ){ |
| 1288 | style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b", diffType, &qp); |
| 1289 | }else{ |
| 1290 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, |
| 1291 | (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":""); |
| 1292 | } |
| 1293 | if( diffType!=0 ){ |
| @@ -1327,10 +1329,11 @@ | |
| 1329 | @ <p><b>Only files matching the glob "%h(zGlob)" are shown.</b></p> |
| 1330 | } |
| 1331 | @<hr><p> |
| 1332 | } |
| 1333 | blob_reset(&qp); |
| 1334 | blob_reset(&qpGlob); |
| 1335 | |
| 1336 | manifest_file_rewind(pFrom); |
| 1337 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1338 | manifest_file_rewind(pTo); |
| 1339 | pFileTo = manifest_file_next(pTo, 0); |
| 1340 |