Fossil SCM
Merge changes from trunk
Commit
980acc8f1fb89bbd40b5bcf2bca96a7aa0efd9c1
Parent
c95c183e7be7dbe…
9 files changed
+21
-3
+21
-3
+4
+6
-2
+31
-29
+1
-1
+2
-1
+2
-1
+2
+21
-3
| --- src/manifest.c | ||
| +++ src/manifest.c | ||
| @@ -47,10 +47,11 @@ | ||
| 47 | 47 | /* |
| 48 | 48 | ** Flags for use with manifest_crosslink(). |
| 49 | 49 | */ |
| 50 | 50 | #define MC_NONE 0 /* default handling */ |
| 51 | 51 | #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ |
| 52 | +#define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */ | |
| 52 | 53 | |
| 53 | 54 | /* |
| 54 | 55 | ** A single F-card within a manifest |
| 55 | 56 | */ |
| 56 | 57 | struct ManifestFile { |
| @@ -360,10 +361,11 @@ | ||
| 360 | 361 | char *z; |
| 361 | 362 | int n; |
| 362 | 363 | char *zUuid; |
| 363 | 364 | int sz = 0; |
| 364 | 365 | int isRepeat, hasSelfRefTag = 0; |
| 366 | + Blob bUuid = BLOB_INITIALIZER; | |
| 365 | 367 | static Bag seen; |
| 366 | 368 | const char *zErr = 0; |
| 367 | 369 | |
| 368 | 370 | if( rid==0 ){ |
| 369 | 371 | isRepeat = 1; |
| @@ -403,10 +405,15 @@ | ||
| 403 | 405 | if( verify_z_card(z, n)==2 ){ |
| 404 | 406 | blob_reset(pContent); |
| 405 | 407 | blob_appendf(pErr, "incorrect Z-card cksum"); |
| 406 | 408 | return 0; |
| 407 | 409 | } |
| 410 | + | |
| 411 | + /* Store the UUID (before modifying the blob) only for error | |
| 412 | + ** reporting purposes. | |
| 413 | + */ | |
| 414 | + sha1sum_blob(pContent, &bUuid); | |
| 408 | 415 | |
| 409 | 416 | /* Allocate a Manifest object to hold the parsed control artifact. |
| 410 | 417 | */ |
| 411 | 418 | p = fossil_malloc( sizeof(*p) ); |
| 412 | 419 | memset(p, 0, sizeof(*p)); |
| @@ -942,13 +949,18 @@ | ||
| 942 | 949 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 943 | 950 | p->type = CFTYPE_CONTROL; |
| 944 | 951 | } |
| 945 | 952 | md5sum_init(); |
| 946 | 953 | if( !isRepeat ) g.parseCnt[p->type]++; |
| 954 | + blob_reset(&bUuid); | |
| 947 | 955 | return p; |
| 948 | 956 | |
| 949 | 957 | manifest_syntax_error: |
| 958 | + if(bUuid.nUsed){ | |
| 959 | + blob_appendf(pErr, "manifest [%.40s] ", blob_str(&bUuid)); | |
| 960 | + blob_reset(&bUuid); | |
| 961 | + } | |
| 950 | 962 | if( zErr ){ |
| 951 | 963 | blob_appendf(pErr, "line %d: %s", lineNo, zErr); |
| 952 | 964 | }else{ |
| 953 | 965 | blob_appendf(pErr, "unknown error on line %d", lineNo); |
| 954 | 966 | } |
| @@ -1731,23 +1743,29 @@ | ||
| 1731 | 1743 | |
| 1732 | 1744 | if( (p = manifest_cache_find(rid))!=0 ){ |
| 1733 | 1745 | blob_reset(pContent); |
| 1734 | 1746 | }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ |
| 1735 | 1747 | assert( blob_is_reset(pContent) || pContent==0 ); |
| 1736 | - fossil_error(1, "syntax error in manifest"); | |
| 1748 | + if( (flags & MC_NO_ERRORS)==0 ){ | |
| 1749 | + fossil_error(1, "syntax error in manifest [%s]", | |
| 1750 | + db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); | |
| 1751 | + } | |
| 1737 | 1752 | return 0; |
| 1738 | 1753 | } |
| 1739 | 1754 | if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ |
| 1740 | 1755 | manifest_destroy(p); |
| 1741 | 1756 | assert( blob_is_reset(pContent) ); |
| 1742 | - fossil_error(1, "no manifest"); | |
| 1757 | + if( (flags & MC_NO_ERRORS)==0 ) fossil_error(1, "no manifest"); | |
| 1743 | 1758 | return 0; |
| 1744 | 1759 | } |
| 1745 | 1760 | if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ |
| 1746 | 1761 | manifest_destroy(p); |
| 1747 | 1762 | assert( blob_is_reset(pContent) ); |
| 1748 | - fossil_error(1, "cannot fetch baseline manifest"); | |
| 1763 | + if( (flags & MC_NO_ERRORS)==0 ){ | |
| 1764 | + fossil_error(1, "cannot fetch baseline for manifest [%s]", | |
| 1765 | + db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); | |
| 1766 | + } | |
| 1749 | 1767 | return 0; |
| 1750 | 1768 | } |
| 1751 | 1769 | db_begin_transaction(); |
| 1752 | 1770 | if( p->type==CFTYPE_MANIFEST ){ |
| 1753 | 1771 | if( permitHooks ){ |
| 1754 | 1772 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -47,10 +47,11 @@ | |
| 47 | /* |
| 48 | ** Flags for use with manifest_crosslink(). |
| 49 | */ |
| 50 | #define MC_NONE 0 /* default handling */ |
| 51 | #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ |
| 52 | |
| 53 | /* |
| 54 | ** A single F-card within a manifest |
| 55 | */ |
| 56 | struct ManifestFile { |
| @@ -360,10 +361,11 @@ | |
| 360 | char *z; |
| 361 | int n; |
| 362 | char *zUuid; |
| 363 | int sz = 0; |
| 364 | int isRepeat, hasSelfRefTag = 0; |
| 365 | static Bag seen; |
| 366 | const char *zErr = 0; |
| 367 | |
| 368 | if( rid==0 ){ |
| 369 | isRepeat = 1; |
| @@ -403,10 +405,15 @@ | |
| 403 | if( verify_z_card(z, n)==2 ){ |
| 404 | blob_reset(pContent); |
| 405 | blob_appendf(pErr, "incorrect Z-card cksum"); |
| 406 | return 0; |
| 407 | } |
| 408 | |
| 409 | /* Allocate a Manifest object to hold the parsed control artifact. |
| 410 | */ |
| 411 | p = fossil_malloc( sizeof(*p) ); |
| 412 | memset(p, 0, sizeof(*p)); |
| @@ -942,13 +949,18 @@ | |
| 942 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 943 | p->type = CFTYPE_CONTROL; |
| 944 | } |
| 945 | md5sum_init(); |
| 946 | if( !isRepeat ) g.parseCnt[p->type]++; |
| 947 | return p; |
| 948 | |
| 949 | manifest_syntax_error: |
| 950 | if( zErr ){ |
| 951 | blob_appendf(pErr, "line %d: %s", lineNo, zErr); |
| 952 | }else{ |
| 953 | blob_appendf(pErr, "unknown error on line %d", lineNo); |
| 954 | } |
| @@ -1731,23 +1743,29 @@ | |
| 1731 | |
| 1732 | if( (p = manifest_cache_find(rid))!=0 ){ |
| 1733 | blob_reset(pContent); |
| 1734 | }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ |
| 1735 | assert( blob_is_reset(pContent) || pContent==0 ); |
| 1736 | fossil_error(1, "syntax error in manifest"); |
| 1737 | return 0; |
| 1738 | } |
| 1739 | if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ |
| 1740 | manifest_destroy(p); |
| 1741 | assert( blob_is_reset(pContent) ); |
| 1742 | fossil_error(1, "no manifest"); |
| 1743 | return 0; |
| 1744 | } |
| 1745 | if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ |
| 1746 | manifest_destroy(p); |
| 1747 | assert( blob_is_reset(pContent) ); |
| 1748 | fossil_error(1, "cannot fetch baseline manifest"); |
| 1749 | return 0; |
| 1750 | } |
| 1751 | db_begin_transaction(); |
| 1752 | if( p->type==CFTYPE_MANIFEST ){ |
| 1753 | if( permitHooks ){ |
| 1754 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -47,10 +47,11 @@ | |
| 47 | /* |
| 48 | ** Flags for use with manifest_crosslink(). |
| 49 | */ |
| 50 | #define MC_NONE 0 /* default handling */ |
| 51 | #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ |
| 52 | #define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */ |
| 53 | |
| 54 | /* |
| 55 | ** A single F-card within a manifest |
| 56 | */ |
| 57 | struct ManifestFile { |
| @@ -360,10 +361,11 @@ | |
| 361 | char *z; |
| 362 | int n; |
| 363 | char *zUuid; |
| 364 | int sz = 0; |
| 365 | int isRepeat, hasSelfRefTag = 0; |
| 366 | Blob bUuid = BLOB_INITIALIZER; |
| 367 | static Bag seen; |
| 368 | const char *zErr = 0; |
| 369 | |
| 370 | if( rid==0 ){ |
| 371 | isRepeat = 1; |
| @@ -403,10 +405,15 @@ | |
| 405 | if( verify_z_card(z, n)==2 ){ |
| 406 | blob_reset(pContent); |
| 407 | blob_appendf(pErr, "incorrect Z-card cksum"); |
| 408 | return 0; |
| 409 | } |
| 410 | |
| 411 | /* Store the UUID (before modifying the blob) only for error |
| 412 | ** reporting purposes. |
| 413 | */ |
| 414 | sha1sum_blob(pContent, &bUuid); |
| 415 | |
| 416 | /* Allocate a Manifest object to hold the parsed control artifact. |
| 417 | */ |
| 418 | p = fossil_malloc( sizeof(*p) ); |
| 419 | memset(p, 0, sizeof(*p)); |
| @@ -942,13 +949,18 @@ | |
| 949 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 950 | p->type = CFTYPE_CONTROL; |
| 951 | } |
| 952 | md5sum_init(); |
| 953 | if( !isRepeat ) g.parseCnt[p->type]++; |
| 954 | blob_reset(&bUuid); |
| 955 | return p; |
| 956 | |
| 957 | manifest_syntax_error: |
| 958 | if(bUuid.nUsed){ |
| 959 | blob_appendf(pErr, "manifest [%.40s] ", blob_str(&bUuid)); |
| 960 | blob_reset(&bUuid); |
| 961 | } |
| 962 | if( zErr ){ |
| 963 | blob_appendf(pErr, "line %d: %s", lineNo, zErr); |
| 964 | }else{ |
| 965 | blob_appendf(pErr, "unknown error on line %d", lineNo); |
| 966 | } |
| @@ -1731,23 +1743,29 @@ | |
| 1743 | |
| 1744 | if( (p = manifest_cache_find(rid))!=0 ){ |
| 1745 | blob_reset(pContent); |
| 1746 | }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ |
| 1747 | assert( blob_is_reset(pContent) || pContent==0 ); |
| 1748 | if( (flags & MC_NO_ERRORS)==0 ){ |
| 1749 | fossil_error(1, "syntax error in manifest [%s]", |
| 1750 | db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); |
| 1751 | } |
| 1752 | return 0; |
| 1753 | } |
| 1754 | if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ |
| 1755 | manifest_destroy(p); |
| 1756 | assert( blob_is_reset(pContent) ); |
| 1757 | if( (flags & MC_NO_ERRORS)==0 ) fossil_error(1, "no manifest"); |
| 1758 | return 0; |
| 1759 | } |
| 1760 | if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ |
| 1761 | manifest_destroy(p); |
| 1762 | assert( blob_is_reset(pContent) ); |
| 1763 | if( (flags & MC_NO_ERRORS)==0 ){ |
| 1764 | fossil_error(1, "cannot fetch baseline for manifest [%s]", |
| 1765 | db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); |
| 1766 | } |
| 1767 | return 0; |
| 1768 | } |
| 1769 | db_begin_transaction(); |
| 1770 | if( p->type==CFTYPE_MANIFEST ){ |
| 1771 | if( permitHooks ){ |
| 1772 |
+21
-3
| --- src/manifest.c | ||
| +++ src/manifest.c | ||
| @@ -47,10 +47,11 @@ | ||
| 47 | 47 | /* |
| 48 | 48 | ** Flags for use with manifest_crosslink(). |
| 49 | 49 | */ |
| 50 | 50 | #define MC_NONE 0 /* default handling */ |
| 51 | 51 | #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ |
| 52 | +#define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */ | |
| 52 | 53 | |
| 53 | 54 | /* |
| 54 | 55 | ** A single F-card within a manifest |
| 55 | 56 | */ |
| 56 | 57 | struct ManifestFile { |
| @@ -360,10 +361,11 @@ | ||
| 360 | 361 | char *z; |
| 361 | 362 | int n; |
| 362 | 363 | char *zUuid; |
| 363 | 364 | int sz = 0; |
| 364 | 365 | int isRepeat, hasSelfRefTag = 0; |
| 366 | + Blob bUuid = BLOB_INITIALIZER; | |
| 365 | 367 | static Bag seen; |
| 366 | 368 | const char *zErr = 0; |
| 367 | 369 | |
| 368 | 370 | if( rid==0 ){ |
| 369 | 371 | isRepeat = 1; |
| @@ -403,10 +405,15 @@ | ||
| 403 | 405 | if( verify_z_card(z, n)==2 ){ |
| 404 | 406 | blob_reset(pContent); |
| 405 | 407 | blob_appendf(pErr, "incorrect Z-card cksum"); |
| 406 | 408 | return 0; |
| 407 | 409 | } |
| 410 | + | |
| 411 | + /* Store the UUID (before modifying the blob) only for error | |
| 412 | + ** reporting purposes. | |
| 413 | + */ | |
| 414 | + sha1sum_blob(pContent, &bUuid); | |
| 408 | 415 | |
| 409 | 416 | /* Allocate a Manifest object to hold the parsed control artifact. |
| 410 | 417 | */ |
| 411 | 418 | p = fossil_malloc( sizeof(*p) ); |
| 412 | 419 | memset(p, 0, sizeof(*p)); |
| @@ -942,13 +949,18 @@ | ||
| 942 | 949 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 943 | 950 | p->type = CFTYPE_CONTROL; |
| 944 | 951 | } |
| 945 | 952 | md5sum_init(); |
| 946 | 953 | if( !isRepeat ) g.parseCnt[p->type]++; |
| 954 | + blob_reset(&bUuid); | |
| 947 | 955 | return p; |
| 948 | 956 | |
| 949 | 957 | manifest_syntax_error: |
| 958 | + if(bUuid.nUsed){ | |
| 959 | + blob_appendf(pErr, "manifest [%.40s] ", blob_str(&bUuid)); | |
| 960 | + blob_reset(&bUuid); | |
| 961 | + } | |
| 950 | 962 | if( zErr ){ |
| 951 | 963 | blob_appendf(pErr, "line %d: %s", lineNo, zErr); |
| 952 | 964 | }else{ |
| 953 | 965 | blob_appendf(pErr, "unknown error on line %d", lineNo); |
| 954 | 966 | } |
| @@ -1731,23 +1743,29 @@ | ||
| 1731 | 1743 | |
| 1732 | 1744 | if( (p = manifest_cache_find(rid))!=0 ){ |
| 1733 | 1745 | blob_reset(pContent); |
| 1734 | 1746 | }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ |
| 1735 | 1747 | assert( blob_is_reset(pContent) || pContent==0 ); |
| 1736 | - fossil_error(1, "syntax error in manifest"); | |
| 1748 | + if( (flags & MC_NO_ERRORS)==0 ){ | |
| 1749 | + fossil_error(1, "syntax error in manifest [%s]", | |
| 1750 | + db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); | |
| 1751 | + } | |
| 1737 | 1752 | return 0; |
| 1738 | 1753 | } |
| 1739 | 1754 | if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ |
| 1740 | 1755 | manifest_destroy(p); |
| 1741 | 1756 | assert( blob_is_reset(pContent) ); |
| 1742 | - fossil_error(1, "no manifest"); | |
| 1757 | + if( (flags & MC_NO_ERRORS)==0 ) fossil_error(1, "no manifest"); | |
| 1743 | 1758 | return 0; |
| 1744 | 1759 | } |
| 1745 | 1760 | if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ |
| 1746 | 1761 | manifest_destroy(p); |
| 1747 | 1762 | assert( blob_is_reset(pContent) ); |
| 1748 | - fossil_error(1, "cannot fetch baseline manifest"); | |
| 1763 | + if( (flags & MC_NO_ERRORS)==0 ){ | |
| 1764 | + fossil_error(1, "cannot fetch baseline for manifest [%s]", | |
| 1765 | + db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); | |
| 1766 | + } | |
| 1749 | 1767 | return 0; |
| 1750 | 1768 | } |
| 1751 | 1769 | db_begin_transaction(); |
| 1752 | 1770 | if( p->type==CFTYPE_MANIFEST ){ |
| 1753 | 1771 | if( permitHooks ){ |
| 1754 | 1772 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -47,10 +47,11 @@ | |
| 47 | /* |
| 48 | ** Flags for use with manifest_crosslink(). |
| 49 | */ |
| 50 | #define MC_NONE 0 /* default handling */ |
| 51 | #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ |
| 52 | |
| 53 | /* |
| 54 | ** A single F-card within a manifest |
| 55 | */ |
| 56 | struct ManifestFile { |
| @@ -360,10 +361,11 @@ | |
| 360 | char *z; |
| 361 | int n; |
| 362 | char *zUuid; |
| 363 | int sz = 0; |
| 364 | int isRepeat, hasSelfRefTag = 0; |
| 365 | static Bag seen; |
| 366 | const char *zErr = 0; |
| 367 | |
| 368 | if( rid==0 ){ |
| 369 | isRepeat = 1; |
| @@ -403,10 +405,15 @@ | |
| 403 | if( verify_z_card(z, n)==2 ){ |
| 404 | blob_reset(pContent); |
| 405 | blob_appendf(pErr, "incorrect Z-card cksum"); |
| 406 | return 0; |
| 407 | } |
| 408 | |
| 409 | /* Allocate a Manifest object to hold the parsed control artifact. |
| 410 | */ |
| 411 | p = fossil_malloc( sizeof(*p) ); |
| 412 | memset(p, 0, sizeof(*p)); |
| @@ -942,13 +949,18 @@ | |
| 942 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 943 | p->type = CFTYPE_CONTROL; |
| 944 | } |
| 945 | md5sum_init(); |
| 946 | if( !isRepeat ) g.parseCnt[p->type]++; |
| 947 | return p; |
| 948 | |
| 949 | manifest_syntax_error: |
| 950 | if( zErr ){ |
| 951 | blob_appendf(pErr, "line %d: %s", lineNo, zErr); |
| 952 | }else{ |
| 953 | blob_appendf(pErr, "unknown error on line %d", lineNo); |
| 954 | } |
| @@ -1731,23 +1743,29 @@ | |
| 1731 | |
| 1732 | if( (p = manifest_cache_find(rid))!=0 ){ |
| 1733 | blob_reset(pContent); |
| 1734 | }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ |
| 1735 | assert( blob_is_reset(pContent) || pContent==0 ); |
| 1736 | fossil_error(1, "syntax error in manifest"); |
| 1737 | return 0; |
| 1738 | } |
| 1739 | if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ |
| 1740 | manifest_destroy(p); |
| 1741 | assert( blob_is_reset(pContent) ); |
| 1742 | fossil_error(1, "no manifest"); |
| 1743 | return 0; |
| 1744 | } |
| 1745 | if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ |
| 1746 | manifest_destroy(p); |
| 1747 | assert( blob_is_reset(pContent) ); |
| 1748 | fossil_error(1, "cannot fetch baseline manifest"); |
| 1749 | return 0; |
| 1750 | } |
| 1751 | db_begin_transaction(); |
| 1752 | if( p->type==CFTYPE_MANIFEST ){ |
| 1753 | if( permitHooks ){ |
| 1754 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -47,10 +47,11 @@ | |
| 47 | /* |
| 48 | ** Flags for use with manifest_crosslink(). |
| 49 | */ |
| 50 | #define MC_NONE 0 /* default handling */ |
| 51 | #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ |
| 52 | #define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */ |
| 53 | |
| 54 | /* |
| 55 | ** A single F-card within a manifest |
| 56 | */ |
| 57 | struct ManifestFile { |
| @@ -360,10 +361,11 @@ | |
| 361 | char *z; |
| 362 | int n; |
| 363 | char *zUuid; |
| 364 | int sz = 0; |
| 365 | int isRepeat, hasSelfRefTag = 0; |
| 366 | Blob bUuid = BLOB_INITIALIZER; |
| 367 | static Bag seen; |
| 368 | const char *zErr = 0; |
| 369 | |
| 370 | if( rid==0 ){ |
| 371 | isRepeat = 1; |
| @@ -403,10 +405,15 @@ | |
| 405 | if( verify_z_card(z, n)==2 ){ |
| 406 | blob_reset(pContent); |
| 407 | blob_appendf(pErr, "incorrect Z-card cksum"); |
| 408 | return 0; |
| 409 | } |
| 410 | |
| 411 | /* Store the UUID (before modifying the blob) only for error |
| 412 | ** reporting purposes. |
| 413 | */ |
| 414 | sha1sum_blob(pContent, &bUuid); |
| 415 | |
| 416 | /* Allocate a Manifest object to hold the parsed control artifact. |
| 417 | */ |
| 418 | p = fossil_malloc( sizeof(*p) ); |
| 419 | memset(p, 0, sizeof(*p)); |
| @@ -942,13 +949,18 @@ | |
| 949 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 950 | p->type = CFTYPE_CONTROL; |
| 951 | } |
| 952 | md5sum_init(); |
| 953 | if( !isRepeat ) g.parseCnt[p->type]++; |
| 954 | blob_reset(&bUuid); |
| 955 | return p; |
| 956 | |
| 957 | manifest_syntax_error: |
| 958 | if(bUuid.nUsed){ |
| 959 | blob_appendf(pErr, "manifest [%.40s] ", blob_str(&bUuid)); |
| 960 | blob_reset(&bUuid); |
| 961 | } |
| 962 | if( zErr ){ |
| 963 | blob_appendf(pErr, "line %d: %s", lineNo, zErr); |
| 964 | }else{ |
| 965 | blob_appendf(pErr, "unknown error on line %d", lineNo); |
| 966 | } |
| @@ -1731,23 +1743,29 @@ | |
| 1743 | |
| 1744 | if( (p = manifest_cache_find(rid))!=0 ){ |
| 1745 | blob_reset(pContent); |
| 1746 | }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ |
| 1747 | assert( blob_is_reset(pContent) || pContent==0 ); |
| 1748 | if( (flags & MC_NO_ERRORS)==0 ){ |
| 1749 | fossil_error(1, "syntax error in manifest [%s]", |
| 1750 | db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); |
| 1751 | } |
| 1752 | return 0; |
| 1753 | } |
| 1754 | if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ |
| 1755 | manifest_destroy(p); |
| 1756 | assert( blob_is_reset(pContent) ); |
| 1757 | if( (flags & MC_NO_ERRORS)==0 ) fossil_error(1, "no manifest"); |
| 1758 | return 0; |
| 1759 | } |
| 1760 | if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ |
| 1761 | manifest_destroy(p); |
| 1762 | assert( blob_is_reset(pContent) ); |
| 1763 | if( (flags & MC_NO_ERRORS)==0 ){ |
| 1764 | fossil_error(1, "cannot fetch baseline for manifest [%s]", |
| 1765 | db_text(0, "SELECT uuid FROM blob WHERE rid=%d",rid)); |
| 1766 | } |
| 1767 | return 0; |
| 1768 | } |
| 1769 | db_begin_transaction(); |
| 1770 | if( p->type==CFTYPE_MANIFEST ){ |
| 1771 | if( permitHooks ){ |
| 1772 |
+4
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -1075,10 +1075,14 @@ | ||
| 1075 | 1075 | @ every historical check-in, which can use a lot of CPU and bandwidth |
| 1076 | 1076 | @ even for relatively small projects.</p> |
| 1077 | 1077 | @ |
| 1078 | 1078 | @ <p>Additional parameters that control this behavior:</p> |
| 1079 | 1079 | @ <blockquote> |
| 1080 | + onoff_attribute("Enable hyperlinks for humans (as deduced from the UserAgent " | |
| 1081 | + " HTTP header string)", | |
| 1082 | + "auto-hyperlink-ishuman", "ahis", 0, 0); | |
| 1083 | + @ <br> | |
| 1080 | 1084 | onoff_attribute("Require mouse movement before enabling hyperlinks", |
| 1081 | 1085 | "auto-hyperlink-mouseover", "ahmo", 0, 0); |
| 1082 | 1086 | @ <br> |
| 1083 | 1087 | entry_attribute("Delay before enabling hyperlinks (milliseconds)", 5, |
| 1084 | 1088 | "auto-hyperlink-delay", "ah-delay", "10", 0); |
| 1085 | 1089 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -1075,10 +1075,14 @@ | |
| 1075 | @ every historical check-in, which can use a lot of CPU and bandwidth |
| 1076 | @ even for relatively small projects.</p> |
| 1077 | @ |
| 1078 | @ <p>Additional parameters that control this behavior:</p> |
| 1079 | @ <blockquote> |
| 1080 | onoff_attribute("Require mouse movement before enabling hyperlinks", |
| 1081 | "auto-hyperlink-mouseover", "ahmo", 0, 0); |
| 1082 | @ <br> |
| 1083 | entry_attribute("Delay before enabling hyperlinks (milliseconds)", 5, |
| 1084 | "auto-hyperlink-delay", "ah-delay", "10", 0); |
| 1085 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -1075,10 +1075,14 @@ | |
| 1075 | @ every historical check-in, which can use a lot of CPU and bandwidth |
| 1076 | @ even for relatively small projects.</p> |
| 1077 | @ |
| 1078 | @ <p>Additional parameters that control this behavior:</p> |
| 1079 | @ <blockquote> |
| 1080 | onoff_attribute("Enable hyperlinks for humans (as deduced from the UserAgent " |
| 1081 | " HTTP header string)", |
| 1082 | "auto-hyperlink-ishuman", "ahis", 0, 0); |
| 1083 | @ <br> |
| 1084 | onoff_attribute("Require mouse movement before enabling hyperlinks", |
| 1085 | "auto-hyperlink-mouseover", "ahmo", 0, 0); |
| 1086 | @ <br> |
| 1087 | entry_attribute("Delay before enabling hyperlinks (milliseconds)", 5, |
| 1088 | "auto-hyperlink-delay", "ah-delay", "10", 0); |
| 1089 |
+6
-2
| --- src/style.c | ||
| +++ src/style.c | ||
| @@ -182,18 +182,22 @@ | ||
| 182 | 182 | @ var isOperaMini = Object.prototype.toString.call(window.operamini) |
| 183 | 183 | @ === "[object OperaMini]"; |
| 184 | 184 | @ if( isOperaMini ){ |
| 185 | 185 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 186 | 186 | @ } |
| 187 | + }else if( db_get_boolean("auto-hyperlink-ishuman",0) && g.isHuman ){ | |
| 188 | + /* Active hyperlinks after a delay */ | |
| 189 | + @ setTimeout("setAllHrefs();",%d(nDelay)); | |
| 187 | 190 | }else if( db_get_boolean("auto-hyperlink-mouseover",0) ){ |
| 188 | - /* Require mouse movement prior to activating hyperlinks */ | |
| 191 | + /* Require mouse movement before starting the teim that will | |
| 192 | + ** activating hyperlinks */ | |
| 189 | 193 | @ document.getElementsByTagName("body")[0].onmousemove=function(){ |
| 190 | 194 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 191 | 195 | @ this.onmousemove = null; |
| 192 | 196 | @ } |
| 193 | 197 | }else{ |
| 194 | - /* Active hyperlinks right away */ | |
| 198 | + /* Active hyperlinks after a delay */ | |
| 195 | 199 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 196 | 200 | } |
| 197 | 201 | @ </script> |
| 198 | 202 | } |
| 199 | 203 | |
| 200 | 204 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -182,18 +182,22 @@ | |
| 182 | @ var isOperaMini = Object.prototype.toString.call(window.operamini) |
| 183 | @ === "[object OperaMini]"; |
| 184 | @ if( isOperaMini ){ |
| 185 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 186 | @ } |
| 187 | }else if( db_get_boolean("auto-hyperlink-mouseover",0) ){ |
| 188 | /* Require mouse movement prior to activating hyperlinks */ |
| 189 | @ document.getElementsByTagName("body")[0].onmousemove=function(){ |
| 190 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 191 | @ this.onmousemove = null; |
| 192 | @ } |
| 193 | }else{ |
| 194 | /* Active hyperlinks right away */ |
| 195 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 196 | } |
| 197 | @ </script> |
| 198 | } |
| 199 | |
| 200 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -182,18 +182,22 @@ | |
| 182 | @ var isOperaMini = Object.prototype.toString.call(window.operamini) |
| 183 | @ === "[object OperaMini]"; |
| 184 | @ if( isOperaMini ){ |
| 185 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 186 | @ } |
| 187 | }else if( db_get_boolean("auto-hyperlink-ishuman",0) && g.isHuman ){ |
| 188 | /* Active hyperlinks after a delay */ |
| 189 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 190 | }else if( db_get_boolean("auto-hyperlink-mouseover",0) ){ |
| 191 | /* Require mouse movement before starting the teim that will |
| 192 | ** activating hyperlinks */ |
| 193 | @ document.getElementsByTagName("body")[0].onmousemove=function(){ |
| 194 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 195 | @ this.onmousemove = null; |
| 196 | @ } |
| 197 | }else{ |
| 198 | /* Active hyperlinks after a delay */ |
| 199 | @ setTimeout("setAllHrefs();",%d(nDelay)); |
| 200 | } |
| 201 | @ </script> |
| 202 | } |
| 203 | |
| 204 |
+31
-29
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -1702,11 +1702,11 @@ | ||
| 1702 | 1702 | } |
| 1703 | 1703 | |
| 1704 | 1704 | /* |
| 1705 | 1705 | ** COMMAND: timeline |
| 1706 | 1706 | ** |
| 1707 | -** Usage: %fossil timeline ?WHEN? ?BASELINE|DATETIME? ?OPTIONS? | |
| 1707 | +** Usage: %fossil timeline ?WHEN? ?CHECKIN|DATETIME? ?OPTIONS? | |
| 1708 | 1708 | ** |
| 1709 | 1709 | ** Print a summary of activity going backwards in date and time |
| 1710 | 1710 | ** specified or from the current date and time if no arguments |
| 1711 | 1711 | ** are given. The WHEN argument can be any unique abbreviation |
| 1712 | 1712 | ** of one of these keywords: |
| @@ -1722,10 +1722,12 @@ | ||
| 1722 | 1722 | ** for the current version or "now" for the current time. |
| 1723 | 1723 | ** |
| 1724 | 1724 | ** Options: |
| 1725 | 1725 | ** -n|--limit N Output the first N entries (default 20 lines). |
| 1726 | 1726 | ** N=0 means no limit. |
| 1727 | +** -p|--path PATH Output items affecting PATH only. | |
| 1728 | +** PATH can be a file or a sub directory. | |
| 1727 | 1729 | ** --offset P skip P changes |
| 1728 | 1730 | ** -t|--type TYPE Output items from the given types only, such as: |
| 1729 | 1731 | ** ci = file commits only |
| 1730 | 1732 | ** e = events only |
| 1731 | 1733 | ** t = tickets only |
| @@ -1739,11 +1741,11 @@ | ||
| 1739 | 1741 | ** -R REPO_FILE Specifies the repository db to use. Default is |
| 1740 | 1742 | ** the current checkout's repository. |
| 1741 | 1743 | */ |
| 1742 | 1744 | void timeline_cmd(void){ |
| 1743 | 1745 | Stmt q; |
| 1744 | - int n, k, width, i; | |
| 1746 | + int n, k, width; | |
| 1745 | 1747 | const char *zLimit; |
| 1746 | 1748 | const char *zWidth; |
| 1747 | 1749 | const char *zOffset; |
| 1748 | 1750 | const char *zType; |
| 1749 | 1751 | char *zOrigin; |
| @@ -1763,10 +1765,12 @@ | ||
| 1763 | 1765 | } |
| 1764 | 1766 | db_find_and_open_repository(0, 0); |
| 1765 | 1767 | zLimit = find_option("limit","n",1); |
| 1766 | 1768 | zWidth = find_option("width","W",1); |
| 1767 | 1769 | zType = find_option("type","t",1); |
| 1770 | + zFilePattern = find_option("path","p",1); | |
| 1771 | + | |
| 1768 | 1772 | if( !zLimit ){ |
| 1769 | 1773 | zLimit = find_option("count",0,1); |
| 1770 | 1774 | } |
| 1771 | 1775 | if( zLimit ){ |
| 1772 | 1776 | n = atoi(zLimit); |
| @@ -1785,39 +1789,37 @@ | ||
| 1785 | 1789 | iOffset = zOffset ? atoi(zOffset) : 0; |
| 1786 | 1790 | |
| 1787 | 1791 | /* We should be done with options.. */ |
| 1788 | 1792 | verify_all_options(); |
| 1789 | 1793 | |
| 1790 | - zOrigin = "now"; | |
| 1791 | - zFilePattern = 0; | |
| 1792 | - for(i=2; i<g.argc; i++){ | |
| 1793 | - char *zArg = g.argv[i]; | |
| 1794 | - k = strlen(zArg); | |
| 1795 | - if( mode==0 ){ | |
| 1796 | - if( strncmp(zArg,"before",k)==0 ){ | |
| 1797 | - mode = 1; | |
| 1798 | - }else if( strncmp(zArg,"after",k)==0 && k>1 ){ | |
| 1799 | - mode = 2; | |
| 1800 | - }else if( strncmp(zArg,"descendants",k)==0 ){ | |
| 1801 | - mode = 3; | |
| 1802 | - }else if( strncmp(zArg,"children",k)==0 ){ | |
| 1803 | - mode = 3; | |
| 1804 | - }else if( strncmp(zArg,"ancestors",k)==0 && k>1 ){ | |
| 1805 | - mode = 4; | |
| 1806 | - }else if( strncmp(zArg,"parents",k)==0 ){ | |
| 1807 | - mode = 4; | |
| 1808 | - } | |
| 1809 | - if( mode ){ | |
| 1810 | - if( i<g.argc-1 ) zOrigin = g.argv[++i]; | |
| 1811 | - continue; | |
| 1812 | - } | |
| 1813 | - } | |
| 1814 | - if( zFilePattern==0 ){ | |
| 1815 | - zFilePattern = zArg; | |
| 1794 | + if( g.argc>=4 ){ | |
| 1795 | + k = strlen(g.argv[2]); | |
| 1796 | + if( strncmp(g.argv[2],"before",k)==0 ){ | |
| 1797 | + mode = 1; | |
| 1798 | + }else if( strncmp(g.argv[2],"after",k)==0 && k>1 ){ | |
| 1799 | + mode = 2; | |
| 1800 | + }else if( strncmp(g.argv[2],"descendants",k)==0 ){ | |
| 1801 | + mode = 3; | |
| 1802 | + }else if( strncmp(g.argv[2],"children",k)==0 ){ | |
| 1803 | + mode = 3; | |
| 1804 | + }else if( strncmp(g.argv[2],"ancestors",k)==0 && k>1 ){ | |
| 1805 | + mode = 4; | |
| 1806 | + }else if( strncmp(g.argv[2],"parents",k)==0 ){ | |
| 1807 | + mode = 4; | |
| 1808 | + }else if(!zType && !zLimit){ | |
| 1809 | + usage("?WHEN? ?CHECKIN|DATETIME? ?-n|--limit #? ?-t|--type TYPE? " | |
| 1810 | + "?-W|--width WIDTH? ?-p|--path PATH"); | |
| 1811 | + } | |
| 1812 | + if( '-' != *g.argv[3] ){ | |
| 1813 | + zOrigin = g.argv[3]; | |
| 1816 | 1814 | }else{ |
| 1817 | - usage("?WHEN? ?CHECKIN|DATETIME? ?FILE? ?OPTIONS?"); | |
| 1815 | + zOrigin = "now"; | |
| 1818 | 1816 | } |
| 1817 | + }else if( g.argc==3 ){ | |
| 1818 | + zOrigin = g.argv[2]; | |
| 1819 | + }else{ | |
| 1820 | + zOrigin = "now"; | |
| 1819 | 1821 | } |
| 1820 | 1822 | k = strlen(zOrigin); |
| 1821 | 1823 | blob_zero(&uuid); |
| 1822 | 1824 | blob_append(&uuid, zOrigin, -1); |
| 1823 | 1825 | if( fossil_strcmp(zOrigin, "now")==0 ){ |
| 1824 | 1826 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -1702,11 +1702,11 @@ | |
| 1702 | } |
| 1703 | |
| 1704 | /* |
| 1705 | ** COMMAND: timeline |
| 1706 | ** |
| 1707 | ** Usage: %fossil timeline ?WHEN? ?BASELINE|DATETIME? ?OPTIONS? |
| 1708 | ** |
| 1709 | ** Print a summary of activity going backwards in date and time |
| 1710 | ** specified or from the current date and time if no arguments |
| 1711 | ** are given. The WHEN argument can be any unique abbreviation |
| 1712 | ** of one of these keywords: |
| @@ -1722,10 +1722,12 @@ | |
| 1722 | ** for the current version or "now" for the current time. |
| 1723 | ** |
| 1724 | ** Options: |
| 1725 | ** -n|--limit N Output the first N entries (default 20 lines). |
| 1726 | ** N=0 means no limit. |
| 1727 | ** --offset P skip P changes |
| 1728 | ** -t|--type TYPE Output items from the given types only, such as: |
| 1729 | ** ci = file commits only |
| 1730 | ** e = events only |
| 1731 | ** t = tickets only |
| @@ -1739,11 +1741,11 @@ | |
| 1739 | ** -R REPO_FILE Specifies the repository db to use. Default is |
| 1740 | ** the current checkout's repository. |
| 1741 | */ |
| 1742 | void timeline_cmd(void){ |
| 1743 | Stmt q; |
| 1744 | int n, k, width, i; |
| 1745 | const char *zLimit; |
| 1746 | const char *zWidth; |
| 1747 | const char *zOffset; |
| 1748 | const char *zType; |
| 1749 | char *zOrigin; |
| @@ -1763,10 +1765,12 @@ | |
| 1763 | } |
| 1764 | db_find_and_open_repository(0, 0); |
| 1765 | zLimit = find_option("limit","n",1); |
| 1766 | zWidth = find_option("width","W",1); |
| 1767 | zType = find_option("type","t",1); |
| 1768 | if( !zLimit ){ |
| 1769 | zLimit = find_option("count",0,1); |
| 1770 | } |
| 1771 | if( zLimit ){ |
| 1772 | n = atoi(zLimit); |
| @@ -1785,39 +1789,37 @@ | |
| 1785 | iOffset = zOffset ? atoi(zOffset) : 0; |
| 1786 | |
| 1787 | /* We should be done with options.. */ |
| 1788 | verify_all_options(); |
| 1789 | |
| 1790 | zOrigin = "now"; |
| 1791 | zFilePattern = 0; |
| 1792 | for(i=2; i<g.argc; i++){ |
| 1793 | char *zArg = g.argv[i]; |
| 1794 | k = strlen(zArg); |
| 1795 | if( mode==0 ){ |
| 1796 | if( strncmp(zArg,"before",k)==0 ){ |
| 1797 | mode = 1; |
| 1798 | }else if( strncmp(zArg,"after",k)==0 && k>1 ){ |
| 1799 | mode = 2; |
| 1800 | }else if( strncmp(zArg,"descendants",k)==0 ){ |
| 1801 | mode = 3; |
| 1802 | }else if( strncmp(zArg,"children",k)==0 ){ |
| 1803 | mode = 3; |
| 1804 | }else if( strncmp(zArg,"ancestors",k)==0 && k>1 ){ |
| 1805 | mode = 4; |
| 1806 | }else if( strncmp(zArg,"parents",k)==0 ){ |
| 1807 | mode = 4; |
| 1808 | } |
| 1809 | if( mode ){ |
| 1810 | if( i<g.argc-1 ) zOrigin = g.argv[++i]; |
| 1811 | continue; |
| 1812 | } |
| 1813 | } |
| 1814 | if( zFilePattern==0 ){ |
| 1815 | zFilePattern = zArg; |
| 1816 | }else{ |
| 1817 | usage("?WHEN? ?CHECKIN|DATETIME? ?FILE? ?OPTIONS?"); |
| 1818 | } |
| 1819 | } |
| 1820 | k = strlen(zOrigin); |
| 1821 | blob_zero(&uuid); |
| 1822 | blob_append(&uuid, zOrigin, -1); |
| 1823 | if( fossil_strcmp(zOrigin, "now")==0 ){ |
| 1824 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -1702,11 +1702,11 @@ | |
| 1702 | } |
| 1703 | |
| 1704 | /* |
| 1705 | ** COMMAND: timeline |
| 1706 | ** |
| 1707 | ** Usage: %fossil timeline ?WHEN? ?CHECKIN|DATETIME? ?OPTIONS? |
| 1708 | ** |
| 1709 | ** Print a summary of activity going backwards in date and time |
| 1710 | ** specified or from the current date and time if no arguments |
| 1711 | ** are given. The WHEN argument can be any unique abbreviation |
| 1712 | ** of one of these keywords: |
| @@ -1722,10 +1722,12 @@ | |
| 1722 | ** for the current version or "now" for the current time. |
| 1723 | ** |
| 1724 | ** Options: |
| 1725 | ** -n|--limit N Output the first N entries (default 20 lines). |
| 1726 | ** N=0 means no limit. |
| 1727 | ** -p|--path PATH Output items affecting PATH only. |
| 1728 | ** PATH can be a file or a sub directory. |
| 1729 | ** --offset P skip P changes |
| 1730 | ** -t|--type TYPE Output items from the given types only, such as: |
| 1731 | ** ci = file commits only |
| 1732 | ** e = events only |
| 1733 | ** t = tickets only |
| @@ -1739,11 +1741,11 @@ | |
| 1741 | ** -R REPO_FILE Specifies the repository db to use. Default is |
| 1742 | ** the current checkout's repository. |
| 1743 | */ |
| 1744 | void timeline_cmd(void){ |
| 1745 | Stmt q; |
| 1746 | int n, k, width; |
| 1747 | const char *zLimit; |
| 1748 | const char *zWidth; |
| 1749 | const char *zOffset; |
| 1750 | const char *zType; |
| 1751 | char *zOrigin; |
| @@ -1763,10 +1765,12 @@ | |
| 1765 | } |
| 1766 | db_find_and_open_repository(0, 0); |
| 1767 | zLimit = find_option("limit","n",1); |
| 1768 | zWidth = find_option("width","W",1); |
| 1769 | zType = find_option("type","t",1); |
| 1770 | zFilePattern = find_option("path","p",1); |
| 1771 | |
| 1772 | if( !zLimit ){ |
| 1773 | zLimit = find_option("count",0,1); |
| 1774 | } |
| 1775 | if( zLimit ){ |
| 1776 | n = atoi(zLimit); |
| @@ -1785,39 +1789,37 @@ | |
| 1789 | iOffset = zOffset ? atoi(zOffset) : 0; |
| 1790 | |
| 1791 | /* We should be done with options.. */ |
| 1792 | verify_all_options(); |
| 1793 | |
| 1794 | if( g.argc>=4 ){ |
| 1795 | k = strlen(g.argv[2]); |
| 1796 | if( strncmp(g.argv[2],"before",k)==0 ){ |
| 1797 | mode = 1; |
| 1798 | }else if( strncmp(g.argv[2],"after",k)==0 && k>1 ){ |
| 1799 | mode = 2; |
| 1800 | }else if( strncmp(g.argv[2],"descendants",k)==0 ){ |
| 1801 | mode = 3; |
| 1802 | }else if( strncmp(g.argv[2],"children",k)==0 ){ |
| 1803 | mode = 3; |
| 1804 | }else if( strncmp(g.argv[2],"ancestors",k)==0 && k>1 ){ |
| 1805 | mode = 4; |
| 1806 | }else if( strncmp(g.argv[2],"parents",k)==0 ){ |
| 1807 | mode = 4; |
| 1808 | }else if(!zType && !zLimit){ |
| 1809 | usage("?WHEN? ?CHECKIN|DATETIME? ?-n|--limit #? ?-t|--type TYPE? " |
| 1810 | "?-W|--width WIDTH? ?-p|--path PATH"); |
| 1811 | } |
| 1812 | if( '-' != *g.argv[3] ){ |
| 1813 | zOrigin = g.argv[3]; |
| 1814 | }else{ |
| 1815 | zOrigin = "now"; |
| 1816 | } |
| 1817 | }else if( g.argc==3 ){ |
| 1818 | zOrigin = g.argv[2]; |
| 1819 | }else{ |
| 1820 | zOrigin = "now"; |
| 1821 | } |
| 1822 | k = strlen(zOrigin); |
| 1823 | blob_zero(&uuid); |
| 1824 | blob_append(&uuid, zOrigin, -1); |
| 1825 | if( fossil_strcmp(zOrigin, "now")==0 ){ |
| 1826 |
+1
-1
| --- src/xfer.c | ||
| +++ src/xfer.c | ||
| @@ -201,11 +201,11 @@ | ||
| 201 | 201 | if( rid==0 ){ |
| 202 | 202 | blob_appendf(&pXfer->err, "%s", g.zErrMsg); |
| 203 | 203 | blob_reset(&content); |
| 204 | 204 | }else{ |
| 205 | 205 | if( !isPriv ) content_make_public(rid); |
| 206 | - manifest_crosslink(rid, &content, MC_NONE); | |
| 206 | + manifest_crosslink(rid, &content, MC_NO_ERRORS); | |
| 207 | 207 | } |
| 208 | 208 | assert( blob_is_reset(&content) ); |
| 209 | 209 | remote_has(rid); |
| 210 | 210 | } |
| 211 | 211 | |
| 212 | 212 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -201,11 +201,11 @@ | |
| 201 | if( rid==0 ){ |
| 202 | blob_appendf(&pXfer->err, "%s", g.zErrMsg); |
| 203 | blob_reset(&content); |
| 204 | }else{ |
| 205 | if( !isPriv ) content_make_public(rid); |
| 206 | manifest_crosslink(rid, &content, MC_NONE); |
| 207 | } |
| 208 | assert( blob_is_reset(&content) ); |
| 209 | remote_has(rid); |
| 210 | } |
| 211 | |
| 212 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -201,11 +201,11 @@ | |
| 201 | if( rid==0 ){ |
| 202 | blob_appendf(&pXfer->err, "%s", g.zErrMsg); |
| 203 | blob_reset(&content); |
| 204 | }else{ |
| 205 | if( !isPriv ) content_make_public(rid); |
| 206 | manifest_crosslink(rid, &content, MC_NO_ERRORS); |
| 207 | } |
| 208 | assert( blob_is_reset(&content) ); |
| 209 | remote_has(rid); |
| 210 | } |
| 211 | |
| 212 |
+2
-1
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -159,11 +159,12 @@ | ||
| 159 | 159 | # will run on the target platform. This is usually the same |
| 160 | 160 | # as BCC, unless you are cross-compiling. This C compiler builds |
| 161 | 161 | # the finished binary for fossil. The BCC compiler above is used |
| 162 | 162 | # for building intermediate code-generator tools. |
| 163 | 163 | # |
| 164 | -TCC = $(PREFIX)gcc -Os -Wall | |
| 164 | +#BB: TCC = $(PREFIX)gcc -Os -Wall | |
| 165 | +TCC = $(PREFIX)gcc -g -Wall | |
| 165 | 166 | |
| 166 | 167 | #### When not using the miniz compression library, zlib is required. |
| 167 | 168 | # |
| 168 | 169 | ifndef FOSSIL_ENABLE_MINIZ |
| 169 | 170 | TCC += -L$(ZLIBDIR) -I$(ZINCDIR) |
| 170 | 171 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -159,11 +159,12 @@ | |
| 159 | # will run on the target platform. This is usually the same |
| 160 | # as BCC, unless you are cross-compiling. This C compiler builds |
| 161 | # the finished binary for fossil. The BCC compiler above is used |
| 162 | # for building intermediate code-generator tools. |
| 163 | # |
| 164 | TCC = $(PREFIX)gcc -Os -Wall |
| 165 | |
| 166 | #### When not using the miniz compression library, zlib is required. |
| 167 | # |
| 168 | ifndef FOSSIL_ENABLE_MINIZ |
| 169 | TCC += -L$(ZLIBDIR) -I$(ZINCDIR) |
| 170 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -159,11 +159,12 @@ | |
| 159 | # will run on the target platform. This is usually the same |
| 160 | # as BCC, unless you are cross-compiling. This C compiler builds |
| 161 | # the finished binary for fossil. The BCC compiler above is used |
| 162 | # for building intermediate code-generator tools. |
| 163 | # |
| 164 | #BB: TCC = $(PREFIX)gcc -Os -Wall |
| 165 | TCC = $(PREFIX)gcc -g -Wall |
| 166 | |
| 167 | #### When not using the miniz compression library, zlib is required. |
| 168 | # |
| 169 | ifndef FOSSIL_ENABLE_MINIZ |
| 170 | TCC += -L$(ZLIBDIR) -I$(ZINCDIR) |
| 171 |
+2
-1
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -159,11 +159,12 @@ | ||
| 159 | 159 | # will run on the target platform. This is usually the same |
| 160 | 160 | # as BCC, unless you are cross-compiling. This C compiler builds |
| 161 | 161 | # the finished binary for fossil. The BCC compiler above is used |
| 162 | 162 | # for building intermediate code-generator tools. |
| 163 | 163 | # |
| 164 | -TCC = $(PREFIX)gcc -Os -Wall | |
| 164 | +#BB: TCC = $(PREFIX)gcc -Os -Wall | |
| 165 | +TCC = $(PREFIX)gcc -g -Wall | |
| 165 | 166 | |
| 166 | 167 | #### When not using the miniz compression library, zlib is required. |
| 167 | 168 | # |
| 168 | 169 | ifndef FOSSIL_ENABLE_MINIZ |
| 169 | 170 | TCC += -L$(ZLIBDIR) -I$(ZINCDIR) |
| 170 | 171 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -159,11 +159,12 @@ | |
| 159 | # will run on the target platform. This is usually the same |
| 160 | # as BCC, unless you are cross-compiling. This C compiler builds |
| 161 | # the finished binary for fossil. The BCC compiler above is used |
| 162 | # for building intermediate code-generator tools. |
| 163 | # |
| 164 | TCC = $(PREFIX)gcc -Os -Wall |
| 165 | |
| 166 | #### When not using the miniz compression library, zlib is required. |
| 167 | # |
| 168 | ifndef FOSSIL_ENABLE_MINIZ |
| 169 | TCC += -L$(ZLIBDIR) -I$(ZINCDIR) |
| 170 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -159,11 +159,12 @@ | |
| 159 | # will run on the target platform. This is usually the same |
| 160 | # as BCC, unless you are cross-compiling. This C compiler builds |
| 161 | # the finished binary for fossil. The BCC compiler above is used |
| 162 | # for building intermediate code-generator tools. |
| 163 | # |
| 164 | #BB: TCC = $(PREFIX)gcc -Os -Wall |
| 165 | TCC = $(PREFIX)gcc -g -Wall |
| 166 | |
| 167 | #### When not using the miniz compression library, zlib is required. |
| 168 | # |
| 169 | ifndef FOSSIL_ENABLE_MINIZ |
| 170 | TCC += -L$(ZLIBDIR) -I$(ZINCDIR) |
| 171 |
| --- win/fossil.exe.manifest | ||
| +++ win/fossil.exe.manifest | ||
| @@ -13,10 +13,12 @@ | ||
| 13 | 13 | </requestedPrivileges> |
| 14 | 14 | </security> |
| 15 | 15 | </trustInfo> |
| 16 | 16 | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> |
| 17 | 17 | <application> |
| 18 | + <!-- Windows 10 --> | |
| 19 | + <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> | |
| 18 | 20 | <!-- Windows 8.1 --> |
| 19 | 21 | <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> |
| 20 | 22 | <!-- Windows 8 --> |
| 21 | 23 | <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> |
| 22 | 24 | <!-- Windows 7 --> |
| 23 | 25 |
| --- win/fossil.exe.manifest | |
| +++ win/fossil.exe.manifest | |
| @@ -13,10 +13,12 @@ | |
| 13 | </requestedPrivileges> |
| 14 | </security> |
| 15 | </trustInfo> |
| 16 | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> |
| 17 | <application> |
| 18 | <!-- Windows 8.1 --> |
| 19 | <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> |
| 20 | <!-- Windows 8 --> |
| 21 | <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> |
| 22 | <!-- Windows 7 --> |
| 23 |
| --- win/fossil.exe.manifest | |
| +++ win/fossil.exe.manifest | |
| @@ -13,10 +13,12 @@ | |
| 13 | </requestedPrivileges> |
| 14 | </security> |
| 15 | </trustInfo> |
| 16 | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> |
| 17 | <application> |
| 18 | <!-- Windows 10 --> |
| 19 | <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> |
| 20 | <!-- Windows 8.1 --> |
| 21 | <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> |
| 22 | <!-- Windows 8 --> |
| 23 | <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> |
| 24 | <!-- Windows 7 --> |
| 25 |