@@ -1641,10 +1641,48 @@
1641 1641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_str(&comment), blob_str(&brief)
1642 1642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1643 1643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&comment);
1644 1644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&brief);
1645 1645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Add an extra line of text to the end of a manifest to prevent it being
1649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** recognized as a valid manifest.
1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This routine is called prior to writing out the text of a manifest as
1652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the "manifest" file in the root of a repository when
1653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** "fossil setting manifest on" is enabled. That way, if the files of
1654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the project are imported into a different Fossil project, the manifest
1655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** file will not be interpreted as a control artifact in that other project.
1656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Normally it is sufficient to simply append the extra line of text.
1658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** However, if the manifest is PGP signed then the extra line has to be
1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** inserted before the PGP signature (thus invalidating the signature).
1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void sterilize_manifest(Blob *p){
1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *z, *zOrig;
1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n, nOrig;
1664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char zExtraLine[] =
1665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "# Remove this line to create a well-formed manifest.\n";
1666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z = zOrig = blob_materialize(p);
1668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = nOrig = blob_size(p);
1669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ remove_pgp_signature(&z, &n);
1670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z==zOrig ){
1671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p, zExtraLine, -1);
1672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iEnd;
1674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob copy;
1675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memcpy(©, p, sizeof(copy));
1676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(p, 0, 0);
1677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iEnd = (int)(&z[n] - zOrig);
1678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p, zOrig, iEnd);
1679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p, zExtraLine, -1);
1680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p, &zOrig[iEnd], -1);
1681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(©);
1682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1646 1684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1647 1685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1648 1686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is the comparison function used to sort the tag array.
1649 1687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1650 1688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int tag_compare(const void *a, const void *b){
1651 1689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!