@@ -51,47 +51,20 @@
51 51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"cannot compute difference between binary files\n"
52 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define DIFF_CANNOT_COMPUTE_SYMLINK \
54 54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"cannot compute difference between symlink and regular file\n"
55 55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define DIFF_TOO_MANY_CHANGES_TXT \
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define DIFF_TOO_MANY_CHANGES \
57 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"more than 10,000 changes\n"
58 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define DIFF_TOO_MANY_CHANGES_HTML \
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "<p class='generalError'>More than 10,000 changes</p>\n"
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This macro is designed to return non-zero if the specified blob contains
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** data that MAY be binary in nature; otherwise, zero will be returned.
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define looks_like_binary(blob) \
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ((looks_like_utf8((blob), LOOK_BINARY) & LOOK_BINARY) != LOOK_NONE)
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Output flags for the looks_like_utf8() and looks_like_utf16() routines used
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** to convey status information about the blob content.
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_NONE ((int)0x00000000) /* Nothing special was found. */
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_NUL ((int)0x00000001) /* One or more NUL chars were found. */
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_CR ((int)0x00000002) /* One or more CR chars were found. */
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_LONE_CR ((int)0x00000004) /* An unpaired CR char was found. */
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_LF ((int)0x00000008) /* One or more LF chars were found. */
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_LONE_LF ((int)0x00000010) /* An unpaired LF char was found. */
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_CRLF ((int)0x00000020) /* One or more CR/LF pairs were found. */
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_LONG ((int)0x00000040) /* An over length line was found. */
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_ODD ((int)0x00000080) /* An odd number of bytes was found. */
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_SHORT ((int)0x00000100) /* Unable to perform full check. */
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_INVALID ((int)0x00000200) /* Invalid sequence was found. */
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_BINARY (LOOK_NUL | LOOK_LONG | LOOK_SHORT) /* May be binary. */
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define LOOK_EOL (LOOK_LONE_CR | LOOK_LONE_LF | LOOK_CRLF) /* Line seps. */
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif /* INTERFACE */
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
88 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
89 60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Maximum length of a line in a text file, in bytes. (2**13 = 8192 bytes)
90 61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
91 62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LENGTH_MASK_SZ 13
92 63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define LENGTH_MASK ((1<<LENGTH_MASK_SZ)-1)
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* INTERFACE */
93 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
94 67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
95 68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Information about each line of a file being diffed.
96 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
97 70 { 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
@@ -204,282 +177,10 @@
204 177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Return results */
205 178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pnLine = nLine;
206 179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return a;
207 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
208 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function attempts to scan each logical line within the blob to
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** determine the type of content it appears to contain. The return value
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is a combination of one or more of the LOOK_XXX flags (see above):
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** !LOOK_BINARY -- The content appears to consist entirely of text; however,
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the encoding may not be UTF-8.
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** LOOK_BINARY -- The content appears to be binary because it contains one
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or more embedded NUL characters or an extremely long line.
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Since this function does not understand UTF-16, it may
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** falsely consider UTF-16 text to be binary.
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Additional flags (i.e. those other than the ones included in LOOK_BINARY)
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** may be present in the result as well; however, they should not impact the
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** determination of text versus binary content.
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ************************************ WARNING **********************************
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function does not validate that the blob content is properly formed
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** UTF-8. It assumes that all code points are the same size. It does not
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** validate any code points. It makes no attempt to detect if any [invalid]
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** switches between UTF-8 and other encodings occur.
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The only code points that this function cares about are the NUL character,
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** carriage-return, and line-feed.
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function examines the contents of the blob until one of the flags
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** specified in "stopFlags" is set.
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ************************************ WARNING **********************************
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int looks_like_utf8(const Blob *pContent, int stopFlags){
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = blob_buffer(pContent);
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int n = blob_size(pContent);
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j, c, flags = LOOK_NONE; /* Assume UTF-8 text, prove otherwise */
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n==0 ) return flags; /* Empty file -> text */
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = *z;
248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c==0 ){
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_NUL; /* NUL character in a file -> binary */
250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\r' ){
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_CR;
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<=1 || z[1]!='\n' ){
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j = (c!='\n');
257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( !(flags&stopFlags) && --n>0 ){
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int c2 = c;
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = *++z; ++j;
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c==0 ){
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_NUL; /* NUL character in a file -> binary */
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\n' ){
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LF;
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c2=='\r' ){
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= (LOOK_CR | LOOK_CRLF); /* Found LF preceded by CR */
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONE_LF;
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j>LENGTH_MASK ){
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONG; /* Very long line -> binary */
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j = 0;
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\r' ){
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_CR;
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<=1 || z[1]!='\n' ){
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n ){
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_SHORT; /* The whole blob was not examined */
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j>LENGTH_MASK ){
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONG; /* Very long line -> binary */
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return flags;
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Define the type needed to represent a Unicode (UTF-16) character.
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #ifndef WCHAR_T
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ifdef _WIN32
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define WCHAR_T wchar_t
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # else
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # define WCHAR_T unsigned short
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # endif
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Maximum length of a line in a text file, in UTF-16 characters. (4096)
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The number of bytes represented by this value cannot exceed LENGTH_MASK
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** bytes, because that is the line buffer size used by the diff engine.
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UTF16_LENGTH_MASK_SZ (LENGTH_MASK_SZ-(sizeof(WCHAR_T)-sizeof(char)))
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UTF16_LENGTH_MASK ((1<<UTF16_LENGTH_MASK_SZ)-1)
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This macro is used to swap the byte order of a UTF-16 character in the
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** looks_like_utf16() function.
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UTF16_SWAP(ch) ((((ch) << 8) & 0xFF00) | (((ch) >> 8) & 0xFF))
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define UTF16_SWAP_IF(expr,ch) ((expr) ? UTF16_SWAP((ch)) : (ch))
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function attempts to scan each logical line within the blob to
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** determine the type of content it appears to contain. The return value
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is a combination of one or more of the LOOK_XXX flags (see above):
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** !LOOK_BINARY -- The content appears to consist entirely of text; however,
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the encoding may not be UTF-16.
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** LOOK_BINARY -- The content appears to be binary because it contains one
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or more embedded NUL characters or an extremely long line.
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Since this function does not understand UTF-8, it may
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** falsely consider UTF-8 text to be binary.
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Additional flags (i.e. those other than the ones included in LOOK_BINARY)
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** may be present in the result as well; however, they should not impact the
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** determination of text versus binary content.
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ************************************ WARNING **********************************
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function does not validate that the blob content is properly formed
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** UTF-16. It assumes that all code points are the same size. It does not
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** validate any code points. It makes no attempt to detect if any [invalid]
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** switches between the UTF-16be and UTF-16le encodings occur.
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The only code points that this function cares about are the NUL character,
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** carriage-return, and line-feed.
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function examines the contents of the blob until one of the flags
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** specified in "stopFlags" is set.
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ************************************ WARNING **********************************
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int looks_like_utf16(const Blob *pContent, int bReverse, int stopFlags){
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const WCHAR_T *z = (WCHAR_T *)blob_buffer(pContent);
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int n = blob_size(pContent);
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j, c, flags = LOOK_NONE; /* Assume UTF-16 text, prove otherwise */
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n==0 ) return flags; /* Empty file -> text */
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n%sizeof(WCHAR_T) ){
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_ODD; /* Odd number of bytes -> binary (UTF-8?) */
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<sizeof(WCHAR_T) ) return flags; /* One byte -> binary (UTF-8?) */
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = *z;
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( bReverse ){
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = UTF16_SWAP(c);
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c==0 ){
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_NUL; /* NUL character in a file -> binary */
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\r' ){
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_CR;
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<(2*sizeof(WCHAR_T)) || UTF16_SWAP_IF(bReverse, z[1])!='\n' ){
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j = (c!='\n');
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !j ) flags |= (LOOK_LF | LOOK_LONE_LF); /* Found LF as first char */
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( 1 ){
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int c2 = c;
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( flags&stopFlags ) break;
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- n -= sizeof(WCHAR_T);
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<sizeof(WCHAR_T) ) break;
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = *++z;
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( bReverse ){
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c = UTF16_SWAP(c);
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ++j;
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c==0 ){
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_NUL; /* NUL character in a file -> binary */
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\n' ){
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LF;
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c2=='\r' ){
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= (LOOK_CR | LOOK_CRLF); /* Found LF preceded by CR */
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONE_LF;
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j>UTF16_LENGTH_MASK ){
392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONG; /* Very long line -> binary */
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j = 0;
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( c=='\r' ){
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_CR;
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n<(2*sizeof(WCHAR_T)) || UTF16_SWAP_IF(bReverse, z[1])!='\n' ){
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONE_CR; /* More chars, next char is not LF */
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( n ){
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_SHORT; /* The whole blob was not examined */
404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( j>UTF16_LENGTH_MASK ){
406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- flags |= LOOK_LONG; /* Very long line -> binary */
407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return flags;
409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns an array of bytes representing the byte-order-mark
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** for UTF-8.
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const unsigned char *get_utf8_bom(int *pnByte){
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const unsigned char bom[] = {
417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0xEF, 0xBB, 0xBF, 0x00, 0x00, 0x00
418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- };
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = 3;
420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return bom;
421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns non-zero if the blob starts with a UTF-8
425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** byte-order-mark (BOM).
426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int starts_with_utf8_bom(const Blob *pContent, int *pnByte){
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = blob_buffer(pContent);
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bomSize = 0;
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const unsigned char *bom = get_utf8_bom(&bomSize);
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = bomSize;
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(pContent)<bomSize ) return 0;
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return memcmp(z, bom, bomSize)==0;
435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns non-zero if the blob starts with a UTF-16
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** byte-order-mark (BOM), either in the endianness of the machine
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or in reversed byte order. The UTF-32 BOM is ruled out by checking
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if the UTF-16 BOM is not immediately followed by (utf16) 0.
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pnByte is only set when the function returns 1.
443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** pbReverse is always set, even when no BOM is found. Without a BOM,
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** it is set to 1 on little-endian and 0 on big-endian platforms. See
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** clause D98 of conformance (section 3.10) of the Unicode standard.
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int starts_with_utf16_bom(
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const Blob *pContent, /* IN: Blob content to perform BOM detection on. */
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pnByte, /* OUT: The number of bytes used for the BOM. */
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int *pbReverse /* OUT: Non-zero for BOM in reverse byte-order. */
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ){
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const unsigned short *z = (unsigned short *)blob_buffer(pContent);
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bomSize = sizeof(unsigned short);
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int size = blob_size(pContent);
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( size<bomSize ) goto noBom; /* No: cannot read BOM. */
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( size>=(2*bomSize) && z[1]==0 ) goto noBom; /* No: possible UTF-32. */
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( z[0]==0xfeff ){
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pbReverse ) *pbReverse = 0;
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( z[0]==0xfffe ){
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pbReverse ) *pbReverse = 1;
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static const int one = 1;
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- noBom:
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pbReverse ) *pbReverse = *(char *) &one;
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0; /* No: UTF-16 byte-order-mark not found. */
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = bomSize;
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1; /* Yes. */
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Returns non-zero if the specified content could be valid UTF-16.
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int could_be_utf16(const Blob *pContent, int *pbReverse){
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return (blob_size(pContent) % sizeof(WCHAR_T) == 0) ?
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- starts_with_utf16_bom(pContent, 0, pbReverse) : 0;
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
481 182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
482 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return true if two DLine elements are identical.
483 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
484 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int same_dline(DLine *pA, DLine *pB){
485 186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return pA->h==pB->h && memcmp(pA->z,pB->z,pA->h & LENGTH_MASK)==0;
@@ -576,11 +277,11 @@
576 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxr; /* Maximum value for r */
577 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int na, nb; /* Number of lines shown from A and B */
578 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j; /* Loop counters */
579 280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int m; /* Number of lines to output */
580 281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int skip; /* Number of lines to skip */
581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nChunk = 0; /* Number of diff chunks seen so far */
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int nChunk = 0; /* Number of diff chunks seen so far */
582 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nContext; /* Number of lines of context */
583 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int showLn; /* Show line numbers */
584 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int html; /* Render as HTML */
585 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int showDivider = 0; /* True to show the divider between diff blocks */
586 287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -657,14 +358,14 @@
657 358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !showDivider ){
658 359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Do not show a top divider */
659 360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showDivider = 1;
660 361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( html ){
661 362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, "<span class=\"diffhr\">%.80c</span>\n", '.');
662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(pOut, "<a name=\"chunk%d\"></a>\n", nChunk);
663 363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
664 364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, "%.80c\n", '.');
665 365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( html ) blob_appendf(pOut, "<span id=\"chunk%d\"></span>", nChunk);
666 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
667 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( html ) blob_appendf(pOut, "<span class=\"diffln\">");
668 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
669 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
* If the patch changes an empty file or results in an empty file,
670 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
* the block header must use 0,0 as position indicator and not 1,0.
@@ -727,12 +428,11 @@
727 428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
728 429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Status of a single output line
729 430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
730 431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef struct SbsLine SbsLine;
731 432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct SbsLine {
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zLine; /* The output line under construction */
733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int n; /* Index of next unused slot in the zLine[] */
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob *apCols[5]; /* Array of pointers to output columns */
734 434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int width; /* Maximum width of a column in the output */
735 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned char escHtml; /* True to escape html characters */
736 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iStart; /* Write zStart prior to character iStart */
737 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zStart; /* A <span> tag */
738 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd; /* Write </span> prior to character iEnd */
@@ -741,125 +441,155 @@
741 441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iEnd2; /* Write </span> prior to character iEnd2 */
742 442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled *pRe; /* Only colorize matching lines, if not NULL */
743 443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
744 444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
745 445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Flags for sbsWriteText()
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Column indices for SbsLine.apCols[]
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SBS_LNA 0 /* Left line number */
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SBS_TXTA 1 /* Left text */
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SBS_MKR 2 /* Middle separator column */
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SBS_LNB 3 /* Right line number */
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define SBS_TXTB 4 /* Right text */
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append newlines to all columns.
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteNewlines(SbsLine *p){
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i;
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for( i=p->escHtml ? SBS_LNA : SBS_TXTB; i<=SBS_TXTB; i++ ){
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p->apCols[i], "\n", 1);
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append n spaces to the column.
747 466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SBS_NEWLINE 0x0001 /* End with \n\000 */
749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define SBS_PAD 0x0002 /* Pad output to width spaces */
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteSpace(SbsLine *p, int n, int col){
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->apCols[col], "%*s", n, "");
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
750 470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
751 471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Write up to width characters of pLine into p->zLine[]. Translate tabs into
753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** spaces. Add a newline if SBS_NEWLINE is set. Translate HTML characters
754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if SBS_HTML is set. Pad the rendering out width bytes if SBS_PAD is set.
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Write the text of pLine into column iCol of p.
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If outputting HTML, write the full line. Otherwise, only write the
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** width characters. Translate tabs into spaces. Add newlines if col
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is SBS_TXTB. Translate HTML characters if escHtml is true. Pad the
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** rendering to width bytes if col is SBS_TXTA and escHtml is false.
755 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
756 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This comment contains multibyte unicode characters (ü, Æ, ð) in order
757 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** to test the ability of the diff code to handle such characters.
758 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void sbsWriteText(SbsLine *p, DLine *pLine, unsigned flags){
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteText(SbsLine *p, DLine *pLine, int col){
483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob *pCol = p->apCols[col];
760 484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n = pLine->h & LENGTH_MASK;
761 485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i; /* Number of input characters consumed */
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int j; /* Number of output characters generated */
763 486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int k; /* Cursor position */
764 487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int needEndSpan = 0;
765 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zIn = pLine->z;
766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *z = &p->zLine[p->n];
767 489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int w = p->width;
768 490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int colorize = p->escHtml;
769 491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( colorize && p->pRe && re_dline_match(p->pRe, pLine, 1)==0 ){
770 492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
colorize = 0;
771 493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(i=j=k=0; k<w && i<n; i++, k++){
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=k=0; (p->escHtml || k<w) && i<n; i++, k++){
773 495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char c = zIn[i];
774 496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( colorize ){
775 497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i==p->iStart ){
776 498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int x = strlen(p->zStart);
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(z+j, p->zStart, x);
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += x;
499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, p->zStart, x);
779 500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
needEndSpan = 1;
780 501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iStart2 ){
781 502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = p->iStart2;
782 503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart = p->zStart2;
783 504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart2 = 0;
784 505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
785 506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( i==p->iEnd ){
786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(z+j, "</span>", 7);
787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += 7;
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, "</span>", 7);
788 508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
needEndSpan = 0;
789 509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->iEnd2 ){
790 510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = p->iEnd2;
791 511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd2 = 0;
792 512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
793 513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
794 514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
795 515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='\t' ){
796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z[j++] = ' ';
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( (k&7)!=7 && k<w ){ z[j++] = ' '; k++; }
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, " ", 1);
517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( (k&7)!=7 && (p->escHtml || k<w) ){
518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, " ", 1);
519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k++;
520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
798 521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='\r' || c=='\f' ){
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z[j++] = ' ';
522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, " ", 1);
800 523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='<' && p->escHtml ){
801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&z[j], "<", 4);
802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += 4;
524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, "<", 4);
803 525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='&' && p->escHtml ){
804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&z[j], "&", 5);
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += 5;
526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, "&", 5);
806 527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='>' && p->escHtml ){
807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&z[j], ">", 4);
808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += 4;
528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, ">", 4);
809 529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='"' && p->escHtml ){
810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&z[j], """, 6);
811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += 6;
530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, """, 6);
812 531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z[j++] = c;
532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, &zIn[i], 1);
814 533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (c&0xc0)==0x80 ) k--;
815 534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
816 535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
817 536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( needEndSpan ){
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(&z[j], "</span>", 7);
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- j += 7;
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (flags & SBS_PAD)!=0 ){
822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( k<w ){ k++; z[j++] = ' '; }
823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( flags & SBS_NEWLINE ){
825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- z[j++] = '\n';
826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->n += j;
828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Append a string to an SbSLine without coding, interpretation, or padding.
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void sbsWrite(SbsLine *p, const char *zIn, int nIn){
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memcpy(p->zLine+p->n, zIn, nIn);
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->n += nIn;
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Append n spaces to the string.
840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void sbsWriteSpace(SbsLine *p, int n){
842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( n-- ) p->zLine[p->n++] = ' ';
843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Append a string to the output only if we are rendering HTML.
847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void sbsWriteHtml(SbsLine *p, const char *zIn){
849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->escHtml ) sbsWrite(p, zIn, strlen(zIn));
850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Write a 6-digit line number followed by a single space onto the line.
854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void sbsWriteLineno(SbsLine *p, int ln){
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteHtml(p, "<span class=\"diffln\">");
857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_snprintf(7, &p->zLine[p->n], "%5d ", ln+1);
858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->n += 6;
859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteHtml(p, "</span>");
860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->zLine[p->n++] = ' ';
537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pCol, "</span>", 7);
538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( col==SBS_TXTB ){
540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteNewlines(p);
541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( !p->escHtml ){
542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSpace(p, w-k, SBS_TXTA);
543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append a column to the final output blob.
548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteColumn(Blob *pOut, Blob *pCol, int col){
550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut,
551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "<td><div class=\"diff%scol\">\n"
552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "<pre>\n"
553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "%s"
554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "</pre>\n"
555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "</div></td>\n",
556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ col % 3 ? (col == SBS_MKR ? "mkr" : "txt") : "ln",
557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_str(pCol)
558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append a separator line to column iCol
563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteSep(SbsLine *p, int len, int col){
565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char ch = '.';
566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( len<1 ){
567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ len = 1;
568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ch = ' ';
569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->apCols[col], "<span class=\"diffhr\">%.*c</span>\n", len, ch);
571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append the appropriate marker into the center column of the diff.
575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteMarker(SbsLine *p, const char *zTxt, const char *zHtml){
577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p->apCols[SBS_MKR], p->escHtml ? zHtml : zTxt, -1);
578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append a line number to the column.
582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void sbsWriteLineno(SbsLine *p, int ln, int col){
584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->escHtml ){
585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->apCols[col], "%d", ln+1);
586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zLn[7];
588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(7, zLn, "%5d ", ln+1);
589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->apCols[col], "%s ", zLn);
590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
861 591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
862 592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
863 593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
864 594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The two text segments zLeft and zRight are known to be different on
865 595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** both ends, but they might have a common segment in the middle. If
@@ -1018,43 +748,42 @@
1018 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1019 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nSuffix==nLeft || nSuffix==nRight ) nPrefix = 0;
1020 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1021 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nPrefix+nSuffix > nShort ) nPrefix = nShort - nSuffix;
1022 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1024 753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A single chunk of text inserted on the right */
1025 754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nPrefix+nSuffix==nLeft ){
1026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnLeft);
755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnLeft, SBS_LNA);
1027 756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart2 = p->iEnd2 = 0;
1028 757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = p->iEnd = -1;
1029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pLeft, SBS_PAD);
758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pLeft, SBS_TXTA);
1030 759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nLeft==nRight && zLeft[nLeft]==zRight[nRight] ){
1031 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(p, " ", 3);
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(p, " ", "");
1032 761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(p, " | ", 3);
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(p, " | ", "|");
1034 763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnRight);
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnRight, SBS_LNB);
1036 765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = nPrefix;
1037 766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = nRight - nSuffix;
1038 767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart = zClassAdd;
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pRight, SBS_NEWLINE);
768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pRight, SBS_TXTB);
1040 769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1041 770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1042 771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1043 772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A single chunk of text deleted from the left */
1044 773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nPrefix+nSuffix==nRight ){
1045 774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Text deleted from the left */
1046 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnLeft);
775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnLeft, SBS_LNA);
1047 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart2 = p->iEnd2 = 0;
1048 777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = nPrefix;
1049 778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = nLeft - nSuffix;
1050 779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart = zClassRm;
1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pLeft, SBS_PAD);
1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(p, " | ", 3);
1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnRight);
780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pLeft, SBS_TXTA);
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(p, " | ", "|");
782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnRight, SBS_LNB);
1054 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = p->iEnd = -1;
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pRight, SBS_NEWLINE);
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pRight, SBS_TXTB);
1056 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1057 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1058 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1059 788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* At this point we know that there is a chunk of text that has
1060 789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** changed between the left and the right. Check to see if there
@@ -1065,11 +794,11 @@
1065 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->escHtml
1066 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& nLeftDiff >= 6
1067 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& nRightDiff >= 6
1068 797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& textLCS(&zLeft[nPrefix], nLeftDiff, &zRight[nPrefix], nRightDiff, aLCS)
1069 798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnLeft);
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnLeft, SBS_LNA);
1071 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = nPrefix;
1072 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = nPrefix + aLCS[0];
1073 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aLCS[2]==0 ){
1074 803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sbsShiftLeft(p, pLeft->z);
1075 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart = zClassRm;
@@ -1078,13 +807,13 @@
1078 807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1079 808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart2 = nPrefix + aLCS[1];
1080 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd2 = nLeft - nSuffix;
1081 810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart2 = aLCS[3]==nRightDiff ? zClassRm : zClassChng;
1082 811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sbsSimplifyLine(p, zLeft+nPrefix);
1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pLeft, SBS_PAD);
1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(p, " | ", 3);
1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnRight);
812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pLeft, SBS_TXTA);
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(p, " | ", "|");
814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnRight, SBS_LNB);
1086 815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = nPrefix;
1087 816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = nPrefix + aLCS[2];
1088 817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( aLCS[0]==0 ){
1089 818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sbsShiftLeft(p, pRight->z);
1090 819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart = zClassAdd;
@@ -1093,25 +822,25 @@
1093 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1094 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart2 = nPrefix + aLCS[3];
1095 824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd2 = nRight - nSuffix;
1096 825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart2 = aLCS[1]==nLeftDiff ? zClassAdd : zClassChng;
1097 826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sbsSimplifyLine(p, zRight+nPrefix);
1098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pRight, SBS_NEWLINE);
827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pRight, SBS_TXTB);
1099 828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1100 829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1101 830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1102 831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If all else fails, show a single big change between left and right */
1103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnLeft);
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnLeft, SBS_LNA);
1104 833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart2 = p->iEnd2 = 0;
1105 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iStart = nPrefix;
1106 835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = nLeft - nSuffix;
1107 836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->zStart = zClassChng;
1108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pLeft, SBS_PAD);
1109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(p, " | ", 3);
1110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(p, lnRight);
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pLeft, SBS_TXTA);
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(p, " | ", "|");
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(p, lnRight, SBS_LNB);
1111 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p->iEnd = nRight - nSuffix;
1112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(p, pRight, SBS_NEWLINE);
841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(p, pRight, SBS_TXTB);
1113 842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1114 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1115 844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1116 845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Minimum of two values
1117 846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -1357,30 +1086,40 @@
1357 1086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxr; /* Maximum value for r */
1358 1087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int na, nb; /* Number of lines shown from A and B */
1359 1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j; /* Loop counters */
1360 1089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int m, ma, mb;/* Number of lines to output */
1361 1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int skip; /* Number of lines to skip */
1362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nChunk = 0; /* Number of chunks of diff output seen so far */
1091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int nChunk = 0; /* Number of chunks of diff output seen so far */
1363 1092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SbsLine s; /* Output line buffer */
1364 1093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nContext; /* Lines of context above and below each change */
1365 1094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int showDivider = 0; /* True to show the divider */
1095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob aCols[5]; /* Array of column blobs */
1366 1096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1367 1097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&s, 0, sizeof(s));
1368 1098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.width = diff_width(diffFlags);
1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.zLine = fossil_malloc( 15*s.width + 200 );
1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( s.zLine==0 ) return;
1371 1099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nContext = diff_context_lines(diffFlags);
1372 1100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.escHtml = (diffFlags & DIFF_HTML)!=0;
1101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( s.escHtml ){
1102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=SBS_LNA; i<=SBS_TXTB; i++){
1103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&aCols[i]);
1104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ s.apCols[i] = &aCols[i];
1105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=SBS_LNA; i<=SBS_TXTB; i++){
1108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ s.apCols[i] = pOut;
1109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1373 1111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.pRe = pRe;
1374 1112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = -1;
1375 1113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart2 = 0;
1376 1114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iEnd = -1;
1377 1115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A = p->aFrom;
1378 1116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
B = p->aTo;
1379 1117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
R = p->aEdit;
1380 1118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mxr = p->nEdit;
1381 1119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( mxr>2 && R[mxr-1]==0 && R[mxr-2]==0 ){ mxr -= 3; }
1120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1382 1121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(r=0; r<mxr; r += 3*nr){
1383 1122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Figure out how many triples to show in a single block */
1384 1123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(nr=1; R[r+nr*3]>0 && R[r+nr*3]<nContext*2; nr++){}
1385 1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* printf("r=%d nr=%d\n", r, nr); */
1386 1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1436,35 +1175,39 @@
1436 1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1437 1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1438 1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Draw the separator between blocks */
1439 1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( showDivider ){
1440 1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( s.escHtml ){
1441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(pOut, "<span class=\"diffhr\">%.*c</span>\n",
1442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.width*2+16, '.');
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zLn[10];
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zLn), zLn, "%d", a+skip+1);
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSep(&s, strlen(zLn), SBS_LNA);
1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSep(&s, s.width, SBS_TXTA);
1184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSep(&s, 0, SBS_MKR);
1185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zLn), zLn, "%d", b+skip+1);
1186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSep(&s, strlen(zLn), SBS_LNB);
1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSep(&s, s.width, SBS_TXTB);
1443 1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1444 1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pOut, "%.*c\n", s.width*2+16, '.');
1445 1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1446 1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1447 1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showDivider = 1;
1448 1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nChunk++;
1449 1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( s.escHtml ){
1450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(pOut, "<a name=\"chunk%d\"></a>\n", nChunk);
1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(s.apCols[SBS_LNA], "<span id=\"chunk%d\"></span>", nChunk);
1451 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1452 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1453 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Show the initial common area */
1454 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a += skip;
1455 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b += skip;
1456 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m = R[r] - skip;
1457 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<m; j++){
1458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, a+j);
1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, a+j, SBS_LNA);
1460 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = s.iEnd = -1;
1461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &A[a+j], SBS_PAD);
1462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " ", 3);
1463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, b+j);
1464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &B[b+j], SBS_NEWLINE);
1465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &A[a+j], SBS_TXTA);
1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(&s, " ", "");
1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, b+j, SBS_LNB);
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &B[b+j], SBS_TXTB);
1466 1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1467 1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a += m;
1468 1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b += m;
1469 1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1470 1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Show the differences */
@@ -1485,87 +1228,71 @@
1485 1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1486 1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
alignment = sbsAlignment(&A[a], ma, &B[b], mb);
1487 1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; ma+mb>0; j++){
1488 1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( alignment[j]==1 ){
1489 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Delete one line from the left */
1490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, a);
1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, a, SBS_LNA);
1492 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = 0;
1493 1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.zStart = "<span class=\"diffrm\">";
1494 1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iEnd = LENGTH(&A[a]);
1495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &A[a], SBS_PAD);
1496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( s.escHtml ){
1497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " <\n", 6);
1498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
1499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " <\n", 3);
1500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &A[a], SBS_TXTA);
1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(&s, " <", "<");
1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteNewlines(&s);
1502 1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ma>0 );
1503 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ma--;
1504 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a++;
1505 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( alignment[j]==3 ){
1506 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The left line is changed into the right line */
1507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1508 1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sbsWriteLineChange(&s, &A[a], a, &B[b], b);
1509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1510 1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( ma>0 && mb>0 );
1511 1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ma--;
1512 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mb--;
1513 1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a++;
1514 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b++;
1515 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( alignment[j]==2 ){
1516 1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Insert one line on the right */
1517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteSpace(&s, s.width + 7);
1519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( s.escHtml ){
1520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " > ", 6);
1521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
1522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " > ", 3);
1523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, b);
1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !s.escHtml ){
1254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteSpace(&s, s.width + 7, SBS_TXTA);
1255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(&s, " > ", ">");
1257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, b, SBS_LNB);
1525 1258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = 0;
1526 1259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.zStart = "<span class=\"diffadd\">";
1527 1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iEnd = LENGTH(&B[b]);
1528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &B[b], SBS_NEWLINE);
1529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &B[b], SBS_TXTB);
1530 1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( mb>0 );
1531 1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mb--;
1532 1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b++;
1533 1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1534 1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Delete from the left and insert on the right */
1535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, a);
1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, a, SBS_LNA);
1537 1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = 0;
1538 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.zStart = "<span class=\"diffrm\">";
1539 1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iEnd = LENGTH(&A[a]);
1540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &A[a], SBS_PAD);
1541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " | ", 3);
1542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, b);
1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &A[a], SBS_TXTA);
1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(&s, " | ", "|");
1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, b, SBS_LNB);
1543 1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = 0;
1544 1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.zStart = "<span class=\"diffadd\">";
1545 1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iEnd = LENGTH(&B[b]);
1546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &B[b], SBS_NEWLINE);
1547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &B[b], SBS_TXTB);
1548 1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ma--;
1549 1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mb--;
1550 1280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a++;
1551 1281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b++;
1552 1282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1554 1283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1555 1284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(alignment);
1556 1285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( i<nr-1 ){
1557 1286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m = R[r+i*3+3];
1558 1287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<m; j++){
1559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, a+j);
1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, a+j, SBS_LNA);
1561 1289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = s.iEnd = -1;
1562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &A[a+j], SBS_PAD);
1563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " ", 3);
1564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, b+j);
1565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &B[b+j], SBS_NEWLINE);
1566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &A[a+j], SBS_TXTA);
1291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(&s, " ", "");
1292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, b+j, SBS_LNB);
1293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &B[b+j], SBS_TXTB);
1567 1294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1568 1295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
b += m;
1569 1296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
a += m;
1570 1297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1571 1298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1573,21 +1300,27 @@
1573 1300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Show the final common area */
1574 1301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( nr==i );
1575 1302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
m = R[r+nr*3];
1576 1303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( m>nContext ) m = nContext;
1577 1304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(j=0; j<m; j++){
1578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- s.n = 0;
1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, a+j);
1305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, a+j, SBS_LNA);
1580 1306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
s.iStart = s.iEnd = -1;
1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &A[a+j], SBS_PAD);
1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWrite(&s, " ", 3);
1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteLineno(&s, b+j);
1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sbsWriteText(&s, &B[b+j], SBS_NEWLINE);
1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, s.zLine, s.n);
1307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &A[a+j], SBS_TXTA);
1308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteMarker(&s, " ", "");
1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteLineno(&s, b+j, SBS_LNB);
1310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteText(&s, &B[b+j], SBS_TXTB);
1586 1311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1587 1312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- free(s.zLine);
1313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( s.escHtml && blob_size(s.apCols[SBS_LNA])>0 ){
1315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, "<table class=\"sbsdiffcols\"><tr>\n", -1);
1316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=SBS_LNA; i<=SBS_TXTB; i++){
1317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sbsWriteColumn(pOut, s.apCols[i], i);
1318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(s.apCols[i]);
1319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, "</tr></table>\n", -1);
1321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1589 1322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1590 1323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1591 1324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1592 1325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Compute the optimal longest common subsequence (LCS) using an
1593 1326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** exhaustive search. This version of the LCS is only used for
@@ -1990,10 +1723,21 @@
1990 1723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int diff_width(u64 diffFlags){
1991 1724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int w = (diffFlags & DIFF_WIDTH_MASK)/(DIFF_CONTEXT_MASK+1);
1992 1725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( w==0 ) w = 80;
1993 1726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return w;
1994 1727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Append the error message to pOut.
1731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void diff_errmsg(Blob *pOut, const char *msg, int diffFlags){
1733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( diffFlags & DIFF_HTML ){
1734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "<p class=\"generalError\">%s</p>", msg);
1735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, msg, -1);
1737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1995 1739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1996 1740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1997 1741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Generate a report of the differences between files pA and pB.
1998 1742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If pOut is not NULL then a unified diff is appended there. It
1999 1743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is assumed that pOut has already been initialized. If pOut is
@@ -2032,11 +1776,11 @@
2032 1776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&c.nTo, ignoreEolWs);
2033 1777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c.aFrom==0 || c.aTo==0 ){
2034 1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aFrom);
2035 1779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aTo);
2036 1780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pOut ){
2037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(pOut, DIFF_CANNOT_COMPUTE_BINARY);
1781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_errmsg(pOut, DIFF_CANNOT_COMPUTE_BINARY, diffFlags);
2038 1782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2039 1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
2040 1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2041 1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2042 1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Compute the difference */
@@ -2048,15 +1792,11 @@
2048 1792 { 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]; }
2049 1793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n>10000 ){
2050 1794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aFrom);
2051 1795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aTo);
2052 1796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(c.aEdit);
2053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( diffFlags & DIFF_HTML ){
2054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, DIFF_TOO_MANY_CHANGES_HTML, -1);
2055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
2056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(pOut, DIFF_TOO_MANY_CHANGES_TXT, -1);
2057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ diff_errmsg(pOut, DIFF_TOO_MANY_CHANGES, diffFlags);
2058 1798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
2059 1799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2060 1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2061 1801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (diffFlags & DIFF_NOOPT)==0 ){
2062 1802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_optimize(&c);
@@ -2159,10 +1899,11 @@
2159 1899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("tk",0,0)!=0 ){
2160 1900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
diff_tk("test-diff", 2);
2161 1901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
2162 1902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2163 1903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
find_option("i",0,0);
1904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ find_option("v",0,0);
2164 1905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRe = find_option("regexp","e",1);
2165 1906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRe ){
2166 1907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zErr = re_compile(&pRe, zRe, 0);
2167 1908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr ) fossil_fatal("regex error: %s", zErr);
2168 1909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -2616,60 +2357,5 @@
2616 2357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPrefix[0] = 0;
2617 2358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2618 2359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("%21s %4d: %.*s\n", zPrefix, i+1, n, z);
2619 2360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2620 2361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
2622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
2623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** COMMAND: test-looks-like-utf
2624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
2625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Usage: %fossil test-looks-like-utf FILENAME
2626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
2627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Options:
2628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** --utf8 Ignoring BOM and file size, force UTF-8 checking
2629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** --utf16 Ignoring BOM and file size, force UTF-16 checking
2630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- **
2631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** FILENAME is the name of a file to check for textual content in the UTF-8
2632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and/or UTF-16 encodings.
2633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
2634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void looks_like_utf_test_cmd(void){
2635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob blob; /* the contents of the specified file */
2636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fUtf8; /* return value of starts_with_utf8_bom() */
2637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fUtf16; /* return value of starts_with_utf16_bom() */
2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fUnicode; /* return value of could_be_utf16() */
2639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int lookFlags; /* output flags from looks_like_utf8/utf16() */
2640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bRevUtf16 = 0; /* non-zero -> UTF-16 byte order reversed */
2641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bRevUnicode = 0; /* non-zero -> UTF-16 byte order reversed */
2642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fForceUtf8 = find_option("utf8",0,0)!=0;
2643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fForceUtf16 = find_option("utf16",0,0)!=0;
2644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.argc!=3 ) usage("FILENAME");
2645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_read_from_file(&blob, g.argv[2]);
2646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fUtf8 = starts_with_utf8_bom(&blob, 0);
2647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fUtf16 = starts_with_utf16_bom(&blob, 0, &bRevUtf16);
2648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fForceUtf8 ){
2649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fUnicode = 0;
2650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
2651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fUnicode = could_be_utf16(&blob, &bRevUnicode) || fForceUtf16;
2652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lookFlags = fUnicode ? looks_like_utf16(&blob, bRevUnicode, 0) :
2654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- looks_like_utf8(&blob, 0);
2655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("File \"%s\" has %d bytes.\n",g.argv[2],blob_size(&blob));
2656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Starts with UTF-8 BOM: %s\n",fUtf8?"yes":"no");
2657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Starts with UTF-16 BOM: %s\n",
2658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fUtf16?(bRevUtf16?"reversed":"yes"):"no");
2659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Looks like UTF-%s: %s\n",fUnicode?"16":"8",
2660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (lookFlags&LOOK_BINARY)?"no":"yes");
2661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_NUL: %s\n",(lookFlags&LOOK_NUL)?"yes":"no");
2662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_CR: %s\n",(lookFlags&LOOK_CR)?"yes":"no");
2663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_LONE_CR: %s\n",
2664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (lookFlags&LOOK_LONE_CR)?"yes":"no");
2665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_LF: %s\n",(lookFlags&LOOK_LF)?"yes":"no");
2666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_LONE_LF: %s\n",
2667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (lookFlags&LOOK_LONE_LF)?"yes":"no");
2668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_CRLF: %s\n",(lookFlags&LOOK_CRLF)?"yes":"no");
2669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_LONG: %s\n",(lookFlags&LOOK_LONG)?"yes":"no");
2670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_INVALID: %s\n",
2671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (lookFlags&LOOK_INVALID)?"yes":"no");
2672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_ODD: %s\n",(lookFlags&LOOK_ODD)?"yes":"no");
2673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("Has flag LOOK_SHORT: %s\n",(lookFlags&LOOK_SHORT)?"yes":"no");
2674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&blob);
2675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2676 2362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!