@@ -70,12 +70,28 @@
70 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
71 71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Maximum length of a line in a text file, in bytes. (2**15 = 32768 bytes)
72 72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
73 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LENGTH_MASK_SZ 15
74 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LENGTH_MASK ((1<<LENGTH_MASK_SZ)-1)
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Configuration options for a diff operation
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct DiffConfig {
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 diffFlags; /* Legacy diff flags */
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
75 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* INTERFACE */
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Initialize memory for a DiffConfig based on just a diffFlags integer.
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig *diff_config_init(DiffConfig *pCfg, u64 diffFlags){
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(pCfg, 0, sizeof(*pCfg));
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCfg->diffFlags = diffFlags;
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return pCfg;
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
77 93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
78 94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
79 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Information about each line of a file being diffed.
80 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
81 97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The lower LENGTH_MASK_SZ bits of the hash (DLine.h) are the length
@@ -332,11 +348,11 @@
332 348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Output a patch-style text diff.
333 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
334 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void contextDiff(
335 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DContext *p, /* The difference */
336 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pOut, /* Output a context diff to here */
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 diffFlags /* Flags controlling the diff format */
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig *pCfg /* Configuration options */
338 354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
339 355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DLine *A; /* Left side of the diff */
340 356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DLine *B; /* Right side of the diff */
341 357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int a = 0; /* Index of next line in A[] */
342 358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int b = 0; /* Index of next line in B[] */
@@ -351,12 +367,12 @@
351 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int nChunk = 0; /* Number of diff chunks seen so far */
352 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nContext; /* Number of lines of context */
353 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int showLn; /* Show line numbers */
354 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int showDivider = 0; /* True to show the divider between diff blocks */
355 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nContext = diff_context_lines(diffFlags);
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- showLn = (diffFlags & DIFF_LINENO)!=0;
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nContext = diff_context_lines(pCfg);
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ showLn = (pCfg->diffFlags & DIFF_LINENO)!=0;
358 374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A = p->aFrom;
359 375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
B = p->aTo;
360 376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
R = p->aEdit;
361 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mxr = p->nEdit;
362 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( mxr>2 && R[mxr-1]==0 && R[mxr-2]==0 ){ mxr -= 3; }
@@ -1631,21 +1647,21 @@
1631 1647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append_char(p->pOut, '\n');
1632 1648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1633 1649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void dfsbsEnd(DiffBuilder *p){
1634 1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(p);
1635 1651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static DiffBuilder *dfsbsNew(Blob *pOut, u64 diffFlags){
1652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static DiffBuilder *dfsbsNew(Blob *pOut, DiffConfig *pCfg){
1637 1653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *p = fossil_malloc(sizeof(*p));
1638 1654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xSkip = dfsbsSkip;
1639 1655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xCommon = dfsbsCommon;
1640 1656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xInsert = dfsbsInsert;
1641 1657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xDelete = dfsbsDelete;
1642 1658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xReplace = dfsbsEdit;
1643 1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xEdit = dfsbsEdit;
1644 1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->xEnd = dfsbsEnd;
1645 1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->lnLeft = p->lnRight = 0;
1646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->width = diff_width(diffFlags);
1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ p->width = diff_width(pCfg);
1647 1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->pOut = pOut;
1648 1664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return p;
1649 1665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1650 1666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/****************************************************************************/
1651 1667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -1767,11 +1783,11 @@
1767 1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** mismatch.
1768 1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1769 1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static unsigned char *diffBlockAlignment(
1770 1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const DLine *aLeft, int nLeft, /* Text on the left */
1771 1787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const DLine *aRight, int nRight, /* Text on the right */
1772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 diffFlags, /* Flags passed into the original diff */
1788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig *pCfg, /* Configuration options */
1773 1789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pNResult /* OUTPUT: Bytes of result */
1774 1790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1775 1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j, k; /* Loop counters */
1776 1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *a; /* One row of the Wagner matrix */
1777 1793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *pToFree; /* Space that needs to be freed */
@@ -1795,11 +1811,11 @@
1795 1811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For large alignments, use a divide and conquer algorithm that is
1796 1812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** O(NlogN). The result is not as precise, but this whole thing is an
1797 1813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** approximation anyhow, and the faster response time is an acceptable
1798 1814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** trade-off for reduced precision.
1799 1815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nLeft*nRight>DIFF_ALIGN_MX && (diffFlags & DIFF_SLOW_SBS)==0 ){
1816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nLeft*nRight>DIFF_ALIGN_MX && (pCfg->diffFlags & DIFF_SLOW_SBS)==0 ){
1801 1817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const DLine *aSmall; /* The smaller of aLeft and aRight */
1802 1818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const DLine *aBig; /* The larger of aLeft and aRight */
1803 1819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nSmall, nBig; /* Size of aSmall and aBig. nSmall<=nBig */
1804 1820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDivSmall, iDivBig; /* Divider point for aSmall and aBig */
1805 1821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDivLeft, iDivRight; /* Divider point for aLeft and aRight */
@@ -1832,14 +1848,14 @@
1832 1848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDivLeft = iDivBig;
1833 1849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1834 1850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDivRight = iDivBig;
1835 1851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
iDivLeft = iDivSmall;
1836 1852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- a1 = diffBlockAlignment(aLeft,iDivLeft,aRight,iDivRight,diffFlags,&n1);
1853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ a1 = diffBlockAlignment(aLeft,iDivLeft,aRight,iDivRight,pCfg,&n1);
1838 1854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a2 = diffBlockAlignment(aLeft+iDivLeft, nLeft-iDivLeft,
1839 1855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aRight+iDivRight, nRight-iDivRight,
1840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diffFlags, &n2);
1856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCfg, &n2);
1841 1857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a1 = fossil_realloc(a1, n1+n2 );
1842 1858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(a1+n1,a2,n2);
1843 1859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(a2);
1844 1860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pNResult = n1+n2;
1845 1861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return a1;
@@ -1939,11 +1955,11 @@
1939 1955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Format a diff using a DiffBuilder object
1940 1956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1941 1957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void formatDiff(
1942 1958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DContext *p, /* The computed diff */
1943 1959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled *pRe, /* Only show changes that match this regex */
1944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 diffFlags, /* Flags controlling the diff */
1960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig *pCfg, /* Configuration options */
1945 1961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *pBuilder /* The formatter object */
1946 1962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1947 1963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const DLine *A; /* Left side of the diff */
1948 1964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const DLine *B; /* Right side of the diff */
1949 1965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int a = 0; /* Index of next line in A[] */
@@ -1956,11 +1972,11 @@
1956 1972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int i, j; /* Loop counters */
1957 1973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int m, ma, mb;/* Number of lines to output */
1958 1974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
signed int skip = 0; /* Number of lines to skip */
1959 1975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int nContext; /* Lines of context above and below each change */
1960 1976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nContext = diff_context_lines(diffFlags);
1977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nContext = diff_context_lines(pCfg);
1962 1978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A = p->aFrom;
1963 1979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
B = p->aTo;
1964 1980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
R = p->aEdit;
1965 1981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mxr = p->nEdit;
1966 1982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( mxr>2 && R[mxr-1]==0 && R[mxr-2]==0 ){ mxr -= 3; }
@@ -2050,11 +2066,11 @@
2050 2066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ma += R[r+i*3+1] + m;
2051 2067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mb += R[r+i*3+2] + m;
2052 2068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2053 2069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2054 2070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Try to find an alignment for the lines within this one block */
2055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- alignment = diffBlockAlignment(&A[a], ma, &B[b], mb, diffFlags, &nAlign);
2071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ alignment = diffBlockAlignment(&A[a], ma, &B[b], mb, pCfg, &nAlign);
2056 2072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2057 2073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; ma+mb>0; j++){
2058 2074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( j<nAlign );
2059 2075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( alignment[j] ){
2060 2076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1: {
@@ -2511,13 +2527,13 @@
2511 2527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2512 2528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2513 2529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Extract the number of lines of context from diffFlags. Supply an
2514 2530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** appropriate default if no context width is specified.
2515 2531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int diff_context_lines(u64 diffFlags){
2517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n = diffFlags & DIFF_CONTEXT_MASK;
2518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n==0 && (diffFlags & DIFF_CONTEXT_EX)==0 ) n = 5;
2532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int diff_context_lines(DiffConfig *pCfg){
2533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int n = pCfg->diffFlags & DIFF_CONTEXT_MASK;
2534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( n==0 && (pCfg->diffFlags & DIFF_CONTEXT_EX)==0 ) n = 5;
2519 2535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return n;
2520 2536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2521 2537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2522 2538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2523 2539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Extract the width of columns for side-by-side diff. Supply an
@@ -2527,12 +2543,12 @@
2527 2543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** term-width = 2*diff-col + diff-marker + 1
2528 2544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** diff-col = lineno + lmargin + text-width + rmargin
2529 2545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2530 2546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** text-width = (term-width - diff-marker - 1)/2 - lineno - lmargin - rmargin
2531 2547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int diff_width(u64 diffFlags){
2533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int w = (diffFlags & DIFF_WIDTH_MASK)/(DIFF_CONTEXT_MASK+1);
2548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int diff_width(DiffConfig *pCfg){
2549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int w = (pCfg->diffFlags & DIFF_WIDTH_MASK)/(DIFF_CONTEXT_MASK+1);
2534 2550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( w==0 ){
2535 2551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static struct {
2536 2552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int lineno, lmargin, text, rmargin, marker;
2537 2553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} sbsW = { 5, 2, 0, 0, 3 };
2538 2554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned int wMin = 24, wMax = 132;
@@ -2590,40 +2606,40 @@
2590 2606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *text_diff(
2591 2607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pA_Blob, /* FROM file */
2592 2608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pB_Blob, /* TO file */
2593 2609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pOut, /* Write diff here if not NULL */
2594 2610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled *pRe, /* Only output changes where this Regexp matches */
2595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 diffFlags /* DIFF_* flags defined above */
2611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig *pCfg /* Configuration options */
2596 2612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
2597 2613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ignoreWs; /* Ignore whitespace */
2598 2614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DContext c;
2599 2615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( diffFlags & DIFF_INVERT ){
2616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCfg->diffFlags & DIFF_INVERT ){
2601 2617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pTemp = pA_Blob;
2602 2618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pA_Blob = pB_Blob;
2603 2619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pB_Blob = pTemp;
2604 2620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ignoreWs = (diffFlags & DIFF_IGNORE_ALLWS)!=0;
2621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ignoreWs = (pCfg->diffFlags & DIFF_IGNORE_ALLWS)!=0;
2606 2622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_to_utf8_no_bom(pA_Blob, 0);
2607 2623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_to_utf8_no_bom(pB_Blob, 0);
2608 2624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2609 2625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Prepare the input files */
2610 2626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&c, 0, sizeof(c));
2611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
2627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pCfg->diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
2612 2628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c.xDiffer = compare_dline_ignore_allws;
2613 2629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2614 2630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c.xDiffer = compare_dline;
2615 2631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2616 2632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c.aFrom = break_into_lines(blob_str(pA_Blob), blob_size(pA_Blob),
2617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- &c.nFrom, diffFlags);
2633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &c.nFrom, pCfg->diffFlags);
2618 2634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
c.aTo = break_into_lines(blob_str(pB_Blob), blob_size(pB_Blob),
2619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- &c.nTo, diffFlags);
2635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &c.nTo, pCfg->diffFlags);
2620 2636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c.aFrom==0 || c.aTo==0 ){
2621 2637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aFrom);
2622 2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aTo);
2623 2639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOut ){
2624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diff_errmsg(pOut, DIFF_CANNOT_COMPUTE_BINARY, diffFlags);
2640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_errmsg(pOut, DIFF_CANNOT_COMPUTE_BINARY, pCfg->diffFlags);
2625 2641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2626 2642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
2627 2643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2628 2644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2629 2645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Compute the difference */
@@ -2630,32 +2646,32 @@
2630 2646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_all(&c);
2631 2647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( ignoreWs && c.nEdit==6 && c.aEdit[1]==0 && c.aEdit[2]==0 ){
2632 2648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aFrom);
2633 2649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aTo);
2634 2650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aEdit);
2635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOut ) diff_errmsg(pOut, DIFF_WHITESPACE_ONLY, diffFlags);
2651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOut ) diff_errmsg(pOut, DIFF_WHITESPACE_ONLY, pCfg->diffFlags);
2636 2652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
2637 2653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (diffFlags & DIFF_NOTTOOBIG)!=0 ){
2654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pCfg->diffFlags & DIFF_NOTTOOBIG)!=0 ){
2639 2655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, m, n;
2640 2656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int *a = c.aEdit;
2641 2657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mx = c.nEdit;
2642 2658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=m=n=0; i<mx; i+=3){ m += a[i]; n += a[i+1]+a[i+2]; }
2643 2659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n>10000 ){
2644 2660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aFrom);
2645 2661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aTo);
2646 2662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aEdit);
2647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pOut ) diff_errmsg(pOut, DIFF_TOO_MANY_CHANGES, diffFlags);
2663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pOut ) diff_errmsg(pOut, DIFF_TOO_MANY_CHANGES, pCfg->diffFlags);
2648 2664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
2649 2665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2650 2666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (diffFlags & DIFF_NOOPT)==0 ){
2667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (pCfg->diffFlags & DIFF_NOOPT)==0 ){
2652 2668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_optimize(&c);
2653 2669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2654 2670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2655 2671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOut ){
2656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( diffFlags & DIFF_NUMSTAT ){
2672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCfg->diffFlags & DIFF_NUMSTAT ){
2657 2673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nDel = 0, nIns = 0, i;
2658 2674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; c.aEdit[i] || c.aEdit[i+1] || c.aEdit[i+2]; i+=3){
2659 2675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nDel += c.aEdit[i+1];
2660 2676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nIns += c.aEdit[i+2];
2661 2677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -2663,40 +2679,40 @@
2663 2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.diffCnt[2] += nDel;
2664 2680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nIns+nDel ){
2665 2681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.diffCnt[0]++;
2666 2682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, "%10d %10d", nIns, nDel);
2667 2683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( diffFlags & DIFF_RAW ){
2684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCfg->diffFlags & DIFF_RAW ){
2669 2685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const int *R = c.aEdit;
2670 2686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned int r;
2671 2687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(r=0; R[r] || R[r+1] || R[r+2]; r += 3){
2672 2688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, " copy %6d delete %6d insert %6d\n",
2673 2689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
R[r], R[r+1], R[r+2]);
2674 2690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( diffFlags & DIFF_JSON ){
2691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCfg->diffFlags & DIFF_JSON ){
2676 2692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *pBuilder = dfjsonNew(pOut);
2677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- formatDiff(&c, pRe, diffFlags, pBuilder);
2693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ formatDiff(&c, pRe, pCfg, pBuilder);
2678 2694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append_char(pOut, '\n');
2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( diffFlags & DIFF_TCL ){
2695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCfg->diffFlags & DIFF_TCL ){
2680 2696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *pBuilder = dftclNew(pOut);
2681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- formatDiff(&c, pRe, diffFlags, pBuilder);
2682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( diffFlags & DIFF_SIDEBYSIDE ){
2697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ formatDiff(&c, pRe, pCfg, pBuilder);
2698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCfg->diffFlags & DIFF_SIDEBYSIDE ){
2683 2699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *pBuilder;
2684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( diffFlags & DIFF_HTML ){
2700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCfg->diffFlags & DIFF_HTML ){
2685 2701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pBuilder = dfsplitNew(pOut);
2686 2702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pBuilder = dfsbsNew(pOut, diffFlags);
2703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pBuilder = dfsbsNew(pOut, pCfg);
2688 2704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- formatDiff(&c, pRe, diffFlags, pBuilder);
2690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( diffFlags & DIFF_DEBUG ){
2705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ formatDiff(&c, pRe, pCfg, pBuilder);
2706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCfg->diffFlags & DIFF_DEBUG ){
2691 2707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *pBuilder = dfdebugNew(pOut);
2692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- formatDiff(&c, pRe, diffFlags, pBuilder);
2693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( diffFlags & DIFF_HTML ){
2708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ formatDiff(&c, pRe, pCfg, pBuilder);
2709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( pCfg->diffFlags & DIFF_HTML ){
2694 2710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DiffBuilder *pBuilder = dfunifiedNew(pOut);
2695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- formatDiff(&c, pRe, diffFlags, pBuilder);
2711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ formatDiff(&c, pRe, pCfg, pBuilder);
2696 2712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- contextDiff(&c, pOut, diffFlags);
2713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ contextDiff(&c, pOut, pCfg);
2698 2714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2699 2715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aFrom);
2700 2716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aTo);
2701 2717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aEdit);
2702 2718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
@@ -2726,14 +2742,17 @@
2726 2742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -w|--ignore-all-space Ignore all whitespaces DIFF_IGNORE_ALLWS
2727 2743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -W|--width N N character lines. DIFF_WIDTH_MASK
2728 2744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -y|--side-by-side Side-by-side diff. DIFF_SIDEBYSIDE
2729 2745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -Z|--ignore-trailing-space Ignore eol-whitespaces DIFF_IGNORE_EOLWS
2730 2746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- u64 diff_options(void){
2747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ u64 diff_options(DiffConfig *pCfg){
2732 2748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 diffFlags = 0;
2733 2749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z;
2734 2750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int f;
2751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCfg ){
2752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(pCfg, 0, sizeof(*pCfg));
2753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2735 2754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("ignore-trailing-space","Z",0)!=0 ){
2736 2755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diffFlags = DIFF_IGNORE_EOLWS;
2737 2756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2738 2757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("ignore-all-space","w",0)!=0 ){
2739 2758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diffFlags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_EOLWS */
@@ -2780,10 +2799,13 @@
2780 2799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2781 2800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Undocumented and unsupported flags used for development
2782 2801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** debugging and analysis: */
2783 2802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("debug",0,0)!=0 ) diffFlags |= DIFF_DEBUG;
2784 2803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("raw",0,0)!=0 ) diffFlags |= DIFF_RAW;
2804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( pCfg ){
2805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pCfg->diffFlags = diffFlags;
2806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2785 2807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return diffFlags;
2786 2808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2787 2809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2788 2810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2789 2811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: test-diff
@@ -2807,10 +2829,11 @@
2807 2829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void test_diff_cmd(void){
2808 2830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob a, b, out;
2809 2831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u64 diffFlag;
2810 2832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zRe; /* Regex filter for diff output */
2811 2833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled *pRe = 0; /* Regex filter for diff output */
2834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DiffConfig DCfg;
2812 2835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2813 2836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("tk",0,0)!=0 ){
2814 2837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_tk("test-diff", 2);
2815 2838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
2816 2839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -2819,19 +2842,19 @@
2819 2842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRe = find_option("regexp","e",1);
2820 2843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRe ){
2821 2844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zErr = re_compile(&pRe, zRe, 0);
2822 2845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr ) fossil_fatal("regex error: %s", zErr);
2823 2846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- diffFlag = diff_options();
2847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diffFlag = diff_options(&DCfg);
2825 2848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
2826 2849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc!=4 ) usage("FILE1 FILE2");
2827 2850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&out);
2828 2851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_begin(diffFlag);
2829 2852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_print_filenames(g.argv[2], g.argv[3], diffFlag, &out);
2830 2853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_read_from_file(&a, g.argv[2], ExtFILE);
2831 2854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_read_from_file(&b, g.argv[3], ExtFILE);
2832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- text_diff(&a, &b, &out, pRe, diffFlag);
2855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text_diff(&a, &b, &out, pRe, &DCfg);
2833 2856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_write_to_file(&out, "-");
2834 2857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_end(diffFlag, 0);
2835 2858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
re_free(pRe);
2836 2859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2837 2860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2838 2861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!