Artifact
ea997f95e764be7af9f12adde5cbd05532c3d7d4:
Attachment "fossil-uuid-override.patch" to
ticket [c2efdd64bf]
added by
rmax
2012-08-07 15:25:49.
0000: 49 6e 64 65 78 3a 20 73 72 63 2f 74 6b 74 2e 63 Index: src/tkt.c
0010: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 0a 2d 2d 2d 20 73 72 63 2f 74 6b 74 2e ===.--- src/tkt.
0060: 63 0a 2b 2b 2b 20 73 72 63 2f 74 6b 74 2e 63 0a c.+++ src/tkt.c.
0070: 40 40 20 2d 39 32 33 2c 31 30 20 2b 39 32 33 2c @@ -923,10 +923,
0080: 31 31 20 40 40 0a 20 2a 2f 0a 20 76 6f 69 64 20 11 @@. */. void
0090: 74 69 63 6b 65 74 5f 63 6d 64 28 76 6f 69 64 29 ticket_cmd(void)
00a0: 7b 0a 20 20 20 69 6e 74 20 6e 3b 0a 20 20 20 63 {. int n;. c
00b0: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 55 73 65 72 onst char *zUser
00c0: 3b 0a 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 ;. const char
00d0: 2a 7a 44 61 74 65 3b 0a 2b 20 20 63 6f 6e 73 74 *zDate;.+ const
00e0: 20 63 68 61 72 20 2a 7a 54 6b 74 55 75 69 64 3b char *zTktUuid;
00f0: 0a 20 0a 20 20 20 2f 2a 20 64 6f 20 73 6f 6d 65 . . /* do some
0100: 20 69 6e 74 73 2c 20 77 65 20 77 61 6e 74 20 74 ints, we want t
0110: 6f 20 62 65 20 69 6e 73 69 64 65 20 61 20 63 68 o be inside a ch
0120: 65 63 6b 6f 75 74 20 2a 2f 0a 20 20 20 64 62 5f eckout */. db_
0130: 66 69 6e 64 5f 61 6e 64 5f 6f 70 65 6e 5f 72 65 find_and_open_re
0140: 70 6f 73 69 74 6f 72 79 28 30 2c 20 30 29 3b 0a pository(0, 0);.
0150: 20 20 20 75 73 65 72 5f 73 65 6c 65 63 74 28 29 user_select()
0160: 3b 0a 20 0a 40 40 20 2d 39 33 33 2c 31 30 20 2b ;. .@@ -933,10 +
0170: 39 33 34 2c 31 34 20 40 40 0a 20 20 20 7a 55 73 934,14 @@. zUs
0180: 65 72 20 3d 20 66 69 6e 64 5f 6f 70 74 69 6f 6e er = find_option
0190: 28 22 75 73 65 72 2d 6f 76 65 72 72 69 64 65 22 ("user-override"
01a0: 2c 30 2c 31 29 3b 0a 20 20 20 69 66 28 20 7a 55 ,0,1);. if( zU
01b0: 73 65 72 3d 3d 30 20 29 20 7a 55 73 65 72 20 3d ser==0 ) zUser =
01c0: 20 67 2e 7a 4c 6f 67 69 6e 3b 0a 20 20 20 7a 44 g.zLogin;. zD
01d0: 61 74 65 20 3d 20 66 69 6e 64 5f 6f 70 74 69 6f ate = find_optio
01e0: 6e 28 22 64 61 74 65 2d 6f 76 65 72 72 69 64 65 n("date-override
01f0: 22 2c 30 2c 31 29 3b 0a 20 20 20 69 66 28 20 7a ",0,1);. if( z
0200: 44 61 74 65 3d 3d 30 20 29 20 7a 44 61 74 65 20 Date==0 ) zDate
0210: 3d 20 22 6e 6f 77 22 3b 0a 20 20 20 7a 44 61 74 = "now";. zDat
0220: 65 20 3d 20 64 61 74 65 5f 69 6e 5f 73 74 61 6e e = date_in_stan
0230: 64 61 72 64 5f 66 6f 72 6d 61 74 28 7a 44 61 74 dard_format(zDat
0240: 65 29 3b 0a 2b 20 20 7a 54 6b 74 55 75 69 64 20 e);.+ zTktUuid
0250: 3d 20 66 69 6e 64 5f 6f 70 74 69 6f 6e 28 22 75 = find_option("u
0260: 75 69 64 2d 6f 76 65 72 72 69 64 65 22 2c 30 2c uid-override",0,
0270: 31 29 3b 0a 2b 20 20 69 66 20 28 20 7a 54 6b 74 1);.+ if ( zTkt
0280: 55 75 69 64 20 26 26 20 73 74 72 6c 65 6e 28 7a Uuid && strlen(z
0290: 54 6b 74 55 75 69 64 29 20 21 3d 20 55 55 49 44 TktUuid) != UUID
02a0: 5f 53 49 5a 45 20 29 20 7b 0a 2b 20 20 20 20 20 _SIZE ) {.+
02b0: 20 66 6f 73 73 69 6c 5f 66 61 74 61 6c 28 22 55 fossil_fatal("U
02c0: 55 49 44 20 6d 75 73 74 20 68 61 76 65 20 65 78 UID must have ex
02d0: 61 63 6c 79 20 25 64 20 63 68 61 72 61 63 74 65 acly %d characte
02e0: 72 73 2e 5c 6e 22 2c 20 55 55 49 44 5f 53 49 5a rs.\n", UUID_SIZ
02f0: 45 29 3b 0a 2b 20 20 7d 0a 20 0a 20 20 20 2f 2a E);.+ }. . /*
0300: 0a 20 20 20 2a 2a 20 43 68 65 63 6b 20 74 68 61 . ** Check tha
0310: 74 20 74 68 65 20 75 73 65 72 20 65 78 69 73 74 t the user exist
0320: 73 2e 0a 20 20 20 2a 2f 0a 20 20 20 69 66 28 20 s.. */. if(
0330: 21 64 62 5f 65 78 69 73 74 73 28 22 53 45 4c 45 !db_exists("SELE
0340: 43 54 20 31 20 46 52 4f 4d 20 75 73 65 72 20 57 CT 1 FROM user W
0350: 48 45 52 45 20 6c 6f 67 69 6e 3d 25 51 22 2c 20 HERE login=%Q",
0360: 7a 55 73 65 72 29 20 29 7b 0a 40 40 20 2d 39 39 zUser) ){.@@ -99
0370: 37 2c 31 31 20 2b 31 30 30 32 2c 31 30 20 40 40 7,11 +1002,10 @@
0380: 0a 20 20 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 . }else{.
0390: 20 20 20 20 2f 2a 20 61 64 64 20 61 20 6e 65 77 /* add a new
03a0: 20 74 69 63 6b 65 74 20 6f 72 20 75 70 64 61 74 ticket or updat
03b0: 65 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 69 e an existing ti
03c0: 63 6b 65 74 20 2a 2f 0a 20 20 20 20 20 20 20 65 cket */. e
03d0: 6e 75 6d 20 7b 20 73 65 74 2c 61 64 64 2c 68 69 num { set,add,hi
03e0: 73 74 6f 72 79 2c 65 72 72 20 7d 20 65 43 6d 64 story,err } eCmd
03f0: 20 3d 20 65 72 72 3b 0a 20 20 20 20 20 20 20 69 = err;. i
0400: 6e 74 20 69 20 3d 20 30 3b 0a 20 20 20 20 20 20 nt i = 0;.
0410: 20 69 6e 74 20 72 69 64 3b 0a 2d 20 20 20 20 20 int rid;.-
0420: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 54 6b const char *zTk
0430: 74 55 75 69 64 20 3d 20 30 3b 0a 20 20 20 20 20 tUuid = 0;.
0440: 20 20 42 6c 6f 62 20 74 6b 74 63 68 6e 67 2c 20 Blob tktchng,
0450: 63 6b 73 75 6d 3b 0a 20 0a 20 20 20 20 20 20 20 cksum;. .
0460: 2f 2a 20 67 65 74 20 63 6f 6d 6d 61 6e 64 20 74 /* get command t
0470: 79 70 65 20 28 73 65 74 2f 61 64 64 29 20 61 6e ype (set/add) an
0480: 64 20 67 65 74 20 75 75 69 64 2c 20 69 66 20 6e d get uuid, if n
0490: 65 65 64 65 64 20 66 6f 72 20 73 65 74 20 2a 2f eeded for set */
04a0: 0a 20 20 20 20 20 20 20 69 66 28 20 73 74 72 6e . if( strn
04b0: 63 6d 70 28 67 2e 61 72 67 76 5b 32 5d 2c 22 73 cmp(g.argv[2],"s
04c0: 65 74 22 2c 6e 29 3d 3d 30 20 7c 7c 20 73 74 72 et",n)==0 || str
04d0: 6e 63 6d 70 28 67 2e 61 72 67 76 5b 32 5d 2c 22 ncmp(g.argv[2],"
04e0: 63 68 61 6e 67 65 22 2c 6e 29 3d 3d 30 20 7c 7c change",n)==0 ||
04f0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 6e 63 . strnc
0500: 6d 70 28 67 2e 61 72 67 76 5b 32 5d 2c 22 68 69 mp(g.argv[2],"hi
0510: 73 74 6f 72 79 22 2c 6e 29 3d 3d 30 20 29 7b 0a story",n)==0 ){.
0520: 40 40 20 2d 31 30 32 31 2c 31 31 20 2b 31 30 32 @@ -1021,11 +102
0530: 35 2c 31 31 20 40 40 0a 20 20 20 20 20 20 20 20 5,11 @@.
0540: 20 7d 0a 20 20 20 20 20 20 20 20 20 69 3d 34 3b }. i=4;
0550: 0a 20 20 20 20 20 20 20 7d 65 6c 73 65 20 69 66 . }else if
0560: 28 20 73 74 72 6e 63 6d 70 28 67 2e 61 72 67 76 ( strncmp(g.argv
0570: 5b 32 5d 2c 22 61 64 64 22 2c 6e 29 3d 3d 30 20 [2],"add",n)==0
0580: 29 7b 0a 20 20 20 20 20 20 20 20 20 65 43 6d 64 ){. eCmd
0590: 20 3d 20 61 64 64 3b 0a 20 20 20 20 20 20 20 20 = add;.
05a0: 20 69 20 3d 20 33 3b 0a 2d 20 20 20 20 20 20 20 i = 3;.-
05b0: 20 7a 54 6b 74 55 75 69 64 20 3d 20 64 62 5f 74 zTktUuid = db_t
05c0: 65 78 74 28 30 2c 20 22 53 45 4c 45 43 54 20 6c ext(0, "SELECT l
05d0: 6f 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62 ower(hex(randomb
05e0: 6c 6f 62 28 32 30 29 29 29 22 29 3b 0a 2b 20 20 lob(20)))");.+
05f0: 20 20 20 20 20 20 69 66 20 28 20 21 7a 54 6b 74 if ( !zTkt
0600: 55 75 69 64 20 29 20 7a 54 6b 74 55 75 69 64 20 Uuid ) zTktUuid
0610: 3d 20 64 62 5f 74 65 78 74 28 30 2c 20 22 53 45 = db_text(0, "SE
0620: 4c 45 43 54 20 6c 6f 77 65 72 28 68 65 78 28 72 LECT lower(hex(r
0630: 61 6e 64 6f 6d 62 6c 6f 62 28 32 30 29 29 29 22 andomblob(20)))"
0640: 29 3b 0a 20 20 20 20 20 20 20 7d 0a 20 20 20 20 );. }.
0650: 20 20 20 2f 2a 20 6e 6f 6e 65 20 6f 66 20 73 65 /* none of se
0660: 74 2f 61 64 64 2c 20 73 6f 20 73 68 6f 77 20 74 t/add, so show t
0670: 68 65 20 75 73 61 67 65 21 20 2a 2f 0a 20 20 20 he usage! */.
0680: 20 20 20 20 69 66 28 20 65 43 6d 64 3d 3d 65 72 if( eCmd==er
0690: 72 20 29 7b 0a 20 20 20 20 20 20 20 20 20 75 73 r ){. us
06a0: 61 67 65 28 22 61 64 64 7c 66 69 65 6c 64 6c 69 age("add|fieldli
06b0: 73 74 7c 73 65 74 7c 73 68 6f 77 7c 68 69 73 74 st|set|show|hist
06c0: 6f 72 79 22 29 3b 0a 20 20 20 20 20 20 20 7d 0a ory");. }.