Attachment "patch" to
ticket [aee1b21fef]
added by
anonymous
2010-08-26 09:23:46.
0000: 2d 2d 2d 20 73 72 63 5c 64 69 66 66 63 6d 64 2e --- src\diffcmd.
0010: 63 0d 0a 2b 2b 2b 20 73 72 63 5c 64 69 66 66 63 c..+++ src\diffc
0020: 6d 64 2e 63 0d 0a 40 40 20 2d 31 37 39 2c 33 36 md.c..@@ -179,36
0030: 20 2b 31 37 39 2c 35 37 20 40 40 0d 0a 20 20 20 +179,57 @@..
0040: 20 20 62 6c 6f 62 5f 72 65 73 65 74 28 26 63 6d blob_reset(&cm
0050: 64 29 3b 0d 0a 20 20 20 7d 0d 0a 20 7d 0d 0a 20 d);.. }.. }..
0060: 0d 0a 20 2f 2a 0d 0a 2d 2a 2a 20 44 6f 20 61 20 .. /*..-** Do a
0070: 64 69 66 66 20 61 67 61 69 6e 73 74 20 61 20 73 diff against a s
0080: 69 6e 67 6c 65 20 66 69 6c 65 20 6e 61 6d 65 64 ingle file named
0090: 20 69 6e 20 67 2e 61 72 67 76 5b 32 5d 20 66 72 in g.argv[2] fr
00a0: 6f 6d 20 76 65 72 73 69 6f 6e 20 7a 46 72 6f 6d om version zFrom
00b0: 0d 0a 2b 2a 2a 20 44 6f 20 61 20 64 69 66 66 20 ..+** Do a diff
00c0: 61 67 61 69 6e 73 74 20 61 20 73 70 65 63 69 66 against a specif
00d0: 69 65 64 20 66 69 6c 65 20 66 72 6f 6d 20 76 65 ied file from ve
00e0: 72 73 69 6f 6e 20 7a 46 72 6f 6d 0d 0a 20 2a 2a rsion zFrom.. **
00f0: 20 61 67 61 69 6e 73 74 20 74 68 65 20 73 61 6d against the sam
0100: 65 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b 2e 0d e file on disk..
0110: 0a 20 2a 2f 0d 0a 20 73 74 61 74 69 63 20 76 6f . */.. static vo
0120: 69 64 20 64 69 66 66 5f 6f 6e 65 5f 61 67 61 69 id diff_one_agai
0130: 6e 73 74 5f 64 69 73 6b 28 0d 0a 2b 20 20 63 6f nst_disk(..+ co
0140: 6e 73 74 20 63 68 61 72 20 2a 7a 46 69 6c 65 2c nst char *zFile,
0150: 20 20 20 20 20 20 20 20 20 2f 2a 20 44 69 73 70 /* Disp
0160: 6c 61 79 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 lay name of the
0170: 66 69 6c 65 20 2a 2f 0d 0a 20 20 20 63 6f 6e 73 file */.. cons
0180: 74 20 63 68 61 72 20 2a 7a 46 72 6f 6d 2c 20 20 t char *zFrom,
0190: 20 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 /* Name of
01a0: 20 66 69 6c 65 20 2a 2f 0d 0a 2d 20 20 63 6f 6e file */..- con
01b0: 73 74 20 63 68 61 72 20 2a 7a 44 69 66 66 43 6d st char *zDiffCm
01c0: 64 2c 20 20 20 20 20 2f 2a 20 55 73 65 20 74 68 d, /* Use th
01d0: 69 73 20 22 64 69 66 66 22 20 63 6f 6d 6d 61 6e is "diff" comman
01e0: 64 20 2a 2f 0d 0a 2d 20 20 69 6e 74 20 69 67 6e d */..- int ign
01f0: 6f 72 65 45 6f 6c 57 73 20 20 20 20 20 20 20 20 oreEolWs
0200: 20 20 20 2f 2a 20 49 67 6e 6f 72 65 20 77 68 69 /* Ignore whi
0210: 74 65 73 70 61 63 65 20 63 68 61 6e 67 65 73 20 tespace changes
0220: 61 74 20 65 6e 64 20 6f 66 20 6c 69 6e 65 73 20 at end of lines
0230: 2a 2f 0d 0a 2b 20 20 63 6f 6e 73 74 20 63 68 61 */..+ const cha
0240: 72 20 2a 7a 44 69 66 66 43 6d 64 20 20 20 20 20 r *zDiffCmd
0250: 20 2f 2a 20 55 73 65 20 74 68 69 73 20 22 64 69 /* Use this "di
0260: 66 66 22 20 63 6f 6d 6d 61 6e 64 20 2a 2f 0d 0a ff" command */..
0270: 20 29 7b 0d 0a 2b 0d 0a 20 20 20 42 6c 6f 62 20 ){..+.. Blob
0280: 66 6e 61 6d 65 3b 0d 0a 20 20 20 42 6c 6f 62 20 fname;.. Blob
0290: 63 6f 6e 74 65 6e 74 3b 0d 0a 2d 20 20 66 69 6c content;..- fil
02a0: 65 5f 74 72 65 65 5f 6e 61 6d 65 28 67 2e 61 72 e_tree_name(g.ar
02b0: 67 76 5b 32 5d 2c 20 26 66 6e 61 6d 65 2c 20 31 gv[2], &fname, 1
02c0: 29 3b 0d 0a 2b 20 20 66 69 6c 65 5f 74 72 65 65 );..+ file_tree
02d0: 5f 6e 61 6d 65 28 7a 46 69 6c 65 2c 20 26 66 6e _name(zFile, &fn
02e0: 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 68 69 73 ame, 1);.. his
02f0: 74 6f 72 69 63 61 6c 5f 76 65 72 73 69 6f 6e 5f torical_version_
0300: 6f 66 5f 66 69 6c 65 28 7a 46 72 6f 6d 2c 20 62 of_file(zFrom, b
0310: 6c 6f 62 5f 73 74 72 28 26 66 6e 61 6d 65 29 2c lob_str(&fname),
0320: 20 26 63 6f 6e 74 65 6e 74 2c 20 30 29 3b 0d 0a &content, 0);..
0330: 2d 20 20 64 69 66 66 5f 66 69 6c 65 28 26 63 6f - diff_file(&co
0340: 6e 74 65 6e 74 2c 20 67 2e 61 72 67 76 5b 32 5d ntent, g.argv[2]
0350: 2c 20 67 2e 61 72 67 76 5b 32 5d 2c 20 7a 44 69 , g.argv[2], zDi
0360: 66 66 43 6d 64 2c 20 69 67 6e 6f 72 65 45 6f 6c ffCmd, ignoreEol
0370: 57 73 29 3b 0d 0a 2b 20 20 64 69 66 66 5f 66 69 Ws);..+ diff_fi
0380: 6c 65 28 26 63 6f 6e 74 65 6e 74 2c 20 7a 46 69 le(&content, zFi
0390: 6c 65 2c 20 7a 46 69 6c 65 2c 20 7a 44 69 66 66 le, zFile, zDiff
03a0: 43 6d 64 2c 20 30 29 3b 0d 0a 20 20 20 62 6c 6f Cmd, 0);.. blo
03b0: 62 5f 72 65 73 65 74 28 26 63 6f 6e 74 65 6e 74 b_reset(&content
03c0: 29 3b 0d 0a 20 20 20 62 6c 6f 62 5f 72 65 73 65 );.. blob_rese
03d0: 74 28 26 66 6e 61 6d 65 29 3b 0d 0a 2b 7d 0d 0a t(&fname);..+}..
03e0: 2b 0d 0a 2b 2f 2a 0d 0a 2b 2a 2a 20 44 6f 20 61 +..+/*..+** Do a
03f0: 20 64 69 66 66 20 61 67 61 69 6e 73 74 20 73 6f diff against so
0400: 6d 65 20 73 70 65 63 69 66 69 65 64 20 66 69 6c me specified fil
0410: 65 73 20 66 72 6f 6d 20 76 65 72 73 69 6f 6e 20 es from version
0420: 7a 46 72 6f 6d 0d 0a 2b 2a 2a 20 61 67 61 69 6e zFrom..+** again
0430: 73 74 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 st the same file
0440: 20 6f 6e 20 64 69 73 6b 2e 0d 0a 2b 2a 2a 0d 0a on disk...+**..
0450: 2b 2a 2a 20 4e 6f 74 69 63 65 3a 20 54 68 65 20 +** Notice: The
0460: 61 72 72 61 79 20 61 7a 46 69 6c 65 20 69 73 20 array azFile is
0470: 4e 55 4c 4c 20 74 65 6d 69 6e 61 74 65 64 2e 0d NULL teminated..
0480: 0a 2b 2a 2f 0d 0a 2b 73 74 61 74 69 63 20 76 6f .+*/..+static vo
0490: 69 64 20 64 69 66 66 5f 73 6f 6d 65 5f 61 67 61 id diff_some_aga
04a0: 69 6e 73 74 5f 64 69 73 6b 28 0d 0a 2b 20 20 20 inst_disk(..+
04b0: 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 const char
04c0: 2a 2a 61 7a 46 69 6c 65 2c 20 20 20 20 20 20 20 **azFile,
04d0: 2f 2a 20 44 69 73 70 6c 61 79 20 6e 61 6d 65 20 /* Display name
04e0: 6f 66 20 74 68 65 73 65 20 66 69 6c 65 73 20 2a of these files *
04f0: 2f 0d 0a 2b 20 20 20 20 20 20 20 20 69 6e 74 20 /..+ int
0500: 6e 46 69 6c 65 2c 20 20 20 20 20 20 20 20 20 20 nFile,
0510: 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 20 6e 75 /* Max nu
0520: 6d 62 65 72 20 6f 66 20 66 69 6c 65 73 20 74 6f mber of files to
0530: 20 62 65 20 63 6f 6d 70 61 72 65 64 20 2a 2f 0d be compared */.
0540: 0a 2b 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 .+ const
0550: 63 68 61 72 20 2a 7a 46 72 6f 6d 2c 20 20 20 20 char *zFrom,
0560: 20 20 20 20 20 2f 2a 20 77 68 69 63 68 20 76 65 /* which ve
0570: 72 73 69 6f 6e 20 2a 2f 0d 0a 2b 20 20 20 20 20 rsion */..+
0580: 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a const char *z
0590: 44 69 66 66 43 6d 64 20 20 20 20 20 20 20 2f 2a DiffCmd /*
05a0: 20 43 6f 6d 6d 61 6e 64 20 66 6f 72 20 63 6f 6d Command for com
05b0: 70 61 72 69 73 6f 6e 20 2a 2f 0d 0a 2b 29 7b 0d parison */..+){.
05c0: 0a 2b 20 20 77 68 69 6c 65 28 20 61 7a 46 69 6c .+ while( azFil
05d0: 65 20 26 26 20 2a 61 7a 46 69 6c 65 20 26 26 20 e && *azFile &&
05e0: 6e 46 69 6c 65 3e 30 20 29 7b 0d 0a 2b 20 20 20 nFile>0 ){..+
05f0: 20 64 69 66 66 5f 6f 6e 65 5f 61 67 61 69 6e 73 diff_one_agains
0600: 74 5f 64 69 73 6b 28 2a 61 7a 46 69 6c 65 2c 20 t_disk(*azFile,
0610: 7a 46 72 6f 6d 2c 20 7a 44 69 66 66 43 6d 64 29 zFrom, zDiffCmd)
0620: 3b 0d 0a 2b 0d 0a 2b 20 20 20 20 2b 2b 61 7a 46 ;..+..+ ++azF
0630: 69 6c 65 3b 0d 0a 2b 20 20 20 20 2d 2d 6e 46 69 ile;..+ --nFi
0640: 6c 65 3b 0d 0a 2b 20 20 7d 0d 0a 20 7d 0d 0a 20 le;..+ }.. }..
0650: 0d 0a 20 2f 2a 0d 0a 20 2a 2a 20 52 75 6e 20 61 .. /*.. ** Run a
0660: 20 64 69 66 66 20 62 65 74 77 65 65 6e 20 74 68 diff between th
0670: 65 20 76 65 72 73 69 6f 6e 20 7a 46 72 6f 6d 20 e version zFrom
0680: 61 6e 64 20 66 69 6c 65 73 20 6f 6e 20 64 69 73 and files on dis
0690: 6b 2e 20 20 7a 46 72 6f 6d 20 6d 69 67 68 74 0d k. zFrom might.
06a0: 0a 20 2a 2a 20 62 65 20 4e 55 4c 4c 20 77 68 69 . ** be NULL whi
06b0: 63 68 20 6d 65 61 6e 73 20 74 6f 20 73 69 6d 70 ch means to simp
06c0: 6c 79 20 73 68 6f 77 20 74 68 65 20 64 69 66 66 ly show the diff
06d0: 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 74 erence between t
06e0: 68 65 20 65 64 69 74 65 64 0d 0a 20 2a 2a 20 66 he edited.. ** f
06f0: 69 6c 65 73 20 6f 6e 20 64 69 73 6b 20 61 6e 64 iles on disk and
0700: 20 74 68 65 20 63 68 65 63 6b 2d 6f 75 74 20 6f the check-out o
0710: 6e 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65 n which they are
0720: 20 62 61 73 65 64 2e 0d 0a 20 2a 2f 0d 0a 20 73 based... */.. s
0730: 74 61 74 69 63 20 76 6f 69 64 20 64 69 66 66 5f tatic void diff_
0740: 61 6c 6c 5f 61 67 61 69 6e 73 74 5f 64 69 73 6b all_against_disk
0750: 28 0d 0a 20 20 20 63 6f 6e 73 74 20 63 68 61 72 (.. const char
0760: 20 2a 7a 46 72 6f 6d 2c 20 20 20 20 20 20 20 20 *zFrom,
0770: 2f 2a 20 56 65 72 73 69 6f 6e 20 74 6f 20 64 69 /* Version to di
0780: 66 66 65 72 65 6e 63 65 20 66 72 6f 6d 20 2a 2f fference from */
0790: 0d 0a 2d 20 20 63 6f 6e 73 74 20 63 68 61 72 20 ..- const char
07a0: 2a 7a 44 69 66 66 43 6d 64 2c 20 20 20 20 20 2f *zDiffCmd, /
07b0: 2a 20 55 73 65 20 74 68 69 73 20 64 69 66 66 20 * Use this diff
07c0: 63 6f 6d 6d 61 6e 64 2e 20 20 4e 55 4c 4c 20 66 command. NULL f
07d0: 6f 72 20 62 75 69 6c 74 2d 69 6e 20 2a 2f 0d 0a or built-in */..
07e0: 2d 20 20 69 6e 74 20 69 67 6e 6f 72 65 45 6f 6c - int ignoreEol
07f0: 57 73 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 Ws /*
0800: 49 67 6e 6f 72 65 20 65 6e 64 2d 6f 66 2d 6c 69 Ignore end-of-li
0810: 6e 65 20 77 68 69 74 65 73 70 61 63 65 20 2a 2f ne whitespace */
0820: 0d 0a 2b 20 20 63 6f 6e 73 74 20 63 68 61 72 20 ..+ const char
0830: 2a 7a 44 69 66 66 43 6d 64 20 20 20 20 20 20 2f *zDiffCmd /
0840: 2a 20 55 73 65 20 74 68 69 73 20 64 69 66 66 20 * Use this diff
0850: 63 6f 6d 6d 61 6e 64 2e 20 20 4e 55 4c 4c 20 66 command. NULL f
0860: 6f 72 20 62 75 69 6c 74 2d 69 6e 20 2a 2f 0d 0a or built-in */..
0870: 2b 0d 0a 20 29 7b 0d 0a 20 20 20 69 6e 74 20 76 +.. ){.. int v
0880: 69 64 3b 0d 0a 20 20 20 42 6c 6f 62 20 73 71 6c id;.. Blob sql
0890: 3b 0d 0a 20 20 20 53 74 6d 74 20 71 3b 0d 0a 20 ;.. Stmt q;..
08a0: 0d 0a 40 40 20 2d 32 37 35 2c 35 31 20 2b 32 39 ..@@ -275,51 +29
08b0: 36 2c 37 31 20 40 40 0d 0a 20 20 20 20 20 20 20 6,71 @@..
08c0: 63 6f 6e 74 65 6e 74 5f 67 65 74 28 73 72 63 69 content_get(srci
08d0: 64 2c 20 26 63 6f 6e 74 65 6e 74 29 3b 0d 0a 20 d, &content);..
08e0: 20 20 20 20 20 20 70 72 69 6e 74 66 28 22 49 6e printf("In
08f0: 64 65 78 3a 20 25 73 5c 6e 3d 3d 3d 3d 3d 3d 3d dex: %s\n=======
0900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0920: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 "..
0930: 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "==============
0940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e ==============\n
0950: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ",..
0960: 20 20 7a 50 61 74 68 6e 61 6d 65 0d 0a 20 20 20 zPathname..
0970: 20 20 20 20 29 3b 0d 0a 2d 20 20 20 20 20 20 64 );..- d
0980: 69 66 66 5f 66 69 6c 65 28 26 63 6f 6e 74 65 6e iff_file(&conten
0990: 74 2c 20 7a 46 75 6c 6c 4e 61 6d 65 2c 20 7a 50 t, zFullName, zP
09a0: 61 74 68 6e 61 6d 65 2c 20 7a 44 69 66 66 43 6d athname, zDiffCm
09b0: 64 2c 20 69 67 6e 6f 72 65 45 6f 6c 57 73 29 3b d, ignoreEolWs);
09c0: 0d 0a 2b 20 20 20 20 20 20 64 69 66 66 5f 66 69 ..+ diff_fi
09d0: 6c 65 28 26 63 6f 6e 74 65 6e 74 2c 20 7a 46 75 le(&content, zFu
09e0: 6c 6c 4e 61 6d 65 2c 20 7a 50 61 74 68 6e 61 6d llName, zPathnam
09f0: 65 2c 20 7a 44 69 66 66 43 6d 64 2c 20 30 29 3b e, zDiffCmd, 0);
0a00: 0d 0a 20 20 20 20 20 20 20 62 6c 6f 62 5f 72 65 .. blob_re
0a10: 73 65 74 28 26 63 6f 6e 74 65 6e 74 29 3b 0d 0a set(&content);..
0a20: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 66 72 65 }.. fre
0a30: 65 28 7a 46 75 6c 6c 4e 61 6d 65 29 3b 0d 0a 20 e(zFullName);..
0a40: 20 20 7d 0d 0a 20 20 20 64 62 5f 66 69 6e 61 6c }.. db_final
0a50: 69 7a 65 28 26 71 29 3b 0d 0a 20 20 20 64 62 5f ize(&q);.. db_
0a60: 65 6e 64 5f 74 72 61 6e 73 61 63 74 69 6f 6e 28 end_transaction(
0a70: 31 29 3b 20 20 2f 2a 20 52 4f 4c 4c 42 41 43 4b 1); /* ROLLBACK
0a80: 20 2a 2f 0d 0a 20 7d 0d 0a 20 0d 0a 20 2f 2a 0d */.. }.. .. /*.
0a90: 0a 2d 2a 2a 20 4f 75 74 70 75 74 20 74 68 65 20 .-** Output the
0aa0: 64 69 66 66 65 72 65 6e 63 65 73 20 62 65 74 77 differences betw
0ab0: 65 65 6e 20 74 77 6f 20 76 65 72 73 69 6f 6e 73 een two versions
0ac0: 20 6f 66 20 61 20 73 69 6e 67 6c 65 20 66 69 6c of a single fil
0ad0: 65 2e 0d 0a 2d 2a 2a 20 7a 46 72 6f 6d 20 61 6e e...-** zFrom an
0ae0: 64 20 7a 54 6f 20 61 72 65 20 74 68 65 20 63 68 d zTo are the ch
0af0: 65 63 6b 2d 69 6e 73 20 63 6f 6e 74 61 69 6e 69 eck-ins containi
0b00: 6e 67 20 74 68 65 20 74 77 6f 20 66 69 6c 65 20 ng the two file
0b10: 76 65 72 73 69 6f 6e 73 2e 0d 0a 2d 2a 2a 20 54 versions...-** T
0b20: 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 63 he filename is c
0b30: 6f 6e 74 61 69 6e 65 64 20 69 6e 20 67 2e 61 72 ontained in g.ar
0b40: 67 76 5b 32 5d 2e 0d 0a 2b 2a 2a 20 4f 75 74 70 gv[2]...+** Outp
0b50: 75 74 20 74 68 65 20 64 69 66 66 65 72 65 6e 63 ut the differenc
0b60: 65 73 20 62 65 74 77 65 65 6e 20 74 77 6f 20 76 es between two v
0b70: 65 72 73 69 6f 6e 73 20 6f 66 20 61 20 73 70 65 ersions of a spe
0b80: 63 69 66 69 65 64 20 66 69 6c 65 2e 0d 0a 2b 2a cified file...+*
0b90: 2a 20 7a 46 72 6f 6d 20 61 6e 64 20 7a 54 6f 20 * zFrom and zTo
0ba0: 61 72 65 20 74 68 65 20 63 68 65 63 6b 2d 69 6e are the check-in
0bb0: 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 s containing the
0bc0: 20 74 77 6f 20 66 69 6c 65 20 76 65 72 73 69 6f two file versio
0bd0: 6e 73 2e 0d 0a 20 2a 2f 0d 0a 20 73 74 61 74 69 ns... */.. stati
0be0: 63 20 76 6f 69 64 20 64 69 66 66 5f 6f 6e 65 5f c void diff_one_
0bf0: 74 77 6f 5f 76 65 72 73 69 6f 6e 73 28 0d 0a 2b two_versions(..+
0c00: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 const char *zF
0c10: 69 6c 65 2c 0d 0a 20 20 20 63 6f 6e 73 74 20 63 ile,.. const c
0c20: 68 61 72 20 2a 7a 46 72 6f 6d 2c 0d 0a 20 20 20 har *zFrom,..
0c30: 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 54 6f 2c const char *zTo,
0c40: 0d 0a 2d 20 20 63 6f 6e 73 74 20 63 68 61 72 20 ..- const char
0c50: 2a 7a 44 69 66 66 43 6d 64 2c 0d 0a 2d 20 20 69 *zDiffCmd,..- i
0c60: 6e 74 20 69 67 6e 6f 72 65 45 6f 6c 57 73 0d 0a nt ignoreEolWs..
0c70: 2b 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a + const char *z
0c80: 44 69 66 66 43 6d 64 0d 0a 20 29 7b 0d 0a 20 20 DiffCmd.. ){..
0c90: 20 63 68 61 72 20 2a 7a 4e 61 6d 65 3b 0d 0a 20 char *zName;..
0ca0: 20 20 42 6c 6f 62 20 66 6e 61 6d 65 3b 0d 0a 20 Blob fname;..
0cb0: 20 20 42 6c 6f 62 20 76 31 2c 20 76 32 3b 0d 0a Blob v1, v2;..
0cc0: 2d 20 20 66 69 6c 65 5f 74 72 65 65 5f 6e 61 6d - file_tree_nam
0cd0: 65 28 67 2e 61 72 67 76 5b 32 5d 2c 20 26 66 6e e(g.argv[2], &fn
0ce0: 61 6d 65 2c 20 31 29 3b 0d 0a 2b 20 20 66 69 6c ame, 1);..+ fil
0cf0: 65 5f 74 72 65 65 5f 6e 61 6d 65 28 7a 46 69 6c e_tree_name(zFil
0d00: 65 2c 20 26 66 6e 61 6d 65 2c 20 31 29 3b 0d 0a e, &fname, 1);..
0d10: 20 20 20 7a 4e 61 6d 65 20 3d 20 62 6c 6f 62 5f zName = blob_
0d20: 73 74 72 28 26 66 6e 61 6d 65 29 3b 0d 0a 20 20 str(&fname);..
0d30: 20 68 69 73 74 6f 72 69 63 61 6c 5f 76 65 72 73 historical_vers
0d40: 69 6f 6e 5f 6f 66 5f 66 69 6c 65 28 7a 46 72 6f ion_of_file(zFro
0d50: 6d 2c 20 7a 4e 61 6d 65 2c 20 26 76 31 2c 20 30 m, zName, &v1, 0
0d60: 29 3b 0d 0a 20 20 20 68 69 73 74 6f 72 69 63 61 );.. historica
0d70: 6c 5f 76 65 72 73 69 6f 6e 5f 6f 66 5f 66 69 6c l_version_of_fil
0d80: 65 28 7a 54 6f 2c 20 7a 4e 61 6d 65 2c 20 26 76 e(zTo, zName, &v
0d90: 32 2c 20 30 29 3b 0d 0a 2d 20 20 64 69 66 66 5f 2, 0);..- diff_
0da0: 66 69 6c 65 5f 6d 65 6d 28 26 76 31 2c 20 26 76 file_mem(&v1, &v
0db0: 32 2c 20 7a 4e 61 6d 65 2c 20 7a 44 69 66 66 43 2, zName, zDiffC
0dc0: 6d 64 2c 20 69 67 6e 6f 72 65 45 6f 6c 57 73 29 md, ignoreEolWs)
0dd0: 3b 0d 0a 2b 20 20 64 69 66 66 5f 66 69 6c 65 5f ;..+ diff_file_
0de0: 6d 65 6d 28 26 76 31 2c 20 26 76 32 2c 20 7a 4e mem(&v1, &v2, zN
0df0: 61 6d 65 2c 20 7a 44 69 66 66 43 6d 64 2c 20 30 ame, zDiffCmd, 0
0e00: 29 3b 0d 0a 20 20 20 62 6c 6f 62 5f 72 65 73 65 );.. blob_rese
0e10: 74 28 26 76 31 29 3b 0d 0a 20 20 20 62 6c 6f 62 t(&v1);.. blob
0e20: 5f 72 65 73 65 74 28 26 76 32 29 3b 0d 0a 20 20 _reset(&v2);..
0e30: 20 62 6c 6f 62 5f 72 65 73 65 74 28 26 66 6e 61 blob_reset(&fna
0e40: 6d 65 29 3b 0d 0a 2b 7d 0d 0a 2b 0d 0a 2b 2f 2a me);..+}..+..+/*
0e50: 0d 0a 2b 2a 2a 20 4f 75 74 70 75 74 20 74 68 65 ..+** Output the
0e60: 20 64 69 66 66 65 72 65 6e 63 65 73 20 62 65 74 differences bet
0e70: 77 65 65 6e 20 74 77 6f 20 76 65 72 73 69 6f 6e ween two version
0e80: 73 20 6f 66 20 73 6f 6d 65 20 73 70 65 63 69 66 s of some specif
0e90: 69 65 64 20 66 69 6c 65 73 2e 0d 0a 2b 2a 2a 20 ied files...+**
0ea0: 7a 46 72 6f 6d 20 61 6e 64 20 7a 54 6f 20 61 72 zFrom and zTo ar
0eb0: 65 20 74 68 65 20 63 68 65 63 6b 2d 69 6e 73 20 e the check-ins
0ec0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 containing the t
0ed0: 77 6f 20 66 69 6c 65 20 76 65 72 73 69 6f 6e 73 wo file versions
0ee0: 2e 0d 0a 2b 2a 2a 20 54 68 65 73 65 20 66 69 6c ...+** These fil
0ef0: 65 73 20 61 72 65 20 73 70 65 63 69 66 69 65 64 es are specified
0f00: 20 69 6e 20 61 7a 46 69 6c 65 2e 0d 0a 2b 2a 2a in azFile...+**
0f10: 0d 0a 2b 2a 2a 20 4e 6f 74 69 63 65 3a 20 54 68 ..+** Notice: Th
0f20: 65 20 61 72 72 61 79 20 61 7a 46 69 6c 65 20 69 e array azFile i
0f30: 73 20 4e 55 4c 4c 20 74 65 6d 69 6e 61 74 65 64 s NULL teminated
0f40: 2e 0d 0a 2b 2a 2f 0d 0a 2b 73 74 61 74 69 63 20 ...+*/..+static
0f50: 76 6f 69 64 20 64 69 66 66 5f 73 6f 6d 65 5f 74 void diff_some_t
0f60: 77 6f 5f 76 65 72 73 69 6f 6e 73 28 0d 0a 2b 20 wo_versions(..+
0f70: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 61 7a const char **az
0f80: 46 69 6c 65 2c 20 20 20 20 20 20 20 20 20 20 20 File,
0f90: 2f 2a 20 44 69 73 70 6c 61 79 20 6e 61 6d 65 20 /* Display name
0fa0: 6f 66 20 74 68 65 73 65 20 66 69 6c 65 73 20 2a of these files *
0fb0: 2f 0d 0a 2b 20 20 69 6e 74 20 6e 46 69 6c 65 2c /..+ int nFile,
0fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0fd0: 20 20 20 20 20 2f 2a 20 4d 61 78 20 6e 75 6d 62 /* Max numb
0fe0: 65 72 20 6f 66 20 66 69 6c 65 73 20 74 6f 20 62 er of files to b
0ff0: 65 20 63 6f 6d 70 61 72 65 64 20 2a 2f 0d 0a 2b e compared */..+
1000: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 const char *zF
1010: 72 6f 6d 2c 20 20 20 20 20 20 20 20 20 20 20 20 rom,
1020: 20 2f 2a 20 20 2a 2f 0d 0a 2b 20 20 63 6f 6e 73 /* */..+ cons
1030: 74 20 63 68 61 72 20 2a 7a 54 6f 2c 20 20 20 20 t char *zTo,
1040: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 20 2a /* *
1050: 2f 0d 0a 2b 20 20 63 6f 6e 73 74 20 63 68 61 72 /..+ const char
1060: 20 2a 7a 44 69 66 66 43 6d 64 20 20 20 20 20 20 *zDiffCmd
1070: 20 20 20 20 20 2f 2a 20 43 6f 6d 6d 61 6e 64 20 /* Command
1080: 66 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 2a for comparison *
1090: 2f 0d 0a 2b 29 7b 0d 0a 2b 20 20 77 68 69 6c 65 /..+){..+ while
10a0: 28 20 61 7a 46 69 6c 65 20 26 26 20 2a 61 7a 46 ( azFile && *azF
10b0: 69 6c 65 20 26 26 20 6e 46 69 6c 65 3e 30 20 29 ile && nFile>0 )
10c0: 7b 0d 0a 2b 20 20 20 20 64 69 66 66 5f 6f 6e 65 {..+ diff_one
10d0: 5f 74 77 6f 5f 76 65 72 73 69 6f 6e 73 28 2a 61 _two_versions(*a
10e0: 7a 46 69 6c 65 2c 20 7a 46 72 6f 6d 2c 20 7a 54 zFile, zFrom, zT
10f0: 6f 2c 20 7a 44 69 66 66 43 6d 64 29 3b 0d 0a 2b o, zDiffCmd);..+
1100: 0d 0a 2b 20 20 20 20 2b 2b 61 7a 46 69 6c 65 3b ..+ ++azFile;
1110: 0d 0a 2b 20 20 20 20 2d 2d 6e 46 69 6c 65 3b 0d ..+ --nFile;.
1120: 0a 2b 20 20 7d 0d 0a 20 7d 0d 0a 20 0d 0a 20 2f .+ }.. }.. .. /
1130: 2a 0d 0a 20 2a 2a 20 4f 75 74 70 75 74 20 74 68 *.. ** Output th
1140: 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 62 65 e differences be
1150: 74 77 65 65 6e 20 74 77 6f 20 63 68 65 63 6b 2d tween two check-
1160: 69 6e 73 2e 0d 0a 20 2a 2f 0d 0a 20 73 74 61 74 ins... */.. stat
1170: 69 63 20 76 6f 69 64 20 64 69 66 66 5f 61 6c 6c ic void diff_all
1180: 5f 74 77 6f 5f 76 65 72 73 69 6f 6e 73 28 0d 0a _two_versions(..
1190: 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a const char *z
11a0: 46 72 6f 6d 2c 0d 0a 20 20 20 63 6f 6e 73 74 20 From,.. const
11b0: 63 68 61 72 20 2a 7a 54 6f 2c 0d 0a 2d 20 20 63 char *zTo,..- c
11c0: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 44 69 66 66 onst char *zDiff
11d0: 43 6d 64 2c 0d 0a 2d 20 20 69 6e 74 20 69 67 6e Cmd,..- int ign
11e0: 6f 72 65 45 6f 6c 57 73 0d 0a 2b 20 20 63 6f 6e oreEolWs..+ con
11f0: 73 74 20 63 68 61 72 20 2a 7a 44 69 66 66 43 6d st char *zDiffCm
1200: 64 0d 0a 20 29 7b 0d 0a 20 20 20 4d 61 6e 69 66 d.. ){.. Manif
1210: 65 73 74 20 6d 46 72 6f 6d 2c 20 6d 54 6f 3b 0d est mFrom, mTo;.
1220: 0a 20 20 20 69 6e 74 20 69 46 72 6f 6d 2c 20 69 . int iFrom, i
1230: 54 6f 3b 0d 0a 20 0d 0a 20 20 20 6d 61 6e 69 66 To;.. .. manif
1240: 65 73 74 5f 66 72 6f 6d 5f 6e 61 6d 65 28 7a 46 est_from_name(zF
1250: 72 6f 6d 2c 20 26 6d 46 72 6f 6d 29 3b 0d 0a 40 rom, &mFrom);..@
1260: 40 20 2d 33 35 34 2c 31 31 20 2b 33 39 35 2c 31 @ -354,11 +395,1
1270: 31 20 40 40 0d 0a 20 20 20 20 20 20 20 29 3b 0d 1 @@.. );.
1280: 0a 20 20 20 20 20 20 20 72 69 64 20 3d 20 75 75 . rid = uu
1290: 69 64 5f 74 6f 5f 72 69 64 28 6d 46 72 6f 6d 2e id_to_rid(mFrom.
12a0: 61 46 69 6c 65 5b 69 46 72 6f 6d 5d 2e 7a 55 75 aFile[iFrom].zUu
12b0: 69 64 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 id, 0);..
12c0: 63 6f 6e 74 65 6e 74 5f 67 65 74 28 72 69 64 2c content_get(rid,
12d0: 20 26 66 31 29 3b 0d 0a 20 20 20 20 20 20 20 72 &f1);.. r
12e0: 69 64 20 3d 20 75 75 69 64 5f 74 6f 5f 72 69 64 id = uuid_to_rid
12f0: 28 6d 54 6f 2e 61 46 69 6c 65 5b 69 54 6f 5d 2e (mTo.aFile[iTo].
1300: 7a 55 75 69 64 2c 20 30 29 3b 0d 0a 20 20 20 20 zUuid, 0);..
1310: 20 20 20 63 6f 6e 74 65 6e 74 5f 67 65 74 28 72 content_get(r
1320: 69 64 2c 20 26 66 32 29 3b 0d 0a 2d 20 20 20 20 id, &f2);..-
1330: 20 20 64 69 66 66 5f 66 69 6c 65 5f 6d 65 6d 28 diff_file_mem(
1340: 26 66 31 2c 20 26 66 32 2c 20 6d 46 72 6f 6d 2e &f1, &f2, mFrom.
1350: 61 46 69 6c 65 5b 69 46 72 6f 6d 5d 2e 7a 4e 61 aFile[iFrom].zNa
1360: 6d 65 2c 20 7a 44 69 66 66 43 6d 64 2c 20 69 67 me, zDiffCmd, ig
1370: 6e 6f 72 65 45 6f 6c 57 73 29 3b 0d 0a 2b 20 20 noreEolWs);..+
1380: 20 20 20 20 64 69 66 66 5f 66 69 6c 65 5f 6d 65 diff_file_me
1390: 6d 28 26 66 31 2c 20 26 66 32 2c 20 6d 46 72 6f m(&f1, &f2, mFro
13a0: 6d 2e 61 46 69 6c 65 5b 69 46 72 6f 6d 5d 2e 7a m.aFile[iFrom].z
13b0: 4e 61 6d 65 2c 20 7a 44 69 66 66 43 6d 64 2c 20 Name, zDiffCmd,
13c0: 30 29 3b 0d 0a 20 20 20 20 20 20 20 62 6c 6f 62 0);.. blob
13d0: 5f 72 65 73 65 74 28 26 66 31 29 3b 0d 0a 20 20 _reset(&f1);..
13e0: 20 20 20 20 20 62 6c 6f 62 5f 72 65 73 65 74 28 blob_reset(
13f0: 26 66 32 29 3b 0d 0a 20 20 20 20 20 20 20 69 46 &f2);.. iF
1400: 72 6f 6d 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 69 rom++;.. i
1410: 54 6f 2b 2b 3b 0d 0a 20 20 20 20 20 7d 0d 0a 40 To++;.. }..@
1420: 40 20 2d 33 36 39 2c 31 31 20 2b 34 31 30 2c 31 @ -369,11 +410,1
1430: 32 20 40 40 0d 0a 20 0d 0a 20 2f 2a 0d 0a 20 2a 2 @@.. .. /*.. *
1440: 2a 20 43 4f 4d 4d 41 4e 44 3a 20 64 69 66 66 0d * COMMAND: diff.
1450: 0a 20 2a 2a 20 43 4f 4d 4d 41 4e 44 3a 20 67 64 . ** COMMAND: gd
1460: 69 66 66 0d 0a 20 2a 2a 0d 0a 2d 2a 2a 20 55 73 iff.. **..-** Us
1470: 61 67 65 3a 20 25 66 6f 73 73 69 6c 20 64 69 66 age: %fossil dif
1480: 66 7c 67 64 69 66 66 20 3f 6f 70 74 69 6f 6e 73 f|gdiff ?options
1490: 3f 20 3f 46 49 4c 45 3f 0d 0a 2b 2a 2a 20 55 73 ? ?FILE?..+** Us
14a0: 61 67 65 3a 20 25 66 6f 73 73 69 6c 20 64 69 66 age: %fossil dif
14b0: 66 7c 67 64 69 66 66 20 3f 6f 70 74 69 6f 6e 73 f|gdiff ?options
14c0: 3f 20 3f 46 49 4c 45 2e 2e 2e 3f 0d 0a 2b 2a 2a ? ?FILE...?..+**
14d0: 20 20 20 20 4f 72 3a 20 25 66 6f 73 73 69 6c 20 Or: %fossil
14e0: 64 69 66 66 7c 67 64 69 66 66 20 2d 2d 66 72 6f diff|gdiff --fro
14f0: 6d 7c 2d 72 20 56 45 52 53 49 4f 4e 20 2d 2d 74 m|-r VERSION --t
1500: 6f 20 56 45 52 53 49 4f 4e 20 2d 52 20 52 45 50 o VERSION -R REP
1510: 4f 53 49 54 4f 52 59 0d 0a 20 2a 2a 0d 0a 20 2a OSITORY.. **.. *
1520: 2a 20 53 68 6f 77 20 74 68 65 20 64 69 66 66 65 * Show the diffe
1530: 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 rence between th
1540: 65 20 63 75 72 72 65 6e 74 20 76 65 72 73 69 6f e current versio
1550: 6e 20 6f 66 20 46 49 4c 45 20 28 61 73 20 69 74 n of FILE (as it
1560: 0d 0a 20 2a 2a 20 65 78 69 73 74 73 20 6f 6e 20 .. ** exists on
1570: 64 69 73 6b 29 20 61 6e 64 20 74 68 61 74 20 73 disk) and that s
1580: 61 6d 65 20 66 69 6c 65 20 61 73 20 69 74 20 77 ame file as it w
1590: 61 73 20 63 68 65 63 6b 65 64 20 6f 75 74 2e 20 as checked out.
15a0: 20 4f 72 0d 0a 20 2a 2a 20 69 66 20 74 68 65 20 Or.. ** if the
15b0: 46 49 4c 45 20 61 72 67 75 6d 65 6e 74 20 69 73 FILE argument is
15c0: 20 6f 6d 69 74 74 65 64 2c 20 73 68 6f 77 20 74 omitted, show t
15d0: 68 65 20 75 6e 73 61 76 65 64 20 63 68 61 6e 67 he unsaved chang
15e0: 65 64 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20 2a ed currently.. *
15f0: 2a 20 69 6e 20 74 68 65 20 77 6f 72 6b 69 6e 67 * in the working
1600: 20 63 68 65 63 6b 2d 6f 75 74 2e 0d 0a 40 40 20 check-out...@@
1610: 2d 34 30 38 2c 32 35 20 2b 34 35 30 2c 32 35 20 -408,25 +450,25
1620: 40 40 0d 0a 20 20 20 20 20 64 62 5f 6d 75 73 74 @@.. db_must
1630: 5f 62 65 5f 77 69 74 68 69 6e 5f 74 72 65 65 28 _be_within_tree(
1640: 29 3b 0d 0a 20 20 20 20 20 76 65 72 69 66 79 5f );.. verify_
1650: 61 6c 6c 5f 6f 70 74 69 6f 6e 73 28 29 3b 0d 0a all_options();..
1660: 20 20 20 20 20 69 66 28 20 21 69 73 49 6e 74 65 if( !isInte
1670: 72 6e 44 69 66 66 20 29 7b 0d 0a 20 20 20 20 20 rnDiff ){..
1680: 20 20 7a 44 69 66 66 43 6d 64 20 3d 20 64 62 5f zDiffCmd = db_
1690: 67 65 74 28 69 73 47 44 69 66 66 20 3f 20 22 67 get(isGDiff ? "g
16a0: 64 69 66 66 2d 63 6f 6d 6d 61 6e 64 22 20 3a 20 diff-command" :
16b0: 22 64 69 66 66 2d 63 6f 6d 6d 61 6e 64 22 2c 20 "diff-command",
16c0: 30 29 3b 0d 0a 20 20 20 20 20 7d 0d 0a 2d 20 20 0);.. }..-
16d0: 20 20 69 66 28 20 67 2e 61 72 67 63 3d 3d 33 20 if( g.argc==3
16e0: 29 7b 0d 0a 2d 20 20 20 20 20 20 64 69 66 66 5f ){..- diff_
16f0: 6f 6e 65 5f 61 67 61 69 6e 73 74 5f 64 69 73 6b one_against_disk
1700: 28 7a 46 72 6f 6d 2c 20 7a 44 69 66 66 43 6d 64 (zFrom, zDiffCmd
1710: 2c 20 30 29 3b 0d 0a 2b 20 20 20 20 69 66 28 20 , 0);..+ if(
1720: 67 2e 61 72 67 63 3e 3d 33 20 29 7b 0d 0a 2b 20 g.argc>=3 ){..+
1730: 20 20 20 20 20 64 69 66 66 5f 73 6f 6d 65 5f 61 diff_some_a
1740: 67 61 69 6e 73 74 5f 64 69 73 6b 28 26 67 2e 61 gainst_disk(&g.a
1750: 72 67 76 5b 32 5d 2c 20 67 2e 61 72 67 63 2d 32 rgv[2], g.argc-2
1760: 2c 20 7a 46 72 6f 6d 2c 20 7a 44 69 66 66 43 6d , zFrom, zDiffCm
1770: 64 29 3b 0d 0a 20 20 20 20 20 7d 65 6c 73 65 7b d);.. }else{
1780: 0d 0a 2d 20 20 20 20 20 20 64 69 66 66 5f 61 6c ..- diff_al
1790: 6c 5f 61 67 61 69 6e 73 74 5f 64 69 73 6b 28 7a l_against_disk(z
17a0: 46 72 6f 6d 2c 20 7a 44 69 66 66 43 6d 64 2c 20 From, zDiffCmd,
17b0: 30 29 3b 0d 0a 2b 20 20 20 20 20 20 64 69 66 66 0);..+ diff
17c0: 5f 61 6c 6c 5f 61 67 61 69 6e 73 74 5f 64 69 73 _all_against_dis
17d0: 6b 28 7a 46 72 6f 6d 2c 20 7a 44 69 66 66 43 6d k(zFrom, zDiffCm
17e0: 64 29 3b 0d 0a 20 20 20 20 20 7d 0d 0a 20 20 20 d);.. }..
17f0: 7d 65 6c 73 65 20 69 66 28 20 7a 46 72 6f 6d 3d }else if( zFrom=
1800: 3d 30 20 29 7b 0d 0a 20 20 20 20 20 66 6f 73 73 =0 ){.. foss
1810: 69 6c 5f 66 61 74 61 6c 28 22 6d 75 73 74 20 75 il_fatal("must u
1820: 73 65 20 2d 2d 66 72 6f 6d 20 69 66 20 2d 2d 74 se --from if --t
1830: 6f 20 69 73 20 70 72 65 73 65 6e 74 22 29 3b 0d o is present");.
1840: 0a 20 20 20 7d 65 6c 73 65 7b 0d 0a 20 20 20 20 . }else{..
1850: 20 64 62 5f 66 69 6e 64 5f 61 6e 64 5f 6f 70 65 db_find_and_ope
1860: 6e 5f 72 65 70 6f 73 69 74 6f 72 79 28 31 29 3b n_repository(1);
1870: 0d 0a 20 20 20 20 20 76 65 72 69 66 79 5f 61 6c .. verify_al
1880: 6c 5f 6f 70 74 69 6f 6e 73 28 29 3b 0d 0a 20 20 l_options();..
1890: 20 20 20 69 66 28 20 21 69 73 49 6e 74 65 72 6e if( !isIntern
18a0: 44 69 66 66 20 29 7b 0d 0a 20 20 20 20 20 20 20 Diff ){..
18b0: 7a 44 69 66 66 43 6d 64 20 3d 20 64 62 5f 67 65 zDiffCmd = db_ge
18c0: 74 28 69 73 47 44 69 66 66 20 3f 20 22 67 64 69 t(isGDiff ? "gdi
18d0: 66 66 2d 63 6f 6d 6d 61 6e 64 22 20 3a 20 22 64 ff-command" : "d
18e0: 69 66 66 2d 63 6f 6d 6d 61 6e 64 22 2c 20 30 29 iff-command", 0)
18f0: 3b 0d 0a 20 20 20 20 20 7d 0d 0a 2d 20 20 20 20 ;.. }..-
1900: 69 66 28 20 67 2e 61 72 67 63 3d 3d 33 20 29 7b if( g.argc==3 ){
1910: 0d 0a 2d 20 20 20 20 20 20 64 69 66 66 5f 6f 6e ..- diff_on
1920: 65 5f 74 77 6f 5f 76 65 72 73 69 6f 6e 73 28 7a e_two_versions(z
1930: 46 72 6f 6d 2c 20 7a 54 6f 2c 20 7a 44 69 66 66 From, zTo, zDiff
1940: 43 6d 64 2c 20 30 29 3b 0d 0a 2b 20 20 20 20 69 Cmd, 0);..+ i
1950: 66 28 20 67 2e 61 72 67 63 3e 3d 33 20 29 7b 0d f( g.argc>=3 ){.
1960: 0a 2b 20 20 20 20 20 20 64 69 66 66 5f 73 6f 6d .+ diff_som
1970: 65 5f 74 77 6f 5f 76 65 72 73 69 6f 6e 73 28 26 e_two_versions(&
1980: 67 2e 61 72 67 76 5b 32 5d 2c 20 67 2e 61 72 67 g.argv[2], g.arg
1990: 63 2d 32 2c 20 7a 46 72 6f 6d 2c 20 7a 54 6f 2c c-2, zFrom, zTo,
19a0: 20 7a 44 69 66 66 43 6d 64 29 3b 0d 0a 20 20 20 zDiffCmd);..
19b0: 20 20 7d 65 6c 73 65 7b 0d 0a 2d 20 20 20 20 20 }else{..-
19c0: 20 64 69 66 66 5f 61 6c 6c 5f 74 77 6f 5f 76 65 diff_all_two_ve
19d0: 72 73 69 6f 6e 73 28 7a 46 72 6f 6d 2c 20 7a 54 rsions(zFrom, zT
19e0: 6f 2c 20 7a 44 69 66 66 43 6d 64 2c 20 30 29 3b o, zDiffCmd, 0);
19f0: 0d 0a 2b 20 20 20 20 20 20 64 69 66 66 5f 61 6c ..+ diff_al
1a00: 6c 5f 74 77 6f 5f 76 65 72 73 69 6f 6e 73 28 7a l_two_versions(z
1a10: 46 72 6f 6d 2c 20 7a 54 6f 2c 20 7a 44 69 66 66 From, zTo, zDiff
1a20: 43 6d 64 29 3b 0d 0a 20 20 20 20 20 7d 0d 0a 20 Cmd);.. }..
1a30: 20 20 7d 0d 0a 20 7d 0d 0a 0d 0a }.. }....