Fossil SCM
Fix links with truncated symbolic names in /vdiff, as reported in forum post 690436f85e.
Commit
2871b39a62f311a16036febaf2538f3511dd41ff95d8e680bc9ce5fbabcb6a55
Parent
1cd81630456dde6…
1 file changed
+10
-8
+10
-8
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -401,34 +401,36 @@ | ||
| 401 | 401 | @ </span></div> |
| 402 | 402 | if( pCfg ){ |
| 403 | 403 | append_diff(zOld, zNew, pCfg); |
| 404 | 404 | } |
| 405 | 405 | }else{ |
| 406 | + const char *zCkin2 = | |
| 407 | + mprintf(validate16(zCkin, -1) ? "%!S" : "%T"/*works-like:"%s"*/, zCkin); | |
| 406 | 408 | if( zOld && zNew ){ |
| 407 | 409 | if( fossil_strcmp(zOld, zNew)!=0 ){ |
| 408 | 410 | if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ |
| 409 | 411 | @ Renamed and modified |
| 410 | - @ %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zOldName,zOld,zCkin))\ | |
| 412 | + @ %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zOldName,zOld,zCkin2))\ | |
| 411 | 413 | @ %h(zOldName)</a> |
| 412 | 414 | @ %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a> |
| 413 | - @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ | |
| 415 | + @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ | |
| 414 | 416 | @ %h(zName)</a> |
| 415 | 417 | @ %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 416 | 418 | }else{ |
| 417 | - @ Modified %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ | |
| 419 | + @ Modified %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ | |
| 418 | 420 | @ %h(zName)</a> |
| 419 | 421 | @ from %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a> |
| 420 | 422 | @ to %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 421 | 423 | } |
| 422 | 424 | }else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ |
| 423 | 425 | @ Name change |
| 424 | - @ from %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zOldName,zOld,zCkin))\ | |
| 426 | + @ from %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zOldName,zOld,zCkin2))\ | |
| 425 | 427 | @ %h(zOldName)</a> |
| 426 | - @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ | |
| 428 | + @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ | |
| 427 | 429 | @ %h(zName)</a>. |
| 428 | 430 | }else{ |
| 429 | - @ %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ | |
| 431 | + @ %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ | |
| 430 | 432 | @ %h(zName)</a> became |
| 431 | 433 | if( mperm==PERM_EXE ){ |
| 432 | 434 | @ executable with contents |
| 433 | 435 | }else if( mperm==PERM_LNK ){ |
| 434 | 436 | @ a symlink with target |
| @@ -436,14 +438,14 @@ | ||
| 436 | 438 | @ a regular file with contents |
| 437 | 439 | } |
| 438 | 440 | @ %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 439 | 441 | } |
| 440 | 442 | }else if( zOld ){ |
| 441 | - @ Deleted %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zOld,zCkin))\ | |
| 443 | + @ Deleted %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zOld,zCkin2))\ | |
| 442 | 444 | @ %h(zName)</a> version %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a>. |
| 443 | 445 | }else{ |
| 444 | - @ Added %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ | |
| 446 | + @ Added %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ | |
| 445 | 447 | @ %h(zName)</a> version %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 446 | 448 | } |
| 447 | 449 | if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ |
| 448 | 450 | if( pCfg ){ |
| 449 | 451 | @ </span></div> |
| 450 | 452 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -401,34 +401,36 @@ | |
| 401 | @ </span></div> |
| 402 | if( pCfg ){ |
| 403 | append_diff(zOld, zNew, pCfg); |
| 404 | } |
| 405 | }else{ |
| 406 | if( zOld && zNew ){ |
| 407 | if( fossil_strcmp(zOld, zNew)!=0 ){ |
| 408 | if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ |
| 409 | @ Renamed and modified |
| 410 | @ %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zOldName,zOld,zCkin))\ |
| 411 | @ %h(zOldName)</a> |
| 412 | @ %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a> |
| 413 | @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ |
| 414 | @ %h(zName)</a> |
| 415 | @ %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 416 | }else{ |
| 417 | @ Modified %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ |
| 418 | @ %h(zName)</a> |
| 419 | @ from %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a> |
| 420 | @ to %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 421 | } |
| 422 | }else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ |
| 423 | @ Name change |
| 424 | @ from %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zOldName,zOld,zCkin))\ |
| 425 | @ %h(zOldName)</a> |
| 426 | @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ |
| 427 | @ %h(zName)</a>. |
| 428 | }else{ |
| 429 | @ %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ |
| 430 | @ %h(zName)</a> became |
| 431 | if( mperm==PERM_EXE ){ |
| 432 | @ executable with contents |
| 433 | }else if( mperm==PERM_LNK ){ |
| 434 | @ a symlink with target |
| @@ -436,14 +438,14 @@ | |
| 436 | @ a regular file with contents |
| 437 | } |
| 438 | @ %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 439 | } |
| 440 | }else if( zOld ){ |
| 441 | @ Deleted %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zOld,zCkin))\ |
| 442 | @ %h(zName)</a> version %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a>. |
| 443 | }else{ |
| 444 | @ Added %z(href("%R/finfo?name=%T&m=%!S&ci=%!S",zName,zNew,zCkin))\ |
| 445 | @ %h(zName)</a> version %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 446 | } |
| 447 | if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ |
| 448 | if( pCfg ){ |
| 449 | @ </span></div> |
| 450 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -401,34 +401,36 @@ | |
| 401 | @ </span></div> |
| 402 | if( pCfg ){ |
| 403 | append_diff(zOld, zNew, pCfg); |
| 404 | } |
| 405 | }else{ |
| 406 | const char *zCkin2 = |
| 407 | mprintf(validate16(zCkin, -1) ? "%!S" : "%T"/*works-like:"%s"*/, zCkin); |
| 408 | if( zOld && zNew ){ |
| 409 | if( fossil_strcmp(zOld, zNew)!=0 ){ |
| 410 | if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ |
| 411 | @ Renamed and modified |
| 412 | @ %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zOldName,zOld,zCkin2))\ |
| 413 | @ %h(zOldName)</a> |
| 414 | @ %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a> |
| 415 | @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ |
| 416 | @ %h(zName)</a> |
| 417 | @ %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 418 | }else{ |
| 419 | @ Modified %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ |
| 420 | @ %h(zName)</a> |
| 421 | @ from %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a> |
| 422 | @ to %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 423 | } |
| 424 | }else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){ |
| 425 | @ Name change |
| 426 | @ from %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zOldName,zOld,zCkin2))\ |
| 427 | @ %h(zOldName)</a> |
| 428 | @ to %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ |
| 429 | @ %h(zName)</a>. |
| 430 | }else{ |
| 431 | @ %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ |
| 432 | @ %h(zName)</a> became |
| 433 | if( mperm==PERM_EXE ){ |
| 434 | @ executable with contents |
| 435 | }else if( mperm==PERM_LNK ){ |
| 436 | @ a symlink with target |
| @@ -436,14 +438,14 @@ | |
| 438 | @ a regular file with contents |
| 439 | } |
| 440 | @ %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 441 | } |
| 442 | }else if( zOld ){ |
| 443 | @ Deleted %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zOld,zCkin2))\ |
| 444 | @ %h(zName)</a> version %z(href("%R/artifact/%!S",zOld))[%S(zOld)]</a>. |
| 445 | }else{ |
| 446 | @ Added %z(href("%R/finfo?name=%T&m=%!S&ci=%s",zName,zNew,zCkin2))\ |
| 447 | @ %h(zName)</a> version %z(href("%R/artifact/%!S",zNew))[%S(zNew)]</a>. |
| 448 | } |
| 449 | if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){ |
| 450 | if( pCfg ){ |
| 451 | @ </span></div> |
| 452 |