Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add the ability to have a C-card on a wiki page. The current implementation does not use or generate wiki page artifacts with a C-card. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
cad57db96e8c4c5c6b857ce6119c22c4 |
| User & Date: | drh 2019-12-02 13:45:47.159 |
Context
|
2019-12-03
| ||
| 13:06 | Improved documentation on the undo command. Have the mv command clear the undo stack. check-in: 3f8cdaa15e user: drh tags: trunk | |
|
2019-12-02
| ||
| 13:45 | Add the ability to have a C-card on a wiki page. The current implementation does not use or generate wiki page artifacts with a C-card. check-in: cad57db96e user: drh tags: trunk | |
|
2019-11-30
| ||
| 13:53 | Rework the "fossil grep" command so that it shows both the file and check-in hash for matching files, and so that it can scan multiple files all at once. check-in: f5f4471323 user: drh tags: trunk | |
Changes
Changes to src/manifest.c.
| ︙ | ︙ | |||
128 129 130 131 132 133 134 |
} manifestCardTypes[] = {
/* Allowed Required */
/* CFTYPE_MANIFEST 1 */ { "BCDFNPQRTUZ", "DZ" },
/* Wants to be "CDUZ" ----^^^^
** but we must limit for historical compatibility */
/* CFTYPE_CLUSTER 2 */ { "MZ", "MZ" },
/* CFTYPE_CONTROL 3 */ { "DTUZ", "DTUZ" },
| | | 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
} manifestCardTypes[] = {
/* Allowed Required */
/* CFTYPE_MANIFEST 1 */ { "BCDFNPQRTUZ", "DZ" },
/* Wants to be "CDUZ" ----^^^^
** but we must limit for historical compatibility */
/* CFTYPE_CLUSTER 2 */ { "MZ", "MZ" },
/* CFTYPE_CONTROL 3 */ { "DTUZ", "DTUZ" },
/* CFTYPE_WIKI 4 */ { "CDLNPUWZ", "DLUWZ" },
/* CFTYPE_TICKET 5 */ { "DJKUZ", "DJKUZ" },
/* CFTYPE_ATTACHMENT 6 */ { "ACDNUZ", "ADZ" },
/* CFTYPE_EVENT 7 */ { "CDENPTUWZ", "DEWZ" },
/* CFTYPE_FORUM 8 */ { "DGHINPUWZ", "DUWZ" },
};
/*
|
| ︙ | ︙ | |||
316 317 318 319 320 321 322 | ** checksum. Return 0 if there is no Z-card. Return 1 if the Z-card ** exists and is correct. Return 2 if the Z-card exists and has the wrong ** value. ** ** 0123456789 123456789 123456789 123456789 ** Z aea84f4f863865a8d59d0384e4d2a41c */ | | > > | > | 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
** checksum. Return 0 if there is no Z-card. Return 1 if the Z-card
** exists and is correct. Return 2 if the Z-card exists and has the wrong
** value.
**
** 0123456789 123456789 123456789 123456789
** Z aea84f4f863865a8d59d0384e4d2a41c
*/
static int verify_z_card(const char *z, int n, Blob *pErr){
const char *zHash;
if( n<35 ) return 0;
if( z[n-35]!='Z' || z[n-34]!=' ' ) return 0;
md5sum_init();
md5sum_step_text(z, n-35);
zHash = md5sum_finish(0);
if( memcmp(&z[n-33], zHash, 32)==0 ){
return 1;
}else{
blob_appendf(pErr, "incorrect Z-card cksum: expected %.32s", zHash);
return 2;
}
}
/*
** A structure used for rapid parsing of the Manifest file
*/
|
| ︙ | ︙ | |||
464 465 466 467 468 469 470 |
if( n<10 || z[0]<'A' || z[0]>'Z' || z[1]!=' ' ){
blob_reset(pContent);
blob_appendf(pErr, "line 1 not recognized");
return 0;
}
/* Then verify the Z-card.
*/
| | < | 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 |
if( n<10 || z[0]<'A' || z[0]>'Z' || z[1]!=' ' ){
blob_reset(pContent);
blob_appendf(pErr, "line 1 not recognized");
return 0;
}
/* Then verify the Z-card.
*/
if( verify_z_card(z, n, pErr)==2 ){
blob_reset(pContent);
return 0;
}
/* Allocate a Manifest object to hold the parsed control artifact.
*/
p = fossil_malloc( sizeof(*p) );
memset(p, 0, sizeof(*p));
|
| ︙ | ︙ | |||
1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 |
blob_copy(&b2, &b);
blob_zero(&err);
p = manifest_parse(&b2, 0, &err);
if( p==0 ) fossil_print("ERROR: %s\n", blob_str(&err));
blob_reset(&err);
manifest_destroy(p);
}
}
/*
** COMMAND: test-parse-all-blobs
**
** Usage: %fossil test-parse-all-blobs [--limit N]
**
| > | 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 |
blob_copy(&b2, &b);
blob_zero(&err);
p = manifest_parse(&b2, 0, &err);
if( p==0 ) fossil_print("ERROR: %s\n", blob_str(&err));
blob_reset(&err);
manifest_destroy(p);
}
blob_reset(&b);
}
/*
** COMMAND: test-parse-all-blobs
**
** Usage: %fossil test-parse-all-blobs [--limit N]
**
|
| ︙ | ︙ |
Changes to www/fileformat.wiki.
| ︙ | ︙ | |||
341 342 343 344 345 346 347 348 349 350 351 352 353 354 | A wiki artifact defines a single version of a single wiki page. Wiki artifacts accept the following card types: <blockquote> <b>D</b> <i>time-and-date-stamp</i><br /> <b>L</b> <i>wiki-title</i><br /> <b>N</b> <i>mimetype</i><br /> <b>P</b> <i>parent-artifact-id</i>+<br /> <b>U</b> <i>user-name</i><br /> <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br /> <b>Z</b> <i>checksum</i> | > | 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | A wiki artifact defines a single version of a single wiki page. Wiki artifacts accept the following card types: <blockquote> <b>C</b> <i>change-comment</i><br> <b>D</b> <i>time-and-date-stamp</i><br /> <b>L</b> <i>wiki-title</i><br /> <b>N</b> <i>mimetype</i><br /> <b>P</b> <i>parent-artifact-id</i>+<br /> <b>U</b> <i>user-name</i><br /> <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br /> <b>Z</b> <i>checksum</i> |
| ︙ | ︙ | |||
364 365 366 367 368 369 370 371 372 373 374 375 376 377 | the usual checksum over the entire artifact and is required. The <b>W</b> card is used to specify the text of the wiki page. The argument to the <b>W</b> card is an integer which is the number of bytes of text in the wiki page. That text follows the newline character that terminates the <b>W</b> card. The wiki text is always followed by one extra newline. An example wiki artifact can be seen [/artifact?name=7b2f5fd0e0&txt=1 | here]. <a name="tktchng"></a> <h3>2.5 Ticket Changes</h3> | > > > > > > > | 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 | the usual checksum over the entire artifact and is required. The <b>W</b> card is used to specify the text of the wiki page. The argument to the <b>W</b> card is an integer which is the number of bytes of text in the wiki page. That text follows the newline character that terminates the <b>W</b> card. The wiki text is always followed by one extra newline. The <b>C</b> card on a wiki page is optional. The argument is a comment that explains why the changes was made. The ability to have a <b>C</b> card on a wiki page artifact was added on 2019-12-02 at the suggestion of user George Krivov and is not currently used or generated by the implementation. Older versions of Fossil will reject a wiki-page artifact that includes a <b>C</b> card. An example wiki artifact can be seen [/artifact?name=7b2f5fd0e0&txt=1 | here]. <a name="tktchng"></a> <h3>2.5 Ticket Changes</h3> |
| ︙ | ︙ | |||
651 652 653 654 655 656 657 | <td> </td> </tr> <tr> <td><b>C</b> <i>comment-text</i></td> <td align=center><b>1</b></td> <td> </td> <td> </td> | | | 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 | <td> </td> </tr> <tr> <td><b>C</b> <i>comment-text</i></td> <td align=center><b>1</b></td> <td> </td> <td> </td> <td align=center><b>0-1</b></td> <td> </td> <td align=center><b>0-1</b></td> <td align=center><b>0-1</b></td> <td> </td> </tr> <tr> <td><b>D</b> <i>date-time-stamp</i></td> |
| ︙ | ︙ |