Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | experimentally added "PGP SIGNED" marker to PGP-signed commits in the timeline, per ML request. |
|---|---|
| Timelines: | family | ancestors | descendants | both | timeline-pgp-marker |
| Files: | files | file ages | folders |
| SHA1: |
d632a50e2a06c76b5f3432c2c9920110 |
| User & Date: | stephan 2013-08-20 12:57:48.569 |
Context
|
2013-08-20
| ||
| 14:07 | Added a link to the pgp-signed note. Not happy with how it turns out, but it is proof-of-concept. Leaf check-in: 884a765abd user: stephan tags: timeline-pgp-marker | |
| 12:57 | experimentally added "PGP SIGNED" marker to PGP-signed commits in the timeline, per ML request. check-in: d632a50e2a user: stephan tags: timeline-pgp-marker | |
| 11:29 | Detect properly that [ff59f202fe] is an invalid Control artifact. Leaf check-in: 13161f39aa user: jan.nijtmans tags: trunk | |
Changes
Changes to src/manifest.c.
| ︙ | ︙ | |||
58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
/*
** A parsed manifest or cluster.
*/
struct Manifest {
Blob content; /* The original content blob */
int type; /* Type of artifact. One of CFTYPE_xxxxx */
int rid; /* The blob-id for this manifest */
char *zBaseline; /* Baseline manifest. The B card. */
Manifest *pBaseline; /* The actual baseline manifest */
char *zComment; /* Decoded comment. The C card. */
double rDate; /* Date and time from D card. 0.0 if no D card. */
char *zUser; /* Name of the user from the U card. */
char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */
char *zWiki; /* Text of the wiki page. W card. */
| > | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
/*
** A parsed manifest or cluster.
*/
struct Manifest {
Blob content; /* The original content blob */
int type; /* Type of artifact. One of CFTYPE_xxxxx */
int rid; /* The blob-id for this manifest */
int fSigned; /* True if the manifest was PGP-signed */
char *zBaseline; /* Baseline manifest. The B card. */
Manifest *pBaseline; /* The actual baseline manifest */
char *zComment; /* Decoded comment. The C card. */
double rDate; /* Date and time from D card. 0.0 if no D card. */
char *zUser; /* Name of the user from the U card. */
char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */
char *zWiki; /* Text of the wiki page. W card. */
|
| ︙ | ︙ | |||
354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
char *z;
int n;
char *zUuid;
int sz = 0;
int isRepeat;
static Bag seen;
const char *zErr = 0;
if( rid==0 ){
isRepeat = 1;
}else if( bag_find(&seen, rid) ){
isRepeat = 1;
}else{
isRepeat = 0;
| > | 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 |
char *z;
int n;
char *zUuid;
int sz = 0;
int isRepeat;
static Bag seen;
const char *zErr = 0;
int fSigned = 0;
if( rid==0 ){
isRepeat = 1;
}else if( bag_find(&seen, rid) ){
isRepeat = 1;
}else{
isRepeat = 0;
|
| ︙ | ︙ | |||
379 380 381 382 383 384 385 |
blob_appendf(pErr, n ? "not terminated with \\n" : "zero-length");
return 0;
}
/* Strip off the PGP signature if there is one. Then verify the
** Z-card.
*/
| > > | > > > | 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 |
blob_appendf(pErr, n ? "not terminated with \\n" : "zero-length");
return 0;
}
/* Strip off the PGP signature if there is one. Then verify the
** Z-card.
*/
{
int const oldLen = n;
remove_pgp_signature(&z, &n);
fSigned = n<oldLen;
}
if( verify_z_card(z, n)==2 ){
blob_reset(pContent);
blob_appendf(pErr, "incorrect Z-card cksum");
return 0;
}
/* Verify that the first few characters of the artifact look like
|
| ︙ | ︙ | |||
403 404 405 406 407 408 409 410 411 412 413 414 415 416 |
*/
p = fossil_malloc( sizeof(*p) );
memset(p, 0, sizeof(*p));
memcpy(&p->content, pContent, sizeof(p->content));
p->rid = rid;
blob_zero(pContent);
pContent = &p->content;
/* Begin parsing, card by card.
*/
x.z = z;
x.zEnd = &z[n];
x.atEol = 1;
while( (cType = next_card(&x))!=0 && cType>=cPrevType ){
| > | 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 |
*/
p = fossil_malloc( sizeof(*p) );
memset(p, 0, sizeof(*p));
memcpy(&p->content, pContent, sizeof(p->content));
p->rid = rid;
blob_zero(pContent);
pContent = &p->content;
p->fSigned = fSigned;
/* Begin parsing, card by card.
*/
x.z = z;
x.zEnd = &z[n];
x.atEol = 1;
while( (cType = next_card(&x))!=0 && cType>=cPrevType ){
|
| ︙ | ︙ | |||
1699 1700 1701 1702 1703 1704 1705 |
"REPLACE INTO event(type,mtime,objid,user,comment,"
"bgcolor,euser,ecomment,omtime)"
"VALUES('ci',"
" coalesce("
" (SELECT julianday(value) FROM tagxref WHERE tagid=%d AND rid=%d),"
" %.17g"
" ),"
| | | > | 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 |
"REPLACE INTO event(type,mtime,objid,user,comment,"
"bgcolor,euser,ecomment,omtime)"
"VALUES('ci',"
" coalesce("
" (SELECT julianday(value) FROM tagxref WHERE tagid=%d AND rid=%d),"
" %.17g"
" ),"
" %d,%Q,%Q || %Q,"
" (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d AND tagtype>0),"
" (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d),"
" (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d),%.17g);",
TAG_DATE, rid, p->rDate,
rid, p->zUser, p->zComment,
p->fSigned ? " (*PGP SIGNED*)" : "",
TAG_BGCOLOR, rid,
TAG_USER, rid,
TAG_COMMENT, rid, p->rDate
);
zCom = db_text(0, "SELECT coalesce(ecomment, comment) FROM event"
" WHERE rowid=last_insert_rowid()");
wiki_extract_links(zCom, rid, 0, p->rDate, 1, WIKI_INLINE);
|
| ︙ | ︙ |