Fossil SCM

initial mass-change merge of main repo with my fork.

stephan 2011-09-15 12:03 UTC json
Commit 5b44a419cdf6be06632176bedacf42591e0fbfae
+27
--- src/blob.c
+++ src/blob.c
@@ -1013,5 +1013,32 @@
10131013
return;
10141014
}
10151015
}
10161016
blob_append(pBlob, zIn, -1);
10171017
}
1018
+
1019
+/*
1020
+** A read(2)-like impl for the Blob class. Reads (copies) up to nLen
1021
+** bytes from pIn, starting at position pIn->iCursor, and copies them
1022
+** to pDest (which must be valid memory at least nLen bytes long).
1023
+**
1024
+** Returns the number of bytes read/copied, which may be less than
1025
+** nLen (if end-of-blob is encountered).
1026
+**
1027
+** Updates pIn's cursor.
1028
+**
1029
+** Returns 0 if pIn contains no data.
1030
+*/
1031
+unsigned int blob_read(Blob *pIn, void * pDest, unsigned int nLen ){
1032
+ if( !pIn->aData || (pIn->iCursor >= pIn->nUsed) ){
1033
+ return 0;
1034
+ } else if( (pIn->iCursor + nLen) > (unsigned int)pIn->nUsed ){
1035
+ nLen = (unsigned int) (pIn->nUsed - pIn->iCursor);
1036
+ }
1037
+ assert( pIn->nUsed > pIn->iCursor );
1038
+ assert( (pIn->iCursor+nLen) <= pIn->nUsed );
1039
+ if( nLen ){
1040
+ memcpy( pDest, pIn->aData, nLen );
1041
+ pIn->iCursor += nLen;
1042
+ }
1043
+ return nLen;
1044
+}
10181045
--- src/blob.c
+++ src/blob.c
@@ -1013,5 +1013,32 @@
1013 return;
1014 }
1015 }
1016 blob_append(pBlob, zIn, -1);
1017 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1018
--- src/blob.c
+++ src/blob.c
@@ -1013,5 +1013,32 @@
1013 return;
1014 }
1015 }
1016 blob_append(pBlob, zIn, -1);
1017 }
1018
1019 /*
1020 ** A read(2)-like impl for the Blob class. Reads (copies) up to nLen
1021 ** bytes from pIn, starting at position pIn->iCursor, and copies them
1022 ** to pDest (which must be valid memory at least nLen bytes long).
1023 **
1024 ** Returns the number of bytes read/copied, which may be less than
1025 ** nLen (if end-of-blob is encountered).
1026 **
1027 ** Updates pIn's cursor.
1028 **
1029 ** Returns 0 if pIn contains no data.
1030 */
1031 unsigned int blob_read(Blob *pIn, void * pDest, unsigned int nLen ){
1032 if( !pIn->aData || (pIn->iCursor >= pIn->nUsed) ){
1033 return 0;
1034 } else if( (pIn->iCursor + nLen) > (unsigned int)pIn->nUsed ){
1035 nLen = (unsigned int) (pIn->nUsed - pIn->iCursor);
1036 }
1037 assert( pIn->nUsed > pIn->iCursor );
1038 assert( (pIn->iCursor+nLen) <= pIn->nUsed );
1039 if( nLen ){
1040 memcpy( pDest, pIn->aData, nLen );
1041 pIn->iCursor += nLen;
1042 }
1043 return nLen;
1044 }
1045
+3 -1
--- src/captcha.c
+++ src/captcha.c
@@ -412,12 +412,14 @@
412412
return x;
413413
}
414414
415415
/*
416416
** Translate a captcha seed value into the captcha password string.
417
+** The returned string is static and overwritten on each call to
418
+** this function.
417419
*/
418
-char *captcha_decode(unsigned int seed){
420
+char const *captcha_decode(unsigned int seed){
419421
const char *zSecret;
420422
const char *z;
421423
Blob b;
422424
static char zRes[20];
423425
424426
--- src/captcha.c
+++ src/captcha.c
@@ -412,12 +412,14 @@
412 return x;
413 }
414
415 /*
416 ** Translate a captcha seed value into the captcha password string.
 
 
417 */
418 char *captcha_decode(unsigned int seed){
419 const char *zSecret;
420 const char *z;
421 Blob b;
422 static char zRes[20];
423
424
--- src/captcha.c
+++ src/captcha.c
@@ -412,12 +412,14 @@
412 return x;
413 }
414
415 /*
416 ** Translate a captcha seed value into the captcha password string.
417 ** The returned string is static and overwritten on each call to
418 ** this function.
419 */
420 char const *captcha_decode(unsigned int seed){
421 const char *zSecret;
422 const char *z;
423 Blob b;
424 static char zRes[20];
425
426
+4 -1
--- src/cgi.c
+++ src/cgi.c
@@ -702,11 +702,11 @@
702702
z = (char*)P("REMOTE_ADDR");
703703
if( z ) g.zIpAddr = mprintf("%s", z);
704704
705705
len = atoi(PD("CONTENT_LENGTH", "0"));
706706
g.zContentType = zType = P("CONTENT_TYPE");
707
- if( len>0 && zType ){
707
+ if( !g.json.isJsonMode && (len>0 && zType) ){/* in JSON mode this is delegated to the cson_cgi API.*/
708708
blob_zero(&g.cgiIn);
709709
if( fossil_strcmp(zType,"application/x-www-form-urlencoded")==0
710710
|| strncmp(zType,"multipart/form-data",19)==0 ){
711711
z = fossil_malloc( len+1 );
712712
len = fread(z, 1, len, g.httpIn);
@@ -722,10 +722,13 @@
722722
}else if( fossil_strcmp(zType, "application/x-fossil-debug")==0 ){
723723
blob_read_from_channel(&g.cgiIn, g.httpIn, len);
724724
}else if( fossil_strcmp(zType, "application/x-fossil-uncompressed")==0 ){
725725
blob_read_from_channel(&g.cgiIn, g.httpIn, len);
726726
}
727
+ /* FIXME: treat application/json and text/plain as unencoded
728
+ JSON data.
729
+ */
727730
}
728731
729732
z = (char*)P("HTTP_COOKIE");
730733
if( z ){
731734
z = mprintf("%s",z);
732735
733736
ADDED src/cson_amalgamation.c
734737
ADDED src/cson_amalgamation.h
--- src/cgi.c
+++ src/cgi.c
@@ -702,11 +702,11 @@
702 z = (char*)P("REMOTE_ADDR");
703 if( z ) g.zIpAddr = mprintf("%s", z);
704
705 len = atoi(PD("CONTENT_LENGTH", "0"));
706 g.zContentType = zType = P("CONTENT_TYPE");
707 if( len>0 && zType ){
708 blob_zero(&g.cgiIn);
709 if( fossil_strcmp(zType,"application/x-www-form-urlencoded")==0
710 || strncmp(zType,"multipart/form-data",19)==0 ){
711 z = fossil_malloc( len+1 );
712 len = fread(z, 1, len, g.httpIn);
@@ -722,10 +722,13 @@
722 }else if( fossil_strcmp(zType, "application/x-fossil-debug")==0 ){
723 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
724 }else if( fossil_strcmp(zType, "application/x-fossil-uncompressed")==0 ){
725 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
726 }
 
 
 
727 }
728
729 z = (char*)P("HTTP_COOKIE");
730 if( z ){
731 z = mprintf("%s",z);
732
733 DDED src/cson_amalgamation.c
734 DDED src/cson_amalgamation.h
--- src/cgi.c
+++ src/cgi.c
@@ -702,11 +702,11 @@
702 z = (char*)P("REMOTE_ADDR");
703 if( z ) g.zIpAddr = mprintf("%s", z);
704
705 len = atoi(PD("CONTENT_LENGTH", "0"));
706 g.zContentType = zType = P("CONTENT_TYPE");
707 if( !g.json.isJsonMode && (len>0 && zType) ){/* in JSON mode this is delegated to the cson_cgi API.*/
708 blob_zero(&g.cgiIn);
709 if( fossil_strcmp(zType,"application/x-www-form-urlencoded")==0
710 || strncmp(zType,"multipart/form-data",19)==0 ){
711 z = fossil_malloc( len+1 );
712 len = fread(z, 1, len, g.httpIn);
@@ -722,10 +722,13 @@
722 }else if( fossil_strcmp(zType, "application/x-fossil-debug")==0 ){
723 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
724 }else if( fossil_strcmp(zType, "application/x-fossil-uncompressed")==0 ){
725 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
726 }
727 /* FIXME: treat application/json and text/plain as unencoded
728 JSON data.
729 */
730 }
731
732 z = (char*)P("HTTP_COOKIE");
733 if( z ){
734 z = mprintf("%s",z);
735
736 DDED src/cson_amalgamation.c
737 DDED src/cson_amalgamation.h
--- a/src/cson_amalgamation.c
+++ b/src/cson_amalgamation.c
@@ -0,0 +1,5963 @@
1
+aul
2
+o 2008-05-20 * C2
3
+ MODE_KEY = 3, break;
4
+/* LICENSE
5
+
6
+CopyCENSE
7
+
8
+Copy
9
+
10
+
11
+
12
+
13
+
14
+pack.c */
15
+#V)->value)m/* FIXME: if sizeof(void*) > then store
16
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
17
+ use
18
+ the defaul
19
+o 2008-05-20 * C2
20
+ MODE_KEY = 3, break;
21
+/* LICENSE
22
+
23
+CopyCENSE
24
+
25
+Copy
26
+
27
+
28
+
29
+
30
+
31
+pack.c */
32
+if( use
33
+ the clone_shared(ul
34
+o 2008-05-20 2008-05-20 * sharedshared use
35
+ ('0'<=*arg) && ('9'>=*arg)){ use
36
+ the def use
37
+ the defaul
38
+o 2008-05-20 * C2
39
+ MODE_KEY = 3, break;
40
+/* LICENSE
41
+
42
+CopyCENSE
43
+
44
+Copy
45
+
46
+ use
47
+ }
48
+
49
+ use
50
+ the defaul
51
+o 2008-05-20 * C2
52
+ MODE_KEY = 3, break;
53
+/* LICENSE
54
+
55
+CopyCENSE
56
+
57
+Copy
58
+
59
+
60
+
61
+
62
+
63
+pack.c */
64
+? cson_guess_arg_type(pos: use
65
+ the defaul
66
+0 != (rc= use
67
+ the defaul
68
+o 2008-05-20 * C2
69
+ MODE_KEY = 3, break;
70
+/* LICENSE
71
+
72
+CopyCENSE
73
+
74
+Copy
75
+
76
+
77
+
78
+
79
+
80
+pack.c */
81
+ defaul
82
+o 2008-05-20 * C2
83
+ MODE_KEY = 3, break;
84
+/* LICENSE
85
+
86
+CopyCENSE
87
+
88
+Copy
89
+
90
+
91
+
92
+
93
+
94
+pack.c */
95
+#V)->value)m/* FIXME: if sizeof(void*) > then store
96
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
97
+ use
98
+ the defaul
99
+o 2008-05-20 * C2
100
+ MODE_KEY = 3, break;
101
+/* LICENSE
102
+
103
+CopyCENSE
104
+
105
+Copy
106
+
107
+
108
+
109
+
110
+
111
+pack.c */
112
+if( use
113
+ the clone_shared(ul
114
+o 2008-05-20 2008-05-20 * sharedshared use
115
+ ('0'<=*arg) && ('9'>=*arg)){ use
116
+ the def use
117
+ the defaul
118
+o 2008-05-20 * C2
119
+ MODE_KEY = 3, break;
120
+/* LICENSE
121
+
122
+CopyCENSE
123
+
124
+Copy
125
+
126
+ use
127
+ }
128
+
129
+ use
130
+ the defaul
131
+o 2008-05-20 * C2
132
+ MODE_KEY = 3, break;
133
+/* LICENSessi
134
+/* LIaul
135
+o 2008-05-20 MODE_KEY = 3, use
136
+ emcpy()aul
137
+o 2008-05-20 e
138
+ MODE_KEY = 3, use
139
+ ;
140
+ p->c 0 == rc ) use
141
+ }ARRAY_END:( ch}/*
142
+ refcount the keys!: moved cson_value_new() and cson_value_set_xxx() out of
143
+ MODE_KEY = 3aul
144
+o 2008-05-20 * C2
145
+ MODE_KEY = 3, break;
146
+/* LICENSE
147
+
148
+CopyCENSE
149
+
150
+Copy
151
+
152
+
153
+
154
+
155
+
156
+pack.c */
157
+#V)->value)m/* FIXME: if sizeof(void*) > then store
158
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
159
+ use
160
+ the defaul
161
+o 2008-05-20 * C2
162
+ MODE_KEY = 3, break;
163
+/* LICENSE
164
+
165
+CopyCENSE
166
+
167
+Copy
168
+
169
+
170
+
171
+
172
+
173
+ a) They can be easily mis-used to cause memory leaks, even when used in
174
+ a manner which seems relatively intuitive.
175
+
176
+ b) Having them in the API prohibits us from eventually doing certain
177
+ allocation optimizations like not allocating Booleans,
178
+ Integer/Doubles with the value 0, or empty Strings. The main problem
179
+ is that cson_value_set_xxx() cannot be implemented properly if we
180
+ add that type of optimization.
181
+*/P@EpP,2x:value with the "undefined" value and transfers
182
+ ownership of it to the caller. Use The cson_value_set_xxx() family
183
+ of functions to assign a typed value to it. It must eventually be
184
+ W@Gt~,Z@GuY,1:
185
+J@aul,1:)4c@H0X,1X:);
186
+/**
187
+ Cleans any existing contents of val and sets its new value
188
+ to the special NULL valueR@NQi,A:
189
+
190
+*/
191
+#if 0H@R6l,E:value_set_nullM@DjD,1G:#endif
192
+/**
193
+ Cleans any existing contents of val and sets its new value
194
+ to vR@NQi,A:
195
+
196
+*/
197
+#if 0H@R6l,1x:value_set_bool( cson_value * val, char v );
198
+#endif
199
+/**
200
+ Cleans any existing contents of val and sets its new value
201
+ to vR@NQi,1:
202
+K@TVj,9:value_setL@Je0,1W:* val, cson_int_t v );
203
+/**
204
+ Cleans any existing contents of val and sets its new value
205
+ to vR@NQi,K@TVj,7:value_sM@KDS,6:* val,I@LDz,2b:;
206
+
207
+/**
208
+ Cleans any existing contents of val and sets its new value to
209
+ str. On success, ownership of str is passed on to val. On error
210
+ ownership is not changedR@NQi,h:
211
+
212
+ If str is NULL, (!*str), or (!len) thenN@C3e,i:
213
+ allocate any memory for a new string, andI@KEW,N:string()
214
+ will returnG@RN0,S: as opposed to a NULL stringL@abW,8:value_seL@T1T,6:* val,a@LIU,2:;
215
+U@HBG,P@H~G,R@HXc,H@H7G,K:,"cson_value_new");
216
+H@Jb0,M@HyW,Q0@H_h,O@C4G,7:integerL@C4i,n:
217
+{
218
+ if( self )
219
+ {
220
+#if !CSON_VOID_PTR_IS_BIG
221
+I@ICV,O:self->value,"cson_int_t"I@_KF,_:*self = cson_value_empty;
222
+ }
223
+I@R6k,9:value_setL@Je0,6:* val,Q@L9W,5:! valg@VJl,O:#if CSON_VOID_PTR_IS_BIGK@_g~,5:cleanH@Idk,3:valI@HZ~,W:v;
224
+#else
225
+ cson_int_t * ivH@IDW,G:iv = (cson_int_tQ@KbM,K:int_t), "cson_int_t"H@akl,1:iK@LZl,J@PD0,B@Ht~,5:cleanH@Idk,7:*iv = vA@Hyl,F:val->value = ivH@_KG,A:val->api =H@Cll,7:integerT@DxG,G@S_l,7:value_sM@KDS,6:* val,T@LDz,5:! valo@VJl,I:cson_double_t * rvH@IDW,B@Ht~,5:cleanH@Idk,A:val->api =H@Cll,S:double;
226
+ if( 0.0 != vP@URW,17:/*
227
+ sessmgr_reg cson_sessmgr_reg;
228
+/**
229
+ Holds name-to-factory mappings for cson_sessmgr implementations.
230
+*/
231
+struct cson_sessmgr_reg
232
+{
233
+ char name[CsonSessionNameLen];
234
+ cson_sessmgr_factory_f factory;
235
+};
236
+
237
+
238
+#if !CSON_ENABLE_CPDO
239
+int cson_sessmgr_cpdo( cson_sessmgr ** tgt,ptrc.UnsupportedError;
240
+}
241
+#endif
242
+#if !CSON_ENABLE_WHIO
243
+int cson_sessmgr_whio_ht( cson_sessmgr ** tgt,ptrc.UnsupportedError;
244
+}
245
+int cson_sessmgr_whio_epfs( cson_sessmgr ** tgt,ptrc.UnsupportedError;
246
+}
247
+#endif
248
+
249
+/**
250
+ Holds the list of registered cson_sessmgr implementations. Used by
251
+ cson_sessmgr_register(), cson_sessmgr_load(), and
252
+ cson_sessmgr_names().
253
+
254
+ Maintenance reminder: the API docs promise that at least 10 slots
255
+ are initially availableessmgr_reg CsonSessionReg[] = {
256
+{{'f','i','l','e',0},cson_sessmgr_file},
257
+#if CSON_ENABLE_CPDO
258
+{{'c','p','d','o',0},cson_sessmgr_cpdo},
259
+#endif
260
+#if CSON_ENABLE_WHIO
261
+{{'w','h','i','o','_','h','t',0},cson_sessmgr_whio_ht},
262
+{{'w','h','i','o','_','e','p','f','s',0},cson_sessmgr_whio_epfs},
263
+#endif
264
+#define REG {{0},NULL}
265
+REG,REG,REG,REG,REG,
266
+REG,aul
267
+o 2008-05-20 * C2
268
+ MODE_KEY = 3, break;
269
+/* LICENSE
270
+
271
+CopyCENSE
272
+
273
+Copy
274
+
275
+
276
+
277
+
278
+
279
+pack.c */
280
+#V)->value)m/* FIXME: if sizeof(void*) > then store
281
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
282
+ use
283
+ the defaul
284
+o 2008-05-20 * C2
285
+ MODE_KEY = 3, break;
286
+/* LICENSE
287
+
288
+CopyCENSE
289
+
290
+Copy
291
+
292
+
293
+
294
+
295
+
296
+pack.c */
297
+if( use
298
+ the clone_shared(ul
299
+o 2008-05-20 2008-05-20 * sharedshared use
300
+ ('0'<=*arg) && ('9'>=*arg)){ use
301
+ the def use
302
+ the defaul
303
+o 2008-05-20 * C2
304
+ MODE_KEY = 3, break;
305
+/* LICENSE
306
+
307
+CopyCENSE
308
+
309
+Copy
310
+
311
+ use
312
+ }
313
+
314
+ use
315
+ the defaul
316
+o 2008-05-20 * C2
317
+ MODE_KEY = 3, break;
318
+/* LICENSE
319
+
320
+CopyCENSE
321
+
322
+Copy
323
+
324
+
325
+
326
+
327
+
328
+pack.c */
329
+? cson_guess_arg_type(pos: use
330
+ the defaul
331
+0 != (rc= use
332
+ the defaul
333
+o 2008-05-20 * C2
334
+ MODE_KEY = 3, break;
335
+/* LICENSE
336
+
337
+CopyCENSE
338
+
339
+Copy
340
+
341
+
342
+
343
+
344
+
345
+pack.c */
346
+ defaul
347
+o 2008-05-20 * C2
348
+ MODE_KEY = 3, break;
349
+/* LICENSE
350
+
351
+CopyCENSE
352
+
353
+Copy
354
+
355
+
356
+
357
+
358
+
359
+pack.c */
360
+#V)->value)m/* FIXME: if sizeof(void*) > then store
361
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
362
+ use
363
+ the defaul
364
+o 2008-05-20 * C2
365
+ MODE_KEY = 3, break;
366
+/* LICENSE
367
+
368
+CopyCENSE
369
+
370
+Copy
371
+
372
+
373
+
374
+
375
+
376
+pack.c */
377
+if( use
378
+ the clone_shared(ul
379
+o 2008-05-20 2008-05-20 * sharedshared use
380
+ ('0'<=*arg) && ('9'>=*arg)){ use
381
+ the def use
382
+ the defaul
383
+o 2008-05-20 * C2
384
+ MODE_KEY = 3, break;
385
+/* LICENSE
386
+
387
+CopyCENSE
388
+
389
+Copy
390
+
391
+ use
392
+ }
393
+
394
+ use
395
+ the defaul
396
+o 2008-05-20 * C2
397
+ MODE_KEY = 3, break;
398
+/* LICENSE
399
+
400
+CopyCENSE
401
+
402
+Copy
403
+
404
+
405
+
406
+
407
+
408
+pack.c */
409
+? cson_guess_arg_type(pos: use
410
+ the defaul
411
+0 != (rc= use
412
+ the defaul
413
+o 2008-05-20 * C2
414
+ MODE_KEY = 3, break;
415
+/* LICENSE
416
+
417
+CopyCENSE
418
+
419
+Copy
420
+
421
+
422
+
423
+
424
+
425
+pack.c */
426
+0_guess_arg_type(pos: use
427
+ t use
428
+ MODE_KEY = 3, use
429
+ ;
430
+ p->c 0 == rc ) use
431
+ }ARRAY_END:( ch}/*
432
+ refcount the keys! We first need a setter which takes
433
+ 8@JnB,b:a cson_string or cson_value key type.
434
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
435
+# pop ) ownership of it to the
436
+ caller. It must eventually be destroyed, by the caller or its
437
+ owning or transfering
438
+
439
+void/**
440
+ This special-case impl is needed because the underlying
441
+ (generic) list operations do not know how to populate
442
+ new entries
443
+ */ use
444
+ the =*arg)){ use
445
+ the def use
446
+ the defaul
447
+o 2008-05-20 * C2
448
+ MODE_KEY = 3, break;
449
+/* LICENSE
450
+
451
+CopyCENSE
452
+
453
+Copy
454
+
455
+ use
456
+ }
457
+
458
+ use
459
+ the defaul
460
+o 2008-05-20 * C2
461
+ MODE_KEY = 3, break;
462
+/* LICENSE
463
+
464
+CopyCENSE
465
+
466
+Copy
467
+
468
+
469
+
470
+
471
+
472
+pack.c */
473
+? cson_guess_arg_type(pos: use
474
+ the defaul
475
+0 != (rc= use
476
+ the defaul
477
+o 2008-05-20 * C2
478
+ MODE_KEY = 3, break;
479
+/* LICENSE
480
+
481
+CopyCENSE
482
+
483
+Copy
484
+
485
+
486
+
487
+
488
+
489
+pack.c */
490
+0_guess_arg_type(pos: use
491
+ t use
492
+ MODE_KEY = 3, use
493
+ ;
494
+ p->c 0 == rc ) use
495
+ }Aary use
496
+ the the defaul
497
+o 2008-05-20 * C2
498
+ MODE_KEY = 3, break;
499
+/* LICENSE
500
+
501
+CopyCENSE
502
+
503
+Copy
504
+
505
+
506
+
507
+
508
+
509
+pack.c */
510
+#V)->value)m/* FIXME: if sizeof(void*) > then store
511
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
512
+ use
513
+ the defaul
514
+o 2008-05-20 * C2
515
+ MODE_KEY = 3, break;
516
+/* LICENSE
517
+
518
+CopyCENSE
519
+
520
+Copy
521
+
522
+
523
+
524
+
525
+
526
+pack.c */
527
+if( use
528
+ the clone_shared(ul
529
+o 2008-05-20 2008-05-20 * sharedshared use
530
+ ('0'<=*arg) && ('9'>=*arg)){ use
531
+ the def use
532
+ the defaul
533
+o 2008-05-20 * C2
534
+ MODE_KEY = 3, break;
535
+/* LICENSE
536
+
537
+CopyCENSE
538
+
539
+Copy
540
+
541
+ use
542
+ }
543
+
544
+ use
545
+ the defaul
546
+o 2008-05-20 * C2
547
+ MODE_KEY = 3, break;
548
+/* LICENSE
549
+
550
+CopyCENSE
551
+
552
+Copy
553
+
554
+
555
+
556
+
557
+
558
+pack.c */
559
+? cson_guess_arg_type(pos: use
560
+ the defaul
561
+0 != (rc= use
562
+ the defaul
563
+o 2008-05-20 * C2
564
+ MODE_KEY = 3, break;
565
+/* LICENSE
566
+
567
+CopyCENSE
568
+
569
+Copy
570
+
571
+
572
+
573
+
574
+
575
+pack.c */
576
+ defaul
577
+o 2008-05-20 * C2
578
+ MODE_KEY = 3, break;
579
+/* LICENSE
580
+
581
+CopyCENSE
582
+
583
+Copy
584
+
585
+
586
+
587
+
588
+
589
+pack.c */
590
+#V)->value)m/* FIXME: if sizeof(void*) > then store
591
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
592
+ use
593
+ the defaul
594
+o 2008-05-20 * C2
595
+ MODE_KEY = 3, break;
596
+/* LICENSE
597
+
598
+CopyCENSE
599
+
600
+Copy
601
+
602
+
603
+
604
+
605
+
606
+pack.c */
607
+if( use
608
+ the clone_shared(ul
609
+o 2008-05-20 2008-05-20 * sharedshared use
610
+ ('0'<=*arg) && ('9'>=*arg)){ use
611
+ the def use
612
+ the defaul
613
+o 2008-05-20 * C2
614
+ MODE_KEY = 3, break;
615
+/* LICENSE
616
+
617
+CopyCENSE
618
+
619
+Copy
620
+
621
+ use
622
+ }
623
+
624
+ use
625
+ the defaul
626
+o 2008-05-20 * C2
627
+ MODE_KEY = 3, break;
628
+/* LICENSE
629
+
630
+CopyCENSE
631
+
632
+Copy
633
+
634
+
635
+
636
+
637
+
638
+pack.c */
639
+? cson_guess_arg_type(pos: use
640
+ the defaul
641
+0 != (rc= use
642
+ the defaul
643
+o 2008-05-20 * C2
644
+ MODE_KEY = 3, break;
645
+/* LICENSE
646
+
647
+CopyCENSE
648
+
649
+Copy
650
+
651
+
652
+
653
+
654
+
655
+pack.c */
656
+0_guess_arg_type(pos: use
657
+ t use
658
+ MODE_KEY = 3, use
659
+ ;
660
+ p->c 0 == rc ) use
661
+ }ARRAY_END:( ch}/*
662
+ refcount the keys! We first need a setter which takes
663
+ 8@JnB,b:a cson_string or cson_value key type.
664
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
665
+# pop ) ownership of it to the
666
+ caller. It must eventually be destroyed, by the caller or its
667
+ owning or transfering
668
+
669
+void/**
670
+ This special-case impl is needed because the underlying
671
+ (generic) list operations do not know how to populate
672
+ new entries
673
+ */ use
674
+ the =*arg)){ use
675
+ the def use
676
+ the defaul
677
+o 2008-05-20 * C2
678
+ MODE_KEY = 3, break;
679
+/* LICENSE
680
+
681
+CopyCENSE
682
+
683
+Copy
684
+
685
+ use
686
+ }
687
+
688
+ use
689
+ the defaul
690
+o 2008-05-20 * C2
691
+ MODE_KEY = 3, break;
692
+/* LICENSE
693
+
694
+CopyCENSE
695
+
696
+Copy
697
+
698
+
699
+
700
+
701
+
702
+pack.c */
703
+? cson_guess_arg_type(pos: use
704
+ the defaul
705
+0 != (rc= use
706
+ the defaul
707
+o 2008-05-20 * C2
708
+ MODE_KEY = 3, break;
709
+/* LICENSE
710
+
711
+CopyCENSE
712
+
713
+Copy
714
+
715
+
716
+
717
+
718
+
719
+pack.c */
720
+0_guess_arg_type(pos: use
721
+ t use
722
+ MODE_KEY = 3, use
723
+ ;
724
+ p->c 0 == rc ) use
725
+ }Aarye
726
+ }
727
+
728
+ use
729
+ the defaul
730
+o 2008-05-20 * C2
731
+ MODE_KEY = 3, break;
732
+/* LICENSE
733
+
734
+CopyCENSE
735
+
736
+Copy
737
+
738
+
739
+
740
+
741
+
742
+pack.c */
743
+? cson_guess_arg_type(pos: use
744
+ the defaul
745
+0 != (rc= use
746
+ the defaul
747
+o 2008-05-20 * C2
748
+ MODE_KEY = 3, break;
749
+/* LICENSE
750
+
751
+CopyCENSE
752
+
753
+Copy
754
+
755
+
756
+
757
+
758
+
759
+pack.c */
760
+ defaul
761
+o 2008-05-20 * C2
762
+ MODE_KEY = 3, break;
763
+/* LICENSE
764
+
765
+CopyCENSE
766
+
767
+Copy
768
+
769
+
770
+
771
+
772
+
773
+pack.c */
774
+#V)->value)m/* FIXME: if sizeof(void*) > then store
775
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
776
+ use
777
+ the defaul
778
+o 2008-05-20 * C2
779
+ MODE_KEY = 3, break;
780
+/* LICENSE
781
+
782
+CopyCENSE
783
+
784
+Copy
785
+
786
+
787
+
788
+
789
+
790
+pack.c */
791
+if( use
792
+ the clone_shared(ul
793
+o 2008-05-20 2008-05-20 * sharedshared use
794
+ ('0'<=*arg) && ('9'>=*arg)){ use
795
+ the def use
796
+ the defaul
797
+o 2008-05-20 * C2
798
+ MODE_KEY = 3, break;
799
+/* LICENSE
800
+
801
+CopyCENSE
802
+
803
+Copy
804
+
805
+ use
806
+ }
807
+
808
+ use
809
+ the defaul
810
+o 2008-05-20 * C2
811
+ MODE_KEY = 3, break;
812
+/* LICENSE
813
+
814
+CopyCENSE
815
+
816
+Copy
817
+
818
+
819
+
820
+
821
+
822
+pack.c */
823
+? cson_guess_arg_type(pos: use
824
+ the defaul
825
+0 != (rc= use
826
+ the defaul
827
+o 2008-05-20 * C2
828
+ MODE_KEY = 3, break;
829
+/* LICENSE
830
+
831
+CopyCENSE
832
+
833
+Copy
834
+
835
+
836
+
837
+
838
+
839
+pack.c */
840
+0_guess_arg_type(pos: use
841
+ t use
842
+ MODE_KEY = 3, use
843
+ ;
844
+ p->c 0 == rc ) use
845
+ }ARRAY_END:( ch}/*
846
+ refcount the keys! We first need a setter which takes
847
+ 8@JnB,b:a cson_string or cson_value key type.
848
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
849
+# pop ) ownership of it to the
850
+ caller. It must eventually be destroyed, by the caller or its
851
+ owning or transfering
852
+
853
+void/**
854
+ This special-case impl is needed because the underlying
855
+ (generic) list operations do not know how to populate
856
+ new entries
857
+ */ use
858
+ the =*arg)){ use
859
+ the def use
860
+ the defaul
861
+o 2008-05-20 * C2
862
+ MODE_KEY = 3, break;
863
+/* LICENSE
864
+
865
+CopyCENSE
866
+
867
+Copy
868
+
869
+ use
870
+ }
871
+
872
+ use
873
+ the defaul
874
+o 2008-05-20 * C2
875
+ MODE_KEY = 3, break;
876
+/* LICENSE
877
+
878
+CopyCENSE
879
+
880
+Copy
881
+
882
+
883
+
884
+
885
+
886
+pack.c */
887
+? cson_guess_arg_type(pos: use
888
+ the defaul
889
+0 != (rc= use
890
+ the defaul
891
+o 2008-05-20 * C2
892
+ MODE_KEY = 3, break;
893
+/* LICENSE
894
+
895
+CopyCENSE
896
+
897
+Copy
898
+
899
+
900
+
901
+
902
+
903
+pack.c */
904
+0_guess_arg_type(pos: use
905
+ t use
906
+ MODE_KEY = 3, use
907
+ ;
908
+ p->c 0 == rc ) use
909
+ }Aaryconst#iaul
910
+o 2008-05-20 ;
911
+/* LDE_KEY = 3, breaul
912
+o 2008-05-20 * C2
913
+ MODE_KEY = 3, break;
914
+/* LICENSE
915
+
916
+CopyCENSE
917
+
918
+Copy
919
+
920
+
921
+
922
+
923
+
924
+pack.c */
925
+#V)->value)m/* FIXME: if sizeof(void*) > then store
926
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
927
+ use
928
+ the defaul
929
+o 2008-05-20 * C2
930
+ MODE_KEY = 3, break;
931
+/* LICENSE
932
+
933
+CopyCENSE
934
+
935
+Copy
936
+
937
+
938
+
939
+
940
+
941
+pack.c */
942
+if( use
943
+ the clone_shared(ul
944
+o 2008-05-20 2008-05-20 * sharedshared use
945
+ ('0'<=*arg) && ('9'>=*arg)){ use
946
+ the def use
947
+ the defaul
948
+o 2008-05-20 * C2
949
+ MODE_KEY = 3, break;
950
+/* LICENSE
951
+
952
+CopyCENSE
953
+
954
+Copy
955
+
956
+ use
957
+ }
958
+
959
+ use
960
+ the defaul
961
+o 2008-05-20 * C2
962
+ MODE_KEY = 3, break;
963
+/* LICENSE
964
+
965
+CopyCENSE
966
+
967
+Copy
968
+
969
+
970
+
971
+
972
+
973
+pack.c */
974
+? cson_guess_arg_type(pos: use
975
+ the defaul
976
+0 != (rc= use
977
+ the defaul
978
+o 2008-05-20 * C2
979
+ MODE_KEY = 3, break;
980
+/* LICENSE
981
+
982
+CopyCENSE
983
+
984
+Copy
985
+
986
+
987
+
988
+
989
+
990
+pack.c */
991
+ defaul
992
+o 2008-05-20 * C2
993
+ MODE_KEY = 3, break;
994
+/* LICENSE
995
+
996
+CopyCENSE
997
+
998
+Copy
999
+
1000
+
1001
+
1002
+
1003
+
1004
+pack.c */
1005
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1006
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1007
+ use
1008
+ the defaul
1009
+o 2008-05-20 * C2
1010
+ MODE_KEY = 3, break;
1011
+/* LICENSE
1012
+
1013
+CopyCENSE
1014
+
1015
+Copy
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+pack.c */
1022
+if( use
1023
+ the clone_shared(ul
1024
+o 2008-05-20 2008-05-20 * sharedshared use
1025
+ ('0'<=*arg) && ('9'>=*arg)){ use
1026
+ the def use
1027
+ the defaul
1028
+o 2008-05-20 * C2
1029
+ MODE_KEY = 3, break;
1030
+/* LICENSE
1031
+
1032
+CopyCENSE
1033
+
1034
+Copy
1035
+
1036
+ use
1037
+ }
1038
+
1039
+ use
1040
+ the defaul
1041
+o 2008-05-20 * C2
1042
+ MODE_KEY = 3, break;
1043
+/* LICENSE
1044
+
1045
+CopyCENSE
1046
+
1047
+Copy
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+pack.c */
1054
+? cson_guess_arg_type(pos: use
1055
+ the defaul
1056
+0 != (rc= use
1057
+ the defaul
1058
+o 2008-05-20 * C2
1059
+ MODE_KEY = 3, break;
1060
+/* LICENSE
1061
+
1062
+CopyCENSE
1063
+
1064
+Copy
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+pack.c */
1071
+0_guess_arg_type(pos: use
1072
+ t use
1073
+ MODE_KEY = 3, use
1074
+ ;
1075
+ p->c 0 == rc ) use
1076
+ }ARRAY_END:( ch}/*
1077
+ refcount the keys! We first need a setter which takes
1078
+ 8@JnB,b:a cson_string or cson_value key type.
1079
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1080
+# pop ) ownership of it to the
1081
+ caller. It must eventually be destroyed, by the caller or its
1082
+ owning or transfering
1083
+
1084
+void/**
1085
+ This special-case impl is needed because the underlying
1086
+ (generic) list operations do not know how to populate
1087
+ new entries
1088
+ */ use
1089
+ the =*arg)){ use
1090
+ the def use
1091
+ the defaul
1092
+o 2008-05-20 * C2
1093
+ MODE_KEY = 3, break;
1094
+/* LICENSE
1095
+
1096
+CopyCENSE
1097
+
1098
+Copy
1099
+
1100
+ use
1101
+ }
1102
+
1103
+ use
1104
+ the defaul
1105
+o 2008-05-20 * C2
1106
+ MODE_KEY = 3, break;
1107
+/* LICENSE
1108
+
1109
+CopyCENSE
1110
+
1111
+Copy
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+pack.c */
1118
+? cson_guess_arg_type(pos: use
1119
+ the defaul
1120
+0 != (rc= use
1121
+ the defaul
1122
+o 2008-05-20 * C2
1123
+ MODE_KEY = 3, break;
1124
+/* LICENSE
1125
+
1126
+CopyCENSE
1127
+
1128
+Copy
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+pack.c */
1135
+0_guess_arg_type(pos: use
1136
+ t use
1137
+ MODE_KEY = 3, use
1138
+ ;
1139
+ p->c 0 == rc ) use
1140
+ }Aary use
1141
+ the the defaul
1142
+o 2008-05-20 * C2
1143
+ MODE_KEY = 3, break;
1144
+/* LICENSE
1145
+
1146
+CopyCENSE
1147
+
1148
+Copy
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+pack.c */
1155
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1156
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1157
+ use
1158
+ the defaul
1159
+o 2008-05-20 * C2
1160
+ MODE_KEY = 3, break;
1161
+/* LICENSE
1162
+
1163
+CopyCENSE
1164
+
1165
+Copy
1166
+
1167
+
1168
+
1169
+
1170
+
1171
+pack.c */
1172
+if( use
1173
+ the clone_shared(ul
1174
+o 2008-05-20 2008-05-20 * sharedshared use
1175
+ ('0'<=*arg) && ('9'>=*arg)){ use
1176
+ the def use
1177
+ the defaul
1178
+o 2008-05-20 * C2
1179
+ MODE_KEY = 3, break;
1180
+/* LICENSE
1181
+
1182
+CopyCENSE
1183
+
1184
+Copy
1185
+
1186
+ use
1187
+ }
1188
+
1189
+ use
1190
+ the defaul
1191
+o 2008-05-20 * C2
1192
+ MODE_KEY = 3, break;
1193
+/* LICENSE
1194
+
1195
+CopyCENSE
1196
+
1197
+Copy
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+pack.c */
1204
+? cson_guess_arg_type(pos: use
1205
+ the defaul
1206
+0 != (rc= use
1207
+ the defaul
1208
+o 2008-05-20 * C2
1209
+ MODE_KEY = 3, break;
1210
+/* LICENSE
1211
+
1212
+CopyCENSE
1213
+
1214
+Copy
1215
+
1216
+
1217
+
1218
+
1219
+
1220
+pack.c */
1221
+ defaul
1222
+o 2008-05-20 * C2
1223
+ MODE_KEY = 3, break;
1224
+/* LICENSE
1225
+
1226
+CopyCENSE
1227
+
1228
+Copy
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+pack.c */
1235
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1236
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1237
+ use
1238
+ the defaul
1239
+o 2008-05-20 * C2
1240
+ MODE_KEY = 3, break;
1241
+/* LICENSE
1242
+
1243
+CopyCENSE
1244
+
1245
+Copy
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+pack.c */
1252
+if( use
1253
+ the clone_shared(ul
1254
+o 2008-05-20 2008-05-20 * sharedshared use
1255
+ ('0'<=*arg) && ('9'>=*arg)){ use
1256
+ the def use
1257
+ the defaul
1258
+o 2008-05-20 * C2
1259
+ MODE_KEY = 3, break;
1260
+/* LICENSE
1261
+
1262
+CopyCENSE
1263
+
1264
+Copy
1265
+
1266
+ use
1267
+ }
1268
+
1269
+ use
1270
+ the defaul
1271
+o 2008-05-20 * C2
1272
+ MODE_KEY = 3, break;
1273
+/* LICENSE
1274
+
1275
+CopyCENSE
1276
+
1277
+Copy
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+pack.c */
1284
+? cson_guess_arg_type(pos: use
1285
+ the defaul
1286
+0 != (rc= use
1287
+ the defaul
1288
+o 2008-05-20 * C2
1289
+ MODE_KEY = 3, break;
1290
+/* LICENSE
1291
+
1292
+CopyCENSE
1293
+
1294
+Copy
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+pack.c */
1301
+0_guess_arg_type(pos: use
1302
+ t use
1303
+ MODE_KEY = 3, use
1304
+ ;
1305
+ p->c 0 == rc ) use
1306
+ }ARRAY_END:( ch}/*
1307
+ refcount the keys! We first need a setter which takes
1308
+ 8@JnB,b:a cson_string or cson_value key type.
1309
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1310
+# pop ) ownership of it to the
1311
+ caller. It must eventually be destroyed, by the caller or its
1312
+ owning or transfering
1313
+
1314
+void/**
1315
+ This special-case impl is needed because the underlying
1316
+ (generic) list operations do not know how to populate
1317
+ new entries
1318
+ */ use
1319
+ the =*arg)){ use
1320
+ the def use
1321
+ the defaul
1322
+o 2008-05-20 * C2
1323
+ MODE_KEY = 3, break;
1324
+/* LICENSE
1325
+
1326
+CopyCENSE
1327
+
1328
+Copy
1329
+
1330
+ use
1331
+ }
1332
+
1333
+ use
1334
+ the defaul
1335
+o 2008-05-20 * C2
1336
+ MODE_KEY = 3, break;
1337
+/* LICENSE
1338
+
1339
+CopyCENSE
1340
+
1341
+Copy
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+pack.c */
1348
+? cson_guess_arg_type(pos: use
1349
+ the defaul
1350
+0 != (rc= use
1351
+ the defaul
1352
+o 2008-05-20 * C2
1353
+ MODE_KEY = 3, break;
1354
+/* LICENSE
1355
+
1356
+CopyCENSE
1357
+
1358
+Copy
1359
+
1360
+
1361
+
1362
+
1363
+
1364
+pack.c */
1365
+0_guess_arg_type(pos: use
1366
+ t use
1367
+ MODE_KEY = 3, use
1368
+ ;
1369
+ p->c 0 == rc ) use
1370
+ }Aarye
1371
+ }
1372
+
1373
+ use
1374
+ the defaul
1375
+o 2008-05-20 * C2
1376
+ MODE_KEY = 3, break;
1377
+/* LICENSE
1378
+
1379
+CopyCENSE
1380
+
1381
+Copy
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+pack.c */
1388
+? cson_guess_arg_type(pos: use
1389
+ the defaul
1390
+0 != (rc= use
1391
+ the defaul
1392
+o 2008-05-20 * C2
1393
+ MODE_KEY = 3, break;
1394
+/* LICENSE
1395
+
1396
+CopyCENSE
1397
+
1398
+Copy
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+pack.c */
1405
+ defaul
1406
+o 2008-05-20 * C2
1407
+ MODE_KEY = 3, break;
1408
+/* LICENSE
1409
+
1410
+CopyCENSE
1411
+
1412
+Copy
1413
+
1414
+
1415
+
1416
+
1417
+
1418
+pack.c */
1419
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1420
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1421
+ use
1422
+ the defaul
1423
+o 2008-05-20 * C2
1424
+ MODE_KEY = 3, break;
1425
+/* LICENSE
1426
+
1427
+CopyCENSE
1428
+
1429
+Copy
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+pack.c */
1436
+if( use
1437
+ the clone_shared(ul
1438
+o 2008-05-20 2008-05-20 * sharedshared use
1439
+ ('0'<=*arg) && ('9'>=*arg)){ use
1440
+ the def use
1441
+ the defaul
1442
+o 2008-05-20 * C2
1443
+ MODE_KEY = 3, break;
1444
+/* LICENSE
1445
+
1446
+CopyCENSE
1447
+
1448
+Copy
1449
+
1450
+ use
1451
+ }
1452
+
1453
+ use
1454
+ the defaul
1455
+o 2008-05-20 * C2
1456
+ MODE_KEY = 3, break;
1457
+/* LICENSE
1458
+
1459
+CopyCENSE
1460
+
1461
+Copy
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+pack.c */
1468
+? cson_guess_arg_type(pos: use
1469
+ the defaul
1470
+0 != (rc= use
1471
+ the defaul
1472
+o 2008-05-20 * C2
1473
+ MODE_KEY = 3, break;
1474
+/* LICENSE
1475
+
1476
+CopyCENSE
1477
+
1478
+Copy
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+pack.c */
1485
+0_guess_arg_type(pos: use
1486
+ t use
1487
+ MODE_KEY = 3, use
1488
+ ;
1489
+ p->c 0 == rc ) use
1490
+ }ARRAY_END:( ch}/*
1491
+ refcount the keys! We first need a setter which takes
1492
+ 8@JnB,b:a cson_string or cson_value key type.
1493
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1494
+# pop ) ownership of it to the
1495
+ caller. It must eventually be destroyed, by the caller or its
1496
+ owning or transfering
1497
+
1498
+void/**
1499
+ This special-case impl is needed because the underlying
1500
+ (generic) list operations do not know how to populate
1501
+ new entries
1502
+ */ use
1503
+ the =*arg)){ use
1504
+ the def use
1505
+ the defaul
1506
+o 2008-05-20 * C2
1507
+ MODE_KEY = 3, break;
1508
+/* LICENSE
1509
+
1510
+CopyCENSE
1511
+
1512
+Copy
1513
+
1514
+ use
1515
+ }
1516
+
1517
+ use
1518
+ the defaul
1519
+o 20aul
1520
+o 2008-05-20 * C2
1521
+ MODE_KEY = 3, break;
1522
+/* LICENSE
1523
+
1524
+CopyCENSE
1525
+
1526
+Copy
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+pack.c */
1533
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1534
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1535
+ use
1536
+ the defaul
1537
+o 2008-05-20 * C2
1538
+ MODE_KEY = 3, break;
1539
+/* LICENSE
1540
+
1541
+CopyCENSE
1542
+
1543
+Copy
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+pack.c */
1550
+if( use
1551
+ the clone_shared(ul
1552
+o 2008-05-20 2008-05-20 * sharedshared use
1553
+ ('0'<=*arg) && ('9'>=*arg)){ use
1554
+ the def use
1555
+ the defaul
1556
+o 2008-05-20 * C2
1557
+ MODE_KEY = 3, break;
1558
+/* LICENSE
1559
+
1560
+CopyCENSE
1561
+
1562
+Copy
1563
+
1564
+ use
1565
+ }
1566
+
1567
+ use
1568
+ the defaul
1569
+o 2008-05-20 * C2
1570
+ MODE_KEY = 3, break;
1571
+/* LICENSE
1572
+
1573
+CopyCENSE
1574
+
1575
+Copy
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+pack.c */
1582
+? cson_guess_arg_type(pos: use
1583
+ the defaul
1584
+0 != (rc= use
1585
+ the defaul
1586
+o 2008-05-20 * C2
1587
+ MODE_KEY = 3, break;
1588
+/* LICENSE
1589
+
1590
+CopyCENSE
1591
+
1592
+Copy
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+pack.c */
1599
+ defaul
1600
+o 2008-05-20 * C2
1601
+ MODE_KEY = 3, break;
1602
+/* LICENSE
1603
+
1604
+CopyCENSE
1605
+
1606
+Copy
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+pack.c */
1613
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1614
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1615
+ use
1616
+ the defaul
1617
+o 2008-05-20 * C2
1618
+ MODE_KEY = 3, break;
1619
+/* LICENSE
1620
+
1621
+CopyCENSE
1622
+
1623
+Copy
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+pack.c */
1630
+if( use
1631
+ the clone_shared(ul
1632
+o 2008-05-20 2008-05-20 * sharedshared use
1633
+ ('0'<=*arg) && ('9'>=*arg)){ use
1634
+ the def use
1635
+ the defaul
1636
+o 2008-05-20 * C2
1637
+ MODE_KEY = 3, break;
1638
+/* LICENSE
1639
+
1640
+CopyCENSE
1641
+
1642
+Copy
1643
+
1644
+ use
1645
+ }
1646
+
1647
+ use
1648
+ the defaul
1649
+o 2008-05-20 * C2
1650
+ MODE_KEY = 3, break;
1651
+/* LICENSE
1652
+
1653
+CopyCENSE
1654
+
1655
+Copy
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+pack.c */
1662
+? cson_guess_arg_type(pos: use
1663
+ the defaul
1664
+0 != (rc= use
1665
+ the defaul
1666
+o 2008-05-20 * C2
1667
+ MODE_KEY = 3, break;
1668
+/* LICENSE
1669
+
1670
+CopyCENSE
1671
+
1672
+Copy
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+pack.c */
1679
+0_guess_arg_type(pos: use
1680
+ t use
1681
+ MODE_KEY = 3, use
1682
+ ;
1683
+ p->c 0 == rc ) use
1684
+ }ARRAY_END:( ch}/*
1685
+ refcount the keys! We first need a setter which takes
1686
+ 8@JnB,b:a cson_string or cson_value key type.
1687
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1688
+# pop ) ownership of it to the
1689
+ caller. It must eventually be destroyed, by the caller or its
1690
+ owning or transfering
1691
+
1692
+void/**
1693
+ This special-case impl is needed because the underlying
1694
+ (generic) list operations do not know how to populate
1695
+ new entries
1696
+ */ use
1697
+ the =*arg)){ use
1698
+ the def use
1699
+ the defaul
1700
+o 2008-05-20 * C2
1701
+ MODE_KEY = 3, break;
1702
+/* LICENSE
1703
+
1704
+CopyCENSE
1705
+
1706
+Copy
1707
+
1708
+ use
1709
+ }
1710
+
1711
+ use
1712
+ the defaul
1713
+o 2008-05-20 * C2
1714
+ MODE_KEY = 3, break;
1715
+/* LICENSE
1716
+
1717
+CopyCENSE
1718
+
1719
+Copy
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+pack.c */
1726
+? cson_guess_arg_type(pos: use
1727
+ the defaul
1728
+0 != (rc= use
1729
+ the defaul
1730
+o 2008-05-20 * C2
1731
+ MODE_KEY = 3, break;
1732
+/* LICENSE
1733
+
1734
+CopyCENSE
1735
+
1736
+Copy
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+pack.c */
1743
+0_guess_arg_type(pos: use
1744
+ t use
1745
+ MODE_KEY = 3, use
1746
+ ;
1747
+ p->c 0 == rc ) use
1748
+ }Aary use
1749
+ the the defaul
1750
+o 2008-05-20 * C2
1751
+ MODE_KEY = 3, break;
1752
+/* LICENSE
1753
+
1754
+CopyCENSE
1755
+
1756
+Copy
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+pack.c */
1763
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1764
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1765
+ use
1766
+ the defaul
1767
+o 2008-05-20 * C2
1768
+ MODE_KEY = 3, break;
1769
+/* LICENSE
1770
+
1771
+CopyCENSE
1772
+
1773
+Copy
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+pack.c */
1780
+if( use
1781
+ the clone_shared(ul
1782
+o 2008-05-20 2008-05-20 * sharedshared use
1783
+ ('0'<=*arg) && ('9'>=*arg)){ use
1784
+ the def use
1785
+ the defaul
1786
+o 2008-05-20 * C2
1787
+ MODE_KEY = 3, break;
1788
+/* LICENSE
1789
+
1790
+CopyCENSE
1791
+
1792
+Copy
1793
+
1794
+ use
1795
+ }
1796
+
1797
+ use
1798
+ the defaul
1799
+o 2008-05-20 * C2
1800
+ MODE_KEY = 3, break;
1801
+/* LICENSE
1802
+
1803
+CopyCENSE
1804
+
1805
+Copy
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+pack.c */
1812
+? cson_guess_arg_type(pos: use
1813
+ the defaul
1814
+0 != (rc= use
1815
+ the defaul
1816
+o 2008-05-20 * C2
1817
+ MODE_KEY = 3, break;
1818
+/* LICENSE
1819
+
1820
+CopyCENSE
1821
+
1822
+Copy
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+pack.c */
1829
+ defaul
1830
+o 2008-05-20 * C2
1831
+ MODE_KEY = 3, break;
1832
+/* LICENSE
1833
+
1834
+CopyCENSE
1835
+
1836
+Copy
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+pack.c */
1843
+#V)->value)m/* FIXME: if sizeof(void*) > then store
1844
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1845
+ use
1846
+ the defaul
1847
+o 2008-05-20 * C2
1848
+ MODE_KEY = 3, break;
1849
+/* LICENSE
1850
+
1851
+CopyCENSE
1852
+
1853
+Copy
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+pack.c */
1860
+if( use
1861
+ the clone_shared(ul
1862
+o 2008-05-20 2008-05-20 * sharedshared use
1863
+ ('0'<=*arg) && ('9'>=*arg)){ use
1864
+ the def use
1865
+ the defaul
1866
+o 2008-05-20 * C2
1867
+ MODE_KEY = 3, break;
1868
+/* LICENSE
1869
+
1870
+CopyCENSE
1871
+
1872
+Copy
1873
+
1874
+ use
1875
+ }
1876
+
1877
+ use
1878
+ the defaul
1879
+o 2008-05-20 * C2
1880
+ MODE_KEY = 3, break;
1881
+/* LICENSE
1882
+
1883
+CopyCENSE
1884
+
1885
+Copy
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+pack.c */
1892
+? cson_guess_arg_type(pos: use
1893
+ the defaul
1894
+0 != (rc= use
1895
+ the defaul
1896
+o 2008-05-20 * C2
1897
+ MODE_KEY = 3, break;
1898
+/* LICENSE
1899
+
1900
+CopyCENSE
1901
+
1902
+Copy
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+pack.c */
1909
+0_guess_arg_type(pos: use
1910
+ t use
1911
+ MODE_KEY = 3, use
1912
+ ;
1913
+ p->c 0 == rc ) use
1914
+ }ARRAY_END:( ch}/*
1915
+ refcount the keys! We first need a setter which takes
1916
+ 8@JnB,b:a cson_string or cson_value key type.
1917
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1918
+# pop ) ownership of it to the
1919
+ caller. It must eventually be destroyed, by the caller or its
1920
+ owning or transfering
1921
+
1922
+void/**
1923
+ This special-case impl is needed because the underlying
1924
+ (generic) list operations do not know how to populate
1925
+ new entries
1926
+ */ use
1927
+ the =*arg)){ use
1928
+ the def use
1929
+ the defaul
1930
+o 2008-05-20 * C2
1931
+ MODE_KEY = 3, break;
1932
+/* LICENSE
1933
+
1934
+CopyCENSE
1935
+
1936
+Copy
1937
+
1938
+ use
1939
+ }
1940
+
1941
+ use
1942
+ the defaul
1943
+o 2008-05-20 * C2
1944
+ MODE_KEY = 3, break;
1945
+/* LICENSE
1946
+
1947
+CopyCENSE
1948
+
1949
+Copy
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+pack.c */
1956
+? cson_guess_arg_type(pos: use
1957
+ the defaul
1958
+0 != (rc= use
1959
+ the defaul
1960
+o 2008-05-20 * C2
1961
+ MODE_KEY = 3, break;
1962
+/* LICENSE
1963
+
1964
+CopyCENSE
1965
+
1966
+Copy
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+pack.c */
1973
+0_guess_arg_type(pos: use
1974
+ t use
1975
+ MODE_KEY = 3, use
1976
+ ;
1977
+ p->c 0 == rc ) use
1978
+ }Aarye
1979
+ }
1980
+
1981
+ use
1982
+ the defaul
1983
+o 2008-05-20 * C2
1984
+ MODE_KEY = 3, break;
1985
+/* LICENSE
1986
+
1987
+CopyCENSE
1988
+
1989
+Copy
1990
+
1991
+
1992
+
1993
+
1994
+
1995
+pack.c */
1996
+? cson_guess_arg_type(pos: use
1997
+ the defaul
1998
+0 != (rc= use
1999
+ the defaul
2000
+o 2008-05-20 * C2
2001
+ MODE_KEY = 3, break;
2002
+/* LICENSE
2003
+
2004
+CopyCENSE
2005
+
2006
+Copy
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+pack.c */
2013
+ defaul
2014
+o 2008-05-20 * C2
2015
+ MODE_KEY = 3, break;
2016
+/* LICENSE
2017
+
2018
+CopyCENSE
2019
+
2020
+Copy
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+pack.c */
2027
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2028
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2029
+ use
2030
+ the defaul
2031
+o 2008-05-20 * C2
2032
+ MODE_KEY = 3, break;
2033
+/* LICENSE
2034
+
2035
+CopyCENSE
2036
+
2037
+Copy
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+pack.c */
2044
+if( use
2045
+ the clone_shared(ul
2046
+o 2008-05-20 2008-05-20 * sharedshared use
2047
+ ('0'<=*arg) && ('9'>=*arg)){ use
2048
+ the def use
2049
+ the defaul
2050
+o 2008-05-20 * C2
2051
+ MODE_KEY = 3, break;
2052
+/* LICENSE
2053
+
2054
+CopyCENSE
2055
+
2056
+Copy
2057
+
2058
+ use
2059
+ }
2060
+
2061
+ use
2062
+ the defaul
2063
+o 2008-05-20 * C2
2064
+ MODE_KEY = 3, break;
2065
+/* LICENSE
2066
+
2067
+CopyCENSE
2068
+
2069
+Copy
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+pack.c */
2076
+? cson_guess_arg_type(pos: use
2077
+ the defaul
2078
+0 != (rc= use
2079
+ the defaul
2080
+o 2008-05-20 * C2
2081
+ MODE_KEY = 3, break;
2082
+/* LICENSE
2083
+
2084
+CopyCENSE
2085
+
2086
+Copy
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+pack.c */
2093
+0_guess_arg_type(pos: use
2094
+ t use
2095
+ MODE_KEY = 3, use
2096
+ ;
2097
+ p->c 0 == rc ) use
2098
+ }ARRAY_END:( ch}/*
2099
+ refcount the keys! We first need a setter which takes
2100
+ 8@JnB,b:a cson_string or cson_value key type.
2101
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2102
+# pop ) ownership of it to the
2103
+ caller. It must eventually be destroyed, by the caller or its
2104
+ owning or transfering
2105
+
2106
+void/**
2107
+ This special-case impl is needed because the underlying
2108
+ (generic) list operations do not know how to populate
2109
+ new entries
2110
+ */ use
2111
+ the =*arg)){ use
2112
+ the def use
2113
+ the defaul
2114
+o 2008-05-20 * C2
2115
+ MODE_KEY = 3, break;
2116
+/* LICENSE
2117
+
2118
+CopyCENSE
2119
+
2120
+Copy
2121
+
2122
+ use
2123
+ }
2124
+
2125
+ use
2126
+ the defaul
2127
+o 2008-05-20 * C2
2128
+ MODE_KEY = 3, break;
2129
+/* LICENSE
2130
+
2131
+CopyCENSE
2132
+
2133
+Copy
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+pack.c */
2140
+? cson_guess_arg_type(pos: use
2141
+ the defaul
2142
+0 != (rc= use
2143
+ the defaul
2144
+o 2008-05-20 * C2
2145
+ MODE_KEY = 3, break;
2146
+/* LICENSE
2147
+
2148
+CopyCENSE
2149
+
2150
+Copy
2151
+
2152
+
2153
+
2154
+
2155
+
2156
+pack.c */
2157
+0_guess_arg_type(pos: use
2158
+ t use
2159
+ MODE_KEY = 3, use
2160
+ ;
2161
+ p->c 0 == rc ) use
2162
+ }Aarye defaul
2163
+o 2008-05-20 * C2
2164
+ MODE_KEY = 3, break;
2165
+/* LICENSE
2166
+
2167
+CopyCENSE
2168
+
2169
+Copy
2170
+
2171
+ use
2172
+ }
2173
+
2174
+ use
2175
+ the defaul
2176
+o 2008-05-20 * C2
2177
+ MODE_KEY = 3, break;
2178
+/* LICENSE
2179
+
2180
+CopyCENSE
2181
+
2182
+Copy
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+pack.c */
2189
+? cson_guess_arg_type(pos: use
2190
+ the defaul
2191
+0 != (rc= use
2192
+ the defaul
2193
+o 2008-05-20 * C2
2194
+ MODE_KEY = 3, break;
2195
+/* LICENSE
2196
+
2197
+CopyCENSE
2198
+
2199
+Copy
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+pack.c */
2206
+ defaul
2207
+o 2008-05-20 * C2
2208
+ MODE_KEY = 3, break;
2209
+/* LICENSE
2210
+
2211
+CopyCENSE
2212
+
2213
+Copy
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+pack.c */
2220
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2221
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2222
+ use
2223
+ the defaul
2224
+o 2008-05-20 * C2
2225
+ MODE_KEY = 3, break;
2226
+/* LICENSE
2227
+
2228
+CopyCENSE
2229
+
2230
+Copy
2231
+
2232
+
2233
+
2234
+
2235
+
2236
+pack.c */
2237
+if( use
2238
+ the clone_shared(ul
2239
+o 2008-05-20 2008-05-20 * sharedshared use
2240
+ ('0'<=*arg) && ('9'>=*arg)){ use
2241
+ the def use
2242
+ the defaul
2243
+o 2008-05-20 * C2
2244
+ MODE_KEY = 3, break;
2245
+/* LICENSE
2246
+
2247
+CopyCENSE
2248
+
2249
+Copy
2250
+
2251
+ use
2252
+ }
2253
+
2254
+ use
2255
+ the defaul
2256
+o 2008-05-20 * C2
2257
+ MODE_KEY = 3, break;
2258
+/* LICENSE
2259
+
2260
+CopyCENSE
2261
+
2262
+Copy
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+pack.c */
2269
+? cson_guess_arg_type(pos: use
2270
+ the defaul
2271
+0 != (rc= use
2272
+ the defaul
2273
+o 2008-05-20 * C2
2274
+ MODE_KEY = 3, break;
2275
+/* LICENSE
2276
+
2277
+CopyCENSE
2278
+
2279
+Copy
2280
+
2281
+
2282
+
2283
+
2284
+
2285
+pack.c */
2286
+0_guess_arg_type(pos: use
2287
+ t use
2288
+ MODE_KEY = 3, use
2289
+ ;
2290
+ p->c 0 == rc ) use
2291
+ }ARRAY_END:( ch}/*
2292
+ refcount the keys! We first need a setter which takes
2293
+ 8@JnB,b:a cson_string or cson_value key type.
2294
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2295
+# pop ) ownership of it to the
2296
+ caller. It must eventually be destroyed, by the caller or its
2297
+ owning or transfering
2298
+
2299
+void/**
2300
+ This special-case impl is needed because the underlying
2301
+ (generic) list operations do not know how to populate
2302
+ new entries
2303
+ */ use
2304
+ the =*arg)){ use
2305
+ the def use
2306
+ the defaul
2307
+o 2008-05-20 * C2
2308
+ MODE_KEY = 3, break;
2309
+/* LICENSE
2310
+
2311
+CopyCENSE
2312
+
2313
+Copy
2314
+
2315
+ use
2316
+ }
2317
+
2318
+ use
2319
+ the defaul
2320
+o 2008-05-20 * C2
2321
+ MODE_KEY = 3, break;
2322
+/* LICENSE
2323
+
2324
+CopyCENSE
2325
+
2326
+Copy
2327
+
2328
+
2329
+
2330
+
2331
+
2332
+pack.c */
2333
+? cson_guess_arg_type(pos: use
2334
+ the defaul
2335
+0 != (rc= use
2336
+ the defaul
2337
+o 2008-05-20 * C2
2338
+ MODE_KEY = 3, break;
2339
+/* LICENSE
2340
+
2341
+CopyCENSE
2342
+
2343
+Copy
2344
+
2345
+
2346
+
2347
+
2348
+
2349
+pack.c */
2350
+0_guess_arg_type(pos: use
2351
+ t use
2352
+ MODE_KEY = 3, use
2353
+ ;
2354
+ p->c 0 == rc ) use
2355
+ }Aary use
2356
+ the the defaul
2357
+o 2008-05-20 * C2
2358
+ MODE_KEY = 3, break;
2359
+/* LICENSE
2360
+
2361
+CopyCENSE
2362
+
2363
+Copy
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+pack.c */
2370
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2371
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2372
+ use
2373
+ the defaul
2374
+o 2008-05-20 * C2
2375
+ MODE_KEY = 3, break;
2376
+/* LICENSE
2377
+
2378
+CopyCENSE
2379
+
2380
+Copy
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+pack.c */
2387
+if( use
2388
+ the clone_shared(ul
2389
+o 2008-05-20 2008-05-20 * sharedshared use
2390
+ ('0'<=*arg) && ('9'>=*arg)){ use
2391
+ the def use
2392
+ the defaul
2393
+o 2008-05-20 * C2
2394
+ MODE_KEY = 3, break;
2395
+/* LICENSE
2396
+
2397
+CopyCENSE
2398
+
2399
+Copy
2400
+
2401
+ use
2402
+ }
2403
+
2404
+ use
2405
+ the defaul
2406
+o 2008-05-20 * C2
2407
+ MODE_KEY = 3, break;
2408
+/* LICENSE
2409
+
2410
+CopyCENSE
2411
+
2412
+Copy
2413
+
2414
+
2415
+
2416
+
2417
+
2418
+pack.c */
2419
+? cson_guess_arg_type(pos: use
2420
+ the defaul
2421
+0 != (rc= use
2422
+ the defaul
2423
+o 2008-05-20 * C2
2424
+ MODE_KEY = 3, break;
2425
+/* LICENSE
2426
+
2427
+CopyCENSE
2428
+
2429
+Copy
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+pack.c */
2436
+ defaul
2437
+o 2008-05-20 * C2
2438
+ MODE_KEY = 3, break;
2439
+/* LICENSE
2440
+
2441
+CopyCENSE
2442
+
2443
+Copy
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+pack.c */
2450
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2451
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2452
+ use
2453
+ the defaul
2454
+o 2008-05-20 * C2
2455
+ MODE_KEY = 3, break;
2456
+/* LICENSE
2457
+
2458
+CopyCENSE
2459
+
2460
+Copy
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+pack.c */
2467
+if( use
2468
+ the clone_shared(ul
2469
+o 2008-05-20 2008-05-20 * sharedshared use
2470
+ ('0'<=*arg) && ('9'>=*arg)){ use
2471
+ the def use
2472
+ the defaul
2473
+o 2008-05-20 * C2
2474
+ MODE_KEY = 3, break;
2475
+/* LICENSE
2476
+
2477
+CopyCENSE
2478
+
2479
+Copy
2480
+
2481
+ use
2482
+ }
2483
+
2484
+ use
2485
+ the defaul
2486
+o 2008-05-20 * C2
2487
+ MODE_KEY = 3, break;
2488
+/* LICENSE
2489
+
2490
+CopyCENSE
2491
+
2492
+Copy
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+pack.c */
2499
+? cson_guess_arg_type(pos: use
2500
+ the defaul
2501
+0 != (rc= use
2502
+ the defaul
2503
+o 2008-05-20 * C2
2504
+ MODE_KEY = 3, break;
2505
+/* LICENSE
2506
+
2507
+CopyCENSE
2508
+
2509
+Copy
2510
+
2511
+
2512
+
2513
+
2514
+
2515
+pack.c */
2516
+0_guess_arg_type(pos: use
2517
+ t use
2518
+ MODE_KEY = 3, use
2519
+ ;
2520
+ p->c 0 == rc ) use
2521
+ }ARRAY_END:( ch}/*
2522
+ refcount the keys! We first need a setter which takes
2523
+ 8@JnB,b:a cson_string or cson_value key type.
2524
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2525
+# pop ) ownership of it to the
2526
+ caller. It must eventuallyntually be destroyed, by the caller or its
2527
+ owning or transfering
2528
+
2529
+void/**
2530
+ This special-case impl is needed because the underlying
2531
+ (generic) list operations do not know how to populate
2532
+ new entries
2533
+ */ use
2534
+ the =*arg)){ use
2535
+ the C2
2536
+ MODE_KEY = 3, break;
2537
+/* LICENSE
2538
+
2539
+CopyCENSE
2540
+
2541
+Copndif
2542
+28lZAF; defined(_the defaul
2543
+0 != (rc= use
2544
+ the defaul
2545
+o 2008-05-20 * C2
2546
+ MODE_KEY = 3, break;
2547
+/* LICENSE
2548
+
2549
+CopyCENSE
2550
+
2551
+Copy
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+pack.c */
2558
+0_guess_arg_type(pos: use
2559
+ t use
2560
+ MODE_KEY = 3, use
2561
+ ;
2562
+ p->c 0 == rc ) use
2563
+ }Aarye
2564
+ }
2565
+
2566
+ use
2567
+ the defaul
2568
+o 2008-05-20 * C2
2569
+ MODE_KEY = 3, break;
2570
+/* LICENSE
2571
+
2572
+CopyCENSE
2573
+
2574
+Copy
2575
+
2576
+
2577
+
2578
+
2579
+
2580
+pack.c */
2581
+? cson_guess_arg_type(pos: use
2582
+ the defaul
2583
+0 != (rc= use
2584
+ the defaul
2585
+o 2008-05-20 * C2
2586
+ MODE_KEY = 3, break;
2587
+/* LICENSE
2588
+
2589
+CopyCENSE
2590
+
2591
+Copy
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+pack.c */
2598
+ defaul
2599
+o 2008-05-20 * C2
2600
+ MODE_KEY = 3, break;
2601
+/* LICENSE
2602
+
2603
+CopyCENSE
2604
+
2605
+Copy
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+pack.c */
2612
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2613
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2614
+ use
2615
+ the defaul
2616
+o 2008-05-20 * C2
2617
+ MODE_KEY = 3, break;
2618
+/* LICENSE
2619
+
2620
+CopyCENSE
2621
+
2622
+Copy
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+pack.c */
2629
+if( use
2630
+ the clone_shared(ul
2631
+o 2008-05-20 2008-05-20 * sharedshared use
2632
+ ('0'<=*arg) && ('9'>=*arg)){ use
2633
+ the def use
2634
+ the defaul
2635
+o 2008-05-20 * C2
2636
+ MODE_KEY = 3, break;
2637
+/* LICENSE
2638
+
2639
+CopyCENSE
2640
+
2641
+Copy
2642
+
2643
+ use
2644
+ }
2645
+
2646
+ use
2647
+ the defaul
2648
+o 2008-05-20 * C2
2649
+ MODE_KEY = 3, break;
2650
+/* LICENSE
2651
+
2652
+CopyCENSE
2653
+
2654
+Copy
2655
+
2656
+
2657
+
2658
+
2659
+
2660
+pack.c */
2661
+? cson_guess_arg_type(pos: use
2662
+ the defaul
2663
+0 != (rc= use
2664
+ the defaul
2665
+o 2008-05-20 * C2
2666
+ MODE_KEY = 3, break;
2667
+/* LICENSE
2668
+
2669
+CopyCENSE
2670
+
2671
+Copy
2672
+
2673
+
2674
+
2675
+
2676
+
2677
+pack.c */
2678
+0_guess_arg_type(pos: us#iflying
2679
+ (generic)unlink( fname );
2680
+ cson_guess_arg_type(pos: use
2681
+ the defaul
2682
+0 != (rc= use
2683
+ the defaul
2684
+o 2008-05-20 * C2
2685
+ MODE_KEY = 3, break;
2686
+/* LICENSE
2687
+
2688
+CopyCENSE
2689
+
2690
+Copy
2691
+
2692
+
2693
+
2694
+
2695
+
2696
+pack.c */
2697
+ defaul
2698
+o 2008-05-20 * C2
2699
+ MODE_KEY = 3, break;
2700
+/* LICENSE
2701
+
2702
+CopyCENSE
2703
+
2704
+Copy
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+pack.c */
2711
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2712
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2713
+ use
2714
+ the defaul
2715
+o 2008-05-20 * C2
2716
+ MODE_KEY = 3, break;
2717
+/* LICENSE
2718
+
2719
+CopyCENSE
2720
+
2721
+Copy
2722
+
2723
+
2724
+
2725
+
2726
+
2727
+pack.c */
2728
+if( use
2729
+ the clone_shared(ul
2730
+o 2008-05-20 2008-05-20 * sharedshar#iflying
2731
+ (generic)
2732
+ rc = unlink( fname );
2733
+#else
2734
+# error "unlink not implemented for this platform."
2735
+
2736
+
2737
+
2738
+
2739
+aul
2740
+o 2008-05-20 * C2
2741
+ MODE_KEY = 3, break;
2742
+/* LICENSE
2743
+
2744
+CopyCENSE
2745
+
2746
+Copy
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+pack.c */
2753
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2754
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2755
+ use
2756
+ the defaul
2757
+o 2008-05-20 * C2
2758
+ MODE_KEY = 3, break;
2759
+/* LICENSE
2760
+
2761
+CopyCENSE
2762
+
2763
+Copy
2764
+
2765
+
2766
+
2767
+
2768
+
2769
+pack.c */
2770
+if( use
2771
+ the clone_shared(ul
2772
+o 2008-05-20 2008-05-20 * sharedshared use
2773
+ ('0'<=*arg) && ('9'>=*arg)){ use
2774
+ the def use
2775
+ the defaul
2776
+o 2008-05-20 * C2
2777
+ MODE_KEY = 3, break;
2778
+/* LICENSE
2779
+
2780
+CopyCENSE
2781
+
2782
+Copy
2783
+
2784
+ use
2785
+ }
2786
+
2787
+ use
2788
+ the defaul
2789
+o 2008-05-20 * C2
2790
+ MODE_KEY = 3, break;
2791
+/* LICENSE
2792
+
2793
+CopyCENSE
2794
+
2795
+Copy
2796
+
2797
+
2798
+
2799
+
2800
+
2801
+pack.c */
2802
+? cson_guess_arg_type(pos: use
2803
+ the defaul
2804
+0 != (rc= use
2805
+ the defaul
2806
+o 2008-05-20 * C2
2807
+ MODE_KEY = 3, break;
2808
+/* LICENSE
2809
+
2810
+CopyCENSE
2811
+
2812
+Copy
2813
+
2814
+
2815
+
2816
+
2817
+
2818
+pack.c */
2819
+ defaul
2820
+o 2008-05-20 * C2
2821
+ MODE_KEY = 3, break;
2822
+/* LICENSE
2823
+
2824
+CopyCENSE
2825
+
2826
+Copy
2827
+
2828
+
2829
+
2830
+
2831
+
2832
+pack.c */
2833
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2834
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2835
+ use
2836
+ the defaul
2837
+o 2008-05-20 * C2
2838
+ MODE_KEY = 3, break;
2839
+/* LICENSE
2840
+
2841
+CopyCENSE
2842
+
2843
+Copy
2844
+
2845
+
2846
+
2847
+
2848
+
2849
+pack.c */
2850
+if( use
2851
+ tC2
2852
+ MODE_KEY =s: use
2853
+ the defaul
2854
+0 != (rc= use
2855
+ the defaul
2856
+o 2008-05-20 * C2
2857
+ MODE_KEY = 3, break;
2858
+/* LICENSE
2859
+
2860
+CopyCENSE
2861
+
2862
+Copy
2863
+
2864
+
2865
+
2866
+
2867
+
2868
+pack.c */
2869
+0_guess_arg_type(pos: use
2870
+ t use
2871
+ MODE_KEY = 3, use
2872
+ ;
2873
+ p->c 0 == rc ) use
2874
+ }ARRAY_END:( ch}/*
2875
+ refcount the keys! We first need a setter which takes
2876
+ 8@JnB,b:a cson_string or cson_value key type.
2877
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2878
+# pop ) ownership of it to the
2879
+ caller. It must eventually be destroyed, by the caller or its
2880
+ owning or transfering
2881
+
2882
+void/**
2883
+ This special-case impl is needed because the underlying
2884
+ (generic) list operations do not know how to populate
2885
+ new entries
2886
+ */ use
2887
+ the =*arg)){ use
2888
+ the def use
2889
+ the defaul
2890
+o 2008-05-20 * C2
2891
+ MODE_KEY = 3, break;
2892
+/* LICENSE
2893
+
2894
+CopyCENSE
2895
+
2896
+Copy
2897
+
2898
+ use
2899
+ }
2900
+
2901
+ use
2902
+ the defaul
2903
+o 2008-05-20 freeintegerstringinteger
2904
+ MODE_KEY = 3aul
2905
+o 2008-05-2free
2906
+ MODE_KEY = 3aul
2907
+o 2008-05-2string
2908
+ MODE_KEY = 3aul
2909
+o 2008-05-20 * C2
2910
+ MODE_KEY = 3, break;
2911
+/* LICENSE
2912
+
2913
+CopyCENSE
2914
+
2915
+Copy
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+pack.c */
2922
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2923
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2924
+ use
2925
+If self is not null, free(self->value) is called. *self is then
2926
+ type. self is not freed.
2927
+free
2928
+{
2929
+ if(selfcson_free(self->value,"free()"
2930
+ Reminders to self:
2931
+
2932
+ - 20110126: moved cson_value_new() and cson_value_set_xxx() out of
2933
+ MODE_KEY = 3aul
2934
+o 2008-05-20 * C2
2935
+ MODE_KEY = 3, break;
2936
+/* LICENSE
2937
+
2938
+CopyCENSE
2939
+
2940
+Copy
2941
+
2942
+
2943
+
2944
+
2945
+
2946
+pack.c */
2947
+#V)->value)m/* FIXME: if sizeof(void*) > then store
2948
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2949
+ use
2950
+ the defaul
2951
+o 2008-05-20 * C2
2952
+ MODE_KEY = 3, break;
2953
+/* LICENSE
2954
+
2955
+CopyCENSE
2956
+
2957
+Copy
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+ a) They can be easily mis-used to cause memory leaks, even when used in
2964
+ a manner which seems relatively intuitive.
2965
+
2966
+ b) Having them in the API prohibits us from eventually doing certain
2967
+ allocation optimizations like not allocating Booleans,
2968
+ Integer/Doubles with the value 0, or empty Strings. The main problem
2969
+ is that cson_value_set_xxx() cannot be implemented properly if we
2970
+ add that type of optimization.
2971
+*/P@EpP,2x:value with the "undefined" value and transfers
2972
+ ownership of it to the caller. Use The cson_value_set_xxx() family
2973
+ of functions to assign a typed value to it. It must eventually be
2974
+ W@Gt~,Z@GuY,1:
2975
+J@aul,1:)4c@H0X,1X:);
2976
+/**
2977
+ Cleans any existing contents of val and sets its new value
2978
+ to the special NULL valueR@NQi,A:
2979
+
2980
+*/
2981
+#if 0H@R6l,E:value_set_nullM@DjD,1G:#endif
2982
+/**
2983
+ Cleans any existing contents of val and sets its new value
2984
+ to vR@NQi,A:
2985
+
2986
+*/
2987
+#if 0H@R6l,1x:value_set_bool( cson_value * val, char v );
2988
+#endif
2989
+/**
2990
+ Cleans any existing contents of val and sets its new value
2991
+ to vR@NQi,1:
2992
+K@TVj,9:value_setL@Je0,1W:* val, cson_int_t v );
2993
+/**
2994
+ Cleans any existing contents of val and sets its new value
2995
+ to vR@NQi,K@TVj,7:value_sM@KDS,6:* val,I@LDz,2b:;
2996
+
2997
+/**
2998
+ Cleans any existing contents of val and sets its new value to
2999
+ str. On success, ownership of str is passed on to val. On error
3000
+ ownership is not changedR@NQi,h:
3001
+
3002
+ If str is NULL, (!*str), or (!len) thenN@C3e,i:
3003
+ allocate any memory for a new string, andI@KEW,N:string()
3004
+ will returnG@RN0,S: as opposed to a NULL stringL@abW,8:value_seL@T1T,6:* val,a@LIU,2:;
3005
+U@HBG,P@H~G,R@HXc,H@H7G,K:,"cson_value_new");
3006
+H@Jb0,M@HyW,Q0@H_h,O@C4G,7:integerL@C4i,n:
3007
+{
3008
+ if( self )
3009
+ {
3010
+#if !CSON_VOID_PTR_IS_BIG
3011
+I@ICV,O:self->value,"cson_int_t"I@_KF,_:*self = cson_value_empty;
3012
+ }
3013
+I@R6k,9:value_setL@Je0,6:* val,Q@L9W,5:! valg@VJl,O:#if CSON_VOID_PTR_IS_BIGK@_g~,5:cleanH@Idk,3:valI@HZ~,W:v;
3014
+#else
3015
+ cson_int_t * ivH@IDW,G:iv = (cson_int_tQ@KbM,K:int_t), "cson_int_t"H@akl,1:iK@LZl,J@PD0,B@Ht~,5:cleanH@Idk,7:*iv = vA@Hyl,F:val->value = ivH@_KG,A:val->api =H@Cll,7:integerT@DxG,G@S_l,7:value_sM@KDS,6:* val,T@LDz,5:! valo@VJl,I:cson_double_t * rvH@IDW,B@Ht~,5:cleanH@Idk,A:val->api =H@Cll,S:double;
3016
+ if( 0.0 != vP@URW,17:/*
3017
+ aul
3018
+o 2008-05-20 * C2
3019
+ MODE_KEY = 3, break;
3020
+/* LICENSE
3021
+
3022
+CopyCENSE
3023
+
3024
+Copy
3025
+
3026
+
3027
+
3028
+
3029
+
3030
+pack.c */
3031
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3032
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3033
+ use
3034
+ the defaul
3035
+o 2008-05-20 * C2
3036
+ MODE_KEY = 3, break;
3037
+/* LICENSE
3038
+
3039
+CopyCENSE
3040
+
3041
+Copy
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+pack.c */
3048
+if( use
3049
+ the clone_shared(ul
3050
+o 2008-05-20 2008-05-20 * sharedshared use
3051
+ ('0'<=*arg) && ('9'>=*arg)){ use
3052
+ the def use
3053
+ the defaul
3054
+o 2008-05-20 * C2
3055
+ MODE_KEY = 3, break;
3056
+/* LICENSE
3057
+
3058
+CopyCENSE
3059
+
3060
+Copy
3061
+
3062
+ use
3063
+ }
3064
+
3065
+ use
3066
+ the defaul
3067
+o 2008-05-20 * C2
3068
+ MODE_KEY = 3, break;
3069
+/* LICENSE
3070
+
3071
+CopyCENSE
3072
+
3073
+Copy
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+pack.c */
3080
+? cson_guess_arg_type(pos: use
3081
+ the defaul
3082
+0 != (rc= use
3083
+ the defaul
3084
+o 2008-05-20 * C2
3085
+ MODE_KEY = 3, break;
3086
+/* LICENSE
3087
+
3088
+CopyCENSE
3089
+
3090
+Copy
3091
+
3092
+
3093
+
3094
+
3095
+
3096
+pack.c */
3097
+ defaul
3098
+o 2008-05-20 * C2
3099
+ MODE_KEY = 3, break;
3100
+/* LICENSE
3101
+
3102
+CopyCENSE
3103
+
3104
+Copy
3105
+
3106
+
3107
+
3108
+
3109
+
3110
+pack.c */
3111
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3112
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3113
+ use
3114
+ the defaul
3115
+o 2008-05-20 * C2
3116
+ MODE_KEY = 3, break;
3117
+/* LICENSE
3118
+
3119
+CopyCENSE
3120
+
3121
+Copy
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+pack.c */
3128
+if( use
3129
+ the clone_shared(ul
3130
+o 2008-05-20 2008-05-20 * sharedshared use
3131
+ ('0'<=*arg) && ('9'>=*arg)){ use
3132
+ the def use
3133
+ the defaul
3134
+o 2008-05-20 * C2
3135
+ MODE_KEY = 3, break;
3136
+/* LICENSE
3137
+
3138
+CopyCENSE
3139
+
3140
+Copy
3141
+
3142
+ use
3143
+ }
3144
+
3145
+ use
3146
+ the defaul
3147
+o 2008-05-20 * C2
3148
+ MODE_KEY = 3, break;
3149
+/* LICENSE
3150
+
3151
+CopyCENSE
3152
+
3153
+Copy
3154
+
3155
+
3156
+
3157
+
3158
+
3159
+pack.c */
3160
+? cson_guess_arg_type(pos: use
3161
+ the defaul
3162
+0 != (rc= use
3163
+ the defaul
3164
+o 2008-05-20 * C2
3165
+ MODE_KEY = 3, break;
3166
+/* LICENSE
3167
+
3168
+CopyCENSE
3169
+
3170
+Copy
3171
+
3172
+
3173
+
3174
+
3175
+
3176
+pack.c */
3177
+0_guess_arg_type(pos: use
3178
+ t use
3179
+ MODE_KEY = 3, use
3180
+ ;
3181
+ p->c 0 == rc ) use
3182
+ }ARRAY_END:( ch}/*
3183
+ refcount the keys! We first need a setter which takes
3184
+ 8@JnB,b:a cson_string or cson_value key type.
3185
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3186
+# pop ) ownership of it to the
3187
+ caller. It must eventually be destroyed, by the caller or its
3188
+ owning or transfering
3189
+
3190
+void/**
3191
+ This special-case impl is needed because the underlying
3192
+ (generic) list operations do not know how to populate
3193
+ new entries
3194
+ */ use
3195
+ the =*arg)){ use
3196
+ the def use
3197
+ the defaul
3198
+o 2008-05-20 * C2
3199
+ MODE_KEY = 3, break;
3200
+/* LICENSE
3201
+
3202
+CopyCENSE
3203
+
3204
+Copy
3205
+
3206
+ use
3207
+ }
3208
+
3209
+ use
3210
+ the defaul
3211
+o 2008-05-20 * C2
3212
+ MODE_KEY = 3, break;
3213
+/* LICENSE
3214
+
3215
+CopyCENSE
3216
+
3217
+Copy
3218
+
3219
+
3220
+
3221
+
3222
+
3223
+pack.c */
3224
+? cson_guess_arg_type(pos: use
3225
+ the defaul
3226
+0 != (rc= use
3227
+ the defaul
3228
+o 2008-05-20 * C2
3229
+ MODE_KEY = 3, break;
3230
+/* LICENSE
3231
+
3232
+CopyCENSE
3233
+
3234
+Copy
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+pack.c */
3241
+0_guess_arg_type(pos: use
3242
+ t use
3243
+ MODE_KEY = 3, use
3244
+ ;
3245
+ p->c 0 == rc ) use
3246
+ }Aary use
3247
+ the the defaul
3248
+o 2008-05-20 * C2
3249
+ MODE_KEY = 3, break;
3250
+/* LICENSE
3251
+
3252
+CopyCENSE
3253
+
3254
+Copy
3255
+
3256
+
3257
+
3258
+
3259
+
3260
+pack.c */
3261
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3262
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3263
+ use
3264
+ the defaul
3265
+o 2008-05-20 * C2
3266
+ MODE_KEY = 3, break;
3267
+/* LICENSE
3268
+
3269
+CopyCENSE
3270
+
3271
+Copy
3272
+
3273
+
3274
+
3275
+
3276
+
3277
+pack.c */
3278
+if( use
3279
+ the clone_shared(ul
3280
+o 2008-05-20 2008-05-20 * sharedshared use
3281
+ ('0'<=*arg) && ('9'>=*arg)){ use
3282
+ the def use
3283
+ the defaul
3284
+o 2008-05-20 * C2
3285
+ MODE_KEY = 3, break;
3286
+/* LICENSE
3287
+
3288
+CopyCENSE
3289
+
3290
+Copy
3291
+
3292
+ use
3293
+ }
3294
+
3295
+ use
3296
+ the defaul
3297
+o 2008-05-20 * C2
3298
+ MODE_KEY = 3, break;
3299
+/* LICENSE
3300
+
3301
+CopyCENSE
3302
+
3303
+Copy
3304
+
3305
+
3306
+
3307
+
3308
+
3309
+pack.c */
3310
+? cson_guess_arg_type(pos: use
3311
+ the defaul
3312
+0 != (rc= use
3313
+ the defaul
3314
+o 2008-05-20 * C2
3315
+ MODE_KEY = 3, break;
3316
+/* LICENSE
3317
+
3318
+CopyCENSE
3319
+
3320
+Copy
3321
+
3322
+
3323
+
3324
+
3325
+
3326
+pack.c */
3327
+ defaul
3328
+o 2008-05-20 * C2
3329
+ MODE_KEY = 3, break;
3330
+/* LICENSE
3331
+
3332
+CopyCENSE
3333
+
3334
+Copy
3335
+
3336
+
3337
+
3338
+
3339
+
3340
+pack.c */
3341
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3342
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3343
+ use
3344
+ the defaul
3345
+o 2008-05-20 * C2
3346
+ MODE_KEY = 3, break;
3347
+/* LICENSE
3348
+
3349
+CopyCENSE
3350
+
3351
+Copy
3352
+
3353
+
3354
+
3355
+
3356
+
3357
+pack.c */
3358
+if( use
3359
+ the clone_shared(ul
3360
+o 2008-05-20 2008-05-20 * sharedshared use
3361
+ ('0'<=*arg) && ('9'>=*arg)){ use
3362
+ the def use
3363
+ the defaul
3364
+o 2008-05-20 * C2
3365
+ MODE_KEY = 3, break;
3366
+/* LICENSE
3367
+
3368
+CopyCENSE
3369
+
3370
+Copy
3371
+
3372
+ use
3373
+ }
3374
+
3375
+ use
3376
+ the defaul
3377
+o 2008-05-20 * C2
3378
+ MODE_KEY = 3, break;
3379
+/* LICENSE
3380
+
3381
+CopyCENSE
3382
+
3383
+Copy
3384
+
3385
+
3386
+
3387
+
3388
+
3389
+pack.c */
3390
+? cson_guess_arg_type(pos: use
3391
+ the defaul
3392
+0 != (rc= use
3393
+ the defaul
3394
+o 2008-05-20 * C2
3395
+ MODE_KEY = 3, break;
3396
+/* LICENSE
3397
+
3398
+CopyCENSE
3399
+
3400
+Copy
3401
+
3402
+
3403
+
3404
+
3405
+
3406
+pack.c */
3407
+0_guess_arg_type(pos: use
3408
+ t use
3409
+ MODE_KEY = 3, use
3410
+ ;
3411
+ p->c 0 == rc ) use
3412
+ }ARRAY_END:( ch}/*
3413
+ refcount the keys! We first need a setter which takes
3414
+ 8@JnB,b:a cson_string or cson_value key type.
3415
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3416
+# pop ) ownership of it to the
3417
+ caller. It must eventually be destroyed, by the caller or its
3418
+ owning or transfering
3419
+
3420
+void/**
3421
+ This special-case impl is needed because the underlying
3422
+ (generic) list operations do not know how to populate
3423
+ new entries
3424
+ */ use
3425
+ the =*arg)){ use
3426
+ the def use
3427
+ the defaul
3428
+o 2008-05-20 * C2
3429
+ MODE_KEY = 3, break;
3430
+/* LICENSE
3431
+
3432
+CopyCENSE
3433
+
3434
+Copy
3435
+
3436
+ use
3437
+ }
3438
+
3439
+ use
3440
+ the defaul
3441
+o 2008-05-20 * C2
3442
+ MODE_KEY = 3, break;
3443
+/* LICENSE
3444
+
3445
+CopyCENSE
3446
+
3447
+Copy
3448
+
3449
+
3450
+
3451
+
3452
+
3453
+pack.c */
3454
+? cson_guess_arg_type(pos: use
3455
+ the defaul
3456
+0 != (rc= use
3457
+ the defaul
3458
+o 2008-05-20 * C2
3459
+ MODE_KEY = 3, break;
3460
+/* LICENSE
3461
+
3462
+CopyCENSE
3463
+
3464
+Copy
3465
+
3466
+
3467
+
3468
+
3469
+
3470
+pack.c */
3471
+0_guess_arg_type(pos: use
3472
+ t use
3473
+ MODE_KEY = 3, use
3474
+ ;
3475
+ p->c 0 == rc ) use
3476
+ }Aarye
3477
+ }
3478
+
3479
+ use
3480
+ the defaul
3481
+o 2008-05-20 * C2
3482
+ MODE_KEY = 3, break;
3483
+/* LICENSE
3484
+
3485
+CopyCENSE
3486
+
3487
+Copy
3488
+
3489
+
3490
+
3491
+
3492
+
3493
+pack.c */
3494
+? cson_guess_arg_type(pos: use
3495
+ the defaul
3496
+0 != (rc= use
3497
+ the defaul
3498
+o 2008-05-20 * C2
3499
+ MODE_KEY = 3, break;
3500
+/* LICENSE
3501
+
3502
+CopyCENSE
3503
+
3504
+Copy
3505
+
3506
+
3507
+
3508
+
3509
+
3510
+pack.c */
3511
+ defaul
3512
+o 2008-05-20 * C2
3513
+ MODE_KEY = 3, break;
3514
+/* LICENSE
3515
+
3516
+CopyCENSE
3517
+
3518
+Copy
3519
+
3520
+
3521
+
3522
+
3523
+
3524
+pack.c */
3525
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3526
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3527
+ use
3528
+ the defaul
3529
+o 2008-05-20 * C2
3530
+ MODE_KEY = 3, break;
3531
+/* LICENSE
3532
+
3533
+CopyCENSE
3534
+
3535
+Copy
3536
+
3537
+
3538
+
3539
+
3540
+
3541
+pack.c */
3542
+if( use
3543
+ the clone_shared(ul
3544
+o 2008-05-20 2008-05-20 * sharedshared use
3545
+ ('0'<=*arg) && ('9'>=*arg)){ use
3546
+ the def use
3547
+ the defaul
3548
+o 2008-05-20 * C2
3549
+ MODE_KEY = 3, break;
3550
+/* LICENSE
3551
+
3552
+CopyCENSE
3553
+
3554
+Copy
3555
+
3556
+ use
3557
+ }
3558
+
3559
+ use
3560
+ the defaul
3561
+o 2008-05-20 * C2
3562
+ MODE_KEY = 3, break;
3563
+/* LICENSE
3564
+
3565
+CopyCENSE
3566
+
3567
+Copy
3568
+
3569
+
3570
+
3571
+
3572
+
3573
+pack.c */
3574
+? cson_guess_arg_type(pos: use
3575
+ the defaul
3576
+0 != (rc= use
3577
+ the defaul
3578
+o 2008-05-20 * C2
3579
+ MODE_KEY = 3, break;
3580
+/* LICENSE
3581
+
3582
+CopyCENSE
3583
+
3584
+Copy
3585
+
3586
+
3587
+
3588
+
3589
+
3590
+pack.c */
3591
+0_guess_arg_type(pos: use
3592
+ t use
3593
+ MODE_KEY = 3, use
3594
+ ;
3595
+ p->c 0 == rc ) use
3596
+ }ARRAY_END:( ch}/*
3597
+ refcount the keys! We first need a setter which takes
3598
+ 8@JnB,b:a cson_string or cson_value key type.
3599
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3600
+# pop ) ownership of it to the
3601
+ caller. It must eventually be destroyed, by the caller or its
3602
+ owning or transfering
3603
+
3604
+void/**
3605
+ This special-case impl is needed because the underlying
3606
+ (generic) list operations do not know how to populate
3607
+ new entries
3608
+ */ use
3609
+ the =*arg)){ use
3610
+ the def use
3611
+ the defaul
3612
+o 2008-05-20 * C2
3613
+ MODE_KEY = 3, break;
3614
+/* LICENSE
3615
+
3616
+CopyCENSE
3617
+
3618
+Copy
3619
+
3620
+ use
3621
+ }
3622
+
3623
+ use
3624
+ the defaul
3625
+o 2008-05-20 * C2
3626
+ MODE_KEY = 3, break;
3627
+/* LICENSE
3628
+
3629
+CopyCENSE
3630
+
3631
+Copy
3632
+
3633
+
3634
+
3635
+
3636
+
3637
+pack.c */
3638
+? cson_guess_arg_type(pos: use
3639
+ the defaul
3640
+0 != (rc= use
3641
+ the defaul
3642
+o 2008-05-20 * C2
3643
+ MODE_KEY = 3, break;
3644
+/* LICENSE
3645
+
3646
+CopyCENSE
3647
+
3648
+Copy
3649
+
3650
+
3651
+
3652
+
3653
+
3654
+pack.c */
3655
+0_guess_arg_type(pos: use
3656
+ t use
3657
+ MODE_KEY = 3, use
3658
+ ;
3659
+ p->c 0 == rc ) use
3660
+ }Aaryconst#iaul
3661
+o 2008-05-20 ;
3662
+/* LDE_KEY = 3, breaul
3663
+o 2008-05-20 * C2
3664
+ MODE_KEY = 3, break;
3665
+/* LICENSE
3666
+
3667
+CopyCENSE
3668
+
3669
+Copy
3670
+
3671
+
3672
+
3673
+
3674
+
3675
+pack.c */
3676
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3677
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3678
+ use
3679
+ the defaul
3680
+o 2008-05-20 * C2
3681
+ MODE_KEY = 3, break;
3682
+/* LICENSE
3683
+
3684
+CopyCENSE
3685
+
3686
+Copy
3687
+
3688
+
3689
+
3690
+
3691
+
3692
+pack.c */
3693
+if( use
3694
+ the clone_shared(ul
3695
+o 2008-05-20 2008-05-20 * sharedshared use
3696
+ ('0'<=*arg) && ('9'>=*arg)){ use
3697
+ the def use
3698
+ the defaul
3699
+o 2008-05-20 * C2
3700
+ MODE_KEY = 3, break;
3701
+/* LICENSE
3702
+
3703
+CopyCENSE
3704
+
3705
+Copy
3706
+
3707
+ use
3708
+ }
3709
+
3710
+ use
3711
+ the defaul
3712
+o 2008-05-20 * C2
3713
+ MODE_KEY = 3, break;
3714
+/* LICENSE
3715
+
3716
+CopyCENSE
3717
+
3718
+Copy
3719
+
3720
+
3721
+
3722
+
3723
+
3724
+pack.c */
3725
+? cson_guess_arg_type(pos: use
3726
+ the defaul
3727
+0 != (rc= use
3728
+ the defaul
3729
+o 2008-05-20 * C2
3730
+ MODE_KEY = 3, break;
3731
+/* LICENSE
3732
+
3733
+CopyCENSE
3734
+
3735
+Copy
3736
+
3737
+
3738
+
3739
+
3740
+
3741
+pack.c */
3742
+ defaul
3743
+o 2008-05-20 * C2
3744
+ MODE_KEY = 3, break;
3745
+/* LICENSE
3746
+
3747
+CopyCENSE
3748
+
3749
+Copy
3750
+
3751
+
3752
+
3753
+
3754
+
3755
+pack.c */
3756
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3757
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3758
+ use
3759
+ the defaul
3760
+o 2008-05-20 * C2
3761
+ MODE_KEY = 3, break;
3762
+/* LICENSE
3763
+
3764
+CopyCENSE
3765
+
3766
+Copy
3767
+
3768
+
3769
+
3770
+
3771
+
3772
+pack.c */
3773
+if( use
3774
+ the clone_shared(ul
3775
+o 2008-05-20 2008-05-20 * sharedshared use
3776
+ ('0'<=*arg) && ('9'>=*arg)){ use
3777
+ the def use
3778
+ the defaul
3779
+o 2008-05-20 * C2
3780
+ MODE_KEY = 3, break;
3781
+/* LICENSE
3782
+
3783
+CopyCENSE
3784
+
3785
+Copy
3786
+
3787
+ use
3788
+ }
3789
+
3790
+ use
3791
+ the defaul
3792
+o 2008-05-20 * C2
3793
+ MODE_KEY = 3, break;
3794
+/* LICENSE
3795
+
3796
+CopyCENSE
3797
+
3798
+Copy
3799
+
3800
+
3801
+
3802
+
3803
+
3804
+pack.c */
3805
+? cson_guess_arg_type(pos: use
3806
+ the defaul
3807
+0 != (rc= use
3808
+ the defaul
3809
+o 2008-05-20 * C2
3810
+ MODE_KEY = 3, break;
3811
+/* LICENSE
3812
+
3813
+CopyCENSE
3814
+
3815
+Copy
3816
+
3817
+
3818
+
3819
+
3820
+
3821
+pack.c */
3822
+0_guess_arg_type(pos: use
3823
+ t use
3824
+ MODE_KEY = 3, use
3825
+ ;
3826
+ p->c 0 == rc ) use
3827
+ }ARRAY_END:( ch}/*
3828
+ refcount the keys! We first need a setter which takes
3829
+ 8@JnB,b:a cson_string or cson_value key type.
3830
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3831
+# pop ) ownership of it to the
3832
+ caller. It must eventually be destroyed, by the caller or its
3833
+ owning or transfering
3834
+
3835
+void/**
3836
+ This special-case impl is needed because the underlying
3837
+ (generic) list operations do not know how to populate
3838
+ new entries
3839
+ */ use
3840
+ the =*arg)){ use
3841
+ the def use
3842
+ the defaul
3843
+o 2008-05-20 * C2
3844
+ MODE_KEY = 3, break;
3845
+/* LICENSE
3846
+
3847
+CopyCENSE
3848
+
3849
+Copy
3850
+
3851
+ use
3852
+ }
3853
+
3854
+ use
3855
+ the defaul
3856
+o 2008-05-20 * C2
3857
+ MODE_KEY = 3, break;
3858
+/* LICENSE
3859
+
3860
+CopyCENSE
3861
+
3862
+Copy
3863
+
3864
+
3865
+
3866
+
3867
+
3868
+pack.c */
3869
+? cson_guess_arg_type(pos: use
3870
+ the defaul
3871
+0 != (rc= use
3872
+ the defaul
3873
+o 2008-05-20 * C2
3874
+ MODE_KEY = 3, break;
3875
+/* LICENSE
3876
+
3877
+CopyCENSE
3878
+
3879
+Copy
3880
+
3881
+
3882
+
3883
+
3884
+
3885
+pack.c */
3886
+0_guess_arg_type(pos: use
3887
+ t use
3888
+ MODE_KEY = 3, use
3889
+ ;
3890
+ p->c 0 == rc ) use
3891
+ }Aary use
3892
+ the the defaul
3893
+o 2008-05-20 * C2
3894
+ MODE_KEY = 3, break;
3895
+/* LICENSE
3896
+
3897
+CopyCENSE
3898
+
3899
+Copy
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+pack.c */
3906
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3907
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3908
+ use
3909
+ the defaul
3910
+o 2008-05-20 * C2
3911
+ MODE_KEY = 3, break;
3912
+/* LICENSE
3913
+
3914
+CopyCENSE
3915
+
3916
+Copy
3917
+
3918
+
3919
+
3920
+
3921
+
3922
+pack.c */
3923
+if( use
3924
+ the clone_shared(ul
3925
+o 2008-05-20 2008-05-20 * sharedshared use
3926
+ ('0'<=*arg) && ('9'>=*arg)){ use
3927
+ the def use
3928
+ the defaul
3929
+o 2008-05-20 * C2
3930
+ MODE_KEY = 3, break;
3931
+/* LICENSE
3932
+
3933
+CopyCENSE
3934
+
3935
+Copy
3936
+
3937
+ use
3938
+ }
3939
+
3940
+ use
3941
+ the defaul
3942
+o 2008-05-20 * C2
3943
+ MODE_KEY = 3, break;
3944
+/* LICENSE
3945
+
3946
+CopyCENSE
3947
+
3948
+Copy
3949
+
3950
+
3951
+
3952
+
3953
+
3954
+pack.c */
3955
+? cson_guess_arg_type(pos: use
3956
+ the defaul
3957
+0 != (rc= use
3958
+ the defaul
3959
+o 2008-05-20 * C2
3960
+ MODE_KEY = 3, break;
3961
+/* LICENSE
3962
+
3963
+CopyCENSE
3964
+
3965
+Copy
3966
+
3967
+
3968
+
3969
+
3970
+
3971
+pack.c */
3972
+ defaul
3973
+o 2008-05-20 * C2
3974
+ MODE_KEY = 3, break;
3975
+/* LICENSE
3976
+
3977
+CopyCENSE
3978
+
3979
+Copy
3980
+
3981
+
3982
+
3983
+
3984
+
3985
+pack.c */
3986
+#V)->value)m/* FIXME: if sizeof(void*) > then store
3987
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3988
+ use
3989
+ the defaul
3990
+o 2008-05-20 * C2
3991
+ MODE_KEY = 3, break;
3992
+/* LICENSE
3993
+
3994
+CopyCENSE
3995
+
3996
+Copy
3997
+
3998
+
3999
+
4000
+
4001
+
4002
+pack.c */
4003
+if( use
4004
+ the clone_shared(ul
4005
+o 2008-05-20 2008-05-20 * sharedshared use
4006
+ ('0'<=*arg) && ('9'>=*arg)){ use
4007
+ the def use
4008
+ the defaul
4009
+o 2008-05-20 * C2
4010
+ MODE_KEY = 3, break;
4011
+/* LICENSE
4012
+
4013
+CopyCENSE
4014
+
4015
+Copy
4016
+
4017
+ use
4018
+ }
4019
+
4020
+ use
4021
+ the defaul
4022
+o 2008-05-20 * C2
4023
+ MODE_KEY = 3, break;
4024
+/* LICENSE
4025
+
4026
+CopyCENSE
4027
+
4028
+Copy
4029
+
4030
+
4031
+
4032
+
4033
+
4034
+pack.c */
4035
+? cson_guess_arg_type(pos: use
4036
+ the defaul
4037
+0 != (rc= use
4038
+ the defaul
4039
+o 2008-05-20 * C2
4040
+ MODE_KEY = 3, break;
4041
+/* LICENSE
4042
+
4043
+CopyCENSE
4044
+
4045
+Copy
4046
+
4047
+
4048
+
4049
+
4050
+
4051
+pack.c */
4052
+0_guess_arg_type(pos: use
4053
+ t use
4054
+ MODE_KEY = 3, use
4055
+ ;
4056
+ p->c 0 == rc ) use
4057
+ }ARRAY_END:( ch}/*
4058
+ refcount the keys! We first need a setter which takes
4059
+ 8@JnB,b:a cson_string or cson_value key type.
4060
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4061
+# pop ) ownership of it to the
4062
+ caller. It must eventually be destroyed, by the caller or its
4063
+ owning or transfering
4064
+
4065
+void/**
4066
+ This special-case impl is needed because the underlying
4067
+ (generic) list operations do not know how to populate
4068
+ new entries
4069
+ */ use
4070
+ the =*arg)){ use
4071
+ the def use
4072
+ the defaul
4073
+o 2008-05-20 * C2
4074
+ MODE_KEY = 3, break;
4075
+/* LICENSE
4076
+
4077
+CopyCENSE
4078
+
4079
+Copy
4080
+
4081
+ use
4082
+ }
4083
+
4084
+ use
4085
+ the defaul
4086
+o 2008-05-20 * C2
4087
+ MODE_KEY = 3, break;
4088
+/* LICENSE
4089
+
4090
+CopyCENSE
4091
+
4092
+Copy
4093
+
4094
+
4095
+
4096
+
4097
+
4098
+pack.c */
4099
+? cson_guess_arg_type(pos: use
4100
+ the defaul
4101
+0 != (rc= use
4102
+ the defaul
4103
+o 2008-05-20 * C2
4104
+ MODE_KEY = 3, break;
4105
+/* LICENSE
4106
+
4107
+CopyCENSE
4108
+
4109
+Copy
4110
+
4111
+
4112
+
4113
+
4114
+
4115
+pack.c */
4116
+0_guess_arg_type(pos: use
4117
+ t use
4118
+ MODE_KEY = 3, use
4119
+ ;
4120
+ p->c 0 == rc ) use
4121
+ }Aarye
4122
+ }
4123
+
4124
+ use
4125
+ the defaul
4126
+o 2008-05-20 * C2
4127
+ MODE_KEY = 3, break;
4128
+/* LICENSE
4129
+
4130
+CopyCENSE
4131
+
4132
+Copy
4133
+
4134
+
4135
+
4136
+
4137
+
4138
+pack.c */
4139
+? cson_guess_arg_type(pos: use
4140
+ the defaul
4141
+0 != (rc= use
4142
+ the defaul
4143
+o 2008-05-20 * C2
4144
+ MODE_KEY = 3, break;
4145
+/* LICENSE
4146
+
4147
+CopyCENSE
4148
+
4149
+Copy
4150
+
4151
+
4152
+
4153
+
4154
+
4155
+pack.c */
4156
+ defaul
4157
+o 2008-05-20 * C2
4158
+ MODE_KEY = 3, break;
4159
+/* LICENSE
4160
+
4161
+CopyCENSE
4162
+
4163
+Copy
4164
+
4165
+
4166
+
4167
+
4168
+
4169
+pack.c */
4170
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4171
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4172
+ use
4173
+ the defaul
4174
+o 2008-05-20 * C2
4175
+ MODE_KEY = 3, break;
4176
+/* LICENSE
4177
+
4178
+CopyCENSE
4179
+
4180
+Copy
4181
+
4182
+
4183
+
4184
+
4185
+
4186
+pack.c */
4187
+if( use
4188
+ the clone_shared(ul
4189
+o 2008-05-20 2008-05-20 * sharedshared use
4190
+ ('0'<=*arg) && ('9'>=*arg)){ use
4191
+ the def use
4192
+ the defaul
4193
+o 2008-05-20 * C2
4194
+ MODE_KEY = 3, break;
4195
+/* LICENSE
4196
+
4197
+CopyCENSE
4198
+
4199
+Copy
4200
+
4201
+ use
4202
+ }
4203
+
4204
+ use
4205
+ the defaul
4206
+o 2008-05-20 * C2
4207
+ MODE_KEY = 3, break;
4208
+/* LICENSE
4209
+
4210
+CopyCENSE
4211
+
4212
+Copy
4213
+
4214
+
4215
+
4216
+
4217
+
4218
+pack.c */
4219
+? cson_guess_arg_type(pos: use
4220
+ the defaul
4221
+0 != (rc= use
4222
+ the defaul
4223
+o 2008-05-20 * C2
4224
+ MODE_KEY = 3, break;
4225
+/* LICENSE
4226
+
4227
+CopyCENSE
4228
+
4229
+Copy
4230
+
4231
+
4232
+
4233
+
4234
+
4235
+pack.c */
4236
+0_guess_arg_type(pos: use
4237
+ t use
4238
+ MODE_KEY = 3, use
4239
+ ;
4240
+ p->c 0 == rc ) use
4241
+ }ARRAY_END:( ch}/*
4242
+ refcount the keys! We first need a setter which takes
4243
+ 8@JnB,b:a cson_string or cson_value key type.
4244
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4245
+# pop ) ownership of it to the
4246
+ caller. It must eventually be destroyed, by the caller or its
4247
+ owning or transfering
4248
+
4249
+void/**
4250
+ This special-case impl is needed because the underlying
4251
+ (generic) list operations do not know how to populate
4252
+ new entries
4253
+ */ use
4254
+ the =*arg)){ use
4255
+ the def use
4256
+ the defaul
4257
+o 2008-05-20 * C2
4258
+ MODE_KEY = 3, break;
4259
+/* LICENSE
4260
+
4261
+CopyCENSE
4262
+
4263
+Copy
4264
+
4265
+ use
4266
+ }
4267
+
4268
+ use
4269
+ the defaul
4270
+o 20aul
4271
+o 2008-05-20 * C2
4272
+ MODE_KEY = 3, break;
4273
+/* LICENSE
4274
+
4275
+CopyCENSE
4276
+
4277
+Copy
4278
+
4279
+
4280
+
4281
+
4282
+
4283
+pack.c */
4284
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4285
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4286
+ use
4287
+ the defaul
4288
+o 2008-05-20 * C2
4289
+ MODE_KEY = 3, break;
4290
+/* LICENSE
4291
+
4292
+CopyCENSE
4293
+
4294
+Copy
4295
+
4296
+
4297
+
4298
+
4299
+
4300
+pack.c */
4301
+if( use
4302
+ the clone_shared(ul
4303
+o 2008-05-20 2008-05-20 * sharedshared use
4304
+ ('0'<=*arg) && ('9'>=*arg)){ use
4305
+ the def use
4306
+ the defaul
4307
+o 2008-05-20 * C2
4308
+ MODE_KEY = 3, break;
4309
+/* LICENSE
4310
+
4311
+CopyCENSE
4312
+
4313
+Copy
4314
+
4315
+ use
4316
+ }
4317
+
4318
+ use
4319
+ the defaul
4320
+o 2008-05-20 * C2
4321
+ MODE_KEY = 3, break;
4322
+/* LICENSE
4323
+
4324
+CopyCENSE
4325
+
4326
+Copy
4327
+
4328
+
4329
+
4330
+
4331
+
4332
+pack.c */
4333
+? cson_guess_arg_type(pos: use
4334
+ the defaul
4335
+0 != (rc= use
4336
+ the defaul
4337
+o 2008-05-20 * C2
4338
+ MODE_KEY = 3, break;
4339
+/* LICENSE
4340
+
4341
+CopyCENSE
4342
+
4343
+Copy
4344
+
4345
+
4346
+
4347
+
4348
+
4349
+pack.c */
4350
+ defaul
4351
+o 2008-05-20 * C2
4352
+ MODE_KEY = 3, break;
4353
+/* LICENSE
4354
+
4355
+CopyCENSE
4356
+
4357
+Copy
4358
+
4359
+
4360
+
4361
+
4362
+
4363
+pack.c */
4364
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4365
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4366
+ use
4367
+ the defaul
4368
+o 2008-05-20 * C2
4369
+ MODE_KEY = 3, break;
4370
+/* LICENSE
4371
+
4372
+CopyCENSE
4373
+
4374
+Copy
4375
+
4376
+
4377
+
4378
+
4379
+
4380
+pack.c */
4381
+if( use
4382
+ the clone_shared(ul
4383
+o 2008-05-20 2008-05-20 * sharedshared use
4384
+ ('0'<=*arg) && ('9'>=*arg)){ use
4385
+ the def use
4386
+ the defaul
4387
+o 2008-05-20 * C2
4388
+ MODE_KEY = 3, break;
4389
+/* LICENSE
4390
+
4391
+CopyCENSE
4392
+
4393
+Copy
4394
+
4395
+ use
4396
+ }
4397
+
4398
+ use
4399
+ the defaul
4400
+o 2008-05-20 * C2
4401
+ MODE_KEY = 3, break;
4402
+/* LICENSE
4403
+
4404
+CopyCENSE
4405
+
4406
+Copy
4407
+
4408
+
4409
+
4410
+
4411
+
4412
+pack.c */
4413
+? cson_guess_arg_type(pos: use
4414
+ the defaul
4415
+0 != (rc= use
4416
+ the defaul
4417
+o 2008-05-20 * C2
4418
+ MODE_KEY = 3, break;
4419
+/* LICENSE
4420
+
4421
+CopyCENSE
4422
+
4423
+Copy
4424
+
4425
+
4426
+
4427
+
4428
+
4429
+pack.c */
4430
+0_guess_arg_type(pos: use
4431
+ t use
4432
+ MODE_KEY = 3, use
4433
+ ;
4434
+ p->c 0 == rc ) use
4435
+ }ARRAY_END:( ch}/*
4436
+ refcount the keys! We first need a setter which takes
4437
+ 8@JnB,b:a cson_string or cson_value key type.
4438
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,,W@O4l,_@YNG,L@blG,G@8RG,TX@1q,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4439
+# pop ) ownership of it to the
4440
+ caller. It must eventually be destroyed, by the caller or its
4441
+ owning or transfering
4442
+
4443
+void/**
4444
+ This special-case impl is needed because the underlying
4445
+ (generic) list operations do not know how to populate
4446
+ new entries
4447
+ */ use
4448
+ the =*arg)){ use
4449
+ the def use
4450
+ the defaul
4451
+o 2008-05-20 * C2
4452
+ MODE_KEY = 3, break;
4453
+/* LICENSE
4454
+
4455
+CopyCENSE
4456
+
4457
+Copy
4458
+
4459
+ use
4460
+ }
4461
+
4462
+ use
4463
+ the defaul
4464
+o 2008-05-20 * C2
4465
+ MODE_KEY = 3, break;
4466
+/* LICENSE
4467
+
4468
+CopyCENSE
4469
+
4470
+Copy
4471
+
4472
+
4473
+
4474
+
4475
+
4476
+pack.c */
4477
+? cson_guess_arg_type(pos: use
4478
+ the defaul
4479
+0 != (rc= use
4480
+ the defaul
4481
+o 2008-05-20 * C2
4482
+ MODE_KEY = 3, break;
4483
+/* LICENSE
4484
+
4485
+CopyCENSE
4486
+
4487
+Copy
4488
+
4489
+
4490
+
4491
+
4492
+
4493
+pack.c */
4494
+0_guess_arg_type(pos: use
4495
+ t use
4496
+ MODE_KEY = 3, use
4497
+ ;
4498
+ p->c 0 == rc ) use
4499
+ }Aary use
4500
+ the the defaul
4501
+o 2008-05-20 * C2
4502
+ MODE_KEY = 3, break;
4503
+/* LICENSE
4504
+
4505
+CopyCENSE
4506
+
4507
+Copy
4508
+
4509
+
4510
+
4511
+
4512
+
4513
+pack.c */
4514
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4515
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4516
+ use
4517
+ the defaul
4518
+o 2008-05-20 * C2
4519
+ MODE_KEY = 3, break;
4520
+/* LICENSE
4521
+
4522
+CopyCENSE
4523
+
4524
+Copy
4525
+
4526
+
4527
+
4528
+
4529
+
4530
+pack.c */
4531
+if( use
4532
+ the clone_shared(ul
4533
+o 2008-05-20 2008-05-20 * sharedshared use
4534
+ ('0'<=*arg) && ('9'>=*arg)){ use
4535
+ the def use
4536
+ the defaul
4537
+o 2008-05-20 * C2
4538
+ MODE_KEY = 3, break;
4539
+/* LICENSE
4540
+
4541
+CopyCENSE
4542
+
4543
+Copy
4544
+
4545
+ use
4546
+ }
4547
+
4548
+ use
4549
+ the defaul
4550
+o 2008-05-20 * C2
4551
+ MODE_KEY = 3, break;
4552
+/* LICENSE
4553
+
4554
+CopyCENSE
4555
+
4556
+Copy
4557
+
4558
+
4559
+
4560
+
4561
+
4562
+pack.c */
4563
+? cson_guess_arg_type(pos: use
4564
+ the defaul
4565
+0 != (rc= use
4566
+ the defaul
4567
+o 2008-05-20 * C2
4568
+ MODE_KEY = 3, break;
4569
+/* LICENSE
4570
+
4571
+CopyCENSE
4572
+
4573
+Copy
4574
+
4575
+
4576
+
4577
+
4578
+
4579
+pack.c */
4580
+ defaul
4581
+o 2008-05-20 * C2
4582
+ MODE_KEY = 3, break;
4583
+/* LICENSE
4584
+
4585
+CopyCENSE
4586
+
4587
+Copy
4588
+
4589
+
4590
+
4591
+
4592
+
4593
+pack.c */
4594
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4595
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4596
+ use
4597
+ the defaul
4598
+o 2008-05-20 * C2
4599
+ MODE_KEY = 3, break;
4600
+/* LICENSE
4601
+
4602
+CopyCENSE
4603
+
4604
+Copy
4605
+
4606
+
4607
+
4608
+
4609
+
4610
+pack.c */
4611
+if( use
4612
+ the clone_shared(ul
4613
+o 2008-05-20 2008-05-20 * sharedshared use
4614
+ ('0'<=*arg) && ('9'>=*arg)){ use
4615
+ the def use
4616
+ the defaul
4617
+o 2008-05-20 * C2
4618
+ MODE_KEY = 3, break;
4619
+/* LICENSE
4620
+
4621
+CopyCENSE
4622
+
4623
+Copy
4624
+
4625
+ use
4626
+ }
4627
+
4628
+ use
4629
+ the defaul
4630
+o 2008-05-20 * C2
4631
+ MODE_KEY = 3, break;
4632
+/* LICENSE
4633
+
4634
+CopyCENSE
4635
+
4636
+Copy
4637
+
4638
+
4639
+
4640
+
4641
+
4642
+pack.c */
4643
+? cson_guess_arg_type(pos: use
4644
+ the defaul
4645
+0 != (rc= use
4646
+ the defaul
4647
+o 2008-05-20 * C2
4648
+ MODE_KEY = 3, break;
4649
+/* LICENSE
4650
+
4651
+CopyCENSE
4652
+
4653
+Copy
4654
+
4655
+
4656
+
4657
+
4658
+
4659
+pack.c */
4660
+0_guess_arg_type(pos: use
4661
+ t use
4662
+ MODE_KEY = 3, use
4663
+ ;
4664
+ p->c 0 == rc ) use
4665
+ }ARRAY_END:( ch}/*
4666
+ refcount the keys! We first need a setter which takes
4667
+ 8@JnB,b:a cson_string or cson_value key type.
4668
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4669
+# pop ) ownership of it to the
4670
+ caller. It must eventually be destroyed, by the caller or its
4671
+ owning or transfering
4672
+
4673
+void/**
4674
+ This special-case impl is needed because the underlying
4675
+ (generic) list operations do not know how to populate
4676
+ new entries
4677
+ */ use
4678
+ the =*arg)){ use
4679
+ the def use
4680
+ the defaul
4681
+o 2008-05-20 * C2
4682
+ MODE_KEY = 3, break;
4683
+/* LICENSE
4684
+
4685
+CopyCENSE
4686
+
4687
+Copy
4688
+
4689
+ use
4690
+ }
4691
+
4692
+ use
4693
+ the defaul
4694
+o 2008-05-20 * C2
4695
+ MODE_KEY = 3, break;
4696
+/* LICENSE
4697
+
4698
+CopyCENSE
4699
+
4700
+Copy
4701
+
4702
+
4703
+
4704
+
4705
+
4706
+pack.c */
4707
+? cson_guess_arg_type(pos: use
4708
+ the defaul
4709
+0 != (rc= use
4710
+ the defaul
4711
+o 2008-05-20 * C2
4712
+ MODE_KEY = 3, break;
4713
+/* LICENSE
4714
+
4715
+CopyCENSE
4716
+
4717
+Copy
4718
+
4719
+
4720
+
4721
+
4722
+
4723
+pack.c */
4724
+0_guess_arg_type(pos: use
4725
+ t use
4726
+ MODE_KEY = 3, use
4727
+ ;
4728
+ p->c 0 == rc ) use
4729
+ }Aarye
4730
+ }
4731
+
4732
+ use
4733
+ the defaul
4734
+o 2008-05-20 * C2
4735
+ MODE_KEY = 3, break;
4736
+/* LICENSE
4737
+
4738
+CopyCENSE
4739
+
4740
+Copy
4741
+
4742
+
4743
+
4744
+
4745
+
4746
+pack.c */
4747
+? cson_guess_arg_type(pos: use
4748
+ the defaul
4749
+0 != (rc= use
4750
+ the defaul
4751
+o 2008-05-20 * C2
4752
+ MODE_KEY = 3, break;
4753
+/* LICENSE
4754
+
4755
+CopyCENSE
4756
+
4757
+Copy
4758
+
4759
+
4760
+
4761
+
4762
+
4763
+pack.c */
4764
+ defaul
4765
+o 2008-05-20 * C2
4766
+ MODE_KEY = 3, break;
4767
+/* LICENSE
4768
+
4769
+CopyCENSE
4770
+
4771
+Copy
4772
+
4773
+
4774
+
4775
+
4776
+
4777
+pack.c */
4778
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4779
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4780
+ use
4781
+ the defaul
4782
+o 2008-05-20 * C2
4783
+ MODE_KEY = 3, break;
4784
+/* LICENSE
4785
+
4786
+CopyCENSE
4787
+
4788
+Copy
4789
+
4790
+
4791
+
4792
+
4793
+
4794
+pack.c */
4795
+if( use
4796
+ the clone_shared(ul
4797
+o 2008-05-20 2008-05-20 * sharedshared use
4798
+ ('0'<=*arg) && ('9'>=*arg)){ use
4799
+ the def use
4800
+ the defaul
4801
+o 2008-05-20 * C2
4802
+ MODE_KEY = 3, break;
4803
+/* LICENSE
4804
+
4805
+CopyCENSE
4806
+
4807
+Copy
4808
+
4809
+ use
4810
+ }
4811
+
4812
+ use
4813
+ the defaul
4814
+o 2008-05-20 * C2
4815
+ MODE_KEY = 3, break;
4816
+/* LICENSE
4817
+
4818
+CopyCENSE
4819
+
4820
+Copy
4821
+
4822
+
4823
+
4824
+
4825
+
4826
+pack.c */
4827
+? cson_guess_arg_type(pos: use
4828
+ the defaul
4829
+0 != (rc= use
4830
+ the defaul
4831
+o 2008-05-20 * C2
4832
+ MODE_KEY = 3, break;
4833
+/* LICENSE
4834
+
4835
+CopyCENSE
4836
+
4837
+Copy
4838
+
4839
+
4840
+
4841
+
4842
+
4843
+pack.c */
4844
+0_guess_arg_type(pos: use
4845
+ t use
4846
+ MODE_KEY = 3, use
4847
+ ;
4848
+ p->c 0 == rc ) use
4849
+ }ARRAY_END:( ch}/*
4850
+ refcount the keys! We first need a setter which takes
4851
+ 8@JnB,b:a cson_string or cson_value key type.
4852
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4853
+# pop ) ownership of it to the
4854
+ caller. It must eventually be destroyed, by the caller or its
4855
+ owning or transfering
4856
+
4857
+void/**
4858
+ This special-case impl is needed because the underlying
4859
+ (generic) list operations do not know how to populate
4860
+ new entries
4861
+ */ use
4862
+ the =*arg)){ use
4863
+ the def use
4864
+ the defaul
4865
+o 2008-05-20 * C2
4866
+ MODE_KEY = 3, break;
4867
+/* LICENSE
4868
+
4869
+CopyCENSE
4870
+
4871
+Copy
4872
+
4873
+ use
4874
+ }
4875
+
4876
+ use
4877
+ the defaul
4878
+o 2008-05-20 * C2
4879
+ MODE_KEY = 3, break;
4880
+/* LICENSE
4881
+
4882
+CopyCENSE
4883
+
4884
+Copy
4885
+
4886
+
4887
+
4888
+
4889
+
4890
+pack.c */
4891
+? cson_guess_arg_type(pos: use
4892
+ the defaul
4893
+0 != (rc= use
4894
+ the defaul
4895
+o 2008-05-20 * C2
4896
+ MODE_KEY = 3, break;
4897
+/* LICENSE
4898
+
4899
+CopyCENSE
4900
+
4901
+Copy
4902
+
4903
+
4904
+
4905
+
4906
+
4907
+pack.c */
4908
+0_guess_arg_type(pos: use
4909
+ t use
4910
+ MODE_KEY = 3, use
4911
+ ;
4912
+ p->c 0 == rc ) use
4913
+ }Aarye defaul
4914
+o 2008-05-20 * C2
4915
+ MODE_KEY = 3, break;
4916
+/* LICENSE
4917
+
4918
+CopyCENSE
4919
+
4920
+Copy
4921
+
4922
+ use
4923
+ }
4924
+
4925
+ use
4926
+ the defaul
4927
+o 2008-05-20 * C2
4928
+ MODE_KEY = 3, break;
4929
+/* LICENSE
4930
+
4931
+CopyCENSE
4932
+
4933
+Copy
4934
+
4935
+
4936
+
4937
+
4938
+
4939
+pack.c */
4940
+? cson_guess_arg_type(pos: use
4941
+ the defaul
4942
+0 != (rc= use
4943
+ the defaul
4944
+o 2008-05-20 * C2
4945
+ MODE_KEY = 3, break;
4946
+/* LICENSE
4947
+
4948
+CopyCENSE
4949
+
4950
+Copy
4951
+
4952
+
4953
+
4954
+
4955
+
4956
+pack.c */
4957
+ defaul
4958
+o 2008-05-20 * C2
4959
+ MODE_KEY = 3, break;
4960
+/* LICENSE
4961
+
4962
+CopyCENSE
4963
+
4964
+Copy
4965
+
4966
+
4967
+
4968
+
4969
+
4970
+pack.c */
4971
+#V)->value)m/* FIXME: if sizeof(void*) > then store
4972
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4973
+ use
4974
+ the defaul
4975
+o 2008-05-20 * C2
4976
+ MODE_KEY = 3, break;
4977
+/* LICENSE
4978
+
4979
+CopyCENSE
4980
+
4981
+Copy
4982
+
4983
+
4984
+
4985
+
4986
+
4987
+pack.c */
4988
+if( use
4989
+ the clone_shared(ul
4990
+o 2008-05-20 2008-05-20 * sharedshared use
4991
+ ('0'<=*arg) && ('9'>=*arg)){ use
4992
+ the def use
4993
+ the defaul
4994
+o 2008-05-20 * C2
4995
+ MODE_KEY = 3, break;
4996
+/* LICENSE
4997
+
4998
+CopyCENSE
4999
+
5000
+Copy
5001
+
5002
+ use
5003
+ }
5004
+
5005
+ use
5006
+ the defaul
5007
+o 2008-05-20 * C2
5008
+ MODE_KEY = 3, break;
5009
+/* LICENSE
5010
+
5011
+CopyCENSE
5012
+
5013
+Copy
5014
+
5015
+
5016
+
5017
+
5018
+
5019
+pack.c */
5020
+? cson_guess_arg_type(pos: use
5021
+ the defaul
5022
+0 != (rc= use
5023
+ the defaul
5024
+o 2008-05-20 * C2
5025
+ MODE_KEY = 3, break;
5026
+/* LICENSE
5027
+
5028
+CopyCENSE
5029
+
5030
+Copy
5031
+
5032
+
5033
+
5034
+
5035
+
5036
+pack.c */
5037
+0_guess_arg_type(pos: use
5038
+ t use
5039
+ MODE_KEY = 3, use
5040
+ ;
5041
+ p->c 0 == rc ) use
5042
+ }ARRAY_END:( ch}/*
5043
+ refcount the keys! We first need a setter which takes
5044
+ 8@JnB,b:a cson_string or cson_value key type.
5045
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5046
+# pop ) ownership of it to the
5047
+ caller. It must eventually be destroyed, by the caller or its
5048
+ owning or transfering
5049
+
5050
+void/**
5051
+ This special-case impl is needed because the underlying
5052
+ (generic) list operations do not know how to populate
5053
+ new entries
5054
+ */ use
5055
+ the =*arg)){ use
5056
+ the def use
5057
+ the defaul
5058
+o 2008-05-20 * C2
5059
+ MODE_KEY = 3, break;
5060
+/* LICENSE
5061
+
5062
+CopyCENSE
5063
+
5064
+Copy
5065
+
5066
+ use
5067
+ }
5068
+
5069
+ use
5070
+ the defaul
5071
+o 2008-05-20 * C2
5072
+ MODE_KEY = 3, break;
5073
+/* LICENSE
5074
+
5075
+CopyCENSE
5076
+
5077
+Copy
5078
+
5079
+
5080
+
5081
+
5082
+
5083
+pack.c */
5084
+? cson_guess_arg_type(pos: use
5085
+ the defaul
5086
+0 != (rc= use
5087
+ the defaul
5088
+o 2008-05-20 * C2
5089
+ MODE_KEY = 3, break;
5090
+/* LICENSE
5091
+
5092
+CopyCENSE
5093
+
5094
+Copy
5095
+
5096
+
5097
+
5098
+
5099
+
5100
+pack.c */
5101
+0_guess_arg_type(pos: use
5102
+ t use
5103
+ MODE_KEY = 3, use
5104
+ ;
5105
+ p->c 0 == rc ) use
5106
+ }Aary use
5107
+ the the defaul
5108
+o 2008-05-20 * C2
5109
+ MODE_KEY = 3, break;
5110
+/* LICENSE
5111
+
5112
+CopyCENSE
5113
+
5114
+Copy
5115
+
5116
+
5117
+
5118
+
5119
+
5120
+pack.c */
5121
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5122
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5123
+ use
5124
+ the defaul
5125
+o 2008-05-20 * C2
5126
+ MODE_KEY = 3, break;
5127
+/* LICENSE
5128
+
5129
+CopyCENSE
5130
+
5131
+Copy
5132
+
5133
+
5134
+
5135
+
5136
+
5137
+pack.c */
5138
+if( use
5139
+ the clone_shared(ul
5140
+o 2008-05-20 2008-05-20 * sharedshared use
5141
+ ('0'<=*arg) && ('9'>=*arg)){ use
5142
+ the def use
5143
+ the defaul
5144
+o 2008-05-20 * C2
5145
+ MODE_KEY = 3, break;
5146
+/* LICENSE
5147
+
5148
+CopyCENSE
5149
+
5150
+Copy
5151
+
5152
+ use
5153
+ }
5154
+
5155
+ use
5156
+ the defaul
5157
+o 2008-05-20 * C2
5158
+ MODE_KEY = 3, break;
5159
+/* LICENSE
5160
+
5161
+CopyCENSE
5162
+
5163
+Copy
5164
+
5165
+
5166
+
5167
+
5168
+
5169
+pack.c */
5170
+? cson_guess_arg_type(pos: use
5171
+ the defaul
5172
+0 != (rc= use
5173
+ the defaul
5174
+o 2008-05-20 * C2
5175
+ MODE_KEY = 3, break;
5176
+/* LICENSE
5177
+
5178
+CopyCENSE
5179
+
5180
+Copy
5181
+
5182
+
5183
+
5184
+
5185
+
5186
+pack.c */
5187
+ defaul
5188
+o 2008-05-20 * C2
5189
+ MODE_KEY = 3, break;
5190
+/* LICENSE
5191
+
5192
+CopyCENSE
5193
+
5194
+Copy
5195
+
5196
+
5197
+
5198
+
5199
+
5200
+pack.c */
5201
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5202
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5203
+ use
5204
+ the defaul
5205
+o 2008-05-20 * C2
5206
+ MODE_KEY = 3, break;
5207
+/* LICENSE
5208
+
5209
+CopyCENSE
5210
+
5211
+Copy
5212
+
5213
+
5214
+
5215
+
5216
+
5217
+pack.c */
5218
+if( use
5219
+ the clone_shared(ul
5220
+o 2008-05-20 2008-05-20 * sharedshared use
5221
+ ('0'<=*arg) && ('9'>=*arg)){ use
5222
+ the def use
5223
+ the defaul
5224
+o 2008-05-20 * C2
5225
+ MODE_KEY = 3, break;
5226
+/* LICENSE
5227
+
5228
+CopyCENSE
5229
+
5230
+Copy
5231
+
5232
+ use
5233
+ }
5234
+
5235
+ use
5236
+ the defaul
5237
+o 2008-05-20 * C2
5238
+ MODE_KEY = 3, break;
5239
+/* LICENSE
5240
+
5241
+CopyCENSE
5242
+
5243
+Copy
5244
+
5245
+
5246
+
5247
+
5248
+
5249
+pack.c */
5250
+? cson_guess_arg_type(pos: use
5251
+ the defaul
5252
+0 != (rc= use
5253
+ the defaul
5254
+o 2008-05-20 * C2
5255
+ MODE_KEY = 3, break;
5256
+/* LICENSE
5257
+
5258
+CopyCENSE
5259
+
5260
+Copy
5261
+
5262
+
5263
+
5264
+
5265
+
5266
+pack.c */
5267
+0_guess_arg_type(pos: use
5268
+ t use
5269
+ MODE_KEY = 3, use
5270
+ ;
5271
+ p->c 0 == rc ) use
5272
+ }ARRAY_END:( ch}/*
5273
+ refcount the keys! We first need a setter which takes
5274
+ 8@JnB,b:a cson_string or cson_value key type.
5275
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5276
+# pop ) ownership of it to the
5277
+ caller. It must eventually be destroyed, by the caller or its
5278
+ owning or transfering
5279
+
5280
+void/**
5281
+ This special-case impl is needed because the underlying
5282
+ (generic) list operations do not know how to populate
5283
+ new entries
5284
+ */ use
5285
+ the =*arg)){ use
5286
+ the def use
5287
+ the defaul
5288
+o 2008-05-20 * C2
5289
+ MODE_KEY = 3, break;
5290
+/* LICENSE
5291
+
5292
+CopyCENSE
5293
+
5294
+Copy
5295
+
5296
+ use
5297
+ }
5298
+
5299
+ use
5300
+ the defaul
5301
+o 2008-05-20 * C2
5302
+ MODE_KEY = 3, break;
5303
+/* LICENSE
5304
+
5305
+CopyCENSE
5306
+
5307
+Copy
5308
+
5309
+
5310
+
5311
+
5312
+
5313
+pack.c */
5314
+? cson_guess_arg_type(pos: use
5315
+ the defaul
5316
+0 != (rc= use
5317
+ the defaul
5318
+o 2008-05-20 * C2
5319
+ MODE_KEY = 3, break;
5320
+/* LICENSE
5321
+
5322
+CopyCENSE
5323
+
5324
+Copy
5325
+
5326
+
5327
+
5328
+
5329
+
5330
+pack.c */
5331
+0_guess_arg_type(pos: use
5332
+ t use
5333
+ MODE_KEY = 3, use
5334
+ ;
5335
+ p->c 0 == rc ) use
5336
+ }Aarye
5337
+ }
5338
+
5339
+ use
5340
+ the defaul
5341
+o 2008-05-20 * C2
5342
+ MODE_KEY = 3, break;
5343
+/* LICENSE
5344
+
5345
+CopyCENSE
5346
+
5347
+Copy
5348
+
5349
+
5350
+
5351
+
5352
+
5353
+pack.c */
5354
+? cson_guess_arg_type(pos: use
5355
+ the defaul
5356
+0 != (rc= use
5357
+ the defaul
5358
+o 2008-05-20 * C2
5359
+ MODE_KEY = 3, break;
5360
+/* LICENSE
5361
+
5362
+CopyCENSE
5363
+
5364
+Copy
5365
+
5366
+
5367
+
5368
+
5369
+
5370
+pack.c */
5371
+ defaul
5372
+o 2008-05-20 * C2
5373
+ MODE_KEY = 3, break;
5374
+/* LICENSE
5375
+
5376
+CopyCENSE
5377
+
5378
+Copy
5379
+
5380
+
5381
+
5382
+
5383
+
5384
+pack.c */
5385
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5386
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5387
+ use
5388
+ the defaul
5389
+o 2008-05-20 * C2
5390
+ MODE_KEY = 3, break;
5391
+/* LICENSE
5392
+
5393
+CopyCENSE
5394
+
5395
+Copy
5396
+
5397
+
5398
+
5399
+
5400
+
5401
+pack.c */
5402
+if( use
5403
+ the clone_shared(ul
5404
+o 2008-05-20 2008-05-20 * sharedshared use
5405
+ ('0'<=*arg) && ('9'>=*arg)){ use
5406
+ the def use
5407
+ the defaul
5408
+o 2008-05-20 * C2
5409
+ MODE_KEY = 3, break;
5410
+/* LICENSE
5411
+
5412
+CopyCENSE
5413
+
5414
+Copy
5415
+
5416
+ use
5417
+ }
5418
+
5419
+ use
5420
+ the defaul
5421
+o 2008-05-20 * C2
5422
+ MODE_KEY = 3, break;
5423
+/* LICENSE
5424
+
5425
+CopyCENSE
5426
+
5427
+Copy
5428
+
5429
+
5430
+
5431
+
5432
+
5433
+pack.c */
5434
+? cson_guess_arg_type(pos: use
5435
+ the defaul
5436
+0 != (rc= use
5437
+ the defaul
5438
+o 2008-05-20 * C2
5439
+ MODE_KEY = 3, break;
5440
+/* LICENSE
5441
+
5442
+CopyCENSE
5443
+
5444
+Copy
5445
+
5446
+
5447
+
5448
+
5449
+
5450
+pack.c */
5451
+0_guess_arg_type(pos: use
5452
+ t use
5453
+ MODE_KEY = 3, use
5454
+ ;
5455
+ p->c 0 == rc ) use
5456
+ }ARRAY_END:( ch}/*
5457
+ refcount the keys! We first need a setter which takes
5458
+ 8@JnB,b:a cson_string or cson_value key type.
5459
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5460
+# pop ) ownership of it to the
5461
+ caller. It must eventually be destroyed, by the caller or its
5462
+ owning or transfering
5463
+
5464
+void/**
5465
+ This special-case impl is needed because the underlying
5466
+ (generic) list operations do not know how to populate
5467
+ new entries
5468
+ */ use
5469
+ the =*arg)){ use
5470
+ the def use
5471
+ the defaul
5472
+o 2008-05-20 * C2
5473
+ MODE_KEY = 3, break;
5474
+/* LICENSE
5475
+
5476
+CopyCENSE
5477
+
5478
+Copy
5479
+
5480
+ use
5481
+ }
5482
+
5483
+ use
5484
+ the defaul
5485
+o 2008-05-20 * C2
5486
+ MODE_KEY = 3, break;
5487
+/* LICENSE
5488
+
5489
+CopyCENSE
5490
+
5491
+Copy
5492
+
5493
+
5494
+
5495
+
5496
+
5497
+pack.c */
5498
+? cson_guess_arg_type(pos: use
5499
+ the defaul
5500
+0 != (rc= use
5501
+ the defaul
5502
+o 2008-05-20 * C2
5503
+ MODE_KEY = 3, break;
5504
+/* LICENSE
5505
+
5506
+CopyCENSE
5507
+
5508
+Copy
5509
+
5510
+
5511
+
5512
+
5513
+
5514
+pack.c */
5515
+0_guess_arg_type(pos: use
5516
+ t use
5517
+ MODE_KEY = 3, use
5518
+ ;
5519
+ p->c 0 == rc ) use
5520
+ }Aarymallocfreereallocconst ** dest des()val->value-20 * C C2
5521
+ MODE_KEY = const *rcaul
5522
+o 20 the defaul
5523
+oeak;
5524
+/* LICENSE
5525
+
5526
+CopyCENSE
5527
+
5528
+Copy
5529
+
5530
+ use
5531
+ }
5532
+
5533
+ use
5534
+ the defaul
5535
+o 2008-05-20 * C2
5536
+ MODE_KEY = 3, break;
5537
+/* LICENSE
5538
+
5539
+CopyCENSE
5540
+
5541
+Copy
5542
+
5543
+
5544
+
5545
+
5546
+
5547
+pack.c */
5548
+? cson_guess_arg_type(pos: use
5549
+ the defaul
5550
+0 != (rc= use
5551
+ the defaul
5552
+o 2008-05-20 * C2
5553
+ MODE_KEY = 3, break;
5554
+/* LICENSE
5555
+
5556
+CopyCENSE
5557
+
5558
+Copy
5559
+
5560
+
5561
+
5562
+
5563
+
5564
+pack.c */
5565
+ defaul
5566
+o 2008-05-20 * C2
5567
+ MODE_KEY = 3, break;
5568
+/* LICENSE
5569
+
5570
+CopyCENSE
5571
+
5572
+Copy
5573
+
5574
+
5575
+
5576
+
5577
+
5578
+pack.c */
5579
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5580
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5581
+ use
5582
+ the defaul
5583
+o 2008-05-20 * C2
5584
+ MODE_KEY = 3, break;
5585
+/* LICENSE
5586
+
5587
+CopyCENSE
5588
+
5589
+Copy
5590
+
5591
+
5592
+
5593
+
5594
+
5595
+pack.c */
5596
+if( use
5597
+ the clone_shared(ul
5598
+o 2008-05-20 2008-05-20 * sharedshared use
5599
+ ('0'<=*arg) && ('9'>=*arg)){ use
5600
+ the def use
5601
+ the defaul
5602
+o 2008-05-20 * C2
5603
+ MODE_KEY = 3, break;
5604
+/* LICENSE
5605
+
5606
+CopyCENSE
5607
+
5608
+Copy
5609
+
5610
+ use
5611
+ }
5612
+
5613
+ use
5614
+ the defaul
5615
+o 2008-05-20 aul
5616
+o 2008-05-20 * C2
5617
+ MODE_KEY = 3, brC2
5618
+ MODE_K0colscolsV 2008-05-20 * C2
5619
+ MODE_KEY = 3, break;
5620
+/* LICENSE
5621
+
5622
+CopyCENSE
5623
+
5624
+Copy
5625
+
5626
+
5627
+
5628
+
5629
+
5630
+pack.c */
5631
+#V)->value)m/* FIXME: if sizeof(vo * colscols(scson_string object with enough space for
5632
+ the given number of bytes. A byte for a NUL terminator
5633
+ is added automatically. Use cson_string_str() to get
5634
+ access to the string bytes, which will be len bytes long.
5635
+
5636
+ len may be 0, in which case the internal string is "", as opposed
5637
+ to null. This is because the string bytes and the cson_string are
5638
+ allocated in a single chunk of memory, and the cson_string object
5639
+ does not directly provide (or have) a pointer to the string bytes.
5640
+*/
5641
+static cson_string * cson_string_alloc(STR_EMPTY])'>=*arg)){ use
5642
+ the defconst size_t maul
5643
+o 2008-e
5644
+ the defaul
5645
+o * mem 2008-05-20 aul
5646
+o +len) ) /*overflow*/ mem = (unsigned char *)cson_malloc( msz, "cson_string_alloc" );
5647
+ if( memmemset( mem, 0, mszs = (cson_string *)memk.c */
5648
+0_guess_araul
5649
+o 2008-05-20 * C2
5650
+ MODE_KEY = 3, break;
5651
+/* LICENSE
5652
+
5653
+CopyCENSE
5654
+
5655
+Copy
5656
+
5657
+
5658
+
5659
+
5660
+
5661
+pack.c */
5662
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5663
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5664
+ use
5665
+ the defaul
5666
+o 2008-05-20 * C2
5667
+ MODE_KEY = 3, break;
5668
+/* LICENSE
5669
+
5670
+CopyCENSE
5671
+
5672
+Copy
5673
+
5674
+
5675
+
5676
+
5677
+
5678
+pack.c */
5679
+if( use
5680
+ the clone_shared(ul
5681
+o 2008-05-20 2008-05-20 * sharedshared use
5682
+ ('0'<=*arg) && ('9'>=*arg)){ use
5683
+ the def use
5684
+ the defaul
5685
+o 2008-05-20 * C2
5686
+ MODE_KEY = 3, break;
5687
+/* LICENSE
5688
+
5689
+CopyCENSE
5690
+
5691
+Copy
5692
+
5693
+ use
5694
+ }
5695
+
5696
+ use
5697
+ the defaul
5698
+o 2008-05-20 * C2
5699
+ MODE_KEY = 3, break;
5700
+/* LICENSE
5701
+
5702
+CopyCENSE
5703
+
5704
+Copy
5705
+
5706
+
5707
+
5708
+
5709
+
5710
+pack.c */
5711
+? cson_guess_arg_type(pos: use
5712
+ the defaul
5713
+0 != (rc= use
5714
+ the defaul
5715
+o 2008-05-20 * C2
5716
+ MODE_KEY = 3, break;
5717
+/* LICENSE
5718
+
5719
+CopyCENSE
5720
+
5721
+Copy
5722
+
5723
+
5724
+
5725
+
5726
+
5727
+pack.c */
5728
+ defaul
5729
+o 2008-05-20 * C2
5730
+ MODE_KEY = 3, break;
5731
+/* LICENSE
5732
+
5733
+CopyCENSE
5734
+
5735
+Copy
5736
+
5737
+
5738
+
5739
+
5740
+
5741
+pack.c */
5742
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5743
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5744
+ use
5745
+ the defaul
5746
+o 2008-05-20 * C2
5747
+ MODE_KEY = 3, break;
5748
+/* LICENSE
5749
+
5750
+CopyCENSE
5751
+
5752
+Copy
5753
+
5754
+
5755
+
5756
+
5757
+
5758
+pack.c */
5759
+if( use
5760
+ the clone_shared(ul
5761
+o 2008-05-20 2008-05-20 * sharedshared use
5762
+ ('0'<=*arg) && ('9'>=*arg)){ use
5763
+ the def use
5764
+ the defaul
5765
+o 2008-05-20 * C2
5766
+ MODE_KEY = 3, break;
5767
+/* LICENSE
5768
+
5769
+CopyCENSE
5770
+
5771
+Copy
5772
+
5773
+ use
5774
+ }
5775
+
5776
+ use
5777
+ the defaul
5778
+o 2008-05-20 * C2
5779
+ MODE_KEY = 3, break;
5780
+/* LICENSE
5781
+
5782
+CopyCENSE
5783
+
5784
+Copy
5785
+
5786
+
5787
+
5788
+
5789
+
5790
+pack.c */
5791
+? cson_guess_arg_type(pos: use
5792
+ the defaul
5793
+0 != (rc= use
5794
+ the defaul
5795
+o 2008-05-20 * C2
5796
+ MODE_KEY = 3, break;
5797
+/* LICENSE
5798
+
5799
+CopyCENSE
5800
+
5801
+Copy
5802
+
5803
+
5804
+
5805
+
5806
+
5807
+pack.c */
5808
+0_guess_arg_type(pos: use
5809
+ t use
5810
+ MODE_KEY = 3, use
5811
+ ;
5812
+ p->c 0 == rc ) use
5813
+ }ARRAY_END:( ch}/*
5814
+ refcount the keys! We first need a setter which takes
5815
+ 8@JnB,b:a cson_string or cson_value key type.
5816
+K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5817
+# pop ) ownership of it to the
5818
+ caller. It must eventually be destroyed, by the caller or its
5819
+ owning or transfering
5820
+
5821
+void/**
5822
+ This special-case impl is needed because the underlying
5823
+ (generic) list operations do not know how to populate
5824
+ new entries
5825
+ */ use
5826
+ the =*arg)){ use
5827
+ the def use
5828
+ the defaul
5829
+o 2008-05-20 * C2
5830
+ MODE_KEY = 3, break;
5831
+/* LICENSE
5832
+
5833
+CopyCENSE
5834
+
5835
+Copy
5836
+
5837
+ use
5838
+ }
5839
+
5840
+ use
5841
+ the defaul
5842
+o 2008-05-20 freeintegerstringinteger
5843
+ MODE_KEY = 3aul
5844
+o 2008-05-2free
5845
+ MODE_KEY = 3aul
5846
+o 2008-05-2string
5847
+ MODE_KEY = 3aul
5848
+o 2008-05-20 * C2
5849
+ MODE_KEY = 3, break;
5850
+/* LICENSE
5851
+
5852
+CopyCENSE
5853
+
5854
+Copy
5855
+
5856
+
5857
+
5858
+
5859
+
5860
+pack.c */
5861
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5862
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5863
+ use
5864
+If self is not null, free(self->value) is called. *self is then
5865
+ type. self is not freed.
5866
+free
5867
+{
5868
+ if(selfcson_free(self->value,"free()"
5869
+ Reminders to self:
5870
+
5871
+ - 20110126: moved cson_value_new() and cson_value_set_xxx() out of
5872
+ MODE_KEY = 3aul
5873
+o 2008-05-20 * C2
5874
+ MODE_KEY = 3, break;
5875
+/* LICENSE
5876
+
5877
+CopyCENSE
5878
+
5879
+Copy
5880
+
5881
+
5882
+
5883
+
5884
+
5885
+pack.c */
5886
+#V)->value)m/* FIXME: if sizeof(void*) > then store
5887
+ the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5888
+ use
5889
+ the defaul
5890
+o 2008-05-20 * C2
5891
+ MODE_KEY = 3, break;
5892
+/* LICENSE
5893
+
5894
+CopyCENSE
5895
+
5896
+Copy
5897
+
5898
+
5899
+
5900
+
5901
+
5902
+ a) They can be easily mis-used to cause memory leaks, even when used in
5903
+ a manner which seems relatively intuitive.
5904
+
5905
+ b) Having them in the API prohibits us from eventually doing certain
5906
+ allocation optimizations like not allocating Booleans,
5907
+ Integer/Doubles with the value 0, or empty Strings. The main problem
5908
+ is that cson_value_set_xxx() cannot be implemented properly if we
5909
+ add that type of optimization.
5910
+*/P@EpP,2x:value with the "undefined" value and transfers
5911
+ ownership of it to the caller. Use The cson_value_set_xxx() family
5912
+ of functions to assign a typed value to it. It must eventually be
5913
+ W@Gt~,Z@GuY,1:
5914
+J@aul,1:)4c@H0X,1X:);
5915
+/**
5916
+ Cleans any existing contents of val and sets its new value
5917
+ to the special NULL valueR@NQi,A:
5918
+
5919
+*/
5920
+#if 0H@R6l,E:value_set_nullM@DjD,1G:#endif
5921
+/**
5922
+ Cleans any existing contents of val and sets its new value
5923
+ to vR@NQi,A:
5924
+
5925
+*/
5926
+#if 0H@R6l,1x:value_set_bool( cson_value * val, char v );
5927
+#endif
5928
+/**
5929
+ Cleans any existing contents of val and sets its new value
5930
+ to vR@NQi,1:
5931
+K@TVj,9:value_setL@Je0,1W:* val, cson_int_t v );
5932
+/**
5933
+ Cleans any existing contents of val and sets its new value
5934
+ to vR@NQi,K@TVj,7:value_sM@KDS,6:* val,I@LDz,2b:;
5935
+
5936
+/**
5937
+ Cleans any existing contents of val and sets its new value to
5938
+ str. On success, ownership of str is passed on to val. On error
5939
+ ownership is not changedR@NQi,h:
5940
+
5941
+ If str is NULL, (!*str), or (!len) thenN@C3e,i:
5942
+ allocate any memory for a new string, andI@KEW,N:string()
5943
+ will returnG@RN0,S: as opposed to a NULL stringL@abW,8:value_seL@T1T,6:* val,a@LIU,2:;
5944
+U@HBG,P@H~G,R@HXc,H@H7G,K:,"cson_value_new");
5945
+H@Jb0,M@HyW,Q0@H_h,O@C4G,7:integerL@C4i,n:
5946
+{
5947
+ if( self )
5948
+ {
5949
+#if !CSON_VOID_PTR_IS_BIG
5950
+I@ICV,O:self->value,"cson_int_t"I@_KF,_:*self = cson_value_empty;
5951
+ }
5952
+I@R6k,9:value_setL@Je0,6:* val,Q@L9W,5:! valg@VJl,O:#if CSON_VOID_PTR_IS_BIGK@_g~,5:cleanH@Idk,3:valI@HZ~,W:v;
5953
+#else
5954
+ cson_int_t * ivH@IDW,G:iv = (cson_int_tQ@KbM,K:int_t), "cson_int_t"H@akl,1:iK@LZl,J@PD0,B@Ht~,5:cleanH@Idk,7:*iv = vA@Hyl,F:val->value = ivH@_KG,A:val->api =H@Cll,7:integerT@DxG,G@S_l,7:value_sM@KDS,6:* val,T@LDz,5:! valo@VJl,I:cson_double_t * rvH@IDW,B@Ht~,5:cleanH@Idk,A:val->api =H@Cll,S:double;
5955
+ if( 0.0 != vP@URW,17:/*
5956
+ unsigned int CsonSessionRegLen = sizeof(CsonSessionReg)/sizeof(CsonSessionReg[0]);
5957
+
5958
+
5959
+int cson_sessmgr_register( char const * name, cson_sessmgr_factory_f f )
5960
+{
5961
+cson_sessmnlen = strlen(name)if( nlen >= CsonSessionNameLe > then store
5962
+ the int value direcaul
5963
+o 200
--- a/src/cson_amalgamation.c
+++ b/src/cson_amalgamation.c
@@ -0,0 +1,5963 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/cson_amalgamation.c
+++ b/src/cson_amalgamation.c
@@ -0,0 +1,5963 @@
1 aul
2 o 2008-05-20 * C2
3 MODE_KEY = 3, break;
4 /* LICENSE
5
6 CopyCENSE
7
8 Copy
9
10
11
12
13
14 pack.c */
15 #V)->value)m/* FIXME: if sizeof(void*) > then store
16 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
17 use
18 the defaul
19 o 2008-05-20 * C2
20 MODE_KEY = 3, break;
21 /* LICENSE
22
23 CopyCENSE
24
25 Copy
26
27
28
29
30
31 pack.c */
32 if( use
33 the clone_shared(ul
34 o 2008-05-20 2008-05-20 * sharedshared use
35 ('0'<=*arg) && ('9'>=*arg)){ use
36 the def use
37 the defaul
38 o 2008-05-20 * C2
39 MODE_KEY = 3, break;
40 /* LICENSE
41
42 CopyCENSE
43
44 Copy
45
46 use
47 }
48
49 use
50 the defaul
51 o 2008-05-20 * C2
52 MODE_KEY = 3, break;
53 /* LICENSE
54
55 CopyCENSE
56
57 Copy
58
59
60
61
62
63 pack.c */
64 ? cson_guess_arg_type(pos: use
65 the defaul
66 0 != (rc= use
67 the defaul
68 o 2008-05-20 * C2
69 MODE_KEY = 3, break;
70 /* LICENSE
71
72 CopyCENSE
73
74 Copy
75
76
77
78
79
80 pack.c */
81 defaul
82 o 2008-05-20 * C2
83 MODE_KEY = 3, break;
84 /* LICENSE
85
86 CopyCENSE
87
88 Copy
89
90
91
92
93
94 pack.c */
95 #V)->value)m/* FIXME: if sizeof(void*) > then store
96 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
97 use
98 the defaul
99 o 2008-05-20 * C2
100 MODE_KEY = 3, break;
101 /* LICENSE
102
103 CopyCENSE
104
105 Copy
106
107
108
109
110
111 pack.c */
112 if( use
113 the clone_shared(ul
114 o 2008-05-20 2008-05-20 * sharedshared use
115 ('0'<=*arg) && ('9'>=*arg)){ use
116 the def use
117 the defaul
118 o 2008-05-20 * C2
119 MODE_KEY = 3, break;
120 /* LICENSE
121
122 CopyCENSE
123
124 Copy
125
126 use
127 }
128
129 use
130 the defaul
131 o 2008-05-20 * C2
132 MODE_KEY = 3, break;
133 /* LICENSessi
134 /* LIaul
135 o 2008-05-20 MODE_KEY = 3, use
136 emcpy()aul
137 o 2008-05-20 e
138 MODE_KEY = 3, use
139 ;
140 p->c 0 == rc ) use
141 }ARRAY_END:( ch}/*
142 refcount the keys!: moved cson_value_new() and cson_value_set_xxx() out of
143 MODE_KEY = 3aul
144 o 2008-05-20 * C2
145 MODE_KEY = 3, break;
146 /* LICENSE
147
148 CopyCENSE
149
150 Copy
151
152
153
154
155
156 pack.c */
157 #V)->value)m/* FIXME: if sizeof(void*) > then store
158 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
159 use
160 the defaul
161 o 2008-05-20 * C2
162 MODE_KEY = 3, break;
163 /* LICENSE
164
165 CopyCENSE
166
167 Copy
168
169
170
171
172
173 a) They can be easily mis-used to cause memory leaks, even when used in
174 a manner which seems relatively intuitive.
175
176 b) Having them in the API prohibits us from eventually doing certain
177 allocation optimizations like not allocating Booleans,
178 Integer/Doubles with the value 0, or empty Strings. The main problem
179 is that cson_value_set_xxx() cannot be implemented properly if we
180 add that type of optimization.
181 */P@EpP,2x:value with the "undefined" value and transfers
182 ownership of it to the caller. Use The cson_value_set_xxx() family
183 of functions to assign a typed value to it. It must eventually be
184 W@Gt~,Z@GuY,1:
185 J@aul,1:)4c@H0X,1X:);
186 /**
187 Cleans any existing contents of val and sets its new value
188 to the special NULL valueR@NQi,A:
189
190 */
191 #if 0H@R6l,E:value_set_nullM@DjD,1G:#endif
192 /**
193 Cleans any existing contents of val and sets its new value
194 to vR@NQi,A:
195
196 */
197 #if 0H@R6l,1x:value_set_bool( cson_value * val, char v );
198 #endif
199 /**
200 Cleans any existing contents of val and sets its new value
201 to vR@NQi,1:
202 K@TVj,9:value_setL@Je0,1W:* val, cson_int_t v );
203 /**
204 Cleans any existing contents of val and sets its new value
205 to vR@NQi,K@TVj,7:value_sM@KDS,6:* val,I@LDz,2b:;
206
207 /**
208 Cleans any existing contents of val and sets its new value to
209 str. On success, ownership of str is passed on to val. On error
210 ownership is not changedR@NQi,h:
211
212 If str is NULL, (!*str), or (!len) thenN@C3e,i:
213 allocate any memory for a new string, andI@KEW,N:string()
214 will returnG@RN0,S: as opposed to a NULL stringL@abW,8:value_seL@T1T,6:* val,a@LIU,2:;
215 U@HBG,P@H~G,R@HXc,H@H7G,K:,"cson_value_new");
216 H@Jb0,M@HyW,Q0@H_h,O@C4G,7:integerL@C4i,n:
217 {
218 if( self )
219 {
220 #if !CSON_VOID_PTR_IS_BIG
221 I@ICV,O:self->value,"cson_int_t"I@_KF,_:*self = cson_value_empty;
222 }
223 I@R6k,9:value_setL@Je0,6:* val,Q@L9W,5:! valg@VJl,O:#if CSON_VOID_PTR_IS_BIGK@_g~,5:cleanH@Idk,3:valI@HZ~,W:v;
224 #else
225 cson_int_t * ivH@IDW,G:iv = (cson_int_tQ@KbM,K:int_t), "cson_int_t"H@akl,1:iK@LZl,J@PD0,B@Ht~,5:cleanH@Idk,7:*iv = vA@Hyl,F:val->value = ivH@_KG,A:val->api =H@Cll,7:integerT@DxG,G@S_l,7:value_sM@KDS,6:* val,T@LDz,5:! valo@VJl,I:cson_double_t * rvH@IDW,B@Ht~,5:cleanH@Idk,A:val->api =H@Cll,S:double;
226 if( 0.0 != vP@URW,17:/*
227 sessmgr_reg cson_sessmgr_reg;
228 /**
229 Holds name-to-factory mappings for cson_sessmgr implementations.
230 */
231 struct cson_sessmgr_reg
232 {
233 char name[CsonSessionNameLen];
234 cson_sessmgr_factory_f factory;
235 };
236
237
238 #if !CSON_ENABLE_CPDO
239 int cson_sessmgr_cpdo( cson_sessmgr ** tgt,ptrc.UnsupportedError;
240 }
241 #endif
242 #if !CSON_ENABLE_WHIO
243 int cson_sessmgr_whio_ht( cson_sessmgr ** tgt,ptrc.UnsupportedError;
244 }
245 int cson_sessmgr_whio_epfs( cson_sessmgr ** tgt,ptrc.UnsupportedError;
246 }
247 #endif
248
249 /**
250 Holds the list of registered cson_sessmgr implementations. Used by
251 cson_sessmgr_register(), cson_sessmgr_load(), and
252 cson_sessmgr_names().
253
254 Maintenance reminder: the API docs promise that at least 10 slots
255 are initially availableessmgr_reg CsonSessionReg[] = {
256 {{'f','i','l','e',0},cson_sessmgr_file},
257 #if CSON_ENABLE_CPDO
258 {{'c','p','d','o',0},cson_sessmgr_cpdo},
259 #endif
260 #if CSON_ENABLE_WHIO
261 {{'w','h','i','o','_','h','t',0},cson_sessmgr_whio_ht},
262 {{'w','h','i','o','_','e','p','f','s',0},cson_sessmgr_whio_epfs},
263 #endif
264 #define REG {{0},NULL}
265 REG,REG,REG,REG,REG,
266 REG,aul
267 o 2008-05-20 * C2
268 MODE_KEY = 3, break;
269 /* LICENSE
270
271 CopyCENSE
272
273 Copy
274
275
276
277
278
279 pack.c */
280 #V)->value)m/* FIXME: if sizeof(void*) > then store
281 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
282 use
283 the defaul
284 o 2008-05-20 * C2
285 MODE_KEY = 3, break;
286 /* LICENSE
287
288 CopyCENSE
289
290 Copy
291
292
293
294
295
296 pack.c */
297 if( use
298 the clone_shared(ul
299 o 2008-05-20 2008-05-20 * sharedshared use
300 ('0'<=*arg) && ('9'>=*arg)){ use
301 the def use
302 the defaul
303 o 2008-05-20 * C2
304 MODE_KEY = 3, break;
305 /* LICENSE
306
307 CopyCENSE
308
309 Copy
310
311 use
312 }
313
314 use
315 the defaul
316 o 2008-05-20 * C2
317 MODE_KEY = 3, break;
318 /* LICENSE
319
320 CopyCENSE
321
322 Copy
323
324
325
326
327
328 pack.c */
329 ? cson_guess_arg_type(pos: use
330 the defaul
331 0 != (rc= use
332 the defaul
333 o 2008-05-20 * C2
334 MODE_KEY = 3, break;
335 /* LICENSE
336
337 CopyCENSE
338
339 Copy
340
341
342
343
344
345 pack.c */
346 defaul
347 o 2008-05-20 * C2
348 MODE_KEY = 3, break;
349 /* LICENSE
350
351 CopyCENSE
352
353 Copy
354
355
356
357
358
359 pack.c */
360 #V)->value)m/* FIXME: if sizeof(void*) > then store
361 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
362 use
363 the defaul
364 o 2008-05-20 * C2
365 MODE_KEY = 3, break;
366 /* LICENSE
367
368 CopyCENSE
369
370 Copy
371
372
373
374
375
376 pack.c */
377 if( use
378 the clone_shared(ul
379 o 2008-05-20 2008-05-20 * sharedshared use
380 ('0'<=*arg) && ('9'>=*arg)){ use
381 the def use
382 the defaul
383 o 2008-05-20 * C2
384 MODE_KEY = 3, break;
385 /* LICENSE
386
387 CopyCENSE
388
389 Copy
390
391 use
392 }
393
394 use
395 the defaul
396 o 2008-05-20 * C2
397 MODE_KEY = 3, break;
398 /* LICENSE
399
400 CopyCENSE
401
402 Copy
403
404
405
406
407
408 pack.c */
409 ? cson_guess_arg_type(pos: use
410 the defaul
411 0 != (rc= use
412 the defaul
413 o 2008-05-20 * C2
414 MODE_KEY = 3, break;
415 /* LICENSE
416
417 CopyCENSE
418
419 Copy
420
421
422
423
424
425 pack.c */
426 0_guess_arg_type(pos: use
427 t use
428 MODE_KEY = 3, use
429 ;
430 p->c 0 == rc ) use
431 }ARRAY_END:( ch}/*
432 refcount the keys! We first need a setter which takes
433 8@JnB,b:a cson_string or cson_value key type.
434 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
435 # pop ) ownership of it to the
436 caller. It must eventually be destroyed, by the caller or its
437 owning or transfering
438
439 void/**
440 This special-case impl is needed because the underlying
441 (generic) list operations do not know how to populate
442 new entries
443 */ use
444 the =*arg)){ use
445 the def use
446 the defaul
447 o 2008-05-20 * C2
448 MODE_KEY = 3, break;
449 /* LICENSE
450
451 CopyCENSE
452
453 Copy
454
455 use
456 }
457
458 use
459 the defaul
460 o 2008-05-20 * C2
461 MODE_KEY = 3, break;
462 /* LICENSE
463
464 CopyCENSE
465
466 Copy
467
468
469
470
471
472 pack.c */
473 ? cson_guess_arg_type(pos: use
474 the defaul
475 0 != (rc= use
476 the defaul
477 o 2008-05-20 * C2
478 MODE_KEY = 3, break;
479 /* LICENSE
480
481 CopyCENSE
482
483 Copy
484
485
486
487
488
489 pack.c */
490 0_guess_arg_type(pos: use
491 t use
492 MODE_KEY = 3, use
493 ;
494 p->c 0 == rc ) use
495 }Aary use
496 the the defaul
497 o 2008-05-20 * C2
498 MODE_KEY = 3, break;
499 /* LICENSE
500
501 CopyCENSE
502
503 Copy
504
505
506
507
508
509 pack.c */
510 #V)->value)m/* FIXME: if sizeof(void*) > then store
511 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
512 use
513 the defaul
514 o 2008-05-20 * C2
515 MODE_KEY = 3, break;
516 /* LICENSE
517
518 CopyCENSE
519
520 Copy
521
522
523
524
525
526 pack.c */
527 if( use
528 the clone_shared(ul
529 o 2008-05-20 2008-05-20 * sharedshared use
530 ('0'<=*arg) && ('9'>=*arg)){ use
531 the def use
532 the defaul
533 o 2008-05-20 * C2
534 MODE_KEY = 3, break;
535 /* LICENSE
536
537 CopyCENSE
538
539 Copy
540
541 use
542 }
543
544 use
545 the defaul
546 o 2008-05-20 * C2
547 MODE_KEY = 3, break;
548 /* LICENSE
549
550 CopyCENSE
551
552 Copy
553
554
555
556
557
558 pack.c */
559 ? cson_guess_arg_type(pos: use
560 the defaul
561 0 != (rc= use
562 the defaul
563 o 2008-05-20 * C2
564 MODE_KEY = 3, break;
565 /* LICENSE
566
567 CopyCENSE
568
569 Copy
570
571
572
573
574
575 pack.c */
576 defaul
577 o 2008-05-20 * C2
578 MODE_KEY = 3, break;
579 /* LICENSE
580
581 CopyCENSE
582
583 Copy
584
585
586
587
588
589 pack.c */
590 #V)->value)m/* FIXME: if sizeof(void*) > then store
591 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
592 use
593 the defaul
594 o 2008-05-20 * C2
595 MODE_KEY = 3, break;
596 /* LICENSE
597
598 CopyCENSE
599
600 Copy
601
602
603
604
605
606 pack.c */
607 if( use
608 the clone_shared(ul
609 o 2008-05-20 2008-05-20 * sharedshared use
610 ('0'<=*arg) && ('9'>=*arg)){ use
611 the def use
612 the defaul
613 o 2008-05-20 * C2
614 MODE_KEY = 3, break;
615 /* LICENSE
616
617 CopyCENSE
618
619 Copy
620
621 use
622 }
623
624 use
625 the defaul
626 o 2008-05-20 * C2
627 MODE_KEY = 3, break;
628 /* LICENSE
629
630 CopyCENSE
631
632 Copy
633
634
635
636
637
638 pack.c */
639 ? cson_guess_arg_type(pos: use
640 the defaul
641 0 != (rc= use
642 the defaul
643 o 2008-05-20 * C2
644 MODE_KEY = 3, break;
645 /* LICENSE
646
647 CopyCENSE
648
649 Copy
650
651
652
653
654
655 pack.c */
656 0_guess_arg_type(pos: use
657 t use
658 MODE_KEY = 3, use
659 ;
660 p->c 0 == rc ) use
661 }ARRAY_END:( ch}/*
662 refcount the keys! We first need a setter which takes
663 8@JnB,b:a cson_string or cson_value key type.
664 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
665 # pop ) ownership of it to the
666 caller. It must eventually be destroyed, by the caller or its
667 owning or transfering
668
669 void/**
670 This special-case impl is needed because the underlying
671 (generic) list operations do not know how to populate
672 new entries
673 */ use
674 the =*arg)){ use
675 the def use
676 the defaul
677 o 2008-05-20 * C2
678 MODE_KEY = 3, break;
679 /* LICENSE
680
681 CopyCENSE
682
683 Copy
684
685 use
686 }
687
688 use
689 the defaul
690 o 2008-05-20 * C2
691 MODE_KEY = 3, break;
692 /* LICENSE
693
694 CopyCENSE
695
696 Copy
697
698
699
700
701
702 pack.c */
703 ? cson_guess_arg_type(pos: use
704 the defaul
705 0 != (rc= use
706 the defaul
707 o 2008-05-20 * C2
708 MODE_KEY = 3, break;
709 /* LICENSE
710
711 CopyCENSE
712
713 Copy
714
715
716
717
718
719 pack.c */
720 0_guess_arg_type(pos: use
721 t use
722 MODE_KEY = 3, use
723 ;
724 p->c 0 == rc ) use
725 }Aarye
726 }
727
728 use
729 the defaul
730 o 2008-05-20 * C2
731 MODE_KEY = 3, break;
732 /* LICENSE
733
734 CopyCENSE
735
736 Copy
737
738
739
740
741
742 pack.c */
743 ? cson_guess_arg_type(pos: use
744 the defaul
745 0 != (rc= use
746 the defaul
747 o 2008-05-20 * C2
748 MODE_KEY = 3, break;
749 /* LICENSE
750
751 CopyCENSE
752
753 Copy
754
755
756
757
758
759 pack.c */
760 defaul
761 o 2008-05-20 * C2
762 MODE_KEY = 3, break;
763 /* LICENSE
764
765 CopyCENSE
766
767 Copy
768
769
770
771
772
773 pack.c */
774 #V)->value)m/* FIXME: if sizeof(void*) > then store
775 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
776 use
777 the defaul
778 o 2008-05-20 * C2
779 MODE_KEY = 3, break;
780 /* LICENSE
781
782 CopyCENSE
783
784 Copy
785
786
787
788
789
790 pack.c */
791 if( use
792 the clone_shared(ul
793 o 2008-05-20 2008-05-20 * sharedshared use
794 ('0'<=*arg) && ('9'>=*arg)){ use
795 the def use
796 the defaul
797 o 2008-05-20 * C2
798 MODE_KEY = 3, break;
799 /* LICENSE
800
801 CopyCENSE
802
803 Copy
804
805 use
806 }
807
808 use
809 the defaul
810 o 2008-05-20 * C2
811 MODE_KEY = 3, break;
812 /* LICENSE
813
814 CopyCENSE
815
816 Copy
817
818
819
820
821
822 pack.c */
823 ? cson_guess_arg_type(pos: use
824 the defaul
825 0 != (rc= use
826 the defaul
827 o 2008-05-20 * C2
828 MODE_KEY = 3, break;
829 /* LICENSE
830
831 CopyCENSE
832
833 Copy
834
835
836
837
838
839 pack.c */
840 0_guess_arg_type(pos: use
841 t use
842 MODE_KEY = 3, use
843 ;
844 p->c 0 == rc ) use
845 }ARRAY_END:( ch}/*
846 refcount the keys! We first need a setter which takes
847 8@JnB,b:a cson_string or cson_value key type.
848 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
849 # pop ) ownership of it to the
850 caller. It must eventually be destroyed, by the caller or its
851 owning or transfering
852
853 void/**
854 This special-case impl is needed because the underlying
855 (generic) list operations do not know how to populate
856 new entries
857 */ use
858 the =*arg)){ use
859 the def use
860 the defaul
861 o 2008-05-20 * C2
862 MODE_KEY = 3, break;
863 /* LICENSE
864
865 CopyCENSE
866
867 Copy
868
869 use
870 }
871
872 use
873 the defaul
874 o 2008-05-20 * C2
875 MODE_KEY = 3, break;
876 /* LICENSE
877
878 CopyCENSE
879
880 Copy
881
882
883
884
885
886 pack.c */
887 ? cson_guess_arg_type(pos: use
888 the defaul
889 0 != (rc= use
890 the defaul
891 o 2008-05-20 * C2
892 MODE_KEY = 3, break;
893 /* LICENSE
894
895 CopyCENSE
896
897 Copy
898
899
900
901
902
903 pack.c */
904 0_guess_arg_type(pos: use
905 t use
906 MODE_KEY = 3, use
907 ;
908 p->c 0 == rc ) use
909 }Aaryconst#iaul
910 o 2008-05-20 ;
911 /* LDE_KEY = 3, breaul
912 o 2008-05-20 * C2
913 MODE_KEY = 3, break;
914 /* LICENSE
915
916 CopyCENSE
917
918 Copy
919
920
921
922
923
924 pack.c */
925 #V)->value)m/* FIXME: if sizeof(void*) > then store
926 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
927 use
928 the defaul
929 o 2008-05-20 * C2
930 MODE_KEY = 3, break;
931 /* LICENSE
932
933 CopyCENSE
934
935 Copy
936
937
938
939
940
941 pack.c */
942 if( use
943 the clone_shared(ul
944 o 2008-05-20 2008-05-20 * sharedshared use
945 ('0'<=*arg) && ('9'>=*arg)){ use
946 the def use
947 the defaul
948 o 2008-05-20 * C2
949 MODE_KEY = 3, break;
950 /* LICENSE
951
952 CopyCENSE
953
954 Copy
955
956 use
957 }
958
959 use
960 the defaul
961 o 2008-05-20 * C2
962 MODE_KEY = 3, break;
963 /* LICENSE
964
965 CopyCENSE
966
967 Copy
968
969
970
971
972
973 pack.c */
974 ? cson_guess_arg_type(pos: use
975 the defaul
976 0 != (rc= use
977 the defaul
978 o 2008-05-20 * C2
979 MODE_KEY = 3, break;
980 /* LICENSE
981
982 CopyCENSE
983
984 Copy
985
986
987
988
989
990 pack.c */
991 defaul
992 o 2008-05-20 * C2
993 MODE_KEY = 3, break;
994 /* LICENSE
995
996 CopyCENSE
997
998 Copy
999
1000
1001
1002
1003
1004 pack.c */
1005 #V)->value)m/* FIXME: if sizeof(void*) > then store
1006 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1007 use
1008 the defaul
1009 o 2008-05-20 * C2
1010 MODE_KEY = 3, break;
1011 /* LICENSE
1012
1013 CopyCENSE
1014
1015 Copy
1016
1017
1018
1019
1020
1021 pack.c */
1022 if( use
1023 the clone_shared(ul
1024 o 2008-05-20 2008-05-20 * sharedshared use
1025 ('0'<=*arg) && ('9'>=*arg)){ use
1026 the def use
1027 the defaul
1028 o 2008-05-20 * C2
1029 MODE_KEY = 3, break;
1030 /* LICENSE
1031
1032 CopyCENSE
1033
1034 Copy
1035
1036 use
1037 }
1038
1039 use
1040 the defaul
1041 o 2008-05-20 * C2
1042 MODE_KEY = 3, break;
1043 /* LICENSE
1044
1045 CopyCENSE
1046
1047 Copy
1048
1049
1050
1051
1052
1053 pack.c */
1054 ? cson_guess_arg_type(pos: use
1055 the defaul
1056 0 != (rc= use
1057 the defaul
1058 o 2008-05-20 * C2
1059 MODE_KEY = 3, break;
1060 /* LICENSE
1061
1062 CopyCENSE
1063
1064 Copy
1065
1066
1067
1068
1069
1070 pack.c */
1071 0_guess_arg_type(pos: use
1072 t use
1073 MODE_KEY = 3, use
1074 ;
1075 p->c 0 == rc ) use
1076 }ARRAY_END:( ch}/*
1077 refcount the keys! We first need a setter which takes
1078 8@JnB,b:a cson_string or cson_value key type.
1079 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1080 # pop ) ownership of it to the
1081 caller. It must eventually be destroyed, by the caller or its
1082 owning or transfering
1083
1084 void/**
1085 This special-case impl is needed because the underlying
1086 (generic) list operations do not know how to populate
1087 new entries
1088 */ use
1089 the =*arg)){ use
1090 the def use
1091 the defaul
1092 o 2008-05-20 * C2
1093 MODE_KEY = 3, break;
1094 /* LICENSE
1095
1096 CopyCENSE
1097
1098 Copy
1099
1100 use
1101 }
1102
1103 use
1104 the defaul
1105 o 2008-05-20 * C2
1106 MODE_KEY = 3, break;
1107 /* LICENSE
1108
1109 CopyCENSE
1110
1111 Copy
1112
1113
1114
1115
1116
1117 pack.c */
1118 ? cson_guess_arg_type(pos: use
1119 the defaul
1120 0 != (rc= use
1121 the defaul
1122 o 2008-05-20 * C2
1123 MODE_KEY = 3, break;
1124 /* LICENSE
1125
1126 CopyCENSE
1127
1128 Copy
1129
1130
1131
1132
1133
1134 pack.c */
1135 0_guess_arg_type(pos: use
1136 t use
1137 MODE_KEY = 3, use
1138 ;
1139 p->c 0 == rc ) use
1140 }Aary use
1141 the the defaul
1142 o 2008-05-20 * C2
1143 MODE_KEY = 3, break;
1144 /* LICENSE
1145
1146 CopyCENSE
1147
1148 Copy
1149
1150
1151
1152
1153
1154 pack.c */
1155 #V)->value)m/* FIXME: if sizeof(void*) > then store
1156 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1157 use
1158 the defaul
1159 o 2008-05-20 * C2
1160 MODE_KEY = 3, break;
1161 /* LICENSE
1162
1163 CopyCENSE
1164
1165 Copy
1166
1167
1168
1169
1170
1171 pack.c */
1172 if( use
1173 the clone_shared(ul
1174 o 2008-05-20 2008-05-20 * sharedshared use
1175 ('0'<=*arg) && ('9'>=*arg)){ use
1176 the def use
1177 the defaul
1178 o 2008-05-20 * C2
1179 MODE_KEY = 3, break;
1180 /* LICENSE
1181
1182 CopyCENSE
1183
1184 Copy
1185
1186 use
1187 }
1188
1189 use
1190 the defaul
1191 o 2008-05-20 * C2
1192 MODE_KEY = 3, break;
1193 /* LICENSE
1194
1195 CopyCENSE
1196
1197 Copy
1198
1199
1200
1201
1202
1203 pack.c */
1204 ? cson_guess_arg_type(pos: use
1205 the defaul
1206 0 != (rc= use
1207 the defaul
1208 o 2008-05-20 * C2
1209 MODE_KEY = 3, break;
1210 /* LICENSE
1211
1212 CopyCENSE
1213
1214 Copy
1215
1216
1217
1218
1219
1220 pack.c */
1221 defaul
1222 o 2008-05-20 * C2
1223 MODE_KEY = 3, break;
1224 /* LICENSE
1225
1226 CopyCENSE
1227
1228 Copy
1229
1230
1231
1232
1233
1234 pack.c */
1235 #V)->value)m/* FIXME: if sizeof(void*) > then store
1236 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1237 use
1238 the defaul
1239 o 2008-05-20 * C2
1240 MODE_KEY = 3, break;
1241 /* LICENSE
1242
1243 CopyCENSE
1244
1245 Copy
1246
1247
1248
1249
1250
1251 pack.c */
1252 if( use
1253 the clone_shared(ul
1254 o 2008-05-20 2008-05-20 * sharedshared use
1255 ('0'<=*arg) && ('9'>=*arg)){ use
1256 the def use
1257 the defaul
1258 o 2008-05-20 * C2
1259 MODE_KEY = 3, break;
1260 /* LICENSE
1261
1262 CopyCENSE
1263
1264 Copy
1265
1266 use
1267 }
1268
1269 use
1270 the defaul
1271 o 2008-05-20 * C2
1272 MODE_KEY = 3, break;
1273 /* LICENSE
1274
1275 CopyCENSE
1276
1277 Copy
1278
1279
1280
1281
1282
1283 pack.c */
1284 ? cson_guess_arg_type(pos: use
1285 the defaul
1286 0 != (rc= use
1287 the defaul
1288 o 2008-05-20 * C2
1289 MODE_KEY = 3, break;
1290 /* LICENSE
1291
1292 CopyCENSE
1293
1294 Copy
1295
1296
1297
1298
1299
1300 pack.c */
1301 0_guess_arg_type(pos: use
1302 t use
1303 MODE_KEY = 3, use
1304 ;
1305 p->c 0 == rc ) use
1306 }ARRAY_END:( ch}/*
1307 refcount the keys! We first need a setter which takes
1308 8@JnB,b:a cson_string or cson_value key type.
1309 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1310 # pop ) ownership of it to the
1311 caller. It must eventually be destroyed, by the caller or its
1312 owning or transfering
1313
1314 void/**
1315 This special-case impl is needed because the underlying
1316 (generic) list operations do not know how to populate
1317 new entries
1318 */ use
1319 the =*arg)){ use
1320 the def use
1321 the defaul
1322 o 2008-05-20 * C2
1323 MODE_KEY = 3, break;
1324 /* LICENSE
1325
1326 CopyCENSE
1327
1328 Copy
1329
1330 use
1331 }
1332
1333 use
1334 the defaul
1335 o 2008-05-20 * C2
1336 MODE_KEY = 3, break;
1337 /* LICENSE
1338
1339 CopyCENSE
1340
1341 Copy
1342
1343
1344
1345
1346
1347 pack.c */
1348 ? cson_guess_arg_type(pos: use
1349 the defaul
1350 0 != (rc= use
1351 the defaul
1352 o 2008-05-20 * C2
1353 MODE_KEY = 3, break;
1354 /* LICENSE
1355
1356 CopyCENSE
1357
1358 Copy
1359
1360
1361
1362
1363
1364 pack.c */
1365 0_guess_arg_type(pos: use
1366 t use
1367 MODE_KEY = 3, use
1368 ;
1369 p->c 0 == rc ) use
1370 }Aarye
1371 }
1372
1373 use
1374 the defaul
1375 o 2008-05-20 * C2
1376 MODE_KEY = 3, break;
1377 /* LICENSE
1378
1379 CopyCENSE
1380
1381 Copy
1382
1383
1384
1385
1386
1387 pack.c */
1388 ? cson_guess_arg_type(pos: use
1389 the defaul
1390 0 != (rc= use
1391 the defaul
1392 o 2008-05-20 * C2
1393 MODE_KEY = 3, break;
1394 /* LICENSE
1395
1396 CopyCENSE
1397
1398 Copy
1399
1400
1401
1402
1403
1404 pack.c */
1405 defaul
1406 o 2008-05-20 * C2
1407 MODE_KEY = 3, break;
1408 /* LICENSE
1409
1410 CopyCENSE
1411
1412 Copy
1413
1414
1415
1416
1417
1418 pack.c */
1419 #V)->value)m/* FIXME: if sizeof(void*) > then store
1420 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1421 use
1422 the defaul
1423 o 2008-05-20 * C2
1424 MODE_KEY = 3, break;
1425 /* LICENSE
1426
1427 CopyCENSE
1428
1429 Copy
1430
1431
1432
1433
1434
1435 pack.c */
1436 if( use
1437 the clone_shared(ul
1438 o 2008-05-20 2008-05-20 * sharedshared use
1439 ('0'<=*arg) && ('9'>=*arg)){ use
1440 the def use
1441 the defaul
1442 o 2008-05-20 * C2
1443 MODE_KEY = 3, break;
1444 /* LICENSE
1445
1446 CopyCENSE
1447
1448 Copy
1449
1450 use
1451 }
1452
1453 use
1454 the defaul
1455 o 2008-05-20 * C2
1456 MODE_KEY = 3, break;
1457 /* LICENSE
1458
1459 CopyCENSE
1460
1461 Copy
1462
1463
1464
1465
1466
1467 pack.c */
1468 ? cson_guess_arg_type(pos: use
1469 the defaul
1470 0 != (rc= use
1471 the defaul
1472 o 2008-05-20 * C2
1473 MODE_KEY = 3, break;
1474 /* LICENSE
1475
1476 CopyCENSE
1477
1478 Copy
1479
1480
1481
1482
1483
1484 pack.c */
1485 0_guess_arg_type(pos: use
1486 t use
1487 MODE_KEY = 3, use
1488 ;
1489 p->c 0 == rc ) use
1490 }ARRAY_END:( ch}/*
1491 refcount the keys! We first need a setter which takes
1492 8@JnB,b:a cson_string or cson_value key type.
1493 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1494 # pop ) ownership of it to the
1495 caller. It must eventually be destroyed, by the caller or its
1496 owning or transfering
1497
1498 void/**
1499 This special-case impl is needed because the underlying
1500 (generic) list operations do not know how to populate
1501 new entries
1502 */ use
1503 the =*arg)){ use
1504 the def use
1505 the defaul
1506 o 2008-05-20 * C2
1507 MODE_KEY = 3, break;
1508 /* LICENSE
1509
1510 CopyCENSE
1511
1512 Copy
1513
1514 use
1515 }
1516
1517 use
1518 the defaul
1519 o 20aul
1520 o 2008-05-20 * C2
1521 MODE_KEY = 3, break;
1522 /* LICENSE
1523
1524 CopyCENSE
1525
1526 Copy
1527
1528
1529
1530
1531
1532 pack.c */
1533 #V)->value)m/* FIXME: if sizeof(void*) > then store
1534 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1535 use
1536 the defaul
1537 o 2008-05-20 * C2
1538 MODE_KEY = 3, break;
1539 /* LICENSE
1540
1541 CopyCENSE
1542
1543 Copy
1544
1545
1546
1547
1548
1549 pack.c */
1550 if( use
1551 the clone_shared(ul
1552 o 2008-05-20 2008-05-20 * sharedshared use
1553 ('0'<=*arg) && ('9'>=*arg)){ use
1554 the def use
1555 the defaul
1556 o 2008-05-20 * C2
1557 MODE_KEY = 3, break;
1558 /* LICENSE
1559
1560 CopyCENSE
1561
1562 Copy
1563
1564 use
1565 }
1566
1567 use
1568 the defaul
1569 o 2008-05-20 * C2
1570 MODE_KEY = 3, break;
1571 /* LICENSE
1572
1573 CopyCENSE
1574
1575 Copy
1576
1577
1578
1579
1580
1581 pack.c */
1582 ? cson_guess_arg_type(pos: use
1583 the defaul
1584 0 != (rc= use
1585 the defaul
1586 o 2008-05-20 * C2
1587 MODE_KEY = 3, break;
1588 /* LICENSE
1589
1590 CopyCENSE
1591
1592 Copy
1593
1594
1595
1596
1597
1598 pack.c */
1599 defaul
1600 o 2008-05-20 * C2
1601 MODE_KEY = 3, break;
1602 /* LICENSE
1603
1604 CopyCENSE
1605
1606 Copy
1607
1608
1609
1610
1611
1612 pack.c */
1613 #V)->value)m/* FIXME: if sizeof(void*) > then store
1614 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1615 use
1616 the defaul
1617 o 2008-05-20 * C2
1618 MODE_KEY = 3, break;
1619 /* LICENSE
1620
1621 CopyCENSE
1622
1623 Copy
1624
1625
1626
1627
1628
1629 pack.c */
1630 if( use
1631 the clone_shared(ul
1632 o 2008-05-20 2008-05-20 * sharedshared use
1633 ('0'<=*arg) && ('9'>=*arg)){ use
1634 the def use
1635 the defaul
1636 o 2008-05-20 * C2
1637 MODE_KEY = 3, break;
1638 /* LICENSE
1639
1640 CopyCENSE
1641
1642 Copy
1643
1644 use
1645 }
1646
1647 use
1648 the defaul
1649 o 2008-05-20 * C2
1650 MODE_KEY = 3, break;
1651 /* LICENSE
1652
1653 CopyCENSE
1654
1655 Copy
1656
1657
1658
1659
1660
1661 pack.c */
1662 ? cson_guess_arg_type(pos: use
1663 the defaul
1664 0 != (rc= use
1665 the defaul
1666 o 2008-05-20 * C2
1667 MODE_KEY = 3, break;
1668 /* LICENSE
1669
1670 CopyCENSE
1671
1672 Copy
1673
1674
1675
1676
1677
1678 pack.c */
1679 0_guess_arg_type(pos: use
1680 t use
1681 MODE_KEY = 3, use
1682 ;
1683 p->c 0 == rc ) use
1684 }ARRAY_END:( ch}/*
1685 refcount the keys! We first need a setter which takes
1686 8@JnB,b:a cson_string or cson_value key type.
1687 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1688 # pop ) ownership of it to the
1689 caller. It must eventually be destroyed, by the caller or its
1690 owning or transfering
1691
1692 void/**
1693 This special-case impl is needed because the underlying
1694 (generic) list operations do not know how to populate
1695 new entries
1696 */ use
1697 the =*arg)){ use
1698 the def use
1699 the defaul
1700 o 2008-05-20 * C2
1701 MODE_KEY = 3, break;
1702 /* LICENSE
1703
1704 CopyCENSE
1705
1706 Copy
1707
1708 use
1709 }
1710
1711 use
1712 the defaul
1713 o 2008-05-20 * C2
1714 MODE_KEY = 3, break;
1715 /* LICENSE
1716
1717 CopyCENSE
1718
1719 Copy
1720
1721
1722
1723
1724
1725 pack.c */
1726 ? cson_guess_arg_type(pos: use
1727 the defaul
1728 0 != (rc= use
1729 the defaul
1730 o 2008-05-20 * C2
1731 MODE_KEY = 3, break;
1732 /* LICENSE
1733
1734 CopyCENSE
1735
1736 Copy
1737
1738
1739
1740
1741
1742 pack.c */
1743 0_guess_arg_type(pos: use
1744 t use
1745 MODE_KEY = 3, use
1746 ;
1747 p->c 0 == rc ) use
1748 }Aary use
1749 the the defaul
1750 o 2008-05-20 * C2
1751 MODE_KEY = 3, break;
1752 /* LICENSE
1753
1754 CopyCENSE
1755
1756 Copy
1757
1758
1759
1760
1761
1762 pack.c */
1763 #V)->value)m/* FIXME: if sizeof(void*) > then store
1764 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1765 use
1766 the defaul
1767 o 2008-05-20 * C2
1768 MODE_KEY = 3, break;
1769 /* LICENSE
1770
1771 CopyCENSE
1772
1773 Copy
1774
1775
1776
1777
1778
1779 pack.c */
1780 if( use
1781 the clone_shared(ul
1782 o 2008-05-20 2008-05-20 * sharedshared use
1783 ('0'<=*arg) && ('9'>=*arg)){ use
1784 the def use
1785 the defaul
1786 o 2008-05-20 * C2
1787 MODE_KEY = 3, break;
1788 /* LICENSE
1789
1790 CopyCENSE
1791
1792 Copy
1793
1794 use
1795 }
1796
1797 use
1798 the defaul
1799 o 2008-05-20 * C2
1800 MODE_KEY = 3, break;
1801 /* LICENSE
1802
1803 CopyCENSE
1804
1805 Copy
1806
1807
1808
1809
1810
1811 pack.c */
1812 ? cson_guess_arg_type(pos: use
1813 the defaul
1814 0 != (rc= use
1815 the defaul
1816 o 2008-05-20 * C2
1817 MODE_KEY = 3, break;
1818 /* LICENSE
1819
1820 CopyCENSE
1821
1822 Copy
1823
1824
1825
1826
1827
1828 pack.c */
1829 defaul
1830 o 2008-05-20 * C2
1831 MODE_KEY = 3, break;
1832 /* LICENSE
1833
1834 CopyCENSE
1835
1836 Copy
1837
1838
1839
1840
1841
1842 pack.c */
1843 #V)->value)m/* FIXME: if sizeof(void*) > then store
1844 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
1845 use
1846 the defaul
1847 o 2008-05-20 * C2
1848 MODE_KEY = 3, break;
1849 /* LICENSE
1850
1851 CopyCENSE
1852
1853 Copy
1854
1855
1856
1857
1858
1859 pack.c */
1860 if( use
1861 the clone_shared(ul
1862 o 2008-05-20 2008-05-20 * sharedshared use
1863 ('0'<=*arg) && ('9'>=*arg)){ use
1864 the def use
1865 the defaul
1866 o 2008-05-20 * C2
1867 MODE_KEY = 3, break;
1868 /* LICENSE
1869
1870 CopyCENSE
1871
1872 Copy
1873
1874 use
1875 }
1876
1877 use
1878 the defaul
1879 o 2008-05-20 * C2
1880 MODE_KEY = 3, break;
1881 /* LICENSE
1882
1883 CopyCENSE
1884
1885 Copy
1886
1887
1888
1889
1890
1891 pack.c */
1892 ? cson_guess_arg_type(pos: use
1893 the defaul
1894 0 != (rc= use
1895 the defaul
1896 o 2008-05-20 * C2
1897 MODE_KEY = 3, break;
1898 /* LICENSE
1899
1900 CopyCENSE
1901
1902 Copy
1903
1904
1905
1906
1907
1908 pack.c */
1909 0_guess_arg_type(pos: use
1910 t use
1911 MODE_KEY = 3, use
1912 ;
1913 p->c 0 == rc ) use
1914 }ARRAY_END:( ch}/*
1915 refcount the keys! We first need a setter which takes
1916 8@JnB,b:a cson_string or cson_value key type.
1917 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
1918 # pop ) ownership of it to the
1919 caller. It must eventually be destroyed, by the caller or its
1920 owning or transfering
1921
1922 void/**
1923 This special-case impl is needed because the underlying
1924 (generic) list operations do not know how to populate
1925 new entries
1926 */ use
1927 the =*arg)){ use
1928 the def use
1929 the defaul
1930 o 2008-05-20 * C2
1931 MODE_KEY = 3, break;
1932 /* LICENSE
1933
1934 CopyCENSE
1935
1936 Copy
1937
1938 use
1939 }
1940
1941 use
1942 the defaul
1943 o 2008-05-20 * C2
1944 MODE_KEY = 3, break;
1945 /* LICENSE
1946
1947 CopyCENSE
1948
1949 Copy
1950
1951
1952
1953
1954
1955 pack.c */
1956 ? cson_guess_arg_type(pos: use
1957 the defaul
1958 0 != (rc= use
1959 the defaul
1960 o 2008-05-20 * C2
1961 MODE_KEY = 3, break;
1962 /* LICENSE
1963
1964 CopyCENSE
1965
1966 Copy
1967
1968
1969
1970
1971
1972 pack.c */
1973 0_guess_arg_type(pos: use
1974 t use
1975 MODE_KEY = 3, use
1976 ;
1977 p->c 0 == rc ) use
1978 }Aarye
1979 }
1980
1981 use
1982 the defaul
1983 o 2008-05-20 * C2
1984 MODE_KEY = 3, break;
1985 /* LICENSE
1986
1987 CopyCENSE
1988
1989 Copy
1990
1991
1992
1993
1994
1995 pack.c */
1996 ? cson_guess_arg_type(pos: use
1997 the defaul
1998 0 != (rc= use
1999 the defaul
2000 o 2008-05-20 * C2
2001 MODE_KEY = 3, break;
2002 /* LICENSE
2003
2004 CopyCENSE
2005
2006 Copy
2007
2008
2009
2010
2011
2012 pack.c */
2013 defaul
2014 o 2008-05-20 * C2
2015 MODE_KEY = 3, break;
2016 /* LICENSE
2017
2018 CopyCENSE
2019
2020 Copy
2021
2022
2023
2024
2025
2026 pack.c */
2027 #V)->value)m/* FIXME: if sizeof(void*) > then store
2028 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2029 use
2030 the defaul
2031 o 2008-05-20 * C2
2032 MODE_KEY = 3, break;
2033 /* LICENSE
2034
2035 CopyCENSE
2036
2037 Copy
2038
2039
2040
2041
2042
2043 pack.c */
2044 if( use
2045 the clone_shared(ul
2046 o 2008-05-20 2008-05-20 * sharedshared use
2047 ('0'<=*arg) && ('9'>=*arg)){ use
2048 the def use
2049 the defaul
2050 o 2008-05-20 * C2
2051 MODE_KEY = 3, break;
2052 /* LICENSE
2053
2054 CopyCENSE
2055
2056 Copy
2057
2058 use
2059 }
2060
2061 use
2062 the defaul
2063 o 2008-05-20 * C2
2064 MODE_KEY = 3, break;
2065 /* LICENSE
2066
2067 CopyCENSE
2068
2069 Copy
2070
2071
2072
2073
2074
2075 pack.c */
2076 ? cson_guess_arg_type(pos: use
2077 the defaul
2078 0 != (rc= use
2079 the defaul
2080 o 2008-05-20 * C2
2081 MODE_KEY = 3, break;
2082 /* LICENSE
2083
2084 CopyCENSE
2085
2086 Copy
2087
2088
2089
2090
2091
2092 pack.c */
2093 0_guess_arg_type(pos: use
2094 t use
2095 MODE_KEY = 3, use
2096 ;
2097 p->c 0 == rc ) use
2098 }ARRAY_END:( ch}/*
2099 refcount the keys! We first need a setter which takes
2100 8@JnB,b:a cson_string or cson_value key type.
2101 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2102 # pop ) ownership of it to the
2103 caller. It must eventually be destroyed, by the caller or its
2104 owning or transfering
2105
2106 void/**
2107 This special-case impl is needed because the underlying
2108 (generic) list operations do not know how to populate
2109 new entries
2110 */ use
2111 the =*arg)){ use
2112 the def use
2113 the defaul
2114 o 2008-05-20 * C2
2115 MODE_KEY = 3, break;
2116 /* LICENSE
2117
2118 CopyCENSE
2119
2120 Copy
2121
2122 use
2123 }
2124
2125 use
2126 the defaul
2127 o 2008-05-20 * C2
2128 MODE_KEY = 3, break;
2129 /* LICENSE
2130
2131 CopyCENSE
2132
2133 Copy
2134
2135
2136
2137
2138
2139 pack.c */
2140 ? cson_guess_arg_type(pos: use
2141 the defaul
2142 0 != (rc= use
2143 the defaul
2144 o 2008-05-20 * C2
2145 MODE_KEY = 3, break;
2146 /* LICENSE
2147
2148 CopyCENSE
2149
2150 Copy
2151
2152
2153
2154
2155
2156 pack.c */
2157 0_guess_arg_type(pos: use
2158 t use
2159 MODE_KEY = 3, use
2160 ;
2161 p->c 0 == rc ) use
2162 }Aarye defaul
2163 o 2008-05-20 * C2
2164 MODE_KEY = 3, break;
2165 /* LICENSE
2166
2167 CopyCENSE
2168
2169 Copy
2170
2171 use
2172 }
2173
2174 use
2175 the defaul
2176 o 2008-05-20 * C2
2177 MODE_KEY = 3, break;
2178 /* LICENSE
2179
2180 CopyCENSE
2181
2182 Copy
2183
2184
2185
2186
2187
2188 pack.c */
2189 ? cson_guess_arg_type(pos: use
2190 the defaul
2191 0 != (rc= use
2192 the defaul
2193 o 2008-05-20 * C2
2194 MODE_KEY = 3, break;
2195 /* LICENSE
2196
2197 CopyCENSE
2198
2199 Copy
2200
2201
2202
2203
2204
2205 pack.c */
2206 defaul
2207 o 2008-05-20 * C2
2208 MODE_KEY = 3, break;
2209 /* LICENSE
2210
2211 CopyCENSE
2212
2213 Copy
2214
2215
2216
2217
2218
2219 pack.c */
2220 #V)->value)m/* FIXME: if sizeof(void*) > then store
2221 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2222 use
2223 the defaul
2224 o 2008-05-20 * C2
2225 MODE_KEY = 3, break;
2226 /* LICENSE
2227
2228 CopyCENSE
2229
2230 Copy
2231
2232
2233
2234
2235
2236 pack.c */
2237 if( use
2238 the clone_shared(ul
2239 o 2008-05-20 2008-05-20 * sharedshared use
2240 ('0'<=*arg) && ('9'>=*arg)){ use
2241 the def use
2242 the defaul
2243 o 2008-05-20 * C2
2244 MODE_KEY = 3, break;
2245 /* LICENSE
2246
2247 CopyCENSE
2248
2249 Copy
2250
2251 use
2252 }
2253
2254 use
2255 the defaul
2256 o 2008-05-20 * C2
2257 MODE_KEY = 3, break;
2258 /* LICENSE
2259
2260 CopyCENSE
2261
2262 Copy
2263
2264
2265
2266
2267
2268 pack.c */
2269 ? cson_guess_arg_type(pos: use
2270 the defaul
2271 0 != (rc= use
2272 the defaul
2273 o 2008-05-20 * C2
2274 MODE_KEY = 3, break;
2275 /* LICENSE
2276
2277 CopyCENSE
2278
2279 Copy
2280
2281
2282
2283
2284
2285 pack.c */
2286 0_guess_arg_type(pos: use
2287 t use
2288 MODE_KEY = 3, use
2289 ;
2290 p->c 0 == rc ) use
2291 }ARRAY_END:( ch}/*
2292 refcount the keys! We first need a setter which takes
2293 8@JnB,b:a cson_string or cson_value key type.
2294 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2295 # pop ) ownership of it to the
2296 caller. It must eventually be destroyed, by the caller or its
2297 owning or transfering
2298
2299 void/**
2300 This special-case impl is needed because the underlying
2301 (generic) list operations do not know how to populate
2302 new entries
2303 */ use
2304 the =*arg)){ use
2305 the def use
2306 the defaul
2307 o 2008-05-20 * C2
2308 MODE_KEY = 3, break;
2309 /* LICENSE
2310
2311 CopyCENSE
2312
2313 Copy
2314
2315 use
2316 }
2317
2318 use
2319 the defaul
2320 o 2008-05-20 * C2
2321 MODE_KEY = 3, break;
2322 /* LICENSE
2323
2324 CopyCENSE
2325
2326 Copy
2327
2328
2329
2330
2331
2332 pack.c */
2333 ? cson_guess_arg_type(pos: use
2334 the defaul
2335 0 != (rc= use
2336 the defaul
2337 o 2008-05-20 * C2
2338 MODE_KEY = 3, break;
2339 /* LICENSE
2340
2341 CopyCENSE
2342
2343 Copy
2344
2345
2346
2347
2348
2349 pack.c */
2350 0_guess_arg_type(pos: use
2351 t use
2352 MODE_KEY = 3, use
2353 ;
2354 p->c 0 == rc ) use
2355 }Aary use
2356 the the defaul
2357 o 2008-05-20 * C2
2358 MODE_KEY = 3, break;
2359 /* LICENSE
2360
2361 CopyCENSE
2362
2363 Copy
2364
2365
2366
2367
2368
2369 pack.c */
2370 #V)->value)m/* FIXME: if sizeof(void*) > then store
2371 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2372 use
2373 the defaul
2374 o 2008-05-20 * C2
2375 MODE_KEY = 3, break;
2376 /* LICENSE
2377
2378 CopyCENSE
2379
2380 Copy
2381
2382
2383
2384
2385
2386 pack.c */
2387 if( use
2388 the clone_shared(ul
2389 o 2008-05-20 2008-05-20 * sharedshared use
2390 ('0'<=*arg) && ('9'>=*arg)){ use
2391 the def use
2392 the defaul
2393 o 2008-05-20 * C2
2394 MODE_KEY = 3, break;
2395 /* LICENSE
2396
2397 CopyCENSE
2398
2399 Copy
2400
2401 use
2402 }
2403
2404 use
2405 the defaul
2406 o 2008-05-20 * C2
2407 MODE_KEY = 3, break;
2408 /* LICENSE
2409
2410 CopyCENSE
2411
2412 Copy
2413
2414
2415
2416
2417
2418 pack.c */
2419 ? cson_guess_arg_type(pos: use
2420 the defaul
2421 0 != (rc= use
2422 the defaul
2423 o 2008-05-20 * C2
2424 MODE_KEY = 3, break;
2425 /* LICENSE
2426
2427 CopyCENSE
2428
2429 Copy
2430
2431
2432
2433
2434
2435 pack.c */
2436 defaul
2437 o 2008-05-20 * C2
2438 MODE_KEY = 3, break;
2439 /* LICENSE
2440
2441 CopyCENSE
2442
2443 Copy
2444
2445
2446
2447
2448
2449 pack.c */
2450 #V)->value)m/* FIXME: if sizeof(void*) > then store
2451 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2452 use
2453 the defaul
2454 o 2008-05-20 * C2
2455 MODE_KEY = 3, break;
2456 /* LICENSE
2457
2458 CopyCENSE
2459
2460 Copy
2461
2462
2463
2464
2465
2466 pack.c */
2467 if( use
2468 the clone_shared(ul
2469 o 2008-05-20 2008-05-20 * sharedshared use
2470 ('0'<=*arg) && ('9'>=*arg)){ use
2471 the def use
2472 the defaul
2473 o 2008-05-20 * C2
2474 MODE_KEY = 3, break;
2475 /* LICENSE
2476
2477 CopyCENSE
2478
2479 Copy
2480
2481 use
2482 }
2483
2484 use
2485 the defaul
2486 o 2008-05-20 * C2
2487 MODE_KEY = 3, break;
2488 /* LICENSE
2489
2490 CopyCENSE
2491
2492 Copy
2493
2494
2495
2496
2497
2498 pack.c */
2499 ? cson_guess_arg_type(pos: use
2500 the defaul
2501 0 != (rc= use
2502 the defaul
2503 o 2008-05-20 * C2
2504 MODE_KEY = 3, break;
2505 /* LICENSE
2506
2507 CopyCENSE
2508
2509 Copy
2510
2511
2512
2513
2514
2515 pack.c */
2516 0_guess_arg_type(pos: use
2517 t use
2518 MODE_KEY = 3, use
2519 ;
2520 p->c 0 == rc ) use
2521 }ARRAY_END:( ch}/*
2522 refcount the keys! We first need a setter which takes
2523 8@JnB,b:a cson_string or cson_value key type.
2524 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2525 # pop ) ownership of it to the
2526 caller. It must eventuallyntually be destroyed, by the caller or its
2527 owning or transfering
2528
2529 void/**
2530 This special-case impl is needed because the underlying
2531 (generic) list operations do not know how to populate
2532 new entries
2533 */ use
2534 the =*arg)){ use
2535 the C2
2536 MODE_KEY = 3, break;
2537 /* LICENSE
2538
2539 CopyCENSE
2540
2541 Copndif
2542 28lZAF; defined(_the defaul
2543 0 != (rc= use
2544 the defaul
2545 o 2008-05-20 * C2
2546 MODE_KEY = 3, break;
2547 /* LICENSE
2548
2549 CopyCENSE
2550
2551 Copy
2552
2553
2554
2555
2556
2557 pack.c */
2558 0_guess_arg_type(pos: use
2559 t use
2560 MODE_KEY = 3, use
2561 ;
2562 p->c 0 == rc ) use
2563 }Aarye
2564 }
2565
2566 use
2567 the defaul
2568 o 2008-05-20 * C2
2569 MODE_KEY = 3, break;
2570 /* LICENSE
2571
2572 CopyCENSE
2573
2574 Copy
2575
2576
2577
2578
2579
2580 pack.c */
2581 ? cson_guess_arg_type(pos: use
2582 the defaul
2583 0 != (rc= use
2584 the defaul
2585 o 2008-05-20 * C2
2586 MODE_KEY = 3, break;
2587 /* LICENSE
2588
2589 CopyCENSE
2590
2591 Copy
2592
2593
2594
2595
2596
2597 pack.c */
2598 defaul
2599 o 2008-05-20 * C2
2600 MODE_KEY = 3, break;
2601 /* LICENSE
2602
2603 CopyCENSE
2604
2605 Copy
2606
2607
2608
2609
2610
2611 pack.c */
2612 #V)->value)m/* FIXME: if sizeof(void*) > then store
2613 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2614 use
2615 the defaul
2616 o 2008-05-20 * C2
2617 MODE_KEY = 3, break;
2618 /* LICENSE
2619
2620 CopyCENSE
2621
2622 Copy
2623
2624
2625
2626
2627
2628 pack.c */
2629 if( use
2630 the clone_shared(ul
2631 o 2008-05-20 2008-05-20 * sharedshared use
2632 ('0'<=*arg) && ('9'>=*arg)){ use
2633 the def use
2634 the defaul
2635 o 2008-05-20 * C2
2636 MODE_KEY = 3, break;
2637 /* LICENSE
2638
2639 CopyCENSE
2640
2641 Copy
2642
2643 use
2644 }
2645
2646 use
2647 the defaul
2648 o 2008-05-20 * C2
2649 MODE_KEY = 3, break;
2650 /* LICENSE
2651
2652 CopyCENSE
2653
2654 Copy
2655
2656
2657
2658
2659
2660 pack.c */
2661 ? cson_guess_arg_type(pos: use
2662 the defaul
2663 0 != (rc= use
2664 the defaul
2665 o 2008-05-20 * C2
2666 MODE_KEY = 3, break;
2667 /* LICENSE
2668
2669 CopyCENSE
2670
2671 Copy
2672
2673
2674
2675
2676
2677 pack.c */
2678 0_guess_arg_type(pos: us#iflying
2679 (generic)unlink( fname );
2680 cson_guess_arg_type(pos: use
2681 the defaul
2682 0 != (rc= use
2683 the defaul
2684 o 2008-05-20 * C2
2685 MODE_KEY = 3, break;
2686 /* LICENSE
2687
2688 CopyCENSE
2689
2690 Copy
2691
2692
2693
2694
2695
2696 pack.c */
2697 defaul
2698 o 2008-05-20 * C2
2699 MODE_KEY = 3, break;
2700 /* LICENSE
2701
2702 CopyCENSE
2703
2704 Copy
2705
2706
2707
2708
2709
2710 pack.c */
2711 #V)->value)m/* FIXME: if sizeof(void*) > then store
2712 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2713 use
2714 the defaul
2715 o 2008-05-20 * C2
2716 MODE_KEY = 3, break;
2717 /* LICENSE
2718
2719 CopyCENSE
2720
2721 Copy
2722
2723
2724
2725
2726
2727 pack.c */
2728 if( use
2729 the clone_shared(ul
2730 o 2008-05-20 2008-05-20 * sharedshar#iflying
2731 (generic)
2732 rc = unlink( fname );
2733 #else
2734 # error "unlink not implemented for this platform."
2735
2736
2737
2738
2739 aul
2740 o 2008-05-20 * C2
2741 MODE_KEY = 3, break;
2742 /* LICENSE
2743
2744 CopyCENSE
2745
2746 Copy
2747
2748
2749
2750
2751
2752 pack.c */
2753 #V)->value)m/* FIXME: if sizeof(void*) > then store
2754 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2755 use
2756 the defaul
2757 o 2008-05-20 * C2
2758 MODE_KEY = 3, break;
2759 /* LICENSE
2760
2761 CopyCENSE
2762
2763 Copy
2764
2765
2766
2767
2768
2769 pack.c */
2770 if( use
2771 the clone_shared(ul
2772 o 2008-05-20 2008-05-20 * sharedshared use
2773 ('0'<=*arg) && ('9'>=*arg)){ use
2774 the def use
2775 the defaul
2776 o 2008-05-20 * C2
2777 MODE_KEY = 3, break;
2778 /* LICENSE
2779
2780 CopyCENSE
2781
2782 Copy
2783
2784 use
2785 }
2786
2787 use
2788 the defaul
2789 o 2008-05-20 * C2
2790 MODE_KEY = 3, break;
2791 /* LICENSE
2792
2793 CopyCENSE
2794
2795 Copy
2796
2797
2798
2799
2800
2801 pack.c */
2802 ? cson_guess_arg_type(pos: use
2803 the defaul
2804 0 != (rc= use
2805 the defaul
2806 o 2008-05-20 * C2
2807 MODE_KEY = 3, break;
2808 /* LICENSE
2809
2810 CopyCENSE
2811
2812 Copy
2813
2814
2815
2816
2817
2818 pack.c */
2819 defaul
2820 o 2008-05-20 * C2
2821 MODE_KEY = 3, break;
2822 /* LICENSE
2823
2824 CopyCENSE
2825
2826 Copy
2827
2828
2829
2830
2831
2832 pack.c */
2833 #V)->value)m/* FIXME: if sizeof(void*) > then store
2834 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2835 use
2836 the defaul
2837 o 2008-05-20 * C2
2838 MODE_KEY = 3, break;
2839 /* LICENSE
2840
2841 CopyCENSE
2842
2843 Copy
2844
2845
2846
2847
2848
2849 pack.c */
2850 if( use
2851 tC2
2852 MODE_KEY =s: use
2853 the defaul
2854 0 != (rc= use
2855 the defaul
2856 o 2008-05-20 * C2
2857 MODE_KEY = 3, break;
2858 /* LICENSE
2859
2860 CopyCENSE
2861
2862 Copy
2863
2864
2865
2866
2867
2868 pack.c */
2869 0_guess_arg_type(pos: use
2870 t use
2871 MODE_KEY = 3, use
2872 ;
2873 p->c 0 == rc ) use
2874 }ARRAY_END:( ch}/*
2875 refcount the keys! We first need a setter which takes
2876 8@JnB,b:a cson_string or cson_value key type.
2877 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
2878 # pop ) ownership of it to the
2879 caller. It must eventually be destroyed, by the caller or its
2880 owning or transfering
2881
2882 void/**
2883 This special-case impl is needed because the underlying
2884 (generic) list operations do not know how to populate
2885 new entries
2886 */ use
2887 the =*arg)){ use
2888 the def use
2889 the defaul
2890 o 2008-05-20 * C2
2891 MODE_KEY = 3, break;
2892 /* LICENSE
2893
2894 CopyCENSE
2895
2896 Copy
2897
2898 use
2899 }
2900
2901 use
2902 the defaul
2903 o 2008-05-20 freeintegerstringinteger
2904 MODE_KEY = 3aul
2905 o 2008-05-2free
2906 MODE_KEY = 3aul
2907 o 2008-05-2string
2908 MODE_KEY = 3aul
2909 o 2008-05-20 * C2
2910 MODE_KEY = 3, break;
2911 /* LICENSE
2912
2913 CopyCENSE
2914
2915 Copy
2916
2917
2918
2919
2920
2921 pack.c */
2922 #V)->value)m/* FIXME: if sizeof(void*) > then store
2923 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2924 use
2925 If self is not null, free(self->value) is called. *self is then
2926 type. self is not freed.
2927 free
2928 {
2929 if(selfcson_free(self->value,"free()"
2930 Reminders to self:
2931
2932 - 20110126: moved cson_value_new() and cson_value_set_xxx() out of
2933 MODE_KEY = 3aul
2934 o 2008-05-20 * C2
2935 MODE_KEY = 3, break;
2936 /* LICENSE
2937
2938 CopyCENSE
2939
2940 Copy
2941
2942
2943
2944
2945
2946 pack.c */
2947 #V)->value)m/* FIXME: if sizeof(void*) > then store
2948 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
2949 use
2950 the defaul
2951 o 2008-05-20 * C2
2952 MODE_KEY = 3, break;
2953 /* LICENSE
2954
2955 CopyCENSE
2956
2957 Copy
2958
2959
2960
2961
2962
2963 a) They can be easily mis-used to cause memory leaks, even when used in
2964 a manner which seems relatively intuitive.
2965
2966 b) Having them in the API prohibits us from eventually doing certain
2967 allocation optimizations like not allocating Booleans,
2968 Integer/Doubles with the value 0, or empty Strings. The main problem
2969 is that cson_value_set_xxx() cannot be implemented properly if we
2970 add that type of optimization.
2971 */P@EpP,2x:value with the "undefined" value and transfers
2972 ownership of it to the caller. Use The cson_value_set_xxx() family
2973 of functions to assign a typed value to it. It must eventually be
2974 W@Gt~,Z@GuY,1:
2975 J@aul,1:)4c@H0X,1X:);
2976 /**
2977 Cleans any existing contents of val and sets its new value
2978 to the special NULL valueR@NQi,A:
2979
2980 */
2981 #if 0H@R6l,E:value_set_nullM@DjD,1G:#endif
2982 /**
2983 Cleans any existing contents of val and sets its new value
2984 to vR@NQi,A:
2985
2986 */
2987 #if 0H@R6l,1x:value_set_bool( cson_value * val, char v );
2988 #endif
2989 /**
2990 Cleans any existing contents of val and sets its new value
2991 to vR@NQi,1:
2992 K@TVj,9:value_setL@Je0,1W:* val, cson_int_t v );
2993 /**
2994 Cleans any existing contents of val and sets its new value
2995 to vR@NQi,K@TVj,7:value_sM@KDS,6:* val,I@LDz,2b:;
2996
2997 /**
2998 Cleans any existing contents of val and sets its new value to
2999 str. On success, ownership of str is passed on to val. On error
3000 ownership is not changedR@NQi,h:
3001
3002 If str is NULL, (!*str), or (!len) thenN@C3e,i:
3003 allocate any memory for a new string, andI@KEW,N:string()
3004 will returnG@RN0,S: as opposed to a NULL stringL@abW,8:value_seL@T1T,6:* val,a@LIU,2:;
3005 U@HBG,P@H~G,R@HXc,H@H7G,K:,"cson_value_new");
3006 H@Jb0,M@HyW,Q0@H_h,O@C4G,7:integerL@C4i,n:
3007 {
3008 if( self )
3009 {
3010 #if !CSON_VOID_PTR_IS_BIG
3011 I@ICV,O:self->value,"cson_int_t"I@_KF,_:*self = cson_value_empty;
3012 }
3013 I@R6k,9:value_setL@Je0,6:* val,Q@L9W,5:! valg@VJl,O:#if CSON_VOID_PTR_IS_BIGK@_g~,5:cleanH@Idk,3:valI@HZ~,W:v;
3014 #else
3015 cson_int_t * ivH@IDW,G:iv = (cson_int_tQ@KbM,K:int_t), "cson_int_t"H@akl,1:iK@LZl,J@PD0,B@Ht~,5:cleanH@Idk,7:*iv = vA@Hyl,F:val->value = ivH@_KG,A:val->api =H@Cll,7:integerT@DxG,G@S_l,7:value_sM@KDS,6:* val,T@LDz,5:! valo@VJl,I:cson_double_t * rvH@IDW,B@Ht~,5:cleanH@Idk,A:val->api =H@Cll,S:double;
3016 if( 0.0 != vP@URW,17:/*
3017 aul
3018 o 2008-05-20 * C2
3019 MODE_KEY = 3, break;
3020 /* LICENSE
3021
3022 CopyCENSE
3023
3024 Copy
3025
3026
3027
3028
3029
3030 pack.c */
3031 #V)->value)m/* FIXME: if sizeof(void*) > then store
3032 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3033 use
3034 the defaul
3035 o 2008-05-20 * C2
3036 MODE_KEY = 3, break;
3037 /* LICENSE
3038
3039 CopyCENSE
3040
3041 Copy
3042
3043
3044
3045
3046
3047 pack.c */
3048 if( use
3049 the clone_shared(ul
3050 o 2008-05-20 2008-05-20 * sharedshared use
3051 ('0'<=*arg) && ('9'>=*arg)){ use
3052 the def use
3053 the defaul
3054 o 2008-05-20 * C2
3055 MODE_KEY = 3, break;
3056 /* LICENSE
3057
3058 CopyCENSE
3059
3060 Copy
3061
3062 use
3063 }
3064
3065 use
3066 the defaul
3067 o 2008-05-20 * C2
3068 MODE_KEY = 3, break;
3069 /* LICENSE
3070
3071 CopyCENSE
3072
3073 Copy
3074
3075
3076
3077
3078
3079 pack.c */
3080 ? cson_guess_arg_type(pos: use
3081 the defaul
3082 0 != (rc= use
3083 the defaul
3084 o 2008-05-20 * C2
3085 MODE_KEY = 3, break;
3086 /* LICENSE
3087
3088 CopyCENSE
3089
3090 Copy
3091
3092
3093
3094
3095
3096 pack.c */
3097 defaul
3098 o 2008-05-20 * C2
3099 MODE_KEY = 3, break;
3100 /* LICENSE
3101
3102 CopyCENSE
3103
3104 Copy
3105
3106
3107
3108
3109
3110 pack.c */
3111 #V)->value)m/* FIXME: if sizeof(void*) > then store
3112 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3113 use
3114 the defaul
3115 o 2008-05-20 * C2
3116 MODE_KEY = 3, break;
3117 /* LICENSE
3118
3119 CopyCENSE
3120
3121 Copy
3122
3123
3124
3125
3126
3127 pack.c */
3128 if( use
3129 the clone_shared(ul
3130 o 2008-05-20 2008-05-20 * sharedshared use
3131 ('0'<=*arg) && ('9'>=*arg)){ use
3132 the def use
3133 the defaul
3134 o 2008-05-20 * C2
3135 MODE_KEY = 3, break;
3136 /* LICENSE
3137
3138 CopyCENSE
3139
3140 Copy
3141
3142 use
3143 }
3144
3145 use
3146 the defaul
3147 o 2008-05-20 * C2
3148 MODE_KEY = 3, break;
3149 /* LICENSE
3150
3151 CopyCENSE
3152
3153 Copy
3154
3155
3156
3157
3158
3159 pack.c */
3160 ? cson_guess_arg_type(pos: use
3161 the defaul
3162 0 != (rc= use
3163 the defaul
3164 o 2008-05-20 * C2
3165 MODE_KEY = 3, break;
3166 /* LICENSE
3167
3168 CopyCENSE
3169
3170 Copy
3171
3172
3173
3174
3175
3176 pack.c */
3177 0_guess_arg_type(pos: use
3178 t use
3179 MODE_KEY = 3, use
3180 ;
3181 p->c 0 == rc ) use
3182 }ARRAY_END:( ch}/*
3183 refcount the keys! We first need a setter which takes
3184 8@JnB,b:a cson_string or cson_value key type.
3185 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3186 # pop ) ownership of it to the
3187 caller. It must eventually be destroyed, by the caller or its
3188 owning or transfering
3189
3190 void/**
3191 This special-case impl is needed because the underlying
3192 (generic) list operations do not know how to populate
3193 new entries
3194 */ use
3195 the =*arg)){ use
3196 the def use
3197 the defaul
3198 o 2008-05-20 * C2
3199 MODE_KEY = 3, break;
3200 /* LICENSE
3201
3202 CopyCENSE
3203
3204 Copy
3205
3206 use
3207 }
3208
3209 use
3210 the defaul
3211 o 2008-05-20 * C2
3212 MODE_KEY = 3, break;
3213 /* LICENSE
3214
3215 CopyCENSE
3216
3217 Copy
3218
3219
3220
3221
3222
3223 pack.c */
3224 ? cson_guess_arg_type(pos: use
3225 the defaul
3226 0 != (rc= use
3227 the defaul
3228 o 2008-05-20 * C2
3229 MODE_KEY = 3, break;
3230 /* LICENSE
3231
3232 CopyCENSE
3233
3234 Copy
3235
3236
3237
3238
3239
3240 pack.c */
3241 0_guess_arg_type(pos: use
3242 t use
3243 MODE_KEY = 3, use
3244 ;
3245 p->c 0 == rc ) use
3246 }Aary use
3247 the the defaul
3248 o 2008-05-20 * C2
3249 MODE_KEY = 3, break;
3250 /* LICENSE
3251
3252 CopyCENSE
3253
3254 Copy
3255
3256
3257
3258
3259
3260 pack.c */
3261 #V)->value)m/* FIXME: if sizeof(void*) > then store
3262 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3263 use
3264 the defaul
3265 o 2008-05-20 * C2
3266 MODE_KEY = 3, break;
3267 /* LICENSE
3268
3269 CopyCENSE
3270
3271 Copy
3272
3273
3274
3275
3276
3277 pack.c */
3278 if( use
3279 the clone_shared(ul
3280 o 2008-05-20 2008-05-20 * sharedshared use
3281 ('0'<=*arg) && ('9'>=*arg)){ use
3282 the def use
3283 the defaul
3284 o 2008-05-20 * C2
3285 MODE_KEY = 3, break;
3286 /* LICENSE
3287
3288 CopyCENSE
3289
3290 Copy
3291
3292 use
3293 }
3294
3295 use
3296 the defaul
3297 o 2008-05-20 * C2
3298 MODE_KEY = 3, break;
3299 /* LICENSE
3300
3301 CopyCENSE
3302
3303 Copy
3304
3305
3306
3307
3308
3309 pack.c */
3310 ? cson_guess_arg_type(pos: use
3311 the defaul
3312 0 != (rc= use
3313 the defaul
3314 o 2008-05-20 * C2
3315 MODE_KEY = 3, break;
3316 /* LICENSE
3317
3318 CopyCENSE
3319
3320 Copy
3321
3322
3323
3324
3325
3326 pack.c */
3327 defaul
3328 o 2008-05-20 * C2
3329 MODE_KEY = 3, break;
3330 /* LICENSE
3331
3332 CopyCENSE
3333
3334 Copy
3335
3336
3337
3338
3339
3340 pack.c */
3341 #V)->value)m/* FIXME: if sizeof(void*) > then store
3342 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3343 use
3344 the defaul
3345 o 2008-05-20 * C2
3346 MODE_KEY = 3, break;
3347 /* LICENSE
3348
3349 CopyCENSE
3350
3351 Copy
3352
3353
3354
3355
3356
3357 pack.c */
3358 if( use
3359 the clone_shared(ul
3360 o 2008-05-20 2008-05-20 * sharedshared use
3361 ('0'<=*arg) && ('9'>=*arg)){ use
3362 the def use
3363 the defaul
3364 o 2008-05-20 * C2
3365 MODE_KEY = 3, break;
3366 /* LICENSE
3367
3368 CopyCENSE
3369
3370 Copy
3371
3372 use
3373 }
3374
3375 use
3376 the defaul
3377 o 2008-05-20 * C2
3378 MODE_KEY = 3, break;
3379 /* LICENSE
3380
3381 CopyCENSE
3382
3383 Copy
3384
3385
3386
3387
3388
3389 pack.c */
3390 ? cson_guess_arg_type(pos: use
3391 the defaul
3392 0 != (rc= use
3393 the defaul
3394 o 2008-05-20 * C2
3395 MODE_KEY = 3, break;
3396 /* LICENSE
3397
3398 CopyCENSE
3399
3400 Copy
3401
3402
3403
3404
3405
3406 pack.c */
3407 0_guess_arg_type(pos: use
3408 t use
3409 MODE_KEY = 3, use
3410 ;
3411 p->c 0 == rc ) use
3412 }ARRAY_END:( ch}/*
3413 refcount the keys! We first need a setter which takes
3414 8@JnB,b:a cson_string or cson_value key type.
3415 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3416 # pop ) ownership of it to the
3417 caller. It must eventually be destroyed, by the caller or its
3418 owning or transfering
3419
3420 void/**
3421 This special-case impl is needed because the underlying
3422 (generic) list operations do not know how to populate
3423 new entries
3424 */ use
3425 the =*arg)){ use
3426 the def use
3427 the defaul
3428 o 2008-05-20 * C2
3429 MODE_KEY = 3, break;
3430 /* LICENSE
3431
3432 CopyCENSE
3433
3434 Copy
3435
3436 use
3437 }
3438
3439 use
3440 the defaul
3441 o 2008-05-20 * C2
3442 MODE_KEY = 3, break;
3443 /* LICENSE
3444
3445 CopyCENSE
3446
3447 Copy
3448
3449
3450
3451
3452
3453 pack.c */
3454 ? cson_guess_arg_type(pos: use
3455 the defaul
3456 0 != (rc= use
3457 the defaul
3458 o 2008-05-20 * C2
3459 MODE_KEY = 3, break;
3460 /* LICENSE
3461
3462 CopyCENSE
3463
3464 Copy
3465
3466
3467
3468
3469
3470 pack.c */
3471 0_guess_arg_type(pos: use
3472 t use
3473 MODE_KEY = 3, use
3474 ;
3475 p->c 0 == rc ) use
3476 }Aarye
3477 }
3478
3479 use
3480 the defaul
3481 o 2008-05-20 * C2
3482 MODE_KEY = 3, break;
3483 /* LICENSE
3484
3485 CopyCENSE
3486
3487 Copy
3488
3489
3490
3491
3492
3493 pack.c */
3494 ? cson_guess_arg_type(pos: use
3495 the defaul
3496 0 != (rc= use
3497 the defaul
3498 o 2008-05-20 * C2
3499 MODE_KEY = 3, break;
3500 /* LICENSE
3501
3502 CopyCENSE
3503
3504 Copy
3505
3506
3507
3508
3509
3510 pack.c */
3511 defaul
3512 o 2008-05-20 * C2
3513 MODE_KEY = 3, break;
3514 /* LICENSE
3515
3516 CopyCENSE
3517
3518 Copy
3519
3520
3521
3522
3523
3524 pack.c */
3525 #V)->value)m/* FIXME: if sizeof(void*) > then store
3526 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3527 use
3528 the defaul
3529 o 2008-05-20 * C2
3530 MODE_KEY = 3, break;
3531 /* LICENSE
3532
3533 CopyCENSE
3534
3535 Copy
3536
3537
3538
3539
3540
3541 pack.c */
3542 if( use
3543 the clone_shared(ul
3544 o 2008-05-20 2008-05-20 * sharedshared use
3545 ('0'<=*arg) && ('9'>=*arg)){ use
3546 the def use
3547 the defaul
3548 o 2008-05-20 * C2
3549 MODE_KEY = 3, break;
3550 /* LICENSE
3551
3552 CopyCENSE
3553
3554 Copy
3555
3556 use
3557 }
3558
3559 use
3560 the defaul
3561 o 2008-05-20 * C2
3562 MODE_KEY = 3, break;
3563 /* LICENSE
3564
3565 CopyCENSE
3566
3567 Copy
3568
3569
3570
3571
3572
3573 pack.c */
3574 ? cson_guess_arg_type(pos: use
3575 the defaul
3576 0 != (rc= use
3577 the defaul
3578 o 2008-05-20 * C2
3579 MODE_KEY = 3, break;
3580 /* LICENSE
3581
3582 CopyCENSE
3583
3584 Copy
3585
3586
3587
3588
3589
3590 pack.c */
3591 0_guess_arg_type(pos: use
3592 t use
3593 MODE_KEY = 3, use
3594 ;
3595 p->c 0 == rc ) use
3596 }ARRAY_END:( ch}/*
3597 refcount the keys! We first need a setter which takes
3598 8@JnB,b:a cson_string or cson_value key type.
3599 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3600 # pop ) ownership of it to the
3601 caller. It must eventually be destroyed, by the caller or its
3602 owning or transfering
3603
3604 void/**
3605 This special-case impl is needed because the underlying
3606 (generic) list operations do not know how to populate
3607 new entries
3608 */ use
3609 the =*arg)){ use
3610 the def use
3611 the defaul
3612 o 2008-05-20 * C2
3613 MODE_KEY = 3, break;
3614 /* LICENSE
3615
3616 CopyCENSE
3617
3618 Copy
3619
3620 use
3621 }
3622
3623 use
3624 the defaul
3625 o 2008-05-20 * C2
3626 MODE_KEY = 3, break;
3627 /* LICENSE
3628
3629 CopyCENSE
3630
3631 Copy
3632
3633
3634
3635
3636
3637 pack.c */
3638 ? cson_guess_arg_type(pos: use
3639 the defaul
3640 0 != (rc= use
3641 the defaul
3642 o 2008-05-20 * C2
3643 MODE_KEY = 3, break;
3644 /* LICENSE
3645
3646 CopyCENSE
3647
3648 Copy
3649
3650
3651
3652
3653
3654 pack.c */
3655 0_guess_arg_type(pos: use
3656 t use
3657 MODE_KEY = 3, use
3658 ;
3659 p->c 0 == rc ) use
3660 }Aaryconst#iaul
3661 o 2008-05-20 ;
3662 /* LDE_KEY = 3, breaul
3663 o 2008-05-20 * C2
3664 MODE_KEY = 3, break;
3665 /* LICENSE
3666
3667 CopyCENSE
3668
3669 Copy
3670
3671
3672
3673
3674
3675 pack.c */
3676 #V)->value)m/* FIXME: if sizeof(void*) > then store
3677 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3678 use
3679 the defaul
3680 o 2008-05-20 * C2
3681 MODE_KEY = 3, break;
3682 /* LICENSE
3683
3684 CopyCENSE
3685
3686 Copy
3687
3688
3689
3690
3691
3692 pack.c */
3693 if( use
3694 the clone_shared(ul
3695 o 2008-05-20 2008-05-20 * sharedshared use
3696 ('0'<=*arg) && ('9'>=*arg)){ use
3697 the def use
3698 the defaul
3699 o 2008-05-20 * C2
3700 MODE_KEY = 3, break;
3701 /* LICENSE
3702
3703 CopyCENSE
3704
3705 Copy
3706
3707 use
3708 }
3709
3710 use
3711 the defaul
3712 o 2008-05-20 * C2
3713 MODE_KEY = 3, break;
3714 /* LICENSE
3715
3716 CopyCENSE
3717
3718 Copy
3719
3720
3721
3722
3723
3724 pack.c */
3725 ? cson_guess_arg_type(pos: use
3726 the defaul
3727 0 != (rc= use
3728 the defaul
3729 o 2008-05-20 * C2
3730 MODE_KEY = 3, break;
3731 /* LICENSE
3732
3733 CopyCENSE
3734
3735 Copy
3736
3737
3738
3739
3740
3741 pack.c */
3742 defaul
3743 o 2008-05-20 * C2
3744 MODE_KEY = 3, break;
3745 /* LICENSE
3746
3747 CopyCENSE
3748
3749 Copy
3750
3751
3752
3753
3754
3755 pack.c */
3756 #V)->value)m/* FIXME: if sizeof(void*) > then store
3757 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3758 use
3759 the defaul
3760 o 2008-05-20 * C2
3761 MODE_KEY = 3, break;
3762 /* LICENSE
3763
3764 CopyCENSE
3765
3766 Copy
3767
3768
3769
3770
3771
3772 pack.c */
3773 if( use
3774 the clone_shared(ul
3775 o 2008-05-20 2008-05-20 * sharedshared use
3776 ('0'<=*arg) && ('9'>=*arg)){ use
3777 the def use
3778 the defaul
3779 o 2008-05-20 * C2
3780 MODE_KEY = 3, break;
3781 /* LICENSE
3782
3783 CopyCENSE
3784
3785 Copy
3786
3787 use
3788 }
3789
3790 use
3791 the defaul
3792 o 2008-05-20 * C2
3793 MODE_KEY = 3, break;
3794 /* LICENSE
3795
3796 CopyCENSE
3797
3798 Copy
3799
3800
3801
3802
3803
3804 pack.c */
3805 ? cson_guess_arg_type(pos: use
3806 the defaul
3807 0 != (rc= use
3808 the defaul
3809 o 2008-05-20 * C2
3810 MODE_KEY = 3, break;
3811 /* LICENSE
3812
3813 CopyCENSE
3814
3815 Copy
3816
3817
3818
3819
3820
3821 pack.c */
3822 0_guess_arg_type(pos: use
3823 t use
3824 MODE_KEY = 3, use
3825 ;
3826 p->c 0 == rc ) use
3827 }ARRAY_END:( ch}/*
3828 refcount the keys! We first need a setter which takes
3829 8@JnB,b:a cson_string or cson_value key type.
3830 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
3831 # pop ) ownership of it to the
3832 caller. It must eventually be destroyed, by the caller or its
3833 owning or transfering
3834
3835 void/**
3836 This special-case impl is needed because the underlying
3837 (generic) list operations do not know how to populate
3838 new entries
3839 */ use
3840 the =*arg)){ use
3841 the def use
3842 the defaul
3843 o 2008-05-20 * C2
3844 MODE_KEY = 3, break;
3845 /* LICENSE
3846
3847 CopyCENSE
3848
3849 Copy
3850
3851 use
3852 }
3853
3854 use
3855 the defaul
3856 o 2008-05-20 * C2
3857 MODE_KEY = 3, break;
3858 /* LICENSE
3859
3860 CopyCENSE
3861
3862 Copy
3863
3864
3865
3866
3867
3868 pack.c */
3869 ? cson_guess_arg_type(pos: use
3870 the defaul
3871 0 != (rc= use
3872 the defaul
3873 o 2008-05-20 * C2
3874 MODE_KEY = 3, break;
3875 /* LICENSE
3876
3877 CopyCENSE
3878
3879 Copy
3880
3881
3882
3883
3884
3885 pack.c */
3886 0_guess_arg_type(pos: use
3887 t use
3888 MODE_KEY = 3, use
3889 ;
3890 p->c 0 == rc ) use
3891 }Aary use
3892 the the defaul
3893 o 2008-05-20 * C2
3894 MODE_KEY = 3, break;
3895 /* LICENSE
3896
3897 CopyCENSE
3898
3899 Copy
3900
3901
3902
3903
3904
3905 pack.c */
3906 #V)->value)m/* FIXME: if sizeof(void*) > then store
3907 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3908 use
3909 the defaul
3910 o 2008-05-20 * C2
3911 MODE_KEY = 3, break;
3912 /* LICENSE
3913
3914 CopyCENSE
3915
3916 Copy
3917
3918
3919
3920
3921
3922 pack.c */
3923 if( use
3924 the clone_shared(ul
3925 o 2008-05-20 2008-05-20 * sharedshared use
3926 ('0'<=*arg) && ('9'>=*arg)){ use
3927 the def use
3928 the defaul
3929 o 2008-05-20 * C2
3930 MODE_KEY = 3, break;
3931 /* LICENSE
3932
3933 CopyCENSE
3934
3935 Copy
3936
3937 use
3938 }
3939
3940 use
3941 the defaul
3942 o 2008-05-20 * C2
3943 MODE_KEY = 3, break;
3944 /* LICENSE
3945
3946 CopyCENSE
3947
3948 Copy
3949
3950
3951
3952
3953
3954 pack.c */
3955 ? cson_guess_arg_type(pos: use
3956 the defaul
3957 0 != (rc= use
3958 the defaul
3959 o 2008-05-20 * C2
3960 MODE_KEY = 3, break;
3961 /* LICENSE
3962
3963 CopyCENSE
3964
3965 Copy
3966
3967
3968
3969
3970
3971 pack.c */
3972 defaul
3973 o 2008-05-20 * C2
3974 MODE_KEY = 3, break;
3975 /* LICENSE
3976
3977 CopyCENSE
3978
3979 Copy
3980
3981
3982
3983
3984
3985 pack.c */
3986 #V)->value)m/* FIXME: if sizeof(void*) > then store
3987 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
3988 use
3989 the defaul
3990 o 2008-05-20 * C2
3991 MODE_KEY = 3, break;
3992 /* LICENSE
3993
3994 CopyCENSE
3995
3996 Copy
3997
3998
3999
4000
4001
4002 pack.c */
4003 if( use
4004 the clone_shared(ul
4005 o 2008-05-20 2008-05-20 * sharedshared use
4006 ('0'<=*arg) && ('9'>=*arg)){ use
4007 the def use
4008 the defaul
4009 o 2008-05-20 * C2
4010 MODE_KEY = 3, break;
4011 /* LICENSE
4012
4013 CopyCENSE
4014
4015 Copy
4016
4017 use
4018 }
4019
4020 use
4021 the defaul
4022 o 2008-05-20 * C2
4023 MODE_KEY = 3, break;
4024 /* LICENSE
4025
4026 CopyCENSE
4027
4028 Copy
4029
4030
4031
4032
4033
4034 pack.c */
4035 ? cson_guess_arg_type(pos: use
4036 the defaul
4037 0 != (rc= use
4038 the defaul
4039 o 2008-05-20 * C2
4040 MODE_KEY = 3, break;
4041 /* LICENSE
4042
4043 CopyCENSE
4044
4045 Copy
4046
4047
4048
4049
4050
4051 pack.c */
4052 0_guess_arg_type(pos: use
4053 t use
4054 MODE_KEY = 3, use
4055 ;
4056 p->c 0 == rc ) use
4057 }ARRAY_END:( ch}/*
4058 refcount the keys! We first need a setter which takes
4059 8@JnB,b:a cson_string or cson_value key type.
4060 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4061 # pop ) ownership of it to the
4062 caller. It must eventually be destroyed, by the caller or its
4063 owning or transfering
4064
4065 void/**
4066 This special-case impl is needed because the underlying
4067 (generic) list operations do not know how to populate
4068 new entries
4069 */ use
4070 the =*arg)){ use
4071 the def use
4072 the defaul
4073 o 2008-05-20 * C2
4074 MODE_KEY = 3, break;
4075 /* LICENSE
4076
4077 CopyCENSE
4078
4079 Copy
4080
4081 use
4082 }
4083
4084 use
4085 the defaul
4086 o 2008-05-20 * C2
4087 MODE_KEY = 3, break;
4088 /* LICENSE
4089
4090 CopyCENSE
4091
4092 Copy
4093
4094
4095
4096
4097
4098 pack.c */
4099 ? cson_guess_arg_type(pos: use
4100 the defaul
4101 0 != (rc= use
4102 the defaul
4103 o 2008-05-20 * C2
4104 MODE_KEY = 3, break;
4105 /* LICENSE
4106
4107 CopyCENSE
4108
4109 Copy
4110
4111
4112
4113
4114
4115 pack.c */
4116 0_guess_arg_type(pos: use
4117 t use
4118 MODE_KEY = 3, use
4119 ;
4120 p->c 0 == rc ) use
4121 }Aarye
4122 }
4123
4124 use
4125 the defaul
4126 o 2008-05-20 * C2
4127 MODE_KEY = 3, break;
4128 /* LICENSE
4129
4130 CopyCENSE
4131
4132 Copy
4133
4134
4135
4136
4137
4138 pack.c */
4139 ? cson_guess_arg_type(pos: use
4140 the defaul
4141 0 != (rc= use
4142 the defaul
4143 o 2008-05-20 * C2
4144 MODE_KEY = 3, break;
4145 /* LICENSE
4146
4147 CopyCENSE
4148
4149 Copy
4150
4151
4152
4153
4154
4155 pack.c */
4156 defaul
4157 o 2008-05-20 * C2
4158 MODE_KEY = 3, break;
4159 /* LICENSE
4160
4161 CopyCENSE
4162
4163 Copy
4164
4165
4166
4167
4168
4169 pack.c */
4170 #V)->value)m/* FIXME: if sizeof(void*) > then store
4171 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4172 use
4173 the defaul
4174 o 2008-05-20 * C2
4175 MODE_KEY = 3, break;
4176 /* LICENSE
4177
4178 CopyCENSE
4179
4180 Copy
4181
4182
4183
4184
4185
4186 pack.c */
4187 if( use
4188 the clone_shared(ul
4189 o 2008-05-20 2008-05-20 * sharedshared use
4190 ('0'<=*arg) && ('9'>=*arg)){ use
4191 the def use
4192 the defaul
4193 o 2008-05-20 * C2
4194 MODE_KEY = 3, break;
4195 /* LICENSE
4196
4197 CopyCENSE
4198
4199 Copy
4200
4201 use
4202 }
4203
4204 use
4205 the defaul
4206 o 2008-05-20 * C2
4207 MODE_KEY = 3, break;
4208 /* LICENSE
4209
4210 CopyCENSE
4211
4212 Copy
4213
4214
4215
4216
4217
4218 pack.c */
4219 ? cson_guess_arg_type(pos: use
4220 the defaul
4221 0 != (rc= use
4222 the defaul
4223 o 2008-05-20 * C2
4224 MODE_KEY = 3, break;
4225 /* LICENSE
4226
4227 CopyCENSE
4228
4229 Copy
4230
4231
4232
4233
4234
4235 pack.c */
4236 0_guess_arg_type(pos: use
4237 t use
4238 MODE_KEY = 3, use
4239 ;
4240 p->c 0 == rc ) use
4241 }ARRAY_END:( ch}/*
4242 refcount the keys! We first need a setter which takes
4243 8@JnB,b:a cson_string or cson_value key type.
4244 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4245 # pop ) ownership of it to the
4246 caller. It must eventually be destroyed, by the caller or its
4247 owning or transfering
4248
4249 void/**
4250 This special-case impl is needed because the underlying
4251 (generic) list operations do not know how to populate
4252 new entries
4253 */ use
4254 the =*arg)){ use
4255 the def use
4256 the defaul
4257 o 2008-05-20 * C2
4258 MODE_KEY = 3, break;
4259 /* LICENSE
4260
4261 CopyCENSE
4262
4263 Copy
4264
4265 use
4266 }
4267
4268 use
4269 the defaul
4270 o 20aul
4271 o 2008-05-20 * C2
4272 MODE_KEY = 3, break;
4273 /* LICENSE
4274
4275 CopyCENSE
4276
4277 Copy
4278
4279
4280
4281
4282
4283 pack.c */
4284 #V)->value)m/* FIXME: if sizeof(void*) > then store
4285 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4286 use
4287 the defaul
4288 o 2008-05-20 * C2
4289 MODE_KEY = 3, break;
4290 /* LICENSE
4291
4292 CopyCENSE
4293
4294 Copy
4295
4296
4297
4298
4299
4300 pack.c */
4301 if( use
4302 the clone_shared(ul
4303 o 2008-05-20 2008-05-20 * sharedshared use
4304 ('0'<=*arg) && ('9'>=*arg)){ use
4305 the def use
4306 the defaul
4307 o 2008-05-20 * C2
4308 MODE_KEY = 3, break;
4309 /* LICENSE
4310
4311 CopyCENSE
4312
4313 Copy
4314
4315 use
4316 }
4317
4318 use
4319 the defaul
4320 o 2008-05-20 * C2
4321 MODE_KEY = 3, break;
4322 /* LICENSE
4323
4324 CopyCENSE
4325
4326 Copy
4327
4328
4329
4330
4331
4332 pack.c */
4333 ? cson_guess_arg_type(pos: use
4334 the defaul
4335 0 != (rc= use
4336 the defaul
4337 o 2008-05-20 * C2
4338 MODE_KEY = 3, break;
4339 /* LICENSE
4340
4341 CopyCENSE
4342
4343 Copy
4344
4345
4346
4347
4348
4349 pack.c */
4350 defaul
4351 o 2008-05-20 * C2
4352 MODE_KEY = 3, break;
4353 /* LICENSE
4354
4355 CopyCENSE
4356
4357 Copy
4358
4359
4360
4361
4362
4363 pack.c */
4364 #V)->value)m/* FIXME: if sizeof(void*) > then store
4365 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4366 use
4367 the defaul
4368 o 2008-05-20 * C2
4369 MODE_KEY = 3, break;
4370 /* LICENSE
4371
4372 CopyCENSE
4373
4374 Copy
4375
4376
4377
4378
4379
4380 pack.c */
4381 if( use
4382 the clone_shared(ul
4383 o 2008-05-20 2008-05-20 * sharedshared use
4384 ('0'<=*arg) && ('9'>=*arg)){ use
4385 the def use
4386 the defaul
4387 o 2008-05-20 * C2
4388 MODE_KEY = 3, break;
4389 /* LICENSE
4390
4391 CopyCENSE
4392
4393 Copy
4394
4395 use
4396 }
4397
4398 use
4399 the defaul
4400 o 2008-05-20 * C2
4401 MODE_KEY = 3, break;
4402 /* LICENSE
4403
4404 CopyCENSE
4405
4406 Copy
4407
4408
4409
4410
4411
4412 pack.c */
4413 ? cson_guess_arg_type(pos: use
4414 the defaul
4415 0 != (rc= use
4416 the defaul
4417 o 2008-05-20 * C2
4418 MODE_KEY = 3, break;
4419 /* LICENSE
4420
4421 CopyCENSE
4422
4423 Copy
4424
4425
4426
4427
4428
4429 pack.c */
4430 0_guess_arg_type(pos: use
4431 t use
4432 MODE_KEY = 3, use
4433 ;
4434 p->c 0 == rc ) use
4435 }ARRAY_END:( ch}/*
4436 refcount the keys! We first need a setter which takes
4437 8@JnB,b:a cson_string or cson_value key type.
4438 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,,W@O4l,_@YNG,L@blG,G@8RG,TX@1q,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4439 # pop ) ownership of it to the
4440 caller. It must eventually be destroyed, by the caller or its
4441 owning or transfering
4442
4443 void/**
4444 This special-case impl is needed because the underlying
4445 (generic) list operations do not know how to populate
4446 new entries
4447 */ use
4448 the =*arg)){ use
4449 the def use
4450 the defaul
4451 o 2008-05-20 * C2
4452 MODE_KEY = 3, break;
4453 /* LICENSE
4454
4455 CopyCENSE
4456
4457 Copy
4458
4459 use
4460 }
4461
4462 use
4463 the defaul
4464 o 2008-05-20 * C2
4465 MODE_KEY = 3, break;
4466 /* LICENSE
4467
4468 CopyCENSE
4469
4470 Copy
4471
4472
4473
4474
4475
4476 pack.c */
4477 ? cson_guess_arg_type(pos: use
4478 the defaul
4479 0 != (rc= use
4480 the defaul
4481 o 2008-05-20 * C2
4482 MODE_KEY = 3, break;
4483 /* LICENSE
4484
4485 CopyCENSE
4486
4487 Copy
4488
4489
4490
4491
4492
4493 pack.c */
4494 0_guess_arg_type(pos: use
4495 t use
4496 MODE_KEY = 3, use
4497 ;
4498 p->c 0 == rc ) use
4499 }Aary use
4500 the the defaul
4501 o 2008-05-20 * C2
4502 MODE_KEY = 3, break;
4503 /* LICENSE
4504
4505 CopyCENSE
4506
4507 Copy
4508
4509
4510
4511
4512
4513 pack.c */
4514 #V)->value)m/* FIXME: if sizeof(void*) > then store
4515 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4516 use
4517 the defaul
4518 o 2008-05-20 * C2
4519 MODE_KEY = 3, break;
4520 /* LICENSE
4521
4522 CopyCENSE
4523
4524 Copy
4525
4526
4527
4528
4529
4530 pack.c */
4531 if( use
4532 the clone_shared(ul
4533 o 2008-05-20 2008-05-20 * sharedshared use
4534 ('0'<=*arg) && ('9'>=*arg)){ use
4535 the def use
4536 the defaul
4537 o 2008-05-20 * C2
4538 MODE_KEY = 3, break;
4539 /* LICENSE
4540
4541 CopyCENSE
4542
4543 Copy
4544
4545 use
4546 }
4547
4548 use
4549 the defaul
4550 o 2008-05-20 * C2
4551 MODE_KEY = 3, break;
4552 /* LICENSE
4553
4554 CopyCENSE
4555
4556 Copy
4557
4558
4559
4560
4561
4562 pack.c */
4563 ? cson_guess_arg_type(pos: use
4564 the defaul
4565 0 != (rc= use
4566 the defaul
4567 o 2008-05-20 * C2
4568 MODE_KEY = 3, break;
4569 /* LICENSE
4570
4571 CopyCENSE
4572
4573 Copy
4574
4575
4576
4577
4578
4579 pack.c */
4580 defaul
4581 o 2008-05-20 * C2
4582 MODE_KEY = 3, break;
4583 /* LICENSE
4584
4585 CopyCENSE
4586
4587 Copy
4588
4589
4590
4591
4592
4593 pack.c */
4594 #V)->value)m/* FIXME: if sizeof(void*) > then store
4595 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4596 use
4597 the defaul
4598 o 2008-05-20 * C2
4599 MODE_KEY = 3, break;
4600 /* LICENSE
4601
4602 CopyCENSE
4603
4604 Copy
4605
4606
4607
4608
4609
4610 pack.c */
4611 if( use
4612 the clone_shared(ul
4613 o 2008-05-20 2008-05-20 * sharedshared use
4614 ('0'<=*arg) && ('9'>=*arg)){ use
4615 the def use
4616 the defaul
4617 o 2008-05-20 * C2
4618 MODE_KEY = 3, break;
4619 /* LICENSE
4620
4621 CopyCENSE
4622
4623 Copy
4624
4625 use
4626 }
4627
4628 use
4629 the defaul
4630 o 2008-05-20 * C2
4631 MODE_KEY = 3, break;
4632 /* LICENSE
4633
4634 CopyCENSE
4635
4636 Copy
4637
4638
4639
4640
4641
4642 pack.c */
4643 ? cson_guess_arg_type(pos: use
4644 the defaul
4645 0 != (rc= use
4646 the defaul
4647 o 2008-05-20 * C2
4648 MODE_KEY = 3, break;
4649 /* LICENSE
4650
4651 CopyCENSE
4652
4653 Copy
4654
4655
4656
4657
4658
4659 pack.c */
4660 0_guess_arg_type(pos: use
4661 t use
4662 MODE_KEY = 3, use
4663 ;
4664 p->c 0 == rc ) use
4665 }ARRAY_END:( ch}/*
4666 refcount the keys! We first need a setter which takes
4667 8@JnB,b:a cson_string or cson_value key type.
4668 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4669 # pop ) ownership of it to the
4670 caller. It must eventually be destroyed, by the caller or its
4671 owning or transfering
4672
4673 void/**
4674 This special-case impl is needed because the underlying
4675 (generic) list operations do not know how to populate
4676 new entries
4677 */ use
4678 the =*arg)){ use
4679 the def use
4680 the defaul
4681 o 2008-05-20 * C2
4682 MODE_KEY = 3, break;
4683 /* LICENSE
4684
4685 CopyCENSE
4686
4687 Copy
4688
4689 use
4690 }
4691
4692 use
4693 the defaul
4694 o 2008-05-20 * C2
4695 MODE_KEY = 3, break;
4696 /* LICENSE
4697
4698 CopyCENSE
4699
4700 Copy
4701
4702
4703
4704
4705
4706 pack.c */
4707 ? cson_guess_arg_type(pos: use
4708 the defaul
4709 0 != (rc= use
4710 the defaul
4711 o 2008-05-20 * C2
4712 MODE_KEY = 3, break;
4713 /* LICENSE
4714
4715 CopyCENSE
4716
4717 Copy
4718
4719
4720
4721
4722
4723 pack.c */
4724 0_guess_arg_type(pos: use
4725 t use
4726 MODE_KEY = 3, use
4727 ;
4728 p->c 0 == rc ) use
4729 }Aarye
4730 }
4731
4732 use
4733 the defaul
4734 o 2008-05-20 * C2
4735 MODE_KEY = 3, break;
4736 /* LICENSE
4737
4738 CopyCENSE
4739
4740 Copy
4741
4742
4743
4744
4745
4746 pack.c */
4747 ? cson_guess_arg_type(pos: use
4748 the defaul
4749 0 != (rc= use
4750 the defaul
4751 o 2008-05-20 * C2
4752 MODE_KEY = 3, break;
4753 /* LICENSE
4754
4755 CopyCENSE
4756
4757 Copy
4758
4759
4760
4761
4762
4763 pack.c */
4764 defaul
4765 o 2008-05-20 * C2
4766 MODE_KEY = 3, break;
4767 /* LICENSE
4768
4769 CopyCENSE
4770
4771 Copy
4772
4773
4774
4775
4776
4777 pack.c */
4778 #V)->value)m/* FIXME: if sizeof(void*) > then store
4779 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4780 use
4781 the defaul
4782 o 2008-05-20 * C2
4783 MODE_KEY = 3, break;
4784 /* LICENSE
4785
4786 CopyCENSE
4787
4788 Copy
4789
4790
4791
4792
4793
4794 pack.c */
4795 if( use
4796 the clone_shared(ul
4797 o 2008-05-20 2008-05-20 * sharedshared use
4798 ('0'<=*arg) && ('9'>=*arg)){ use
4799 the def use
4800 the defaul
4801 o 2008-05-20 * C2
4802 MODE_KEY = 3, break;
4803 /* LICENSE
4804
4805 CopyCENSE
4806
4807 Copy
4808
4809 use
4810 }
4811
4812 use
4813 the defaul
4814 o 2008-05-20 * C2
4815 MODE_KEY = 3, break;
4816 /* LICENSE
4817
4818 CopyCENSE
4819
4820 Copy
4821
4822
4823
4824
4825
4826 pack.c */
4827 ? cson_guess_arg_type(pos: use
4828 the defaul
4829 0 != (rc= use
4830 the defaul
4831 o 2008-05-20 * C2
4832 MODE_KEY = 3, break;
4833 /* LICENSE
4834
4835 CopyCENSE
4836
4837 Copy
4838
4839
4840
4841
4842
4843 pack.c */
4844 0_guess_arg_type(pos: use
4845 t use
4846 MODE_KEY = 3, use
4847 ;
4848 p->c 0 == rc ) use
4849 }ARRAY_END:( ch}/*
4850 refcount the keys! We first need a setter which takes
4851 8@JnB,b:a cson_string or cson_value key type.
4852 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
4853 # pop ) ownership of it to the
4854 caller. It must eventually be destroyed, by the caller or its
4855 owning or transfering
4856
4857 void/**
4858 This special-case impl is needed because the underlying
4859 (generic) list operations do not know how to populate
4860 new entries
4861 */ use
4862 the =*arg)){ use
4863 the def use
4864 the defaul
4865 o 2008-05-20 * C2
4866 MODE_KEY = 3, break;
4867 /* LICENSE
4868
4869 CopyCENSE
4870
4871 Copy
4872
4873 use
4874 }
4875
4876 use
4877 the defaul
4878 o 2008-05-20 * C2
4879 MODE_KEY = 3, break;
4880 /* LICENSE
4881
4882 CopyCENSE
4883
4884 Copy
4885
4886
4887
4888
4889
4890 pack.c */
4891 ? cson_guess_arg_type(pos: use
4892 the defaul
4893 0 != (rc= use
4894 the defaul
4895 o 2008-05-20 * C2
4896 MODE_KEY = 3, break;
4897 /* LICENSE
4898
4899 CopyCENSE
4900
4901 Copy
4902
4903
4904
4905
4906
4907 pack.c */
4908 0_guess_arg_type(pos: use
4909 t use
4910 MODE_KEY = 3, use
4911 ;
4912 p->c 0 == rc ) use
4913 }Aarye defaul
4914 o 2008-05-20 * C2
4915 MODE_KEY = 3, break;
4916 /* LICENSE
4917
4918 CopyCENSE
4919
4920 Copy
4921
4922 use
4923 }
4924
4925 use
4926 the defaul
4927 o 2008-05-20 * C2
4928 MODE_KEY = 3, break;
4929 /* LICENSE
4930
4931 CopyCENSE
4932
4933 Copy
4934
4935
4936
4937
4938
4939 pack.c */
4940 ? cson_guess_arg_type(pos: use
4941 the defaul
4942 0 != (rc= use
4943 the defaul
4944 o 2008-05-20 * C2
4945 MODE_KEY = 3, break;
4946 /* LICENSE
4947
4948 CopyCENSE
4949
4950 Copy
4951
4952
4953
4954
4955
4956 pack.c */
4957 defaul
4958 o 2008-05-20 * C2
4959 MODE_KEY = 3, break;
4960 /* LICENSE
4961
4962 CopyCENSE
4963
4964 Copy
4965
4966
4967
4968
4969
4970 pack.c */
4971 #V)->value)m/* FIXME: if sizeof(void*) > then store
4972 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
4973 use
4974 the defaul
4975 o 2008-05-20 * C2
4976 MODE_KEY = 3, break;
4977 /* LICENSE
4978
4979 CopyCENSE
4980
4981 Copy
4982
4983
4984
4985
4986
4987 pack.c */
4988 if( use
4989 the clone_shared(ul
4990 o 2008-05-20 2008-05-20 * sharedshared use
4991 ('0'<=*arg) && ('9'>=*arg)){ use
4992 the def use
4993 the defaul
4994 o 2008-05-20 * C2
4995 MODE_KEY = 3, break;
4996 /* LICENSE
4997
4998 CopyCENSE
4999
5000 Copy
5001
5002 use
5003 }
5004
5005 use
5006 the defaul
5007 o 2008-05-20 * C2
5008 MODE_KEY = 3, break;
5009 /* LICENSE
5010
5011 CopyCENSE
5012
5013 Copy
5014
5015
5016
5017
5018
5019 pack.c */
5020 ? cson_guess_arg_type(pos: use
5021 the defaul
5022 0 != (rc= use
5023 the defaul
5024 o 2008-05-20 * C2
5025 MODE_KEY = 3, break;
5026 /* LICENSE
5027
5028 CopyCENSE
5029
5030 Copy
5031
5032
5033
5034
5035
5036 pack.c */
5037 0_guess_arg_type(pos: use
5038 t use
5039 MODE_KEY = 3, use
5040 ;
5041 p->c 0 == rc ) use
5042 }ARRAY_END:( ch}/*
5043 refcount the keys! We first need a setter which takes
5044 8@JnB,b:a cson_string or cson_value key type.
5045 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5046 # pop ) ownership of it to the
5047 caller. It must eventually be destroyed, by the caller or its
5048 owning or transfering
5049
5050 void/**
5051 This special-case impl is needed because the underlying
5052 (generic) list operations do not know how to populate
5053 new entries
5054 */ use
5055 the =*arg)){ use
5056 the def use
5057 the defaul
5058 o 2008-05-20 * C2
5059 MODE_KEY = 3, break;
5060 /* LICENSE
5061
5062 CopyCENSE
5063
5064 Copy
5065
5066 use
5067 }
5068
5069 use
5070 the defaul
5071 o 2008-05-20 * C2
5072 MODE_KEY = 3, break;
5073 /* LICENSE
5074
5075 CopyCENSE
5076
5077 Copy
5078
5079
5080
5081
5082
5083 pack.c */
5084 ? cson_guess_arg_type(pos: use
5085 the defaul
5086 0 != (rc= use
5087 the defaul
5088 o 2008-05-20 * C2
5089 MODE_KEY = 3, break;
5090 /* LICENSE
5091
5092 CopyCENSE
5093
5094 Copy
5095
5096
5097
5098
5099
5100 pack.c */
5101 0_guess_arg_type(pos: use
5102 t use
5103 MODE_KEY = 3, use
5104 ;
5105 p->c 0 == rc ) use
5106 }Aary use
5107 the the defaul
5108 o 2008-05-20 * C2
5109 MODE_KEY = 3, break;
5110 /* LICENSE
5111
5112 CopyCENSE
5113
5114 Copy
5115
5116
5117
5118
5119
5120 pack.c */
5121 #V)->value)m/* FIXME: if sizeof(void*) > then store
5122 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5123 use
5124 the defaul
5125 o 2008-05-20 * C2
5126 MODE_KEY = 3, break;
5127 /* LICENSE
5128
5129 CopyCENSE
5130
5131 Copy
5132
5133
5134
5135
5136
5137 pack.c */
5138 if( use
5139 the clone_shared(ul
5140 o 2008-05-20 2008-05-20 * sharedshared use
5141 ('0'<=*arg) && ('9'>=*arg)){ use
5142 the def use
5143 the defaul
5144 o 2008-05-20 * C2
5145 MODE_KEY = 3, break;
5146 /* LICENSE
5147
5148 CopyCENSE
5149
5150 Copy
5151
5152 use
5153 }
5154
5155 use
5156 the defaul
5157 o 2008-05-20 * C2
5158 MODE_KEY = 3, break;
5159 /* LICENSE
5160
5161 CopyCENSE
5162
5163 Copy
5164
5165
5166
5167
5168
5169 pack.c */
5170 ? cson_guess_arg_type(pos: use
5171 the defaul
5172 0 != (rc= use
5173 the defaul
5174 o 2008-05-20 * C2
5175 MODE_KEY = 3, break;
5176 /* LICENSE
5177
5178 CopyCENSE
5179
5180 Copy
5181
5182
5183
5184
5185
5186 pack.c */
5187 defaul
5188 o 2008-05-20 * C2
5189 MODE_KEY = 3, break;
5190 /* LICENSE
5191
5192 CopyCENSE
5193
5194 Copy
5195
5196
5197
5198
5199
5200 pack.c */
5201 #V)->value)m/* FIXME: if sizeof(void*) > then store
5202 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5203 use
5204 the defaul
5205 o 2008-05-20 * C2
5206 MODE_KEY = 3, break;
5207 /* LICENSE
5208
5209 CopyCENSE
5210
5211 Copy
5212
5213
5214
5215
5216
5217 pack.c */
5218 if( use
5219 the clone_shared(ul
5220 o 2008-05-20 2008-05-20 * sharedshared use
5221 ('0'<=*arg) && ('9'>=*arg)){ use
5222 the def use
5223 the defaul
5224 o 2008-05-20 * C2
5225 MODE_KEY = 3, break;
5226 /* LICENSE
5227
5228 CopyCENSE
5229
5230 Copy
5231
5232 use
5233 }
5234
5235 use
5236 the defaul
5237 o 2008-05-20 * C2
5238 MODE_KEY = 3, break;
5239 /* LICENSE
5240
5241 CopyCENSE
5242
5243 Copy
5244
5245
5246
5247
5248
5249 pack.c */
5250 ? cson_guess_arg_type(pos: use
5251 the defaul
5252 0 != (rc= use
5253 the defaul
5254 o 2008-05-20 * C2
5255 MODE_KEY = 3, break;
5256 /* LICENSE
5257
5258 CopyCENSE
5259
5260 Copy
5261
5262
5263
5264
5265
5266 pack.c */
5267 0_guess_arg_type(pos: use
5268 t use
5269 MODE_KEY = 3, use
5270 ;
5271 p->c 0 == rc ) use
5272 }ARRAY_END:( ch}/*
5273 refcount the keys! We first need a setter which takes
5274 8@JnB,b:a cson_string or cson_value key type.
5275 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5276 # pop ) ownership of it to the
5277 caller. It must eventually be destroyed, by the caller or its
5278 owning or transfering
5279
5280 void/**
5281 This special-case impl is needed because the underlying
5282 (generic) list operations do not know how to populate
5283 new entries
5284 */ use
5285 the =*arg)){ use
5286 the def use
5287 the defaul
5288 o 2008-05-20 * C2
5289 MODE_KEY = 3, break;
5290 /* LICENSE
5291
5292 CopyCENSE
5293
5294 Copy
5295
5296 use
5297 }
5298
5299 use
5300 the defaul
5301 o 2008-05-20 * C2
5302 MODE_KEY = 3, break;
5303 /* LICENSE
5304
5305 CopyCENSE
5306
5307 Copy
5308
5309
5310
5311
5312
5313 pack.c */
5314 ? cson_guess_arg_type(pos: use
5315 the defaul
5316 0 != (rc= use
5317 the defaul
5318 o 2008-05-20 * C2
5319 MODE_KEY = 3, break;
5320 /* LICENSE
5321
5322 CopyCENSE
5323
5324 Copy
5325
5326
5327
5328
5329
5330 pack.c */
5331 0_guess_arg_type(pos: use
5332 t use
5333 MODE_KEY = 3, use
5334 ;
5335 p->c 0 == rc ) use
5336 }Aarye
5337 }
5338
5339 use
5340 the defaul
5341 o 2008-05-20 * C2
5342 MODE_KEY = 3, break;
5343 /* LICENSE
5344
5345 CopyCENSE
5346
5347 Copy
5348
5349
5350
5351
5352
5353 pack.c */
5354 ? cson_guess_arg_type(pos: use
5355 the defaul
5356 0 != (rc= use
5357 the defaul
5358 o 2008-05-20 * C2
5359 MODE_KEY = 3, break;
5360 /* LICENSE
5361
5362 CopyCENSE
5363
5364 Copy
5365
5366
5367
5368
5369
5370 pack.c */
5371 defaul
5372 o 2008-05-20 * C2
5373 MODE_KEY = 3, break;
5374 /* LICENSE
5375
5376 CopyCENSE
5377
5378 Copy
5379
5380
5381
5382
5383
5384 pack.c */
5385 #V)->value)m/* FIXME: if sizeof(void*) > then store
5386 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5387 use
5388 the defaul
5389 o 2008-05-20 * C2
5390 MODE_KEY = 3, break;
5391 /* LICENSE
5392
5393 CopyCENSE
5394
5395 Copy
5396
5397
5398
5399
5400
5401 pack.c */
5402 if( use
5403 the clone_shared(ul
5404 o 2008-05-20 2008-05-20 * sharedshared use
5405 ('0'<=*arg) && ('9'>=*arg)){ use
5406 the def use
5407 the defaul
5408 o 2008-05-20 * C2
5409 MODE_KEY = 3, break;
5410 /* LICENSE
5411
5412 CopyCENSE
5413
5414 Copy
5415
5416 use
5417 }
5418
5419 use
5420 the defaul
5421 o 2008-05-20 * C2
5422 MODE_KEY = 3, break;
5423 /* LICENSE
5424
5425 CopyCENSE
5426
5427 Copy
5428
5429
5430
5431
5432
5433 pack.c */
5434 ? cson_guess_arg_type(pos: use
5435 the defaul
5436 0 != (rc= use
5437 the defaul
5438 o 2008-05-20 * C2
5439 MODE_KEY = 3, break;
5440 /* LICENSE
5441
5442 CopyCENSE
5443
5444 Copy
5445
5446
5447
5448
5449
5450 pack.c */
5451 0_guess_arg_type(pos: use
5452 t use
5453 MODE_KEY = 3, use
5454 ;
5455 p->c 0 == rc ) use
5456 }ARRAY_END:( ch}/*
5457 refcount the keys! We first need a setter which takes
5458 8@JnB,b:a cson_string or cson_value key type.
5459 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5460 # pop ) ownership of it to the
5461 caller. It must eventually be destroyed, by the caller or its
5462 owning or transfering
5463
5464 void/**
5465 This special-case impl is needed because the underlying
5466 (generic) list operations do not know how to populate
5467 new entries
5468 */ use
5469 the =*arg)){ use
5470 the def use
5471 the defaul
5472 o 2008-05-20 * C2
5473 MODE_KEY = 3, break;
5474 /* LICENSE
5475
5476 CopyCENSE
5477
5478 Copy
5479
5480 use
5481 }
5482
5483 use
5484 the defaul
5485 o 2008-05-20 * C2
5486 MODE_KEY = 3, break;
5487 /* LICENSE
5488
5489 CopyCENSE
5490
5491 Copy
5492
5493
5494
5495
5496
5497 pack.c */
5498 ? cson_guess_arg_type(pos: use
5499 the defaul
5500 0 != (rc= use
5501 the defaul
5502 o 2008-05-20 * C2
5503 MODE_KEY = 3, break;
5504 /* LICENSE
5505
5506 CopyCENSE
5507
5508 Copy
5509
5510
5511
5512
5513
5514 pack.c */
5515 0_guess_arg_type(pos: use
5516 t use
5517 MODE_KEY = 3, use
5518 ;
5519 p->c 0 == rc ) use
5520 }Aarymallocfreereallocconst ** dest des()val->value-20 * C C2
5521 MODE_KEY = const *rcaul
5522 o 20 the defaul
5523 oeak;
5524 /* LICENSE
5525
5526 CopyCENSE
5527
5528 Copy
5529
5530 use
5531 }
5532
5533 use
5534 the defaul
5535 o 2008-05-20 * C2
5536 MODE_KEY = 3, break;
5537 /* LICENSE
5538
5539 CopyCENSE
5540
5541 Copy
5542
5543
5544
5545
5546
5547 pack.c */
5548 ? cson_guess_arg_type(pos: use
5549 the defaul
5550 0 != (rc= use
5551 the defaul
5552 o 2008-05-20 * C2
5553 MODE_KEY = 3, break;
5554 /* LICENSE
5555
5556 CopyCENSE
5557
5558 Copy
5559
5560
5561
5562
5563
5564 pack.c */
5565 defaul
5566 o 2008-05-20 * C2
5567 MODE_KEY = 3, break;
5568 /* LICENSE
5569
5570 CopyCENSE
5571
5572 Copy
5573
5574
5575
5576
5577
5578 pack.c */
5579 #V)->value)m/* FIXME: if sizeof(void*) > then store
5580 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5581 use
5582 the defaul
5583 o 2008-05-20 * C2
5584 MODE_KEY = 3, break;
5585 /* LICENSE
5586
5587 CopyCENSE
5588
5589 Copy
5590
5591
5592
5593
5594
5595 pack.c */
5596 if( use
5597 the clone_shared(ul
5598 o 2008-05-20 2008-05-20 * sharedshared use
5599 ('0'<=*arg) && ('9'>=*arg)){ use
5600 the def use
5601 the defaul
5602 o 2008-05-20 * C2
5603 MODE_KEY = 3, break;
5604 /* LICENSE
5605
5606 CopyCENSE
5607
5608 Copy
5609
5610 use
5611 }
5612
5613 use
5614 the defaul
5615 o 2008-05-20 aul
5616 o 2008-05-20 * C2
5617 MODE_KEY = 3, brC2
5618 MODE_K0colscolsV 2008-05-20 * C2
5619 MODE_KEY = 3, break;
5620 /* LICENSE
5621
5622 CopyCENSE
5623
5624 Copy
5625
5626
5627
5628
5629
5630 pack.c */
5631 #V)->value)m/* FIXME: if sizeof(vo * colscols(scson_string object with enough space for
5632 the given number of bytes. A byte for a NUL terminator
5633 is added automatically. Use cson_string_str() to get
5634 access to the string bytes, which will be len bytes long.
5635
5636 len may be 0, in which case the internal string is "", as opposed
5637 to null. This is because the string bytes and the cson_string are
5638 allocated in a single chunk of memory, and the cson_string object
5639 does not directly provide (or have) a pointer to the string bytes.
5640 */
5641 static cson_string * cson_string_alloc(STR_EMPTY])'>=*arg)){ use
5642 the defconst size_t maul
5643 o 2008-e
5644 the defaul
5645 o * mem 2008-05-20 aul
5646 o +len) ) /*overflow*/ mem = (unsigned char *)cson_malloc( msz, "cson_string_alloc" );
5647 if( memmemset( mem, 0, mszs = (cson_string *)memk.c */
5648 0_guess_araul
5649 o 2008-05-20 * C2
5650 MODE_KEY = 3, break;
5651 /* LICENSE
5652
5653 CopyCENSE
5654
5655 Copy
5656
5657
5658
5659
5660
5661 pack.c */
5662 #V)->value)m/* FIXME: if sizeof(void*) > then store
5663 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5664 use
5665 the defaul
5666 o 2008-05-20 * C2
5667 MODE_KEY = 3, break;
5668 /* LICENSE
5669
5670 CopyCENSE
5671
5672 Copy
5673
5674
5675
5676
5677
5678 pack.c */
5679 if( use
5680 the clone_shared(ul
5681 o 2008-05-20 2008-05-20 * sharedshared use
5682 ('0'<=*arg) && ('9'>=*arg)){ use
5683 the def use
5684 the defaul
5685 o 2008-05-20 * C2
5686 MODE_KEY = 3, break;
5687 /* LICENSE
5688
5689 CopyCENSE
5690
5691 Copy
5692
5693 use
5694 }
5695
5696 use
5697 the defaul
5698 o 2008-05-20 * C2
5699 MODE_KEY = 3, break;
5700 /* LICENSE
5701
5702 CopyCENSE
5703
5704 Copy
5705
5706
5707
5708
5709
5710 pack.c */
5711 ? cson_guess_arg_type(pos: use
5712 the defaul
5713 0 != (rc= use
5714 the defaul
5715 o 2008-05-20 * C2
5716 MODE_KEY = 3, break;
5717 /* LICENSE
5718
5719 CopyCENSE
5720
5721 Copy
5722
5723
5724
5725
5726
5727 pack.c */
5728 defaul
5729 o 2008-05-20 * C2
5730 MODE_KEY = 3, break;
5731 /* LICENSE
5732
5733 CopyCENSE
5734
5735 Copy
5736
5737
5738
5739
5740
5741 pack.c */
5742 #V)->value)m/* FIXME: if sizeof(void*) > then store
5743 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5744 use
5745 the defaul
5746 o 2008-05-20 * C2
5747 MODE_KEY = 3, break;
5748 /* LICENSE
5749
5750 CopyCENSE
5751
5752 Copy
5753
5754
5755
5756
5757
5758 pack.c */
5759 if( use
5760 the clone_shared(ul
5761 o 2008-05-20 2008-05-20 * sharedshared use
5762 ('0'<=*arg) && ('9'>=*arg)){ use
5763 the def use
5764 the defaul
5765 o 2008-05-20 * C2
5766 MODE_KEY = 3, break;
5767 /* LICENSE
5768
5769 CopyCENSE
5770
5771 Copy
5772
5773 use
5774 }
5775
5776 use
5777 the defaul
5778 o 2008-05-20 * C2
5779 MODE_KEY = 3, break;
5780 /* LICENSE
5781
5782 CopyCENSE
5783
5784 Copy
5785
5786
5787
5788
5789
5790 pack.c */
5791 ? cson_guess_arg_type(pos: use
5792 the defaul
5793 0 != (rc= use
5794 the defaul
5795 o 2008-05-20 * C2
5796 MODE_KEY = 3, break;
5797 /* LICENSE
5798
5799 CopyCENSE
5800
5801 Copy
5802
5803
5804
5805
5806
5807 pack.c */
5808 0_guess_arg_type(pos: use
5809 t use
5810 MODE_KEY = 3, use
5811 ;
5812 p->c 0 == rc ) use
5813 }ARRAY_END:( ch}/*
5814 refcount the keys! We first need a setter which takes
5815 8@JnB,b:a cson_string or cson_value key type.
5816 K@OzU,D:cson_value * K@I20,G@FK0,H@cX0,3:keyK@Xhl,J@_4E,S@YGA,E:( kvp->value )H@NM0,X@YHA,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,M@Yfi,C:CSON_STR(keyH@bp0,1B@YIj,G@cDG,G@PEl,W@O4l,_@YNG,L@blG,G@8RG,TX@YOR,5:constb@YpW,z@YrX,G@cDG,1I_@Ysq,_@Nql,J@SPy,4NC@_BU,28lZAF; defined(_WIN32)
5817 # pop ) ownership of it to the
5818 caller. It must eventually be destroyed, by the caller or its
5819 owning or transfering
5820
5821 void/**
5822 This special-case impl is needed because the underlying
5823 (generic) list operations do not know how to populate
5824 new entries
5825 */ use
5826 the =*arg)){ use
5827 the def use
5828 the defaul
5829 o 2008-05-20 * C2
5830 MODE_KEY = 3, break;
5831 /* LICENSE
5832
5833 CopyCENSE
5834
5835 Copy
5836
5837 use
5838 }
5839
5840 use
5841 the defaul
5842 o 2008-05-20 freeintegerstringinteger
5843 MODE_KEY = 3aul
5844 o 2008-05-2free
5845 MODE_KEY = 3aul
5846 o 2008-05-2string
5847 MODE_KEY = 3aul
5848 o 2008-05-20 * C2
5849 MODE_KEY = 3, break;
5850 /* LICENSE
5851
5852 CopyCENSE
5853
5854 Copy
5855
5856
5857
5858
5859
5860 pack.c */
5861 #V)->value)m/* FIXME: if sizeof(void*) > then store
5862 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5863 use
5864 If self is not null, free(self->value) is called. *self is then
5865 type. self is not freed.
5866 free
5867 {
5868 if(selfcson_free(self->value,"free()"
5869 Reminders to self:
5870
5871 - 20110126: moved cson_value_new() and cson_value_set_xxx() out of
5872 MODE_KEY = 3aul
5873 o 2008-05-20 * C2
5874 MODE_KEY = 3, break;
5875 /* LICENSE
5876
5877 CopyCENSE
5878
5879 Copy
5880
5881
5882
5883
5884
5885 pack.c */
5886 #V)->value)m/* FIXME: if sizeof(void*) > then store
5887 the int value directly in the v). The curbytes(!!!) on 64-bit builds.in
5888 use
5889 the defaul
5890 o 2008-05-20 * C2
5891 MODE_KEY = 3, break;
5892 /* LICENSE
5893
5894 CopyCENSE
5895
5896 Copy
5897
5898
5899
5900
5901
5902 a) They can be easily mis-used to cause memory leaks, even when used in
5903 a manner which seems relatively intuitive.
5904
5905 b) Having them in the API prohibits us from eventually doing certain
5906 allocation optimizations like not allocating Booleans,
5907 Integer/Doubles with the value 0, or empty Strings. The main problem
5908 is that cson_value_set_xxx() cannot be implemented properly if we
5909 add that type of optimization.
5910 */P@EpP,2x:value with the "undefined" value and transfers
5911 ownership of it to the caller. Use The cson_value_set_xxx() family
5912 of functions to assign a typed value to it. It must eventually be
5913 W@Gt~,Z@GuY,1:
5914 J@aul,1:)4c@H0X,1X:);
5915 /**
5916 Cleans any existing contents of val and sets its new value
5917 to the special NULL valueR@NQi,A:
5918
5919 */
5920 #if 0H@R6l,E:value_set_nullM@DjD,1G:#endif
5921 /**
5922 Cleans any existing contents of val and sets its new value
5923 to vR@NQi,A:
5924
5925 */
5926 #if 0H@R6l,1x:value_set_bool( cson_value * val, char v );
5927 #endif
5928 /**
5929 Cleans any existing contents of val and sets its new value
5930 to vR@NQi,1:
5931 K@TVj,9:value_setL@Je0,1W:* val, cson_int_t v );
5932 /**
5933 Cleans any existing contents of val and sets its new value
5934 to vR@NQi,K@TVj,7:value_sM@KDS,6:* val,I@LDz,2b:;
5935
5936 /**
5937 Cleans any existing contents of val and sets its new value to
5938 str. On success, ownership of str is passed on to val. On error
5939 ownership is not changedR@NQi,h:
5940
5941 If str is NULL, (!*str), or (!len) thenN@C3e,i:
5942 allocate any memory for a new string, andI@KEW,N:string()
5943 will returnG@RN0,S: as opposed to a NULL stringL@abW,8:value_seL@T1T,6:* val,a@LIU,2:;
5944 U@HBG,P@H~G,R@HXc,H@H7G,K:,"cson_value_new");
5945 H@Jb0,M@HyW,Q0@H_h,O@C4G,7:integerL@C4i,n:
5946 {
5947 if( self )
5948 {
5949 #if !CSON_VOID_PTR_IS_BIG
5950 I@ICV,O:self->value,"cson_int_t"I@_KF,_:*self = cson_value_empty;
5951 }
5952 I@R6k,9:value_setL@Je0,6:* val,Q@L9W,5:! valg@VJl,O:#if CSON_VOID_PTR_IS_BIGK@_g~,5:cleanH@Idk,3:valI@HZ~,W:v;
5953 #else
5954 cson_int_t * ivH@IDW,G:iv = (cson_int_tQ@KbM,K:int_t), "cson_int_t"H@akl,1:iK@LZl,J@PD0,B@Ht~,5:cleanH@Idk,7:*iv = vA@Hyl,F:val->value = ivH@_KG,A:val->api =H@Cll,7:integerT@DxG,G@S_l,7:value_sM@KDS,6:* val,T@LDz,5:! valo@VJl,I:cson_double_t * rvH@IDW,B@Ht~,5:cleanH@Idk,A:val->api =H@Cll,S:double;
5955 if( 0.0 != vP@URW,17:/*
5956 unsigned int CsonSessionRegLen = sizeof(CsonSessionReg)/sizeof(CsonSessionReg[0]);
5957
5958
5959 int cson_sessmgr_register( char const * name, cson_sessmgr_factory_f f )
5960 {
5961 cson_sessmnlen = strlen(name)if( nlen >= CsonSessionNameLe > then store
5962 the int value direcaul
5963 o 200
--- a/src/cson_amalgamation.h
+++ b/src/cson_amalgamation.h
@@ -0,0 +1,206 @@
1
+ #ifdef returneded
2
+ #ifde.value * recursively if it is
3
+ and multiple times within a
4
+ full cost. We
5
+ have no what visited
6
+ we
7
+ count
8
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
9
+ ACHTUNG: ta const pointer but the #if to fetch
10
+ that handle or insert
11
+ itto transfer ownership returned
12
+ #ifde.value * recursively if it is
13
+ and multiple times within a
14
+ full cost. We
15
+ have no what visited
16
+ we
17
+ count
18
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
19
+ ACHTUNG: ta const pointer but the #if to fetch
20
+ that handle or insert
21
+ itto transfer ownershipd
22
+ #ifde.value * recursively if it is
23
+ and multiple times within a
24
+ full cost. We
25
+ have no what visited
26
+ we
27
+ count
28
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
29
+ ACHT/*gcc*/does not need to dynamle or insert
30
+ itto transfer ownershipdef CSON_VOID_PTR_IS_BIG
31
+
32
+ONLY define this to a true value if you know that
33
+
34
+(sizeof(cson_int_t) <= sizeof(void*))
35
+
36
+If that is the case, cson does not need to dynamically
37
+allocate integers. However, enabling this may cause
38
+compilation warnings in 32-bit builds even though tht around such
39
+warnings, when. To get around such
40
+warnings, when building on a 64-bit environment you can define
41
+this to 1 to get "big" integer support. HOWEVER, all clients must
42
+also use the same value for this macro. If i knew a halfway reliable
43
+way to determine this automatically at preprocessor-time, i would
44
+automate this. We might be able to do halfway reliably by looking #ifdef returneef retuessiple times within aSESSIn a
45
+ full cost. WeSESSION_H_INCLUDED 1 that handle or ins_session cson Session API
46
+
47
+The cson_session API provides a small interface,
48
+called cson_sessmgr, which defines the basic operations
49
+needed for implementent persistent application state,
50
+across application sessions, by storing the state as
51
+JSON data in "some back-end storage." The exact underlying
52
+storage is not specified by the interface, but two
53
+i #ifde.value * recursively iby the library:
54
+
55
+- File-based sessions.
56
+
57
+- Database-based sessions, using libcpdo for connection
58
+abstraction.
59
+
60
+libcpdo is included, in full, in the cson source tree,
61
+but can also be found on its web page:
62
+
63
+
64
+ we
65
+ counpdo/
66
+
67
+@see cson_sessmgr_register()
68
+@see cson_sessmgr_load()
69
+@see cson_sessmgr_names()
70
+@see cson_sessmgr
71
+@see cson_sessmgr_api
72
+*/
73
+ sessmgr cson_sessmgr;
74
+ sessmgr_api cson_sessmgr_api;
75
+
76
+ sessmgr_api
77
+
78
+ Defines operations required by "session managers." Session managers
79
+ are responsible for loading and saving cson session information
80
+ in the form of JSON data.
81
+
82
+ @see cson_sessmgr
83
+ */
84
+ struct cson_sessmgr_api
85
+ {
86
+ /**
87
+ Loads/creates a session object (JSON data). The
88
+ must use the given identifier for loading an
89
+ existing session, creating the sestrue and the session data is not found. If createIfNeeded
90
+ is true then themust create an Object for
91
+ the session root, as opposed to an Array or other JSON
92
+ value. Clients are allowed to use non-Objects as their
93
+ sessions but doing so would seem to have no benefit, and is
94
+ not recommended.
95
+
96
+ If the gireturned
97
+ #ifde.value * recursively if it is
98
+ and multiple times within a
99
+ full cost. We
100
+ have no what visited
101
+ we
102
+ count
103
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
104
+ ACHTUNG: ta const pointer but the #if to fetch
105
+ that handle or insert
106
+ itto transfer ownership returned
107
+ #ifde.value * recursively if it is
108
+ and multiple times within a
109
+ full cost. We
110
+ have no what visited
111
+ we
112
+ count
113
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
114
+ ACHTUNG: ta const pointer but the #if to fetch
115
+ that handle or insert
116
+ itto transfer ownershipd
117
+ #ifde.value * recursively if it is
118
+ and multiple times within a
119
+ full cost. We
120
+ have no what visited
121
+ we
122
+ count
123
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
124
+ ACHTUNG: ta const pointer but the #if to fetch
125
+ that handle or insert
126
+ itto transfer ownershipdef CSON_VOID_PTR_IS_BIG
127
+
128
+ONLY define this to a true value if you know that
129
+
130
+(sizeof(cson_int_t) <= sizeof(void*))
131
+
132
+If that is the case, cson does not need to dynamically
133
+allocate integers. However, enabling this may cause
134
+compilation warnings in 32-bit builds even though the code
135
+being warned about cannot ever be called. To get around such
136
+warnings, when building on a 64-bit environment you can define
137
+this to 1 to get "big" integer support. HOWEVER, all clients must
138
+also use the same value for this macro. If i knew a halfway reliable
139
+way to determine this automatically at preprocessor-time, i would
140
+automate this. We might be able to do halfway reliably by looking #ifdef returned
141
+ #ifde.value * recursively if it is
142
+ and multiple times within a
143
+ full cost. We
144
+ have no what visited
145
+ we
146
+ count
147
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
148
+ ACHTUNG: ta const pointer but the #if to fetch
149
+ that handle or insert
150
+ itto transfer ownership returned
151
+ #ifde.value * recursively if it is
152
+ and multiple times within a
153
+ full cost. We
154
+ have no what visited
155
+ we
156
+ count
157
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
158
+ ACHTUNG: ta const pointer but the #if to fetch
159
+ that handle or insert
160
+ itto transfer ownersh//predef.sourceforge.net/prearch.html
161
+
162
+See also: http://poshlib.hookatooka.com/poshlib/trac.cgi/browser/posh.h
163
+*/
164
+# if defined(_WIN64) || defined(__LP64__)/*gcc*/ \
165
+ || defined(_M_X64) || defined(__amd64__) || defined(__amd64) \
166
+ || defined(__x86_64__) || defined(__x86_64) \
167
+ || defined(__ia64__) || defined(__ia64) || defined(_IA64) || defined(__IA64__) \
168
+ || defined(_M_IA64) \
169
+ || defined(__sparc_v9__) || defined(__sparcv9) || defined(_ADDR64) \
170
+ || defined(__64BIT__)
171
+# define CSON_VOID_PTR_IS_BIG 1
172
+# else
173
+# define CSON_VOID_PTR_IS_BIG 0
174
+# endif5u2@Pe,L@BNl,2d@6Jm,N@AIz,9P@6Mm,8ny@6WB,2B1@FUn,3RH2ZP;#ifde.value * recursively if it is
175
+ and multiple times within a
176
+ full cost. We
177
+ have no what visited
178
+ we
179
+ count
180
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
181
+ ACHTUNG: ta const pointer b.
182
+
183
+ E - self, tgt, or id are - id is "not valid" (the meaning of "valid" is
184
+ implementation-dependent) The identifier string must Its maximum
185
+ length, if any, is implementation-dependent.
186
+ */
187
+ int (*har const * id );
188
+
189
+ /**
190
+ Must save the given JSON object tree tostorage, using the given identifier
191
+ as its unique key. It must overwrite any existing session with that same identifier.
192
+ */
193
+ int (*root, char const * id );
194
+
195
+ /**
196
+ Must remove all session dataid.
197
+
198
+ pointer but the #ifdef returned
199
+ #ifde.value * recursively if it is
200
+ and multiple times within a
201
+ full cost. We
202
+ have no what visited
203
+ we
204
+ count
205
+ for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
206
+ ACHTUNG: ta con
--- a/src/cson_amalgamation.h
+++ b/src/cson_amalgamation.h
@@ -0,0 +1,206 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/cson_amalgamation.h
+++ b/src/cson_amalgamation.h
@@ -0,0 +1,206 @@
1 #ifdef returneded
2 #ifde.value * recursively if it is
3 and multiple times within a
4 full cost. We
5 have no what visited
6 we
7 count
8 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
9 ACHTUNG: ta const pointer but the #if to fetch
10 that handle or insert
11 itto transfer ownership returned
12 #ifde.value * recursively if it is
13 and multiple times within a
14 full cost. We
15 have no what visited
16 we
17 count
18 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
19 ACHTUNG: ta const pointer but the #if to fetch
20 that handle or insert
21 itto transfer ownershipd
22 #ifde.value * recursively if it is
23 and multiple times within a
24 full cost. We
25 have no what visited
26 we
27 count
28 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
29 ACHT/*gcc*/does not need to dynamle or insert
30 itto transfer ownershipdef CSON_VOID_PTR_IS_BIG
31
32 ONLY define this to a true value if you know that
33
34 (sizeof(cson_int_t) <= sizeof(void*))
35
36 If that is the case, cson does not need to dynamically
37 allocate integers. However, enabling this may cause
38 compilation warnings in 32-bit builds even though tht around such
39 warnings, when. To get around such
40 warnings, when building on a 64-bit environment you can define
41 this to 1 to get "big" integer support. HOWEVER, all clients must
42 also use the same value for this macro. If i knew a halfway reliable
43 way to determine this automatically at preprocessor-time, i would
44 automate this. We might be able to do halfway reliably by looking #ifdef returneef retuessiple times within aSESSIn a
45 full cost. WeSESSION_H_INCLUDED 1 that handle or ins_session cson Session API
46
47 The cson_session API provides a small interface,
48 called cson_sessmgr, which defines the basic operations
49 needed for implementent persistent application state,
50 across application sessions, by storing the state as
51 JSON data in "some back-end storage." The exact underlying
52 storage is not specified by the interface, but two
53 i #ifde.value * recursively iby the library:
54
55 - File-based sessions.
56
57 - Database-based sessions, using libcpdo for connection
58 abstraction.
59
60 libcpdo is included, in full, in the cson source tree,
61 but can also be found on its web page:
62
63
64 we
65 counpdo/
66
67 @see cson_sessmgr_register()
68 @see cson_sessmgr_load()
69 @see cson_sessmgr_names()
70 @see cson_sessmgr
71 @see cson_sessmgr_api
72 */
73 sessmgr cson_sessmgr;
74 sessmgr_api cson_sessmgr_api;
75
76 sessmgr_api
77
78 Defines operations required by "session managers." Session managers
79 are responsible for loading and saving cson session information
80 in the form of JSON data.
81
82 @see cson_sessmgr
83 */
84 struct cson_sessmgr_api
85 {
86 /**
87 Loads/creates a session object (JSON data). The
88 must use the given identifier for loading an
89 existing session, creating the sestrue and the session data is not found. If createIfNeeded
90 is true then themust create an Object for
91 the session root, as opposed to an Array or other JSON
92 value. Clients are allowed to use non-Objects as their
93 sessions but doing so would seem to have no benefit, and is
94 not recommended.
95
96 If the gireturned
97 #ifde.value * recursively if it is
98 and multiple times within a
99 full cost. We
100 have no what visited
101 we
102 count
103 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
104 ACHTUNG: ta const pointer but the #if to fetch
105 that handle or insert
106 itto transfer ownership returned
107 #ifde.value * recursively if it is
108 and multiple times within a
109 full cost. We
110 have no what visited
111 we
112 count
113 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
114 ACHTUNG: ta const pointer but the #if to fetch
115 that handle or insert
116 itto transfer ownershipd
117 #ifde.value * recursively if it is
118 and multiple times within a
119 full cost. We
120 have no what visited
121 we
122 count
123 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
124 ACHTUNG: ta const pointer but the #if to fetch
125 that handle or insert
126 itto transfer ownershipdef CSON_VOID_PTR_IS_BIG
127
128 ONLY define this to a true value if you know that
129
130 (sizeof(cson_int_t) <= sizeof(void*))
131
132 If that is the case, cson does not need to dynamically
133 allocate integers. However, enabling this may cause
134 compilation warnings in 32-bit builds even though the code
135 being warned about cannot ever be called. To get around such
136 warnings, when building on a 64-bit environment you can define
137 this to 1 to get "big" integer support. HOWEVER, all clients must
138 also use the same value for this macro. If i knew a halfway reliable
139 way to determine this automatically at preprocessor-time, i would
140 automate this. We might be able to do halfway reliably by looking #ifdef returned
141 #ifde.value * recursively if it is
142 and multiple times within a
143 full cost. We
144 have no what visited
145 we
146 count
147 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
148 ACHTUNG: ta const pointer but the #if to fetch
149 that handle or insert
150 itto transfer ownership returned
151 #ifde.value * recursively if it is
152 and multiple times within a
153 full cost. We
154 have no what visited
155 we
156 count
157 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
158 ACHTUNG: ta const pointer but the #if to fetch
159 that handle or insert
160 itto transfer ownersh//predef.sourceforge.net/prearch.html
161
162 See also: http://poshlib.hookatooka.com/poshlib/trac.cgi/browser/posh.h
163 */
164 # if defined(_WIN64) || defined(__LP64__)/*gcc*/ \
165 || defined(_M_X64) || defined(__amd64__) || defined(__amd64) \
166 || defined(__x86_64__) || defined(__x86_64) \
167 || defined(__ia64__) || defined(__ia64) || defined(_IA64) || defined(__IA64__) \
168 || defined(_M_IA64) \
169 || defined(__sparc_v9__) || defined(__sparcv9) || defined(_ADDR64) \
170 || defined(__64BIT__)
171 # define CSON_VOID_PTR_IS_BIG 1
172 # else
173 # define CSON_VOID_PTR_IS_BIG 0
174 # endif5u2@Pe,L@BNl,2d@6Jm,N@AIz,9P@6Mm,8ny@6WB,2B1@FUn,3RH2ZP;#ifde.value * recursively if it is
175 and multiple times within a
176 full cost. We
177 have no what visited
178 we
179 count
180 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
181 ACHTUNG: ta const pointer b.
182
183 E - self, tgt, or id are - id is "not valid" (the meaning of "valid" is
184 implementation-dependent) The identifier string must Its maximum
185 length, if any, is implementation-dependent.
186 */
187 int (*har const * id );
188
189 /**
190 Must save the given JSON object tree tostorage, using the given identifier
191 as its unique key. It must overwrite any existing session with that same identifier.
192 */
193 int (*root, char const * id );
194
195 /**
196 Must remove all session dataid.
197
198 pointer but the #ifdef returned
199 #ifde.value * recursively if it is
200 and multiple times within a
201 full cost. We
202 have no what visited
203 we
204 count
205 for#ifdef FOSSIL_ENABLEFOSSIL_ENABLE, char sepconstconst )a
206 ACHTUNG: ta con
+21 -12
--- src/db.c
+++ src/db.c
@@ -56,32 +56,41 @@
5656
** Call this routine when a database error occurs.
5757
*/
5858
static void db_err(const char *zFormat, ...){
5959
va_list ap;
6060
char *z;
61
+ int rc = 1;
6162
static const char zRebuildMsg[] =
6263
"If you have recently updated your fossil executable, you might\n"
6364
"need to run \"fossil all rebuild\" to bring the repository\n"
6465
"schemas up to date.\n";
6566
va_start(ap, zFormat);
6667
z = vmprintf(zFormat, ap);
6768
va_end(ap);
68
- if( g.xferPanic ){
69
- cgi_reset_content();
70
- @ error Database\serror:\s%F(z)
71
- cgi_reply();
72
- }
73
- if( g.cgiOutput ){
74
- g.cgiOutput = 0;
75
- cgi_printf("<h1>Database Error</h1>\n"
76
- "<pre>%h</pre><p>%s</p>", z, zRebuildMsg);
77
- cgi_reply();
69
+ if( g.json.isJsonMode ){
70
+ json_err( 0, z, 1 );
71
+ if( g.isCGI ){
72
+ rc = 0 /* avoid HTTP 500 */;
73
+ }
7874
}else{
79
- fprintf(stderr, "%s: %s\n\n%s", fossil_nameofexe(), z, zRebuildMsg);
75
+ if( g.xferPanic ){
76
+ cgi_reset_content();
77
+ @ error Database\serror:\s%F(z)
78
+ cgi_reply();
79
+ }
80
+ if( g.cgiOutput ){
81
+ g.cgiOutput = 0;
82
+ cgi_printf("<h1>Database Error</h1>\n"
83
+ "<pre>%h</pre><p>%s</p>", z, zRebuildMsg);
84
+ cgi_reply();
85
+ }else{
86
+ fprintf(stderr, "%s: %s\n\n%s", fossil_nameofexe(), z, zRebuildMsg);
87
+ }
8088
}
89
+ free(z);
8190
db_force_rollback();
82
- fossil_exit(1);
91
+ fossil_exit(rc);
8392
}
8493
8594
static int nBegin = 0; /* Nesting depth of BEGIN */
8695
static int doRollback = 0; /* True to force a rollback */
8796
static int nCommitHook = 0; /* Number of commit hooks */
8897
8998
ADDED src/json.c
--- src/db.c
+++ src/db.c
@@ -56,32 +56,41 @@
56 ** Call this routine when a database error occurs.
57 */
58 static void db_err(const char *zFormat, ...){
59 va_list ap;
60 char *z;
 
61 static const char zRebuildMsg[] =
62 "If you have recently updated your fossil executable, you might\n"
63 "need to run \"fossil all rebuild\" to bring the repository\n"
64 "schemas up to date.\n";
65 va_start(ap, zFormat);
66 z = vmprintf(zFormat, ap);
67 va_end(ap);
68 if( g.xferPanic ){
69 cgi_reset_content();
70 @ error Database\serror:\s%F(z)
71 cgi_reply();
72 }
73 if( g.cgiOutput ){
74 g.cgiOutput = 0;
75 cgi_printf("<h1>Database Error</h1>\n"
76 "<pre>%h</pre><p>%s</p>", z, zRebuildMsg);
77 cgi_reply();
78 }else{
79 fprintf(stderr, "%s: %s\n\n%s", fossil_nameofexe(), z, zRebuildMsg);
 
 
 
 
 
 
 
 
 
 
 
 
80 }
 
81 db_force_rollback();
82 fossil_exit(1);
83 }
84
85 static int nBegin = 0; /* Nesting depth of BEGIN */
86 static int doRollback = 0; /* True to force a rollback */
87 static int nCommitHook = 0; /* Number of commit hooks */
88
89 DDED src/json.c
--- src/db.c
+++ src/db.c
@@ -56,32 +56,41 @@
56 ** Call this routine when a database error occurs.
57 */
58 static void db_err(const char *zFormat, ...){
59 va_list ap;
60 char *z;
61 int rc = 1;
62 static const char zRebuildMsg[] =
63 "If you have recently updated your fossil executable, you might\n"
64 "need to run \"fossil all rebuild\" to bring the repository\n"
65 "schemas up to date.\n";
66 va_start(ap, zFormat);
67 z = vmprintf(zFormat, ap);
68 va_end(ap);
69 if( g.json.isJsonMode ){
70 json_err( 0, z, 1 );
71 if( g.isCGI ){
72 rc = 0 /* avoid HTTP 500 */;
73 }
 
 
 
 
 
74 }else{
75 if( g.xferPanic ){
76 cgi_reset_content();
77 @ error Database\serror:\s%F(z)
78 cgi_reply();
79 }
80 if( g.cgiOutput ){
81 g.cgiOutput = 0;
82 cgi_printf("<h1>Database Error</h1>\n"
83 "<pre>%h</pre><p>%s</p>", z, zRebuildMsg);
84 cgi_reply();
85 }else{
86 fprintf(stderr, "%s: %s\n\n%s", fossil_nameofexe(), z, zRebuildMsg);
87 }
88 }
89 free(z);
90 db_force_rollback();
91 fossil_exit(rc);
92 }
93
94 static int nBegin = 0; /* Nesting depth of BEGIN */
95 static int doRollback = 0; /* True to force a rollback */
96 static int nCommitHook = 0; /* Number of commit hooks */
97
98 DDED src/json.c
+88
--- a/src/json.c
+++ b/src/json.c
@@ -0,0 +1,88 @@
1
+avif( colNamwikiWiki[] = {, COOKIE,T ENV, but
2
+** for me to
3
+** precedence isn't
4
+** TODO: change how the "range" of branches is specified.
5
+** Take a string arg in the form ("open","all","closed")
6
+** and decide based off of that.cson_object * paypayVlistV is owned by the
7
+** COOKIE _should_ be after POST
8
+** but currently is not for internal order-of-init reasons. Since
9
+**if( colNamwikiWiki[] = {, COOK{, COOKIE,T
10
+** problemelse{
11
+ avif( colNamwikiWStmt q? "all"
12
+showAll?1:(showClosed?-1:0)payshowAshowCprepareBranchQuwAll?1:(showClosed?avif( colNamwikiWiki[] = {, COOKIE,T ENV, but
13
+** fo/RESTr me to
14
+** prece* NOT YET FINSIHED!
15
+** TODOs:
16
+**
17
+** - anonymous user l}*
18
+** Thuires separate
19
+};1:(showClosed?-1:0)payshowAavif( colNamwikiWiki[] = {, COOKIE,T ENV, but
20
+** for me to
21
+** precedence isn't
22
+** TODO: change how1if( g./*
23
+** The "official" list of Fossil/JSON error codes.
24
+** Their values might very well change during initial
25
+** development but after their first public release
26
+** they must stay stable.
27
+** Values must be in the range 1..9999
28
+**
29
+** Numbers evenly dividable by 100 are "categories",
30
+** and error codes for a given category have their
31
+** high bits set to the category value.
32
+**
33
+*/
34
+enum FossilJsonCodes {
35
+
36
+FSL_JSON_E_GENERIC = 1000,
37
+FSL_JSON_E_ based off of tha).
38
+**
39
+** - orks bUNKNOWN = FSL_JSON_E_GENERICON_E_GENERIC_SUB1 + 4,
40
+FSL_JSC_SUB1 + 5,
41
+FSL_JS_SUB1 + 6,
42
+FSL_JSSUB1 + 7,
43
+FSL_JSNYI = FSL_JSON + 8,
44
+
45
+rg in the form ( re-use */
46
+ = FSL_JSON_E_AUTH + 2,
47
+avif( colNamwikiWikiiWiki[] = {, COOKIE,T ENV, but
48
+** for me to
49
+** precedence isn't
50
+** TODO: change how the "range" of branches is specified.
51
+** Take a string arg iter POST
52
+** but currently is not fT FINSIHED!
53
+** TODOs:
54
+m ("open","all","closed")
55
+** and decide based off of that.cson_object * paypayVlistV islNamwikiWiki[] = {, COOKIE,T ENV, but
56
+** fo/RESTr me to
57
+** prece* NOT YET FINSIHED!
58
+** TODOs:
59
+**
60
+** - anonymous user login (requires separate handling
61
+** due to random password).
62
+**
63
+** - orks but we don't yet have
64
+** a non-browser client to play with.
65
+**1:(showClosed?-1:0)payshowAavif( colNamwikiWiki[] = {, COOKIE,T ENV, but
66
+** for me to
67
+** precedence isn't
68
+** TO,DO: change how1
69
+ else return;
70
+ else once = 1; {
71
+ break; continue; into an
72
+ internal list so
73
+ onpath_partg.isCGI
74
+ ? cson_value_get_array("a))
75
+ : NULL"g.isCGI ? 0 : 1/*skip argv[0] igpc"her
76
+** but
77
+** (haven't
78
+** is malformg.isCGI = 1;
79
+ }
80
+ /*json_err( 1 if( !zPat"e","PATH_INFO")));
81
+ } head = p;
82
+ cson_value * piece = NULL * arV =array();
83
+#if 0 "FOSSIL_PATH_INFO"reasons. Since
84
+**if( colNavif( colNamwikiWiki[] = {, Cavif( colNamwikiWiki[] = {, COOKIE,cson_cgi_path_part_cstri ) }cgi_path_part_cstr eENV;
85
+ if( !o ){/* POST data is an array, which we can't use. */
86
+ assert( cson_value_is_array() );
87
+= NULL;
88
+ }/cmd =&g.json.cgiCx,10channeling resug.argv[2]0
--- a/src/json.c
+++ b/src/json.c
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/json.c
+++ b/src/json.c
@@ -0,0 +1,88 @@
1 avif( colNamwikiWiki[] = {, COOKIE,T ENV, but
2 ** for me to
3 ** precedence isn't
4 ** TODO: change how the "range" of branches is specified.
5 ** Take a string arg in the form ("open","all","closed")
6 ** and decide based off of that.cson_object * paypayVlistV is owned by the
7 ** COOKIE _should_ be after POST
8 ** but currently is not for internal order-of-init reasons. Since
9 **if( colNamwikiWiki[] = {, COOK{, COOKIE,T
10 ** problemelse{
11 avif( colNamwikiWStmt q? "all"
12 showAll?1:(showClosed?-1:0)payshowAshowCprepareBranchQuwAll?1:(showClosed?avif( colNamwikiWiki[] = {, COOKIE,T ENV, but
13 ** fo/RESTr me to
14 ** prece* NOT YET FINSIHED!
15 ** TODOs:
16 **
17 ** - anonymous user l}*
18 ** Thuires separate
19 };1:(showClosed?-1:0)payshowAavif( colNamwikiWiki[] = {, COOKIE,T ENV, but
20 ** for me to
21 ** precedence isn't
22 ** TODO: change how1if( g./*
23 ** The "official" list of Fossil/JSON error codes.
24 ** Their values might very well change during initial
25 ** development but after their first public release
26 ** they must stay stable.
27 ** Values must be in the range 1..9999
28 **
29 ** Numbers evenly dividable by 100 are "categories",
30 ** and error codes for a given category have their
31 ** high bits set to the category value.
32 **
33 */
34 enum FossilJsonCodes {
35
36 FSL_JSON_E_GENERIC = 1000,
37 FSL_JSON_E_ based off of tha).
38 **
39 ** - orks bUNKNOWN = FSL_JSON_E_GENERICON_E_GENERIC_SUB1 + 4,
40 FSL_JSC_SUB1 + 5,
41 FSL_JS_SUB1 + 6,
42 FSL_JSSUB1 + 7,
43 FSL_JSNYI = FSL_JSON + 8,
44
45 rg in the form ( re-use */
46 = FSL_JSON_E_AUTH + 2,
47 avif( colNamwikiWikiiWiki[] = {, COOKIE,T ENV, but
48 ** for me to
49 ** precedence isn't
50 ** TODO: change how the "range" of branches is specified.
51 ** Take a string arg iter POST
52 ** but currently is not fT FINSIHED!
53 ** TODOs:
54 m ("open","all","closed")
55 ** and decide based off of that.cson_object * paypayVlistV islNamwikiWiki[] = {, COOKIE,T ENV, but
56 ** fo/RESTr me to
57 ** prece* NOT YET FINSIHED!
58 ** TODOs:
59 **
60 ** - anonymous user login (requires separate handling
61 ** due to random password).
62 **
63 ** - orks but we don't yet have
64 ** a non-browser client to play with.
65 **1:(showClosed?-1:0)payshowAavif( colNamwikiWiki[] = {, COOKIE,T ENV, but
66 ** for me to
67 ** precedence isn't
68 ** TO,DO: change how1
69 else return;
70 else once = 1; {
71 break; continue; into an
72 internal list so
73 onpath_partg.isCGI
74 ? cson_value_get_array("a))
75 : NULL"g.isCGI ? 0 : 1/*skip argv[0] igpc"her
76 ** but
77 ** (haven't
78 ** is malformg.isCGI = 1;
79 }
80 /*json_err( 1 if( !zPat"e","PATH_INFO")));
81 } head = p;
82 cson_value * piece = NULL * arV =array();
83 #if 0 "FOSSIL_PATH_INFO"reasons. Since
84 **if( colNavif( colNamwikiWiki[] = {, Cavif( colNamwikiWiki[] = {, COOKIE,cson_cgi_path_part_cstri ) }cgi_path_part_cstr eENV;
85 if( !o ){/* POST data is an array, which we can't use. */
86 assert( cson_value_is_array() );
87 = NULL;
88 }/cmd =&g.json.cgiCx,10channeling resug.argv[2]0
+119 -36
--- src/login.c
+++ src/login.c
@@ -84,11 +84,11 @@
8484
**
8585
** The login cookie name is always of the form: fossil-XXXXXXXXXXXXXXXX
8686
** where the Xs are the first 16 characters of the login-group-code or
8787
** of the project-code if we are not a member of any login-group.
8888
*/
89
-static char *login_cookie_name(void){
89
+char *login_cookie_name(void){
9090
static char *zCookieName = 0;
9191
if( zCookieName==0 ){
9292
zCookieName = db_text(0,
9393
"SELECT 'fossil-' || substr(value,1,16)"
9494
" FROM config"
@@ -141,24 +141,26 @@
141141
142142
143143
/*
144144
** Check to see if the anonymous login is valid. If it is valid, return
145145
** the userid of the anonymous user.
146
+**
147
+** The zCS parameter is the "captcha seed" used for a specific
148
+** anonymous login request.
146149
*/
147150
static int isValidAnonymousLogin(
148151
const char *zUsername, /* The username. Must be "anonymous" */
149
- const char *zPassword /* The supplied password */
152
+ const char *zPassword, /* The supplied password */
153
+ const char *zCS /* The captcha seed value */
150154
){
151
- const char *zCS; /* The captcha seed value */
152155
const char *zPw; /* The correct password shown in the captcha */
153156
int uid; /* The user ID of anonymous */
154157
155158
if( zUsername==0 ) return 0;
156
- if( zPassword==0 ) return 0;
157
- if( fossil_strcmp(zUsername,"anonymous")!=0 ) return 0;
158
- zCS = P("cs"); /* The "cs" parameter is the "captcha seed" */
159
- if( zCS==0 ) return 0;
159
+ else if( zPassword==0 ) return 0;
160
+ else if( zCS==0 ) return 0;
161
+ else if( fossil_strcmp(zUsername,"anonymous")!=0 ) return 0;
160162
zPw = captcha_decode((unsigned int)atoi(zCS));
161163
if( fossil_stricmp(zPw, zPassword)!=0 ) return 0;
162164
uid = db_int(0, "SELECT uid FROM user WHERE login='anonymous'"
163165
" AND length(pw)>0 AND length(cap)>0");
164166
return uid;
@@ -192,10 +194,112 @@
192194
"INSERT INTO accesslog(uname,ipaddr,success,mtime)"
193195
"VALUES(%Q,%Q,%d,julianday('now'));",
194196
zUsername, zIpAddr, bSuccess
195197
);
196198
}
199
+
200
+/*
201
+** Searches for the user ID matching the given name and password.
202
+** On success it returns a positive value. On error it returns 0.
203
+** On serious (DB-level) error it will probably exit.
204
+**
205
+** zPassword may be either the plain-text form or the encrypted
206
+** form of the user's password.
207
+*/
208
+int login_search_uid(char const *zUsername, char const *zPasswd){
209
+ char * zSha1Pw = sha1_shared_secret(zPasswd, zUsername, 0);
210
+ int const uid =
211
+ db_int(0,
212
+ "SELECT uid FROM user"
213
+ " WHERE login=%Q"
214
+ " AND length(cap)>0 AND length(pw)>0"
215
+ " AND login NOT IN ('anonymous','nobody','developer','reader')"
216
+ " AND (pw=%Q OR pw=%Q)",
217
+ zUsername, zPasswd, zSha1Pw
218
+ );
219
+ free(zSha1Pw);
220
+ return uid;
221
+}
222
+
223
+/*
224
+** Generates a login cookie value for a non-anonymous user.
225
+**
226
+** The zHash parameter must be a random value which must be
227
+** subsequently stored in user.cookie for later validation.
228
+**
229
+** The returned memory should be free()d after use.
230
+*/
231
+char * login_gen_user_cookie_value(char const *zUsername, char const * zHash){
232
+ char *zCode = abbreviated_project_code(db_get("project-code",""));
233
+ assert((zUsername && *zUsername) && "Invalid user data.");
234
+ return mprintf("%s/%z/%s", zHash, zCode, zUsername);
235
+}
236
+
237
+/*
238
+** Generates a login cookie for NON-ANONYMOUS users. Note that this
239
+** function "could" figure out the uid by itself but it currently
240
+** doesn't because the code which calls this already has the uid.
241
+**
242
+** This function also updates the user.cookie, user.ipaddr,
243
+** and user.cexpire fields for the given user.
244
+**
245
+** If zDest is not NULL then the generated cookie is copied to
246
+** *zDdest and ownership is transfered to the caller (who should
247
+** eventually pass it to free()).
248
+*/
249
+void login_set_user_cookie(
250
+ char const * zUsername, /* User's name */
251
+ int uid, /* User's ID */
252
+ char ** zDest /* Optional: store generated cookie value. */
253
+){
254
+ const char *zCookieName = login_cookie_name();
255
+ const char *zExpire = db_get("cookie-expire","8766");
256
+ int expires = atoi(zExpire)*3600;
257
+ char *zHash;
258
+ char *zCookie;
259
+ char const * zIpAddr = PD("REMOTE_ADDR","nil"); /* Complete IP address for logging */
260
+ char * zRemoteAddr = ipPrefix(zIpAddr); /* Abbreviated IP address */
261
+ assert((zUsername && *zUsername) && (uid > 0) && "Invalid user data.");
262
+ zHash = db_text(0, "SELECT hex(randomblob(25))");
263
+ zCookie = login_gen_user_cookie_value(zUsername, zHash);
264
+ cgi_set_cookie(zCookieName, zCookie, login_cookie_path(), expires);
265
+ record_login_attempt(zUsername, zIpAddr, 1);
266
+ db_multi_exec(
267
+ "UPDATE user SET cookie=%Q, ipaddr=%Q, "
268
+ " cexpire=julianday('now')+%d/86400.0 WHERE uid=%d",
269
+ zHash, zRemoteAddr, expires, uid
270
+ );
271
+ free(zRemoteAddr);
272
+ free(zHash);
273
+ if( zDest ){
274
+ *zDest = zCookie;
275
+ }else{
276
+ free(zCookie);
277
+ }
278
+}
279
+
280
+/*
281
+** "Unsets" the login cookie (insofar as cookies can be unset) and
282
+** clears the current user's (g.userUid) login information from the
283
+** user table. Sets: user.cookie, user.ipaddr, user.cexpire.
284
+**
285
+** We could/should arguably clear out g.userUid and g.perm here, but
286
+** we don't currently do not.
287
+**
288
+** This is a no-op if g.userUid is 0.
289
+*/
290
+void login_clear_login_data(){
291
+ if(!g.userUid){
292
+ return;
293
+ }else{
294
+ /* To logout, change the cookie value to an empty string */
295
+ cgi_set_cookie(login_cookie_name(), "",
296
+ login_cookie_path(), -86400);
297
+ db_multi_exec("UPDATE user SET cookie=NULL, ipaddr=NULL, "
298
+ " cexpire=0 WHERE uid=%d", g.userUid);
299
+ }
300
+}
197301
198302
/*
199303
** WEBPAGE: login
200304
** WEBPAGE: logout
201305
** WEBPAGE: my
@@ -221,13 +325,11 @@
221325
login_check_credentials();
222326
zUsername = P("u");
223327
zPasswd = P("p");
224328
anonFlag = P("anon")!=0;
225329
if( P("out")!=0 ){
226
- /* To logout, change the cookie value to an empty string */
227
- const char *zCookieName = login_cookie_name();
228
- cgi_set_cookie(zCookieName, "", login_cookie_path(), -86400);
330
+ login_clear_login_data();
229331
redirect_to_g();
230332
}
231333
if( g.perm.Password && zPasswd && (zNew1 = P("n1"))!=0 && (zNew2 = P("n2"))!=0 ){
232334
/* The user requests a password change */
233335
zSha1Pw = sha1_shared_secret(zPasswd, g.zLogin, 0);
@@ -272,11 +374,11 @@
272374
}
273375
}
274376
}
275377
zIpAddr = PD("REMOTE_ADDR","nil"); /* Complete IP address for logging */
276378
zRemoteAddr = ipPrefix(zIpAddr); /* Abbreviated IP address */
277
- uid = isValidAnonymousLogin(zUsername, zPasswd);
379
+ uid = isValidAnonymousLogin(zUsername, zPasswd, P("cs"));
278380
if( uid>0 ){
279381
/* Successful login as anonymous. Set a cookie that looks like
280382
** this:
281383
**
282384
** HASH/TIME/anonymous
@@ -302,19 +404,11 @@
302404
redirect_to_g();
303405
}
304406
if( zUsername!=0 && zPasswd!=0 && zPasswd[0]!=0 ){
305407
/* Attempting to log in as a user other than anonymous.
306408
*/
307
- zSha1Pw = sha1_shared_secret(zPasswd, zUsername, 0);
308
- uid = db_int(0,
309
- "SELECT uid FROM user"
310
- " WHERE login=%Q"
311
- " AND length(cap)>0 AND length(pw)>0"
312
- " AND login NOT IN ('anonymous','nobody','developer','reader')"
313
- " AND (pw=%Q OR pw=%Q)",
314
- zUsername, zPasswd, zSha1Pw
315
- );
409
+ uid = login_search_uid(zUsername, zPasswd);
316410
if( uid<=0 ){
317411
sleep(1);
318412
zErrMsg =
319413
@ <p><span class="loginError">
320414
@ You entered an unknown user or an incorrect password.
@@ -327,26 +421,11 @@
327421
** HASH/PROJECT/LOGIN
328422
**
329423
** where HASH is a random hex number, PROJECT is either project
330424
** code prefix, and LOGIN is the user name.
331425
*/
332
- char *zCookie;
333
- const char *zCookieName = login_cookie_name();
334
- const char *zExpire = db_get("cookie-expire","8766");
335
- int expires = atoi(zExpire)*3600;
336
- char *zCode = abbreviated_project_code(db_get("project-code",""));
337
- char *zHash;
338
-
339
- zHash = db_text(0, "SELECT hex(randomblob(25))");
340
- zCookie = mprintf("%s/%s/%s", zHash, zCode, zUsername);
341
- cgi_set_cookie(zCookieName, zCookie, login_cookie_path(), expires);
342
- record_login_attempt(zUsername, zIpAddr, 1);
343
- db_multi_exec(
344
- "UPDATE user SET cookie=%Q, ipaddr=%Q, "
345
- " cexpire=julianday('now')+%d/86400.0 WHERE uid=%d",
346
- zHash, zRemoteAddr, expires, uid
347
- );
426
+ login_set_user_cookie(zUsername, uid, NULL);
348427
redirect_to_g();
349428
}
350429
}
351430
style_header("Login/Logout");
352431
@ %s(zErrMsg)
@@ -513,10 +592,14 @@
513592
}
514593
515594
/*
516595
** Lookup the uid for a user with zLogin and zCookie and zRemoteAddr.
517596
** Return 0 if not found.
597
+**
598
+** Note that this only searches for logged-in entries with
599
+** matching zCookie (user.cookie) and zRemoteAddr (user.ipaddr)
600
+** entries.
518601
*/
519602
static int login_find_user(
520603
const char *zLogin, /* User name */
521604
const char *zCookie, /* Login cookie value */
522605
const char *zRemoteAddr /* Abbreviated IP address for valid login */
523606
--- src/login.c
+++ src/login.c
@@ -84,11 +84,11 @@
84 **
85 ** The login cookie name is always of the form: fossil-XXXXXXXXXXXXXXXX
86 ** where the Xs are the first 16 characters of the login-group-code or
87 ** of the project-code if we are not a member of any login-group.
88 */
89 static char *login_cookie_name(void){
90 static char *zCookieName = 0;
91 if( zCookieName==0 ){
92 zCookieName = db_text(0,
93 "SELECT 'fossil-' || substr(value,1,16)"
94 " FROM config"
@@ -141,24 +141,26 @@
141
142
143 /*
144 ** Check to see if the anonymous login is valid. If it is valid, return
145 ** the userid of the anonymous user.
 
 
 
146 */
147 static int isValidAnonymousLogin(
148 const char *zUsername, /* The username. Must be "anonymous" */
149 const char *zPassword /* The supplied password */
 
150 ){
151 const char *zCS; /* The captcha seed value */
152 const char *zPw; /* The correct password shown in the captcha */
153 int uid; /* The user ID of anonymous */
154
155 if( zUsername==0 ) return 0;
156 if( zPassword==0 ) return 0;
157 if( fossil_strcmp(zUsername,"anonymous")!=0 ) return 0;
158 zCS = P("cs"); /* The "cs" parameter is the "captcha seed" */
159 if( zCS==0 ) return 0;
160 zPw = captcha_decode((unsigned int)atoi(zCS));
161 if( fossil_stricmp(zPw, zPassword)!=0 ) return 0;
162 uid = db_int(0, "SELECT uid FROM user WHERE login='anonymous'"
163 " AND length(pw)>0 AND length(cap)>0");
164 return uid;
@@ -192,10 +194,112 @@
192 "INSERT INTO accesslog(uname,ipaddr,success,mtime)"
193 "VALUES(%Q,%Q,%d,julianday('now'));",
194 zUsername, zIpAddr, bSuccess
195 );
196 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
198 /*
199 ** WEBPAGE: login
200 ** WEBPAGE: logout
201 ** WEBPAGE: my
@@ -221,13 +325,11 @@
221 login_check_credentials();
222 zUsername = P("u");
223 zPasswd = P("p");
224 anonFlag = P("anon")!=0;
225 if( P("out")!=0 ){
226 /* To logout, change the cookie value to an empty string */
227 const char *zCookieName = login_cookie_name();
228 cgi_set_cookie(zCookieName, "", login_cookie_path(), -86400);
229 redirect_to_g();
230 }
231 if( g.perm.Password && zPasswd && (zNew1 = P("n1"))!=0 && (zNew2 = P("n2"))!=0 ){
232 /* The user requests a password change */
233 zSha1Pw = sha1_shared_secret(zPasswd, g.zLogin, 0);
@@ -272,11 +374,11 @@
272 }
273 }
274 }
275 zIpAddr = PD("REMOTE_ADDR","nil"); /* Complete IP address for logging */
276 zRemoteAddr = ipPrefix(zIpAddr); /* Abbreviated IP address */
277 uid = isValidAnonymousLogin(zUsername, zPasswd);
278 if( uid>0 ){
279 /* Successful login as anonymous. Set a cookie that looks like
280 ** this:
281 **
282 ** HASH/TIME/anonymous
@@ -302,19 +404,11 @@
302 redirect_to_g();
303 }
304 if( zUsername!=0 && zPasswd!=0 && zPasswd[0]!=0 ){
305 /* Attempting to log in as a user other than anonymous.
306 */
307 zSha1Pw = sha1_shared_secret(zPasswd, zUsername, 0);
308 uid = db_int(0,
309 "SELECT uid FROM user"
310 " WHERE login=%Q"
311 " AND length(cap)>0 AND length(pw)>0"
312 " AND login NOT IN ('anonymous','nobody','developer','reader')"
313 " AND (pw=%Q OR pw=%Q)",
314 zUsername, zPasswd, zSha1Pw
315 );
316 if( uid<=0 ){
317 sleep(1);
318 zErrMsg =
319 @ <p><span class="loginError">
320 @ You entered an unknown user or an incorrect password.
@@ -327,26 +421,11 @@
327 ** HASH/PROJECT/LOGIN
328 **
329 ** where HASH is a random hex number, PROJECT is either project
330 ** code prefix, and LOGIN is the user name.
331 */
332 char *zCookie;
333 const char *zCookieName = login_cookie_name();
334 const char *zExpire = db_get("cookie-expire","8766");
335 int expires = atoi(zExpire)*3600;
336 char *zCode = abbreviated_project_code(db_get("project-code",""));
337 char *zHash;
338
339 zHash = db_text(0, "SELECT hex(randomblob(25))");
340 zCookie = mprintf("%s/%s/%s", zHash, zCode, zUsername);
341 cgi_set_cookie(zCookieName, zCookie, login_cookie_path(), expires);
342 record_login_attempt(zUsername, zIpAddr, 1);
343 db_multi_exec(
344 "UPDATE user SET cookie=%Q, ipaddr=%Q, "
345 " cexpire=julianday('now')+%d/86400.0 WHERE uid=%d",
346 zHash, zRemoteAddr, expires, uid
347 );
348 redirect_to_g();
349 }
350 }
351 style_header("Login/Logout");
352 @ %s(zErrMsg)
@@ -513,10 +592,14 @@
513 }
514
515 /*
516 ** Lookup the uid for a user with zLogin and zCookie and zRemoteAddr.
517 ** Return 0 if not found.
 
 
 
 
518 */
519 static int login_find_user(
520 const char *zLogin, /* User name */
521 const char *zCookie, /* Login cookie value */
522 const char *zRemoteAddr /* Abbreviated IP address for valid login */
523
--- src/login.c
+++ src/login.c
@@ -84,11 +84,11 @@
84 **
85 ** The login cookie name is always of the form: fossil-XXXXXXXXXXXXXXXX
86 ** where the Xs are the first 16 characters of the login-group-code or
87 ** of the project-code if we are not a member of any login-group.
88 */
89 char *login_cookie_name(void){
90 static char *zCookieName = 0;
91 if( zCookieName==0 ){
92 zCookieName = db_text(0,
93 "SELECT 'fossil-' || substr(value,1,16)"
94 " FROM config"
@@ -141,24 +141,26 @@
141
142
143 /*
144 ** Check to see if the anonymous login is valid. If it is valid, return
145 ** the userid of the anonymous user.
146 **
147 ** The zCS parameter is the "captcha seed" used for a specific
148 ** anonymous login request.
149 */
150 static int isValidAnonymousLogin(
151 const char *zUsername, /* The username. Must be "anonymous" */
152 const char *zPassword, /* The supplied password */
153 const char *zCS /* The captcha seed value */
154 ){
 
155 const char *zPw; /* The correct password shown in the captcha */
156 int uid; /* The user ID of anonymous */
157
158 if( zUsername==0 ) return 0;
159 else if( zPassword==0 ) return 0;
160 else if( zCS==0 ) return 0;
161 else if( fossil_strcmp(zUsername,"anonymous")!=0 ) return 0;
 
162 zPw = captcha_decode((unsigned int)atoi(zCS));
163 if( fossil_stricmp(zPw, zPassword)!=0 ) return 0;
164 uid = db_int(0, "SELECT uid FROM user WHERE login='anonymous'"
165 " AND length(pw)>0 AND length(cap)>0");
166 return uid;
@@ -192,10 +194,112 @@
194 "INSERT INTO accesslog(uname,ipaddr,success,mtime)"
195 "VALUES(%Q,%Q,%d,julianday('now'));",
196 zUsername, zIpAddr, bSuccess
197 );
198 }
199
200 /*
201 ** Searches for the user ID matching the given name and password.
202 ** On success it returns a positive value. On error it returns 0.
203 ** On serious (DB-level) error it will probably exit.
204 **
205 ** zPassword may be either the plain-text form or the encrypted
206 ** form of the user's password.
207 */
208 int login_search_uid(char const *zUsername, char const *zPasswd){
209 char * zSha1Pw = sha1_shared_secret(zPasswd, zUsername, 0);
210 int const uid =
211 db_int(0,
212 "SELECT uid FROM user"
213 " WHERE login=%Q"
214 " AND length(cap)>0 AND length(pw)>0"
215 " AND login NOT IN ('anonymous','nobody','developer','reader')"
216 " AND (pw=%Q OR pw=%Q)",
217 zUsername, zPasswd, zSha1Pw
218 );
219 free(zSha1Pw);
220 return uid;
221 }
222
223 /*
224 ** Generates a login cookie value for a non-anonymous user.
225 **
226 ** The zHash parameter must be a random value which must be
227 ** subsequently stored in user.cookie for later validation.
228 **
229 ** The returned memory should be free()d after use.
230 */
231 char * login_gen_user_cookie_value(char const *zUsername, char const * zHash){
232 char *zCode = abbreviated_project_code(db_get("project-code",""));
233 assert((zUsername && *zUsername) && "Invalid user data.");
234 return mprintf("%s/%z/%s", zHash, zCode, zUsername);
235 }
236
237 /*
238 ** Generates a login cookie for NON-ANONYMOUS users. Note that this
239 ** function "could" figure out the uid by itself but it currently
240 ** doesn't because the code which calls this already has the uid.
241 **
242 ** This function also updates the user.cookie, user.ipaddr,
243 ** and user.cexpire fields for the given user.
244 **
245 ** If zDest is not NULL then the generated cookie is copied to
246 ** *zDdest and ownership is transfered to the caller (who should
247 ** eventually pass it to free()).
248 */
249 void login_set_user_cookie(
250 char const * zUsername, /* User's name */
251 int uid, /* User's ID */
252 char ** zDest /* Optional: store generated cookie value. */
253 ){
254 const char *zCookieName = login_cookie_name();
255 const char *zExpire = db_get("cookie-expire","8766");
256 int expires = atoi(zExpire)*3600;
257 char *zHash;
258 char *zCookie;
259 char const * zIpAddr = PD("REMOTE_ADDR","nil"); /* Complete IP address for logging */
260 char * zRemoteAddr = ipPrefix(zIpAddr); /* Abbreviated IP address */
261 assert((zUsername && *zUsername) && (uid > 0) && "Invalid user data.");
262 zHash = db_text(0, "SELECT hex(randomblob(25))");
263 zCookie = login_gen_user_cookie_value(zUsername, zHash);
264 cgi_set_cookie(zCookieName, zCookie, login_cookie_path(), expires);
265 record_login_attempt(zUsername, zIpAddr, 1);
266 db_multi_exec(
267 "UPDATE user SET cookie=%Q, ipaddr=%Q, "
268 " cexpire=julianday('now')+%d/86400.0 WHERE uid=%d",
269 zHash, zRemoteAddr, expires, uid
270 );
271 free(zRemoteAddr);
272 free(zHash);
273 if( zDest ){
274 *zDest = zCookie;
275 }else{
276 free(zCookie);
277 }
278 }
279
280 /*
281 ** "Unsets" the login cookie (insofar as cookies can be unset) and
282 ** clears the current user's (g.userUid) login information from the
283 ** user table. Sets: user.cookie, user.ipaddr, user.cexpire.
284 **
285 ** We could/should arguably clear out g.userUid and g.perm here, but
286 ** we don't currently do not.
287 **
288 ** This is a no-op if g.userUid is 0.
289 */
290 void login_clear_login_data(){
291 if(!g.userUid){
292 return;
293 }else{
294 /* To logout, change the cookie value to an empty string */
295 cgi_set_cookie(login_cookie_name(), "",
296 login_cookie_path(), -86400);
297 db_multi_exec("UPDATE user SET cookie=NULL, ipaddr=NULL, "
298 " cexpire=0 WHERE uid=%d", g.userUid);
299 }
300 }
301
302 /*
303 ** WEBPAGE: login
304 ** WEBPAGE: logout
305 ** WEBPAGE: my
@@ -221,13 +325,11 @@
325 login_check_credentials();
326 zUsername = P("u");
327 zPasswd = P("p");
328 anonFlag = P("anon")!=0;
329 if( P("out")!=0 ){
330 login_clear_login_data();
 
 
331 redirect_to_g();
332 }
333 if( g.perm.Password && zPasswd && (zNew1 = P("n1"))!=0 && (zNew2 = P("n2"))!=0 ){
334 /* The user requests a password change */
335 zSha1Pw = sha1_shared_secret(zPasswd, g.zLogin, 0);
@@ -272,11 +374,11 @@
374 }
375 }
376 }
377 zIpAddr = PD("REMOTE_ADDR","nil"); /* Complete IP address for logging */
378 zRemoteAddr = ipPrefix(zIpAddr); /* Abbreviated IP address */
379 uid = isValidAnonymousLogin(zUsername, zPasswd, P("cs"));
380 if( uid>0 ){
381 /* Successful login as anonymous. Set a cookie that looks like
382 ** this:
383 **
384 ** HASH/TIME/anonymous
@@ -302,19 +404,11 @@
404 redirect_to_g();
405 }
406 if( zUsername!=0 && zPasswd!=0 && zPasswd[0]!=0 ){
407 /* Attempting to log in as a user other than anonymous.
408 */
409 uid = login_search_uid(zUsername, zPasswd);
 
 
 
 
 
 
 
 
410 if( uid<=0 ){
411 sleep(1);
412 zErrMsg =
413 @ <p><span class="loginError">
414 @ You entered an unknown user or an incorrect password.
@@ -327,26 +421,11 @@
421 ** HASH/PROJECT/LOGIN
422 **
423 ** where HASH is a random hex number, PROJECT is either project
424 ** code prefix, and LOGIN is the user name.
425 */
426 login_set_user_cookie(zUsername, uid, NULL);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427 redirect_to_g();
428 }
429 }
430 style_header("Login/Logout");
431 @ %s(zErrMsg)
@@ -513,10 +592,14 @@
592 }
593
594 /*
595 ** Lookup the uid for a user with zLogin and zCookie and zRemoteAddr.
596 ** Return 0 if not found.
597 **
598 ** Note that this only searches for logged-in entries with
599 ** matching zCookie (user.cookie) and zRemoteAddr (user.ipaddr)
600 ** entries.
601 */
602 static int login_find_user(
603 const char *zLogin, /* User name */
604 const char *zCookie, /* Login cookie value */
605 const char *zRemoteAddr /* Abbreviated IP address for valid login */
606
+89 -6
--- src/main.c
+++ src/main.c
@@ -23,13 +23,14 @@
2323
#include <string.h>
2424
#include <time.h>
2525
#include <fcntl.h>
2626
#include <sys/types.h>
2727
#include <sys/stat.h>
28
-
28
+#include <stdlib.h> /* atexit() */
2929
3030
#if INTERFACE
31
+#include "cson_amalgamation.h" /* JSON API */
3132
3233
/*
3334
** Number of elements in an array
3435
*/
3536
#define count(X) (sizeof(X)/sizeof(X[0]))
@@ -115,10 +116,11 @@
115116
int xlinkClusterOnly; /* Set when cloning. Only process clusters */
116117
int fTimeFormat; /* 1 for UTC. 2 for localtime. 0 not yet selected */
117118
int *aCommitFile; /* Array of files to be committed */
118119
int markPrivate; /* All new artifacts are private if true */
119120
int clockSkewSeen; /* True if clocks on client and server out of sync */
121
+ int isCGI; /* True if running in HTTP/CGI mode, else assume CLI. */
120122
121123
int urlIsFile; /* True if a "file:" url */
122124
int urlIsHttps; /* True if a "https:" url */
123125
int urlIsSsh; /* True if an "ssh:" url */
124126
char *urlName; /* Hostname for http: or filename for file: */
@@ -131,11 +133,11 @@
131133
char *urlPasswd; /* Password for http: */
132134
char *urlCanonical; /* Canonical representation of the URL */
133135
char *urlProxyAuth; /* Proxy-Authorizer: string */
134136
char *urlFossil; /* The path of the ?fossil=path suffix on ssh: */
135137
int dontKeepUrl; /* Do not persist the URL */
136
-
138
+
137139
const char *zLogin; /* Login name. "" if not logged in. */
138140
const char *zSSLIdentity; /* Value of --ssl-identity option, filename of SSL client identity */
139141
int useLocalauth; /* No login required if from 127.0.0.1 */
140142
int noPswd; /* Logged in without password (on 127.0.0.1) */
141143
int userUid; /* Integer user id */
@@ -165,10 +167,26 @@
165167
const char *azAuxVal[MX_AUX]; /* Value of each aux() or option() value */
166168
const char **azAuxOpt[MX_AUX]; /* Options of each option() value */
167169
int anAuxCols[MX_AUX]; /* Number of columns for option() values */
168170
169171
int allowSymlinks; /* Cached "allow-symlinks" option */
172
+
173
+ struct FossilJsonBits {
174
+ int isJsonMode; /* True if running in JSON mode, else false. This changes
175
+ how errors are reported. In JSON mode we try to always
176
+ output JSON-form error responses.
177
+ */
178
+ int resultCode; /* used for passing back specific codes from /json callbacks. */
179
+ int errorDetailParanoia; /* 0=full error codes, 1=%10, 2=%100, 3=%1000 */
180
+ cson_cgi_cx cgiCx; /* cson_cgi context */
181
+ cson_output_opt outOpt; /* formatting options for JSON mode. */
182
+ cson_value * authToken; /* authentication token */
183
+ struct {
184
+ cson_value * v;
185
+ cson_object * o;
186
+ } reqPayload; /* request payload object (if any) */
187
+ } json;
170188
};
171189
172190
/*
173191
** Macro for debugging:
174192
*/
@@ -230,10 +248,20 @@
230248
return 0;
231249
}
232250
return 1+(cnt>1);
233251
}
234252
253
+/*
254
+** atexit() handler which frees up "some" of the resources
255
+** used by fossil.
256
+*/
257
+void fossil_atexit() {
258
+ cson_cgi_cx_clean(&g.json.cgiCx);
259
+ if(g.db){
260
+ db_close(0);
261
+ }
262
+}
235263
236264
/*
237265
** This procedure runs first.
238266
*/
239267
int main(int argc, char **argv){
@@ -241,22 +269,30 @@
241269
int idx;
242270
int rc;
243271
int i;
244272
245273
sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
274
+ memset(&g, 0, sizeof(g));
246275
g.now = time(0);
247276
g.argc = argc;
248277
g.argv = argv;
278
+ g.json.errorDetailParanoia = 0 /* FIXME: make configurable */;
279
+ g.json.cgiCx = cson_cgi_cx_empty;
280
+ g.json.outOpt = cson_output_opt_empty;
281
+ g.json.outOpt.addNewline = 1;
282
+ g.json.outOpt.indentation = 1 /* FIXME: make configurable */;
249283
for(i=0; i<argc; i++) g.argv[i] = fossil_mbcs_to_utf8(argv[i]);
250284
if( getenv("GATEWAY_INTERFACE")!=0 && !find_option("nocgi", 0, 0)){
251285
zCmdName = "cgi";
286
+ g.isCGI = 1;
252287
}else if( argc<2 ){
253288
fossil_fatal("Usage: %s COMMAND ...\n"
254289
"\"%s help\" for a list of available commands\n"
255290
"\"%s help COMMAND\" for specific details\n",
256291
argv[0], argv[0], argv[0]);
257292
}else{
293
+ g.isCGI = 0;
258294
g.fQuiet = find_option("quiet", 0, 0)!=0;
259295
g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
260296
g.fSqlStats = find_option("sqlstats", 0, 0)!=0;
261297
g.fSystemTrace = find_option("systemtrace", 0, 0)!=0;
262298
if( g.fSqlTrace ) g.fSqlStats = 1;
@@ -296,10 +332,42 @@
296332
fossil_fatal("%s: ambiguous command prefix: %s\n"
297333
"%s: could be any of:%s\n"
298334
"%s: use \"help\" for more information\n",
299335
argv[0], zCmdName, argv[0], blob_str(&couldbe), argv[0]);
300336
}
337
+ rc = cson_cgi_init(&g.json.cgiCx, g.argc, (char const * const *)g.argv, NULL)
338
+ /* Reminder: cson_cgi_init() may process the POST data before
339
+ fossil gets to, but it is configured to only read
340
+ application/[json/javascript] and text/plain. form-urlencoded
341
+ and x-fossil-* data will be consumed by fossil's cgi_init().
342
+
343
+ Note that we set up the CGI bits even when not running in CGI
344
+ mode because some of cson_cgi's facilities are useful in
345
+ non-CGI contexts and we use those in the CLI variants of the
346
+ JSON commands.
347
+
348
+ FIXME: do some analysis of the request path (HTTP mode) or
349
+ CLI args (CLI mode) and only call this if the command is
350
+ a JSON-mode command. We can only do that easily from here
351
+ if we use e.g. /json/foo instead of /foo.json, since we
352
+ have a common prefix.
353
+ */
354
+ ;
355
+ if(rc){
356
+ fossil_fatal("%s: unrecoverable error while initializing JSON CGI bits: "
357
+ "cson error code #%d (%s)\n",
358
+ argv[0], rc, cson_rc_string(rc));
359
+ }else{
360
+ if( NULL != cson_cgi_env_get_obj( &g.json.cgiCx, 'p', 0 ) ){
361
+ /* if cson_cgi read the POST data then we're certainly in JSON
362
+ mode. If it didn't then we have to delay this decision until
363
+ the JSON family of callbacks is called.
364
+ */
365
+ g.json.isJsonMode = 1;
366
+ }
367
+ atexit( fossil_atexit );
368
+ }
301369
aCommand[idx].xFunc();
302370
fossil_exit(0);
303371
/*NOT_REACHED*/
304372
return 0;
305373
}
@@ -335,43 +403,58 @@
335403
** routines never return.
336404
*/
337405
void fossil_panic(const char *zFormat, ...){
338406
char *z;
339407
va_list ap;
408
+ int rc = 1;
340409
static int once = 1;
341410
mainInFatalError = 1;
342411
va_start(ap, zFormat);
343412
z = vmprintf(zFormat, ap);
344413
va_end(ap);
345
- if( g.cgiOutput && once ){
414
+ if( g.json.isJsonMode ){
415
+ json_err( 0, z, 1 );
416
+ if( g.isCGI ){
417
+ rc = 0 /* avoid HTTP 500 */;
418
+ }
419
+ }else if( g.cgiOutput && once ){
346420
once = 0;
347421
cgi_printf("<p class=\"generalError\">%h</p>", z);
348422
cgi_reply();
349423
}else{
350424
char *zOut = mprintf("%s: %s\n", fossil_nameofexe(), z);
351425
fossil_puts(zOut, 1);
352426
}
427
+ free(z);
353428
db_force_rollback();
354
- fossil_exit(1);
429
+ fossil_exit(rc);
355430
}
431
+
356432
void fossil_fatal(const char *zFormat, ...){
357433
char *z;
434
+ int rc = 1;
358435
va_list ap;
359436
mainInFatalError = 1;
360437
va_start(ap, zFormat);
361438
z = vmprintf(zFormat, ap);
362439
va_end(ap);
363
- if( g.cgiOutput ){
440
+ if( g.json.isJsonMode ){
441
+ json_err( 0, z, 1 );
442
+ if( g.isCGI ){
443
+ rc = 0 /* avoid HTTP 500 */;
444
+ }
445
+ }
446
+ else if( g.cgiOutput ){
364447
g.cgiOutput = 0;
365448
cgi_printf("<p class=\"generalError\">%h</p>", z);
366449
cgi_reply();
367450
}else{
368451
char *zOut = mprintf("\r%s: %s\n", fossil_nameofexe(), z);
369452
fossil_puts(zOut, 1);
370453
}
371454
db_force_rollback();
372
- fossil_exit(1);
455
+ fossil_exit(rc);
373456
}
374457
375458
/* This routine works like fossil_fatal() except that if called
376459
** recursively, the recursive call is a no-op.
377460
**
378461
--- src/main.c
+++ src/main.c
@@ -23,13 +23,14 @@
23 #include <string.h>
24 #include <time.h>
25 #include <fcntl.h>
26 #include <sys/types.h>
27 #include <sys/stat.h>
28
29
30 #if INTERFACE
 
31
32 /*
33 ** Number of elements in an array
34 */
35 #define count(X) (sizeof(X)/sizeof(X[0]))
@@ -115,10 +116,11 @@
115 int xlinkClusterOnly; /* Set when cloning. Only process clusters */
116 int fTimeFormat; /* 1 for UTC. 2 for localtime. 0 not yet selected */
117 int *aCommitFile; /* Array of files to be committed */
118 int markPrivate; /* All new artifacts are private if true */
119 int clockSkewSeen; /* True if clocks on client and server out of sync */
 
120
121 int urlIsFile; /* True if a "file:" url */
122 int urlIsHttps; /* True if a "https:" url */
123 int urlIsSsh; /* True if an "ssh:" url */
124 char *urlName; /* Hostname for http: or filename for file: */
@@ -131,11 +133,11 @@
131 char *urlPasswd; /* Password for http: */
132 char *urlCanonical; /* Canonical representation of the URL */
133 char *urlProxyAuth; /* Proxy-Authorizer: string */
134 char *urlFossil; /* The path of the ?fossil=path suffix on ssh: */
135 int dontKeepUrl; /* Do not persist the URL */
136
137 const char *zLogin; /* Login name. "" if not logged in. */
138 const char *zSSLIdentity; /* Value of --ssl-identity option, filename of SSL client identity */
139 int useLocalauth; /* No login required if from 127.0.0.1 */
140 int noPswd; /* Logged in without password (on 127.0.0.1) */
141 int userUid; /* Integer user id */
@@ -165,10 +167,26 @@
165 const char *azAuxVal[MX_AUX]; /* Value of each aux() or option() value */
166 const char **azAuxOpt[MX_AUX]; /* Options of each option() value */
167 int anAuxCols[MX_AUX]; /* Number of columns for option() values */
168
169 int allowSymlinks; /* Cached "allow-symlinks" option */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170 };
171
172 /*
173 ** Macro for debugging:
174 */
@@ -230,10 +248,20 @@
230 return 0;
231 }
232 return 1+(cnt>1);
233 }
234
 
 
 
 
 
 
 
 
 
 
235
236 /*
237 ** This procedure runs first.
238 */
239 int main(int argc, char **argv){
@@ -241,22 +269,30 @@
241 int idx;
242 int rc;
243 int i;
244
245 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
 
246 g.now = time(0);
247 g.argc = argc;
248 g.argv = argv;
 
 
 
 
 
249 for(i=0; i<argc; i++) g.argv[i] = fossil_mbcs_to_utf8(argv[i]);
250 if( getenv("GATEWAY_INTERFACE")!=0 && !find_option("nocgi", 0, 0)){
251 zCmdName = "cgi";
 
252 }else if( argc<2 ){
253 fossil_fatal("Usage: %s COMMAND ...\n"
254 "\"%s help\" for a list of available commands\n"
255 "\"%s help COMMAND\" for specific details\n",
256 argv[0], argv[0], argv[0]);
257 }else{
 
258 g.fQuiet = find_option("quiet", 0, 0)!=0;
259 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
260 g.fSqlStats = find_option("sqlstats", 0, 0)!=0;
261 g.fSystemTrace = find_option("systemtrace", 0, 0)!=0;
262 if( g.fSqlTrace ) g.fSqlStats = 1;
@@ -296,10 +332,42 @@
296 fossil_fatal("%s: ambiguous command prefix: %s\n"
297 "%s: could be any of:%s\n"
298 "%s: use \"help\" for more information\n",
299 argv[0], zCmdName, argv[0], blob_str(&couldbe), argv[0]);
300 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301 aCommand[idx].xFunc();
302 fossil_exit(0);
303 /*NOT_REACHED*/
304 return 0;
305 }
@@ -335,43 +403,58 @@
335 ** routines never return.
336 */
337 void fossil_panic(const char *zFormat, ...){
338 char *z;
339 va_list ap;
 
340 static int once = 1;
341 mainInFatalError = 1;
342 va_start(ap, zFormat);
343 z = vmprintf(zFormat, ap);
344 va_end(ap);
345 if( g.cgiOutput && once ){
 
 
 
 
 
346 once = 0;
347 cgi_printf("<p class=\"generalError\">%h</p>", z);
348 cgi_reply();
349 }else{
350 char *zOut = mprintf("%s: %s\n", fossil_nameofexe(), z);
351 fossil_puts(zOut, 1);
352 }
 
353 db_force_rollback();
354 fossil_exit(1);
355 }
 
356 void fossil_fatal(const char *zFormat, ...){
357 char *z;
 
358 va_list ap;
359 mainInFatalError = 1;
360 va_start(ap, zFormat);
361 z = vmprintf(zFormat, ap);
362 va_end(ap);
363 if( g.cgiOutput ){
 
 
 
 
 
 
364 g.cgiOutput = 0;
365 cgi_printf("<p class=\"generalError\">%h</p>", z);
366 cgi_reply();
367 }else{
368 char *zOut = mprintf("\r%s: %s\n", fossil_nameofexe(), z);
369 fossil_puts(zOut, 1);
370 }
371 db_force_rollback();
372 fossil_exit(1);
373 }
374
375 /* This routine works like fossil_fatal() except that if called
376 ** recursively, the recursive call is a no-op.
377 **
378
--- src/main.c
+++ src/main.c
@@ -23,13 +23,14 @@
23 #include <string.h>
24 #include <time.h>
25 #include <fcntl.h>
26 #include <sys/types.h>
27 #include <sys/stat.h>
28 #include <stdlib.h> /* atexit() */
29
30 #if INTERFACE
31 #include "cson_amalgamation.h" /* JSON API */
32
33 /*
34 ** Number of elements in an array
35 */
36 #define count(X) (sizeof(X)/sizeof(X[0]))
@@ -115,10 +116,11 @@
116 int xlinkClusterOnly; /* Set when cloning. Only process clusters */
117 int fTimeFormat; /* 1 for UTC. 2 for localtime. 0 not yet selected */
118 int *aCommitFile; /* Array of files to be committed */
119 int markPrivate; /* All new artifacts are private if true */
120 int clockSkewSeen; /* True if clocks on client and server out of sync */
121 int isCGI; /* True if running in HTTP/CGI mode, else assume CLI. */
122
123 int urlIsFile; /* True if a "file:" url */
124 int urlIsHttps; /* True if a "https:" url */
125 int urlIsSsh; /* True if an "ssh:" url */
126 char *urlName; /* Hostname for http: or filename for file: */
@@ -131,11 +133,11 @@
133 char *urlPasswd; /* Password for http: */
134 char *urlCanonical; /* Canonical representation of the URL */
135 char *urlProxyAuth; /* Proxy-Authorizer: string */
136 char *urlFossil; /* The path of the ?fossil=path suffix on ssh: */
137 int dontKeepUrl; /* Do not persist the URL */
138
139 const char *zLogin; /* Login name. "" if not logged in. */
140 const char *zSSLIdentity; /* Value of --ssl-identity option, filename of SSL client identity */
141 int useLocalauth; /* No login required if from 127.0.0.1 */
142 int noPswd; /* Logged in without password (on 127.0.0.1) */
143 int userUid; /* Integer user id */
@@ -165,10 +167,26 @@
167 const char *azAuxVal[MX_AUX]; /* Value of each aux() or option() value */
168 const char **azAuxOpt[MX_AUX]; /* Options of each option() value */
169 int anAuxCols[MX_AUX]; /* Number of columns for option() values */
170
171 int allowSymlinks; /* Cached "allow-symlinks" option */
172
173 struct FossilJsonBits {
174 int isJsonMode; /* True if running in JSON mode, else false. This changes
175 how errors are reported. In JSON mode we try to always
176 output JSON-form error responses.
177 */
178 int resultCode; /* used for passing back specific codes from /json callbacks. */
179 int errorDetailParanoia; /* 0=full error codes, 1=%10, 2=%100, 3=%1000 */
180 cson_cgi_cx cgiCx; /* cson_cgi context */
181 cson_output_opt outOpt; /* formatting options for JSON mode. */
182 cson_value * authToken; /* authentication token */
183 struct {
184 cson_value * v;
185 cson_object * o;
186 } reqPayload; /* request payload object (if any) */
187 } json;
188 };
189
190 /*
191 ** Macro for debugging:
192 */
@@ -230,10 +248,20 @@
248 return 0;
249 }
250 return 1+(cnt>1);
251 }
252
253 /*
254 ** atexit() handler which frees up "some" of the resources
255 ** used by fossil.
256 */
257 void fossil_atexit() {
258 cson_cgi_cx_clean(&g.json.cgiCx);
259 if(g.db){
260 db_close(0);
261 }
262 }
263
264 /*
265 ** This procedure runs first.
266 */
267 int main(int argc, char **argv){
@@ -241,22 +269,30 @@
269 int idx;
270 int rc;
271 int i;
272
273 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
274 memset(&g, 0, sizeof(g));
275 g.now = time(0);
276 g.argc = argc;
277 g.argv = argv;
278 g.json.errorDetailParanoia = 0 /* FIXME: make configurable */;
279 g.json.cgiCx = cson_cgi_cx_empty;
280 g.json.outOpt = cson_output_opt_empty;
281 g.json.outOpt.addNewline = 1;
282 g.json.outOpt.indentation = 1 /* FIXME: make configurable */;
283 for(i=0; i<argc; i++) g.argv[i] = fossil_mbcs_to_utf8(argv[i]);
284 if( getenv("GATEWAY_INTERFACE")!=0 && !find_option("nocgi", 0, 0)){
285 zCmdName = "cgi";
286 g.isCGI = 1;
287 }else if( argc<2 ){
288 fossil_fatal("Usage: %s COMMAND ...\n"
289 "\"%s help\" for a list of available commands\n"
290 "\"%s help COMMAND\" for specific details\n",
291 argv[0], argv[0], argv[0]);
292 }else{
293 g.isCGI = 0;
294 g.fQuiet = find_option("quiet", 0, 0)!=0;
295 g.fSqlTrace = find_option("sqltrace", 0, 0)!=0;
296 g.fSqlStats = find_option("sqlstats", 0, 0)!=0;
297 g.fSystemTrace = find_option("systemtrace", 0, 0)!=0;
298 if( g.fSqlTrace ) g.fSqlStats = 1;
@@ -296,10 +332,42 @@
332 fossil_fatal("%s: ambiguous command prefix: %s\n"
333 "%s: could be any of:%s\n"
334 "%s: use \"help\" for more information\n",
335 argv[0], zCmdName, argv[0], blob_str(&couldbe), argv[0]);
336 }
337 rc = cson_cgi_init(&g.json.cgiCx, g.argc, (char const * const *)g.argv, NULL)
338 /* Reminder: cson_cgi_init() may process the POST data before
339 fossil gets to, but it is configured to only read
340 application/[json/javascript] and text/plain. form-urlencoded
341 and x-fossil-* data will be consumed by fossil's cgi_init().
342
343 Note that we set up the CGI bits even when not running in CGI
344 mode because some of cson_cgi's facilities are useful in
345 non-CGI contexts and we use those in the CLI variants of the
346 JSON commands.
347
348 FIXME: do some analysis of the request path (HTTP mode) or
349 CLI args (CLI mode) and only call this if the command is
350 a JSON-mode command. We can only do that easily from here
351 if we use e.g. /json/foo instead of /foo.json, since we
352 have a common prefix.
353 */
354 ;
355 if(rc){
356 fossil_fatal("%s: unrecoverable error while initializing JSON CGI bits: "
357 "cson error code #%d (%s)\n",
358 argv[0], rc, cson_rc_string(rc));
359 }else{
360 if( NULL != cson_cgi_env_get_obj( &g.json.cgiCx, 'p', 0 ) ){
361 /* if cson_cgi read the POST data then we're certainly in JSON
362 mode. If it didn't then we have to delay this decision until
363 the JSON family of callbacks is called.
364 */
365 g.json.isJsonMode = 1;
366 }
367 atexit( fossil_atexit );
368 }
369 aCommand[idx].xFunc();
370 fossil_exit(0);
371 /*NOT_REACHED*/
372 return 0;
373 }
@@ -335,43 +403,58 @@
403 ** routines never return.
404 */
405 void fossil_panic(const char *zFormat, ...){
406 char *z;
407 va_list ap;
408 int rc = 1;
409 static int once = 1;
410 mainInFatalError = 1;
411 va_start(ap, zFormat);
412 z = vmprintf(zFormat, ap);
413 va_end(ap);
414 if( g.json.isJsonMode ){
415 json_err( 0, z, 1 );
416 if( g.isCGI ){
417 rc = 0 /* avoid HTTP 500 */;
418 }
419 }else if( g.cgiOutput && once ){
420 once = 0;
421 cgi_printf("<p class=\"generalError\">%h</p>", z);
422 cgi_reply();
423 }else{
424 char *zOut = mprintf("%s: %s\n", fossil_nameofexe(), z);
425 fossil_puts(zOut, 1);
426 }
427 free(z);
428 db_force_rollback();
429 fossil_exit(rc);
430 }
431
432 void fossil_fatal(const char *zFormat, ...){
433 char *z;
434 int rc = 1;
435 va_list ap;
436 mainInFatalError = 1;
437 va_start(ap, zFormat);
438 z = vmprintf(zFormat, ap);
439 va_end(ap);
440 if( g.json.isJsonMode ){
441 json_err( 0, z, 1 );
442 if( g.isCGI ){
443 rc = 0 /* avoid HTTP 500 */;
444 }
445 }
446 else if( g.cgiOutput ){
447 g.cgiOutput = 0;
448 cgi_printf("<p class=\"generalError\">%h</p>", z);
449 cgi_reply();
450 }else{
451 char *zOut = mprintf("\r%s: %s\n", fossil_nameofexe(), z);
452 fossil_puts(zOut, 1);
453 }
454 db_force_rollback();
455 fossil_exit(rc);
456 }
457
458 /* This routine works like fossil_fatal() except that if called
459 ** recursively, the recursive call is a no-op.
460 **
461
+15 -2
--- src/main.mk
+++ src/main.mk
@@ -47,10 +47,11 @@
4747
$(SRCDIR)/http_socket.c \
4848
$(SRCDIR)/http_ssl.c \
4949
$(SRCDIR)/http_transport.c \
5050
$(SRCDIR)/import.c \
5151
$(SRCDIR)/info.c \
52
+ $(SRCDIR)/json.c \
5253
$(SRCDIR)/leaf.c \
5354
$(SRCDIR)/login.c \
5455
$(SRCDIR)/main.c \
5556
$(SRCDIR)/manifest.c \
5657
$(SRCDIR)/md5.c \
@@ -131,10 +132,11 @@
131132
$(OBJDIR)/http_socket_.c \
132133
$(OBJDIR)/http_ssl_.c \
133134
$(OBJDIR)/http_transport_.c \
134135
$(OBJDIR)/import_.c \
135136
$(OBJDIR)/info_.c \
137
+ $(OBJDIR)/json_.c \
136138
$(OBJDIR)/leaf_.c \
137139
$(OBJDIR)/login_.c \
138140
$(OBJDIR)/main_.c \
139141
$(OBJDIR)/manifest_.c \
140142
$(OBJDIR)/md5_.c \
@@ -215,10 +217,11 @@
215217
$(OBJDIR)/http_socket.o \
216218
$(OBJDIR)/http_ssl.o \
217219
$(OBJDIR)/http_transport.o \
218220
$(OBJDIR)/import.o \
219221
$(OBJDIR)/info.o \
222
+ $(OBJDIR)/json.o \
220223
$(OBJDIR)/leaf.o \
221224
$(OBJDIR)/login.o \
222225
$(OBJDIR)/main.o \
223226
$(OBJDIR)/manifest.o \
224227
$(OBJDIR)/md5.o \
@@ -301,11 +304,11 @@
301304
# using -lsqlite3.
302305
SQLITE3_OBJ.1 =
303306
SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o
304307
SQLITE3_OBJ. = $(SQLITE3_OBJ.0)
305308
306
-EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o
309
+EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(OBJDIR)/cson_amalgamation.o
307310
308311
$(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
309312
$(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
310313
311314
# This rule prevents make from using its default rules to try build
@@ -319,11 +322,11 @@
319322
320323
321324
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
322325
$(OBJDIR)/mkindex $(TRANS_SRC) >$@
323326
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
324
- $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
327
+ $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
325328
touch $(OBJDIR)/headers
326329
$(OBJDIR)/headers: Makefile
327330
Makefile:
328331
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
329332
$(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c
@@ -589,10 +592,17 @@
589592
590593
$(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
591594
$(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
592595
593596
$(OBJDIR)/info.h: $(OBJDIR)/headers
597
+$(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
598
+ $(OBJDIR)/translate $(SRCDIR)/json.c >$(OBJDIR)/json_.c
599
+
600
+$(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
601
+ $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c
602
+
603
+$(OBJDIR)/json.h: $(OBJDIR)/headers
594604
$(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate
595605
$(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c
596606
597607
$(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h
598608
$(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c
@@ -909,5 +919,8 @@
909919
$(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
910920
911921
$(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
912922
$(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
913923
924
+$(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c
925
+ $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o
926
+
914927
--- src/main.mk
+++ src/main.mk
@@ -47,10 +47,11 @@
47 $(SRCDIR)/http_socket.c \
48 $(SRCDIR)/http_ssl.c \
49 $(SRCDIR)/http_transport.c \
50 $(SRCDIR)/import.c \
51 $(SRCDIR)/info.c \
 
52 $(SRCDIR)/leaf.c \
53 $(SRCDIR)/login.c \
54 $(SRCDIR)/main.c \
55 $(SRCDIR)/manifest.c \
56 $(SRCDIR)/md5.c \
@@ -131,10 +132,11 @@
131 $(OBJDIR)/http_socket_.c \
132 $(OBJDIR)/http_ssl_.c \
133 $(OBJDIR)/http_transport_.c \
134 $(OBJDIR)/import_.c \
135 $(OBJDIR)/info_.c \
 
136 $(OBJDIR)/leaf_.c \
137 $(OBJDIR)/login_.c \
138 $(OBJDIR)/main_.c \
139 $(OBJDIR)/manifest_.c \
140 $(OBJDIR)/md5_.c \
@@ -215,10 +217,11 @@
215 $(OBJDIR)/http_socket.o \
216 $(OBJDIR)/http_ssl.o \
217 $(OBJDIR)/http_transport.o \
218 $(OBJDIR)/import.o \
219 $(OBJDIR)/info.o \
 
220 $(OBJDIR)/leaf.o \
221 $(OBJDIR)/login.o \
222 $(OBJDIR)/main.o \
223 $(OBJDIR)/manifest.o \
224 $(OBJDIR)/md5.o \
@@ -301,11 +304,11 @@
301 # using -lsqlite3.
302 SQLITE3_OBJ.1 =
303 SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o
304 SQLITE3_OBJ. = $(SQLITE3_OBJ.0)
305
306 EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o
307
308 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
309 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
310
311 # This rule prevents make from using its default rules to try build
@@ -319,11 +322,11 @@
319
320
321 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
322 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
323 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
324 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
325 touch $(OBJDIR)/headers
326 $(OBJDIR)/headers: Makefile
327 Makefile:
328 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
329 $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c
@@ -589,10 +592,17 @@
589
590 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
591 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
592
593 $(OBJDIR)/info.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
594 $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate
595 $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c
596
597 $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h
598 $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c
@@ -909,5 +919,8 @@
909 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
910
911 $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
912 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
913
 
 
 
914
--- src/main.mk
+++ src/main.mk
@@ -47,10 +47,11 @@
47 $(SRCDIR)/http_socket.c \
48 $(SRCDIR)/http_ssl.c \
49 $(SRCDIR)/http_transport.c \
50 $(SRCDIR)/import.c \
51 $(SRCDIR)/info.c \
52 $(SRCDIR)/json.c \
53 $(SRCDIR)/leaf.c \
54 $(SRCDIR)/login.c \
55 $(SRCDIR)/main.c \
56 $(SRCDIR)/manifest.c \
57 $(SRCDIR)/md5.c \
@@ -131,10 +132,11 @@
132 $(OBJDIR)/http_socket_.c \
133 $(OBJDIR)/http_ssl_.c \
134 $(OBJDIR)/http_transport_.c \
135 $(OBJDIR)/import_.c \
136 $(OBJDIR)/info_.c \
137 $(OBJDIR)/json_.c \
138 $(OBJDIR)/leaf_.c \
139 $(OBJDIR)/login_.c \
140 $(OBJDIR)/main_.c \
141 $(OBJDIR)/manifest_.c \
142 $(OBJDIR)/md5_.c \
@@ -215,10 +217,11 @@
217 $(OBJDIR)/http_socket.o \
218 $(OBJDIR)/http_ssl.o \
219 $(OBJDIR)/http_transport.o \
220 $(OBJDIR)/import.o \
221 $(OBJDIR)/info.o \
222 $(OBJDIR)/json.o \
223 $(OBJDIR)/leaf.o \
224 $(OBJDIR)/login.o \
225 $(OBJDIR)/main.o \
226 $(OBJDIR)/manifest.o \
227 $(OBJDIR)/md5.o \
@@ -301,11 +304,11 @@
304 # using -lsqlite3.
305 SQLITE3_OBJ.1 =
306 SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o
307 SQLITE3_OBJ. = $(SQLITE3_OBJ.0)
308
309 EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(OBJDIR)/cson_amalgamation.o
310
311 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
312 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
313
314 # This rule prevents make from using its default rules to try build
@@ -319,11 +322,11 @@
322
323
324 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
325 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
326 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
327 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
328 touch $(OBJDIR)/headers
329 $(OBJDIR)/headers: Makefile
330 Makefile:
331 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
332 $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c
@@ -589,10 +592,17 @@
592
593 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
594 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
595
596 $(OBJDIR)/info.h: $(OBJDIR)/headers
597 $(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
598 $(OBJDIR)/translate $(SRCDIR)/json.c >$(OBJDIR)/json_.c
599
600 $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
601 $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c
602
603 $(OBJDIR)/json.h: $(OBJDIR)/headers
604 $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate
605 $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c
606
607 $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h
608 $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c
@@ -909,5 +919,8 @@
919 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
920
921 $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
922 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
923
924 $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c
925 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o
926
927
+22 -4
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -53,10 +53,11 @@
5353
http
5454
http_socket
5555
http_transport
5656
import
5757
info
58
+ json
5859
leaf
5960
login
6061
main
6162
manifest
6263
md5
@@ -202,11 +203,12 @@
202203
203204
EXTRAOBJ = \
204205
$(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \
205206
$(OBJDIR)/shell.o \
206207
$(OBJDIR)/th.o \
207
- $(OBJDIR)/th_lang.o
208
+ $(OBJDIR)/th_lang.o \
209
+ $(OBJDIR)/cson_amalgamation.o
208210
209211
$(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
210212
$(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
211213
212214
# This rule prevents make from using its default rules to try build
@@ -225,10 +227,11 @@
225227
append mhargs " \$(OBJDIR)/${s}_.c:\$(OBJDIR)/$s.h"
226228
set extra_h($s) {}
227229
}
228230
append mhargs " \$(SRCDIR)/sqlite3.h"
229231
append mhargs " \$(SRCDIR)/th.h"
232
+#append mhargs " \$(SRCDIR)/cson_amalgamation.h"
230233
append mhargs " \$(OBJDIR)/VERSION.h"
231234
writeln "\$(OBJDIR)/page_index.h: \$(TRANS_SRC) \$(OBJDIR)/mkindex"
232235
writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@"
233236
writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h"
234237
writeln "\t\$(OBJDIR)/makeheaders $mhargs"
@@ -264,10 +267,15 @@
264267
writeln "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c"
265268
writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n"
266269
267270
writeln "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c"
268271
writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n"
272
+
273
+set opt {}
274
+writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c"
275
+writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n"
276
+
269277
270278
close $output_file
271279
#
272280
# End of the main.mk output
273281
##############################################################################
@@ -412,11 +420,12 @@
412420
413421
EXTRAOBJ = \
414422
$(OBJDIR)/sqlite3.o \
415423
$(OBJDIR)/shell.o \
416424
$(OBJDIR)/th.o \
417
- $(OBJDIR)/th_lang.o
425
+ $(OBJDIR)/th_lang.o \
426
+ $(OBJDIR)/cson_amalgamation.o
418427
419428
$(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o
420429
$(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o
421430
422431
# This rule prevents make from using its default rules to try build
@@ -466,10 +475,14 @@
466475
467476
writeln "\$(OBJDIR)/sqlite3.o:\t\$(SRCDIR)/sqlite3.c"
468477
set opt $SQLITE_OPTIONS
469478
writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n"
470479
480
+set opt {}
481
+writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c"
482
+writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n"
483
+
471484
writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h"
472485
set opt {-Dmain=sqlite3_shell}
473486
append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1"
474487
writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n"
475488
@@ -577,10 +590,13 @@
577590
$(OBJDIR)\th$O : $(SRCDIR)\th.c
578591
$(TCC) -o$@ -c $**
579592
580593
$(OBJDIR)\th_lang$O : $(SRCDIR)\th_lang.c
581594
$(TCC) -o$@ -c $**
595
+
596
+$(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
597
+ cp $@ $@
582598
583599
VERSION.h : version$E $B\manifest.uuid $B\manifest $B\VERSION
584600
+$** > $@
585601
586602
page_index.h: mkindex$E $(SRC)
@@ -603,11 +619,11 @@
603619
604620
writeln -nonewline "headers: makeheaders\$E page_index.h VERSION.h\n\t +makeheaders\$E "
605621
foreach s [lsort $src] {
606622
writeln -nonewline "${s}_.c:$s.h "
607623
}
608
-writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h"
624
+writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h \$(SRCDIR)\\cson_amalgamation.h"
609625
writeln "\t@copy /Y nul: headers"
610626
611627
close $output_file
612628
#
613629
# End of the win/Makefile.dmc output
@@ -717,10 +733,12 @@
717733
$(OX)\th_lang$O : $(SRCDIR)\th_lang.c
718734
$(TCC) /Fo$@ -c $**
719735
720736
VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION
721737
$** > $@
738
+$(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
739
+ cp $(SRCDIR)\cson_amalgamation.h $@
722740
723741
page_index.h: mkindex$E $(SRC)
724742
$** > $@
725743
726744
clean:
@@ -741,11 +759,11 @@
741759
742760
writeln -nonewline "headers: makeheaders\$E page_index.h VERSION.h\n\tmakeheaders\$E "
743761
foreach s [lsort $src] {
744762
writeln -nonewline "${s}_.c:$s.h "
745763
}
746
-writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h"
764
+writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h \$(SRCDIR)\\cson_amalgamation.h"
747765
writeln "\t@copy /Y nul: headers"
748766
749767
750768
close $output_file
751769
#
752770
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -53,10 +53,11 @@
53 http
54 http_socket
55 http_transport
56 import
57 info
 
58 leaf
59 login
60 main
61 manifest
62 md5
@@ -202,11 +203,12 @@
202
203 EXTRAOBJ = \
204 $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \
205 $(OBJDIR)/shell.o \
206 $(OBJDIR)/th.o \
207 $(OBJDIR)/th_lang.o
 
208
209 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
210 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
211
212 # This rule prevents make from using its default rules to try build
@@ -225,10 +227,11 @@
225 append mhargs " \$(OBJDIR)/${s}_.c:\$(OBJDIR)/$s.h"
226 set extra_h($s) {}
227 }
228 append mhargs " \$(SRCDIR)/sqlite3.h"
229 append mhargs " \$(SRCDIR)/th.h"
 
230 append mhargs " \$(OBJDIR)/VERSION.h"
231 writeln "\$(OBJDIR)/page_index.h: \$(TRANS_SRC) \$(OBJDIR)/mkindex"
232 writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@"
233 writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h"
234 writeln "\t\$(OBJDIR)/makeheaders $mhargs"
@@ -264,10 +267,15 @@
264 writeln "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c"
265 writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n"
266
267 writeln "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c"
268 writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n"
 
 
 
 
 
269
270 close $output_file
271 #
272 # End of the main.mk output
273 ##############################################################################
@@ -412,11 +420,12 @@
412
413 EXTRAOBJ = \
414 $(OBJDIR)/sqlite3.o \
415 $(OBJDIR)/shell.o \
416 $(OBJDIR)/th.o \
417 $(OBJDIR)/th_lang.o
 
418
419 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o
420 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o
421
422 # This rule prevents make from using its default rules to try build
@@ -466,10 +475,14 @@
466
467 writeln "\$(OBJDIR)/sqlite3.o:\t\$(SRCDIR)/sqlite3.c"
468 set opt $SQLITE_OPTIONS
469 writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n"
470
 
 
 
 
471 writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h"
472 set opt {-Dmain=sqlite3_shell}
473 append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1"
474 writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n"
475
@@ -577,10 +590,13 @@
577 $(OBJDIR)\th$O : $(SRCDIR)\th.c
578 $(TCC) -o$@ -c $**
579
580 $(OBJDIR)\th_lang$O : $(SRCDIR)\th_lang.c
581 $(TCC) -o$@ -c $**
 
 
 
582
583 VERSION.h : version$E $B\manifest.uuid $B\manifest $B\VERSION
584 +$** > $@
585
586 page_index.h: mkindex$E $(SRC)
@@ -603,11 +619,11 @@
603
604 writeln -nonewline "headers: makeheaders\$E page_index.h VERSION.h\n\t +makeheaders\$E "
605 foreach s [lsort $src] {
606 writeln -nonewline "${s}_.c:$s.h "
607 }
608 writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h"
609 writeln "\t@copy /Y nul: headers"
610
611 close $output_file
612 #
613 # End of the win/Makefile.dmc output
@@ -717,10 +733,12 @@
717 $(OX)\th_lang$O : $(SRCDIR)\th_lang.c
718 $(TCC) /Fo$@ -c $**
719
720 VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION
721 $** > $@
 
 
722
723 page_index.h: mkindex$E $(SRC)
724 $** > $@
725
726 clean:
@@ -741,11 +759,11 @@
741
742 writeln -nonewline "headers: makeheaders\$E page_index.h VERSION.h\n\tmakeheaders\$E "
743 foreach s [lsort $src] {
744 writeln -nonewline "${s}_.c:$s.h "
745 }
746 writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h"
747 writeln "\t@copy /Y nul: headers"
748
749
750 close $output_file
751 #
752
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -53,10 +53,11 @@
53 http
54 http_socket
55 http_transport
56 import
57 info
58 json
59 leaf
60 login
61 main
62 manifest
63 md5
@@ -202,11 +203,12 @@
203
204 EXTRAOBJ = \
205 $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \
206 $(OBJDIR)/shell.o \
207 $(OBJDIR)/th.o \
208 $(OBJDIR)/th_lang.o \
209 $(OBJDIR)/cson_amalgamation.o
210
211 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
212 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
213
214 # This rule prevents make from using its default rules to try build
@@ -225,10 +227,11 @@
227 append mhargs " \$(OBJDIR)/${s}_.c:\$(OBJDIR)/$s.h"
228 set extra_h($s) {}
229 }
230 append mhargs " \$(SRCDIR)/sqlite3.h"
231 append mhargs " \$(SRCDIR)/th.h"
232 #append mhargs " \$(SRCDIR)/cson_amalgamation.h"
233 append mhargs " \$(OBJDIR)/VERSION.h"
234 writeln "\$(OBJDIR)/page_index.h: \$(TRANS_SRC) \$(OBJDIR)/mkindex"
235 writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@"
236 writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h"
237 writeln "\t\$(OBJDIR)/makeheaders $mhargs"
@@ -264,10 +267,15 @@
267 writeln "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c"
268 writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n"
269
270 writeln "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c"
271 writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n"
272
273 set opt {}
274 writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c"
275 writeln "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n"
276
277
278 close $output_file
279 #
280 # End of the main.mk output
281 ##############################################################################
@@ -412,11 +420,12 @@
420
421 EXTRAOBJ = \
422 $(OBJDIR)/sqlite3.o \
423 $(OBJDIR)/shell.o \
424 $(OBJDIR)/th.o \
425 $(OBJDIR)/th_lang.o \
426 $(OBJDIR)/cson_amalgamation.o
427
428 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o
429 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o
430
431 # This rule prevents make from using its default rules to try build
@@ -466,10 +475,14 @@
475
476 writeln "\$(OBJDIR)/sqlite3.o:\t\$(SRCDIR)/sqlite3.c"
477 set opt $SQLITE_OPTIONS
478 writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n"
479
480 set opt {}
481 writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c"
482 writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n"
483
484 writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h"
485 set opt {-Dmain=sqlite3_shell}
486 append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1"
487 writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n"
488
@@ -577,10 +590,13 @@
590 $(OBJDIR)\th$O : $(SRCDIR)\th.c
591 $(TCC) -o$@ -c $**
592
593 $(OBJDIR)\th_lang$O : $(SRCDIR)\th_lang.c
594 $(TCC) -o$@ -c $**
595
596 $(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
597 cp $@ $@
598
599 VERSION.h : version$E $B\manifest.uuid $B\manifest $B\VERSION
600 +$** > $@
601
602 page_index.h: mkindex$E $(SRC)
@@ -603,11 +619,11 @@
619
620 writeln -nonewline "headers: makeheaders\$E page_index.h VERSION.h\n\t +makeheaders\$E "
621 foreach s [lsort $src] {
622 writeln -nonewline "${s}_.c:$s.h "
623 }
624 writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h \$(SRCDIR)\\cson_amalgamation.h"
625 writeln "\t@copy /Y nul: headers"
626
627 close $output_file
628 #
629 # End of the win/Makefile.dmc output
@@ -717,10 +733,12 @@
733 $(OX)\th_lang$O : $(SRCDIR)\th_lang.c
734 $(TCC) /Fo$@ -c $**
735
736 VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION
737 $** > $@
738 $(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
739 cp $(SRCDIR)\cson_amalgamation.h $@
740
741 page_index.h: mkindex$E $(SRC)
742 $** > $@
743
744 clean:
@@ -741,11 +759,11 @@
759
760 writeln -nonewline "headers: makeheaders\$E page_index.h VERSION.h\n\tmakeheaders\$E "
761 foreach s [lsort $src] {
762 writeln -nonewline "${s}_.c:$s.h "
763 }
764 writeln "\$(SRCDIR)\\sqlite3.h \$(SRCDIR)\\th.h VERSION.h \$(SRCDIR)\\cson_amalgamation.h"
765 writeln "\t@copy /Y nul: headers"
766
767
768 close $output_file
769 #
770
+73
--- src/report.c
+++ src/report.c
@@ -19,10 +19,11 @@
1919
*/
2020
#include "config.h"
2121
#include <time.h>
2222
#include "report.h"
2323
#include <assert.h>
24
+#include "cson_amalgamation.h"
2425
2526
/* Forward references to static routines */
2627
static void report_format_hints(void);
2728
2829
/*
@@ -1154,5 +1155,77 @@
11541155
report_unrestrict_sql();
11551156
if( zFilter ){
11561157
free(zSql);
11571158
}
11581159
}
1160
+
1161
+
1162
+void rptshowJson(
1163
+ const char *zRep,
1164
+ char const * zLimit,
1165
+ const char *zFilter,
1166
+ char indention
1167
+){
1168
+ Stmt q;
1169
+ char *zSql;
1170
+ char const *zTitle;
1171
+ char const *zOwner;
1172
+ char *zClrKey;
1173
+ char *zErr1 = 0;
1174
+ int count = 0;
1175
+ int rn;
1176
+ int rc;
1177
+ cson_value * zJVal = NULL;
1178
+
1179
+ if (!zRep || !strcmp(zRep,zFullTicketRptRn) || !strcmp(zRep,zFullTicketRptTitle) ){
1180
+ zTitle = zFullTicketRptTitle;
1181
+ zSql = mprintf("SELECT * FROM ticket");
1182
+ zOwner = g.zLogin;
1183
+ zClrKey = "";
1184
+ }else{
1185
+ rn = atoi(zRep);
1186
+ if( rn ){
1187
+ db_prepare(&q,
1188
+ "SELECT title, sqlcode, owner, cols FROM reportfmt WHERE rn=%d", rn);
1189
+ }else{
1190
+ db_prepare(&q,
1191
+ "SELECT title, sqlcode, owner, cols FROM reportfmt WHERE title=%Q", zRep);
1192
+ }
1193
+ if( db_step(&q)!=SQLITE_ROW ){
1194
+ db_finalize(&q);
1195
+ rpt_list_reports();
1196
+ fossil_fatal("unkown report format(%s)!",zRep);
1197
+ }
1198
+ zTitle = db_column_malloc(&q, 0)/*leak!*/;
1199
+ zSql = db_column_malloc(&q, 1);
1200
+ zOwner = db_column_malloc(&q, 2)/*leak!*/;
1201
+ zClrKey = db_column_malloc(&q, 3);
1202
+ db_finalize(&q);
1203
+ }
1204
+ if( zFilter ){
1205
+ char * old = zSql;
1206
+ zSql = mprintf("SELECT * FROM (%s) WHERE %s%s%s",old,zFilter,
1207
+ (zLimit?" LIMIT ":""), (zLimit?zLimit:""));
1208
+ free(old);
1209
+ }else if( zLimit ){
1210
+ char * old = zSql;
1211
+ zSql = mprintf("%s LIMIT %s",old, zLimit);
1212
+ free(old);
1213
+ }
1214
+ count = 0;
1215
+ /*fprintf(stderr,"SQL=[%s]\n",zSql);*/
1216
+ sqlite3_set_authorizer(g.db, report_query_authorizer, (void*)&zErr1);
1217
+ rc = cson_sqlite3_sql_to_json(g.db, &zJVal, zSql, 1);
1218
+ if( 0 == rc ){
1219
+ cson_output_opt outOpt = cson_output_opt_empty;
1220
+ outOpt.addNewline = 1;
1221
+ outOpt.indentation = indention;
1222
+ rc = cson_output_FILE( zJVal, stdout, &outOpt );
1223
+ } else{
1224
+ fossil_fatal("sql-to-json failed with code %d (%s)!", rc,
1225
+ cson_rc_string(rc));
1226
+ }
1227
+ sqlite3_set_authorizer(g.db, 0, 0);
1228
+ cson_value_free(zJVal);
1229
+ free(zSql);
1230
+ free(zClrKey);
1231
+}
11591232
--- src/report.c
+++ src/report.c
@@ -19,10 +19,11 @@
19 */
20 #include "config.h"
21 #include <time.h>
22 #include "report.h"
23 #include <assert.h>
 
24
25 /* Forward references to static routines */
26 static void report_format_hints(void);
27
28 /*
@@ -1154,5 +1155,77 @@
1154 report_unrestrict_sql();
1155 if( zFilter ){
1156 free(zSql);
1157 }
1158 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1159
--- src/report.c
+++ src/report.c
@@ -19,10 +19,11 @@
19 */
20 #include "config.h"
21 #include <time.h>
22 #include "report.h"
23 #include <assert.h>
24 #include "cson_amalgamation.h"
25
26 /* Forward references to static routines */
27 static void report_format_hints(void);
28
29 /*
@@ -1154,5 +1155,77 @@
1155 report_unrestrict_sql();
1156 if( zFilter ){
1157 free(zSql);
1158 }
1159 }
1160
1161
1162 void rptshowJson(
1163 const char *zRep,
1164 char const * zLimit,
1165 const char *zFilter,
1166 char indention
1167 ){
1168 Stmt q;
1169 char *zSql;
1170 char const *zTitle;
1171 char const *zOwner;
1172 char *zClrKey;
1173 char *zErr1 = 0;
1174 int count = 0;
1175 int rn;
1176 int rc;
1177 cson_value * zJVal = NULL;
1178
1179 if (!zRep || !strcmp(zRep,zFullTicketRptRn) || !strcmp(zRep,zFullTicketRptTitle) ){
1180 zTitle = zFullTicketRptTitle;
1181 zSql = mprintf("SELECT * FROM ticket");
1182 zOwner = g.zLogin;
1183 zClrKey = "";
1184 }else{
1185 rn = atoi(zRep);
1186 if( rn ){
1187 db_prepare(&q,
1188 "SELECT title, sqlcode, owner, cols FROM reportfmt WHERE rn=%d", rn);
1189 }else{
1190 db_prepare(&q,
1191 "SELECT title, sqlcode, owner, cols FROM reportfmt WHERE title=%Q", zRep);
1192 }
1193 if( db_step(&q)!=SQLITE_ROW ){
1194 db_finalize(&q);
1195 rpt_list_reports();
1196 fossil_fatal("unkown report format(%s)!",zRep);
1197 }
1198 zTitle = db_column_malloc(&q, 0)/*leak!*/;
1199 zSql = db_column_malloc(&q, 1);
1200 zOwner = db_column_malloc(&q, 2)/*leak!*/;
1201 zClrKey = db_column_malloc(&q, 3);
1202 db_finalize(&q);
1203 }
1204 if( zFilter ){
1205 char * old = zSql;
1206 zSql = mprintf("SELECT * FROM (%s) WHERE %s%s%s",old,zFilter,
1207 (zLimit?" LIMIT ":""), (zLimit?zLimit:""));
1208 free(old);
1209 }else if( zLimit ){
1210 char * old = zSql;
1211 zSql = mprintf("%s LIMIT %s",old, zLimit);
1212 free(old);
1213 }
1214 count = 0;
1215 /*fprintf(stderr,"SQL=[%s]\n",zSql);*/
1216 sqlite3_set_authorizer(g.db, report_query_authorizer, (void*)&zErr1);
1217 rc = cson_sqlite3_sql_to_json(g.db, &zJVal, zSql, 1);
1218 if( 0 == rc ){
1219 cson_output_opt outOpt = cson_output_opt_empty;
1220 outOpt.addNewline = 1;
1221 outOpt.indentation = indention;
1222 rc = cson_output_FILE( zJVal, stdout, &outOpt );
1223 } else{
1224 fossil_fatal("sql-to-json failed with code %d (%s)!", rc,
1225 cson_rc_string(rc));
1226 }
1227 sqlite3_set_authorizer(g.db, 0, 0);
1228 cson_value_free(zJVal);
1229 free(zSql);
1230 free(zClrKey);
1231 }
1232
+11 -9
--- src/timeline.c
+++ src/timeline.c
@@ -20,10 +20,11 @@
2020
*/
2121
#include <string.h>
2222
#include <time.h>
2323
#include "config.h"
2424
#include "timeline.h"
25
+#include "cson_amalgamation.h"
2526
2627
/*
2728
** Shorten a UUID so that is the minimum length needed to contain
2829
** at least one digit in the range 'a'..'f'. The minimum length is 10.
2930
*/
@@ -1365,24 +1366,24 @@
13651366
** a timeline query for display on a TTY.
13661367
*/
13671368
const char *timeline_query_for_tty(void){
13681369
static const char zBaseSql[] =
13691370
@ SELECT
1370
- @ blob.rid,
1371
+ @ blob.rid AS rid,
13711372
@ uuid,
1372
- @ datetime(event.mtime,'localtime'),
1373
+ @ datetime(event.mtime,'localtime') AS mDateTime,
13731374
@ coalesce(ecomment,comment)
13741375
@ || ' (user: ' || coalesce(euser,user,'?')
13751376
@ || (SELECT case when length(x)>0 then ' tags: ' || x else '' end
13761377
@ FROM (SELECT group_concat(substr(tagname,5), ', ') AS x
13771378
@ FROM tag, tagxref
13781379
@ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid
13791380
@ AND tagxref.rid=blob.rid AND tagxref.tagtype>0))
1380
- @ || ')',
1381
- @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim),
1382
- @ (SELECT count(*) FROM plink WHERE cid=blob.rid),
1383
- @ event.mtime
1381
+ @ || ')' as comment,
1382
+ @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim) AS primPlinkCount,
1383
+ @ (SELECT count(*) FROM plink WHERE cid=blob.rid) AS plinkCount,
1384
+ @ event.mtime AS mtime
13841385
@ FROM event, blob
13851386
@ WHERE blob.rid=event.objid
13861387
;
13871388
return zBaseSql;
13881389
}
@@ -1425,12 +1426,12 @@
14251426
**
14261427
** w = wiki commits only
14271428
** ci = file commits only
14281429
** t = tickets only
14291430
**
1430
-** The optional showfiles argument if specified prints the list of
1431
-** files changed in a checkin after the checkin comment
1431
+** The optional showfiles argument, if specified, prints the list of
1432
+** files changed in a checkin after the checkin comment.
14321433
**
14331434
*/
14341435
void timeline_cmd(void){
14351436
Stmt q;
14361437
int n, k;
@@ -1441,10 +1442,12 @@
14411442
Blob sql;
14421443
int objid = 0;
14431444
Blob uuid;
14441445
int mode = 0 ; /* 0:none 1: before 2:after 3:children 4:parents */
14451446
int showfilesFlag = 0 ;
1447
+
1448
+ db_find_and_open_repository(0, 0);
14461449
showfilesFlag = find_option("showfiles","f", 0)!=0;
14471450
db_find_and_open_repository(0, 0);
14481451
zCount = find_option("count","n",1);
14491452
zType = find_option("type","t",1);
14501453
if( zCount ){
@@ -1524,11 +1527,10 @@
15241527
blob_appendf(&sql, " AND blob.rid IN ok");
15251528
}
15261529
if( zType && (zType[0]!='a') ){
15271530
blob_appendf(&sql, " AND event.type=%Q ", zType);
15281531
}
1529
-
15301532
blob_appendf(&sql, " ORDER BY event.mtime DESC");
15311533
db_prepare(&q, blob_str(&sql));
15321534
blob_reset(&sql);
15331535
print_timeline(&q, n, showfilesFlag);
15341536
db_finalize(&q);
15351537
--- src/timeline.c
+++ src/timeline.c
@@ -20,10 +20,11 @@
20 */
21 #include <string.h>
22 #include <time.h>
23 #include "config.h"
24 #include "timeline.h"
 
25
26 /*
27 ** Shorten a UUID so that is the minimum length needed to contain
28 ** at least one digit in the range 'a'..'f'. The minimum length is 10.
29 */
@@ -1365,24 +1366,24 @@
1365 ** a timeline query for display on a TTY.
1366 */
1367 const char *timeline_query_for_tty(void){
1368 static const char zBaseSql[] =
1369 @ SELECT
1370 @ blob.rid,
1371 @ uuid,
1372 @ datetime(event.mtime,'localtime'),
1373 @ coalesce(ecomment,comment)
1374 @ || ' (user: ' || coalesce(euser,user,'?')
1375 @ || (SELECT case when length(x)>0 then ' tags: ' || x else '' end
1376 @ FROM (SELECT group_concat(substr(tagname,5), ', ') AS x
1377 @ FROM tag, tagxref
1378 @ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid
1379 @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0))
1380 @ || ')',
1381 @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim),
1382 @ (SELECT count(*) FROM plink WHERE cid=blob.rid),
1383 @ event.mtime
1384 @ FROM event, blob
1385 @ WHERE blob.rid=event.objid
1386 ;
1387 return zBaseSql;
1388 }
@@ -1425,12 +1426,12 @@
1425 **
1426 ** w = wiki commits only
1427 ** ci = file commits only
1428 ** t = tickets only
1429 **
1430 ** The optional showfiles argument if specified prints the list of
1431 ** files changed in a checkin after the checkin comment
1432 **
1433 */
1434 void timeline_cmd(void){
1435 Stmt q;
1436 int n, k;
@@ -1441,10 +1442,12 @@
1441 Blob sql;
1442 int objid = 0;
1443 Blob uuid;
1444 int mode = 0 ; /* 0:none 1: before 2:after 3:children 4:parents */
1445 int showfilesFlag = 0 ;
 
 
1446 showfilesFlag = find_option("showfiles","f", 0)!=0;
1447 db_find_and_open_repository(0, 0);
1448 zCount = find_option("count","n",1);
1449 zType = find_option("type","t",1);
1450 if( zCount ){
@@ -1524,11 +1527,10 @@
1524 blob_appendf(&sql, " AND blob.rid IN ok");
1525 }
1526 if( zType && (zType[0]!='a') ){
1527 blob_appendf(&sql, " AND event.type=%Q ", zType);
1528 }
1529
1530 blob_appendf(&sql, " ORDER BY event.mtime DESC");
1531 db_prepare(&q, blob_str(&sql));
1532 blob_reset(&sql);
1533 print_timeline(&q, n, showfilesFlag);
1534 db_finalize(&q);
1535
--- src/timeline.c
+++ src/timeline.c
@@ -20,10 +20,11 @@
20 */
21 #include <string.h>
22 #include <time.h>
23 #include "config.h"
24 #include "timeline.h"
25 #include "cson_amalgamation.h"
26
27 /*
28 ** Shorten a UUID so that is the minimum length needed to contain
29 ** at least one digit in the range 'a'..'f'. The minimum length is 10.
30 */
@@ -1365,24 +1366,24 @@
1366 ** a timeline query for display on a TTY.
1367 */
1368 const char *timeline_query_for_tty(void){
1369 static const char zBaseSql[] =
1370 @ SELECT
1371 @ blob.rid AS rid,
1372 @ uuid,
1373 @ datetime(event.mtime,'localtime') AS mDateTime,
1374 @ coalesce(ecomment,comment)
1375 @ || ' (user: ' || coalesce(euser,user,'?')
1376 @ || (SELECT case when length(x)>0 then ' tags: ' || x else '' end
1377 @ FROM (SELECT group_concat(substr(tagname,5), ', ') AS x
1378 @ FROM tag, tagxref
1379 @ WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid
1380 @ AND tagxref.rid=blob.rid AND tagxref.tagtype>0))
1381 @ || ')' as comment,
1382 @ (SELECT count(*) FROM plink WHERE pid=blob.rid AND isprim) AS primPlinkCount,
1383 @ (SELECT count(*) FROM plink WHERE cid=blob.rid) AS plinkCount,
1384 @ event.mtime AS mtime
1385 @ FROM event, blob
1386 @ WHERE blob.rid=event.objid
1387 ;
1388 return zBaseSql;
1389 }
@@ -1425,12 +1426,12 @@
1426 **
1427 ** w = wiki commits only
1428 ** ci = file commits only
1429 ** t = tickets only
1430 **
1431 ** The optional showfiles argument, if specified, prints the list of
1432 ** files changed in a checkin after the checkin comment.
1433 **
1434 */
1435 void timeline_cmd(void){
1436 Stmt q;
1437 int n, k;
@@ -1441,10 +1442,12 @@
1442 Blob sql;
1443 int objid = 0;
1444 Blob uuid;
1445 int mode = 0 ; /* 0:none 1: before 2:after 3:children 4:parents */
1446 int showfilesFlag = 0 ;
1447
1448 db_find_and_open_repository(0, 0);
1449 showfilesFlag = find_option("showfiles","f", 0)!=0;
1450 db_find_and_open_repository(0, 0);
1451 zCount = find_option("count","n",1);
1452 zType = find_option("type","t",1);
1453 if( zCount ){
@@ -1524,11 +1527,10 @@
1527 blob_appendf(&sql, " AND blob.rid IN ok");
1528 }
1529 if( zType && (zType[0]!='a') ){
1530 blob_appendf(&sql, " AND event.type=%Q ", zType);
1531 }
 
1532 blob_appendf(&sql, " ORDER BY event.mtime DESC");
1533 db_prepare(&q, blob_str(&sql));
1534 blob_reset(&sql);
1535 print_timeline(&q, n, showfilesFlag);
1536 db_finalize(&q);
1537
+2 -4
--- src/tkt.c
+++ src/tkt.c
@@ -855,10 +855,11 @@
855855
**
856856
** Run the ticket report, identified by the report format title
857857
** used in the gui. The data is written as flat file on stdout,
858858
** using "," as separator. The separator "," can be changed using
859859
** the -l or --limit option.
860
+**
860861
** If TICKETFILTER is given on the commandline, the query is
861862
** limited with a new WHERE-condition.
862863
** example: Report lists a column # with the uuid
863864
** TICKETFILTER may be [#]='uuuuuuuuu'
864865
** example: Report only lists rows with status not open
@@ -865,11 +866,11 @@
865866
** TICKETFILTER: status != 'open'
866867
** If the option -q|--quote is used, the tickets are encoded by
867868
** quoting special chars(space -> \\s, tab -> \\t, newline -> \\n,
868869
** cr -> \\r, formfeed -> \\f, vtab -> \\v, nul -> \\0, \\ -> \\\\).
869870
** Otherwise, the simplified encoding as on the show report raw
870
-** page in the gui is used.
871
+** page in the gui is used. This has no effect in JSON mode.
871872
**
872873
** Instead of the report title its possible to use the report
873874
** number. Using the special report number 0 list all columns,
874875
** defined in the ticket table.
875876
**
@@ -959,22 +960,19 @@
959960
usage("show REPORTNR");
960961
}else{
961962
const char *zRep = 0;
962963
const char *zSep = 0;
963964
const char *zFilterUuid = 0;
964
-
965965
zSep = find_option("limit","l",1);
966966
zRep = g.argv[3];
967967
if( !strcmp(zRep,"0") ){
968968
zRep = 0;
969969
}
970970
if( g.argc>4 ){
971971
zFilterUuid = g.argv[4];
972972
}
973
-
974973
rptshow( zRep, zSep, zFilterUuid, tktEncoding );
975
-
976974
}
977975
}else{
978976
/* add a new ticket or update an existing ticket */
979977
enum { set,add,history,err } eCmd = err;
980978
int i = 0;
981979
--- src/tkt.c
+++ src/tkt.c
@@ -855,10 +855,11 @@
855 **
856 ** Run the ticket report, identified by the report format title
857 ** used in the gui. The data is written as flat file on stdout,
858 ** using "," as separator. The separator "," can be changed using
859 ** the -l or --limit option.
 
860 ** If TICKETFILTER is given on the commandline, the query is
861 ** limited with a new WHERE-condition.
862 ** example: Report lists a column # with the uuid
863 ** TICKETFILTER may be [#]='uuuuuuuuu'
864 ** example: Report only lists rows with status not open
@@ -865,11 +866,11 @@
865 ** TICKETFILTER: status != 'open'
866 ** If the option -q|--quote is used, the tickets are encoded by
867 ** quoting special chars(space -> \\s, tab -> \\t, newline -> \\n,
868 ** cr -> \\r, formfeed -> \\f, vtab -> \\v, nul -> \\0, \\ -> \\\\).
869 ** Otherwise, the simplified encoding as on the show report raw
870 ** page in the gui is used.
871 **
872 ** Instead of the report title its possible to use the report
873 ** number. Using the special report number 0 list all columns,
874 ** defined in the ticket table.
875 **
@@ -959,22 +960,19 @@
959 usage("show REPORTNR");
960 }else{
961 const char *zRep = 0;
962 const char *zSep = 0;
963 const char *zFilterUuid = 0;
964
965 zSep = find_option("limit","l",1);
966 zRep = g.argv[3];
967 if( !strcmp(zRep,"0") ){
968 zRep = 0;
969 }
970 if( g.argc>4 ){
971 zFilterUuid = g.argv[4];
972 }
973
974 rptshow( zRep, zSep, zFilterUuid, tktEncoding );
975
976 }
977 }else{
978 /* add a new ticket or update an existing ticket */
979 enum { set,add,history,err } eCmd = err;
980 int i = 0;
981
--- src/tkt.c
+++ src/tkt.c
@@ -855,10 +855,11 @@
855 **
856 ** Run the ticket report, identified by the report format title
857 ** used in the gui. The data is written as flat file on stdout,
858 ** using "," as separator. The separator "," can be changed using
859 ** the -l or --limit option.
860 **
861 ** If TICKETFILTER is given on the commandline, the query is
862 ** limited with a new WHERE-condition.
863 ** example: Report lists a column # with the uuid
864 ** TICKETFILTER may be [#]='uuuuuuuuu'
865 ** example: Report only lists rows with status not open
@@ -865,11 +866,11 @@
866 ** TICKETFILTER: status != 'open'
867 ** If the option -q|--quote is used, the tickets are encoded by
868 ** quoting special chars(space -> \\s, tab -> \\t, newline -> \\n,
869 ** cr -> \\r, formfeed -> \\f, vtab -> \\v, nul -> \\0, \\ -> \\\\).
870 ** Otherwise, the simplified encoding as on the show report raw
871 ** page in the gui is used. This has no effect in JSON mode.
872 **
873 ** Instead of the report title its possible to use the report
874 ** number. Using the special report number 0 list all columns,
875 ** defined in the ticket table.
876 **
@@ -959,22 +960,19 @@
960 usage("show REPORTNR");
961 }else{
962 const char *zRep = 0;
963 const char *zSep = 0;
964 const char *zFilterUuid = 0;
 
965 zSep = find_option("limit","l",1);
966 zRep = g.argv[3];
967 if( !strcmp(zRep,"0") ){
968 zRep = 0;
969 }
970 if( g.argc>4 ){
971 zFilterUuid = g.argv[4];
972 }
 
973 rptshow( zRep, zSep, zFilterUuid, tktEncoding );
 
974 }
975 }else{
976 /* add a new ticket or update an existing ticket */
977 enum { set,add,history,err } eCmd = err;
978 int i = 0;
979
+18 -7
--- src/wiki.c
+++ src/wiki.c
@@ -630,10 +630,27 @@
630630
manifest_destroy(pW1);
631631
manifest_destroy(pW2);
632632
style_footer();
633633
}
634634
635
+/*
636
+** prepare()s pStmt with a query requesting:
637
+**
638
+** - wiki page name
639
+** - tagxref (whatever that really is!)
640
+**
641
+** Used by wcontent_page() and the JSON wiki code.
642
+*/
643
+void wiki_prepare_page_list( Stmt * pStmt ){
644
+ db_prepare(pStmt,
645
+ "SELECT"
646
+ " substr(tagname, 6) as name,"
647
+ " (SELECT value FROM tagxref WHERE tagid=tag.tagid ORDER BY mtime DESC) as tagXref"
648
+ " FROM tag WHERE tagname GLOB 'wiki-*'"
649
+ " ORDER BY lower(tagname) /*sort*/"
650
+ );
651
+}
635652
/*
636653
** WEBPAGE: wcontent
637654
**
638655
** all=1 Show deleted pages
639656
**
@@ -650,17 +667,11 @@
650667
style_submenu_element("Active", "Only Active Pages", "%s/wcontent", g.zTop);
651668
}else{
652669
style_submenu_element("All", "All", "%s/wcontent?all=1", g.zTop);
653670
}
654671
@ <ul>
655
- db_prepare(&q,
656
- "SELECT"
657
- " substr(tagname, 6),"
658
- " (SELECT value FROM tagxref WHERE tagid=tag.tagid ORDER BY mtime DESC)"
659
- " FROM tag WHERE tagname GLOB 'wiki-*'"
660
- " ORDER BY lower(tagname) /*sort*/"
661
- );
672
+ wiki_prepare_page_list(&q);
662673
while( db_step(&q)==SQLITE_ROW ){
663674
const char *zName = db_column_text(&q, 0);
664675
int size = db_column_int(&q, 1);
665676
if( size>0 ){
666677
@ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
667678
--- src/wiki.c
+++ src/wiki.c
@@ -630,10 +630,27 @@
630 manifest_destroy(pW1);
631 manifest_destroy(pW2);
632 style_footer();
633 }
634
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635 /*
636 ** WEBPAGE: wcontent
637 **
638 ** all=1 Show deleted pages
639 **
@@ -650,17 +667,11 @@
650 style_submenu_element("Active", "Only Active Pages", "%s/wcontent", g.zTop);
651 }else{
652 style_submenu_element("All", "All", "%s/wcontent?all=1", g.zTop);
653 }
654 @ <ul>
655 db_prepare(&q,
656 "SELECT"
657 " substr(tagname, 6),"
658 " (SELECT value FROM tagxref WHERE tagid=tag.tagid ORDER BY mtime DESC)"
659 " FROM tag WHERE tagname GLOB 'wiki-*'"
660 " ORDER BY lower(tagname) /*sort*/"
661 );
662 while( db_step(&q)==SQLITE_ROW ){
663 const char *zName = db_column_text(&q, 0);
664 int size = db_column_int(&q, 1);
665 if( size>0 ){
666 @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
667
--- src/wiki.c
+++ src/wiki.c
@@ -630,10 +630,27 @@
630 manifest_destroy(pW1);
631 manifest_destroy(pW2);
632 style_footer();
633 }
634
635 /*
636 ** prepare()s pStmt with a query requesting:
637 **
638 ** - wiki page name
639 ** - tagxref (whatever that really is!)
640 **
641 ** Used by wcontent_page() and the JSON wiki code.
642 */
643 void wiki_prepare_page_list( Stmt * pStmt ){
644 db_prepare(pStmt,
645 "SELECT"
646 " substr(tagname, 6) as name,"
647 " (SELECT value FROM tagxref WHERE tagid=tag.tagid ORDER BY mtime DESC) as tagXref"
648 " FROM tag WHERE tagname GLOB 'wiki-*'"
649 " ORDER BY lower(tagname) /*sort*/"
650 );
651 }
652 /*
653 ** WEBPAGE: wcontent
654 **
655 ** all=1 Show deleted pages
656 **
@@ -650,17 +667,11 @@
667 style_submenu_element("Active", "Only Active Pages", "%s/wcontent", g.zTop);
668 }else{
669 style_submenu_element("All", "All", "%s/wcontent?all=1", g.zTop);
670 }
671 @ <ul>
672 wiki_prepare_page_list(&q);
 
 
 
 
 
 
673 while( db_step(&q)==SQLITE_ROW ){
674 const char *zName = db_column_text(&q, 0);
675 int size = db_column_int(&q, 1);
676 if( size>0 ){
677 @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)">%h(zName)</a></li>
678
+13 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -22,13 +22,13 @@
2222
TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
2323
LIBS = $(DMDIR)\extra\lib\ zlib wsock32
2424
2525
SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
2626
27
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
27
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
2828
29
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
29
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3030
3131
3232
RC=$(DMDIR)\bin\rcc
3333
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
3434
@@ -42,11 +42,11 @@
4242
4343
$(OBJDIR)\fossil.res: $B\win\fossil.rc
4444
$(RC) $(RCFLAGS) -o$@ $**
4545
4646
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
47
- +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
47
+ +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
4848
+echo fossil >> $@
4949
+echo fossil >> $@
5050
+echo $(LIBS) >> $@
5151
+echo. >> $@
5252
+echo fossil >> $@
@@ -72,10 +72,13 @@
7272
$(OBJDIR)\th$O : $(SRCDIR)\th.c
7373
$(TCC) -o$@ -c $**
7474
7575
$(OBJDIR)\th_lang$O : $(SRCDIR)\th_lang.c
7676
$(TCC) -o$@ -c $**
77
+
78
+$(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
79
+ cp $@ $@
7780
7881
VERSION.h : version$E $B\manifest.uuid $B\manifest $B\VERSION
7982
+$** > $@
8083
8184
page_index.h: mkindex$E $(SRC)
@@ -314,10 +317,16 @@
314317
$(OBJDIR)\info$O : info_.c info.h
315318
$(TCC) -o$@ -c info_.c
316319
317320
info_.c : $(SRCDIR)\info.c
318321
+translate$E $** > $@
322
+
323
+$(OBJDIR)\json$O : json_.c json.h
324
+ $(TCC) -o$@ -c json_.c
325
+
326
+json_.c : $(SRCDIR)\json.c
327
+ +translate$E $** > $@
319328
320329
$(OBJDIR)\leaf$O : leaf_.c leaf.h
321330
$(TCC) -o$@ -c leaf_.c
322331
323332
leaf_.c : $(SRCDIR)\leaf.c
@@ -580,7 +589,7 @@
580589
581590
zip_.c : $(SRCDIR)\zip.c
582591
+translate$E $** > $@
583592
584593
headers: makeheaders$E page_index.h VERSION.h
585
- +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
594
+ +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
586595
@copy /Y nul: headers
587596
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -22,13 +22,13 @@
22 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
23 LIBS = $(DMDIR)\extra\lib\ zlib wsock32
24
25 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
26
27 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
28
29 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
30
31
32 RC=$(DMDIR)\bin\rcc
33 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
34
@@ -42,11 +42,11 @@
42
43 $(OBJDIR)\fossil.res: $B\win\fossil.rc
44 $(RC) $(RCFLAGS) -o$@ $**
45
46 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
47 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
48 +echo fossil >> $@
49 +echo fossil >> $@
50 +echo $(LIBS) >> $@
51 +echo. >> $@
52 +echo fossil >> $@
@@ -72,10 +72,13 @@
72 $(OBJDIR)\th$O : $(SRCDIR)\th.c
73 $(TCC) -o$@ -c $**
74
75 $(OBJDIR)\th_lang$O : $(SRCDIR)\th_lang.c
76 $(TCC) -o$@ -c $**
 
 
 
77
78 VERSION.h : version$E $B\manifest.uuid $B\manifest $B\VERSION
79 +$** > $@
80
81 page_index.h: mkindex$E $(SRC)
@@ -314,10 +317,16 @@
314 $(OBJDIR)\info$O : info_.c info.h
315 $(TCC) -o$@ -c info_.c
316
317 info_.c : $(SRCDIR)\info.c
318 +translate$E $** > $@
 
 
 
 
 
 
319
320 $(OBJDIR)\leaf$O : leaf_.c leaf.h
321 $(TCC) -o$@ -c leaf_.c
322
323 leaf_.c : $(SRCDIR)\leaf.c
@@ -580,7 +589,7 @@
580
581 zip_.c : $(SRCDIR)\zip.c
582 +translate$E $** > $@
583
584 headers: makeheaders$E page_index.h VERSION.h
585 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
586 @copy /Y nul: headers
587
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -22,13 +22,13 @@
22 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
23 LIBS = $(DMDIR)\extra\lib\ zlib wsock32
24
25 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
26
27 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
28
29 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
30
31
32 RC=$(DMDIR)\bin\rcc
33 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
34
@@ -42,11 +42,11 @@
42
43 $(OBJDIR)\fossil.res: $B\win\fossil.rc
44 $(RC) $(RCFLAGS) -o$@ $**
45
46 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
47 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
48 +echo fossil >> $@
49 +echo fossil >> $@
50 +echo $(LIBS) >> $@
51 +echo. >> $@
52 +echo fossil >> $@
@@ -72,10 +72,13 @@
72 $(OBJDIR)\th$O : $(SRCDIR)\th.c
73 $(TCC) -o$@ -c $**
74
75 $(OBJDIR)\th_lang$O : $(SRCDIR)\th_lang.c
76 $(TCC) -o$@ -c $**
77
78 $(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
79 cp $@ $@
80
81 VERSION.h : version$E $B\manifest.uuid $B\manifest $B\VERSION
82 +$** > $@
83
84 page_index.h: mkindex$E $(SRC)
@@ -314,10 +317,16 @@
317 $(OBJDIR)\info$O : info_.c info.h
318 $(TCC) -o$@ -c info_.c
319
320 info_.c : $(SRCDIR)\info.c
321 +translate$E $** > $@
322
323 $(OBJDIR)\json$O : json_.c json.h
324 $(TCC) -o$@ -c json_.c
325
326 json_.c : $(SRCDIR)\json.c
327 +translate$E $** > $@
328
329 $(OBJDIR)\leaf$O : leaf_.c leaf.h
330 $(TCC) -o$@ -c leaf_.c
331
332 leaf_.c : $(SRCDIR)\leaf.c
@@ -580,7 +589,7 @@
589
590 zip_.c : $(SRCDIR)\zip.c
591 +translate$E $** > $@
592
593 headers: makeheaders$E page_index.h VERSION.h
594 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
595 @copy /Y nul: headers
596
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -110,10 +110,11 @@
110110
$(SRCDIR)/http_socket.c \
111111
$(SRCDIR)/http_ssl.c \
112112
$(SRCDIR)/http_transport.c \
113113
$(SRCDIR)/import.c \
114114
$(SRCDIR)/info.c \
115
+ $(SRCDIR)/json.c \
115116
$(SRCDIR)/leaf.c \
116117
$(SRCDIR)/login.c \
117118
$(SRCDIR)/main.c \
118119
$(SRCDIR)/manifest.c \
119120
$(SRCDIR)/md5.c \
@@ -194,10 +195,11 @@
194195
$(OBJDIR)/http_socket_.c \
195196
$(OBJDIR)/http_ssl_.c \
196197
$(OBJDIR)/http_transport_.c \
197198
$(OBJDIR)/import_.c \
198199
$(OBJDIR)/info_.c \
200
+ $(OBJDIR)/json_.c \
199201
$(OBJDIR)/leaf_.c \
200202
$(OBJDIR)/login_.c \
201203
$(OBJDIR)/main_.c \
202204
$(OBJDIR)/manifest_.c \
203205
$(OBJDIR)/md5_.c \
@@ -278,10 +280,11 @@
278280
$(OBJDIR)/http_socket.o \
279281
$(OBJDIR)/http_ssl.o \
280282
$(OBJDIR)/http_transport.o \
281283
$(OBJDIR)/import.o \
282284
$(OBJDIR)/info.o \
285
+ $(OBJDIR)/json.o \
283286
$(OBJDIR)/leaf.o \
284287
$(OBJDIR)/login.o \
285288
$(OBJDIR)/main.o \
286289
$(OBJDIR)/manifest.o \
287290
$(OBJDIR)/md5.o \
@@ -363,11 +366,11 @@
363366
$(TCLSH) test/tester.tcl $(APPNAME)
364367
365368
$(OBJDIR)/VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(VERSION)
366369
$(VERSION) $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
367370
368
-EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o
371
+EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(OBJDIR)/cson_amalgamation.o
369372
370373
$(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o
371374
$(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o
372375
373376
# This rule prevents make from using its default rules to try build
@@ -388,11 +391,11 @@
388391
389392
390393
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
391394
$(MKINDEX) $(TRANS_SRC) >$@
392395
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
393
- $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
396
+ $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
394397
echo Done >$(OBJDIR)/headers
395398
396399
$(OBJDIR)/headers: Makefile
397400
Makefile:
398401
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -659,10 +662,17 @@
659662
660663
$(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
661664
$(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
662665
663666
info.h: $(OBJDIR)/headers
667
+$(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
668
+ $(TRANSLATE) $(SRCDIR)/json.c >$(OBJDIR)/json_.c
669
+
670
+$(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
671
+ $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c
672
+
673
+json.h: $(OBJDIR)/headers
664674
$(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate
665675
$(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c
666676
667677
$(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h
668678
$(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c
@@ -970,14 +980,17 @@
970980
971981
zip.h: $(OBJDIR)/headers
972982
$(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c
973983
$(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o
974984
985
+$(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c
986
+ $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o
987
+
975988
$(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h
976989
$(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o
977990
978991
$(OBJDIR)/th.o: $(SRCDIR)/th.c
979992
$(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
980993
981994
$(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
982995
$(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
983996
984997
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -110,10 +110,11 @@
110 $(SRCDIR)/http_socket.c \
111 $(SRCDIR)/http_ssl.c \
112 $(SRCDIR)/http_transport.c \
113 $(SRCDIR)/import.c \
114 $(SRCDIR)/info.c \
 
115 $(SRCDIR)/leaf.c \
116 $(SRCDIR)/login.c \
117 $(SRCDIR)/main.c \
118 $(SRCDIR)/manifest.c \
119 $(SRCDIR)/md5.c \
@@ -194,10 +195,11 @@
194 $(OBJDIR)/http_socket_.c \
195 $(OBJDIR)/http_ssl_.c \
196 $(OBJDIR)/http_transport_.c \
197 $(OBJDIR)/import_.c \
198 $(OBJDIR)/info_.c \
 
199 $(OBJDIR)/leaf_.c \
200 $(OBJDIR)/login_.c \
201 $(OBJDIR)/main_.c \
202 $(OBJDIR)/manifest_.c \
203 $(OBJDIR)/md5_.c \
@@ -278,10 +280,11 @@
278 $(OBJDIR)/http_socket.o \
279 $(OBJDIR)/http_ssl.o \
280 $(OBJDIR)/http_transport.o \
281 $(OBJDIR)/import.o \
282 $(OBJDIR)/info.o \
 
283 $(OBJDIR)/leaf.o \
284 $(OBJDIR)/login.o \
285 $(OBJDIR)/main.o \
286 $(OBJDIR)/manifest.o \
287 $(OBJDIR)/md5.o \
@@ -363,11 +366,11 @@
363 $(TCLSH) test/tester.tcl $(APPNAME)
364
365 $(OBJDIR)/VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(VERSION)
366 $(VERSION) $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
367
368 EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o
369
370 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o
371 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o
372
373 # This rule prevents make from using its default rules to try build
@@ -388,11 +391,11 @@
388
389
390 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
391 $(MKINDEX) $(TRANS_SRC) >$@
392 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
393 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
394 echo Done >$(OBJDIR)/headers
395
396 $(OBJDIR)/headers: Makefile
397 Makefile:
398 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -659,10 +662,17 @@
659
660 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
661 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
662
663 info.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
664 $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate
665 $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c
666
667 $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h
668 $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c
@@ -970,14 +980,17 @@
970
971 zip.h: $(OBJDIR)/headers
972 $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c
973 $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o
974
 
 
 
975 $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h
976 $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o
977
978 $(OBJDIR)/th.o: $(SRCDIR)/th.c
979 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
980
981 $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
982 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
983
984
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -110,10 +110,11 @@
110 $(SRCDIR)/http_socket.c \
111 $(SRCDIR)/http_ssl.c \
112 $(SRCDIR)/http_transport.c \
113 $(SRCDIR)/import.c \
114 $(SRCDIR)/info.c \
115 $(SRCDIR)/json.c \
116 $(SRCDIR)/leaf.c \
117 $(SRCDIR)/login.c \
118 $(SRCDIR)/main.c \
119 $(SRCDIR)/manifest.c \
120 $(SRCDIR)/md5.c \
@@ -194,10 +195,11 @@
195 $(OBJDIR)/http_socket_.c \
196 $(OBJDIR)/http_ssl_.c \
197 $(OBJDIR)/http_transport_.c \
198 $(OBJDIR)/import_.c \
199 $(OBJDIR)/info_.c \
200 $(OBJDIR)/json_.c \
201 $(OBJDIR)/leaf_.c \
202 $(OBJDIR)/login_.c \
203 $(OBJDIR)/main_.c \
204 $(OBJDIR)/manifest_.c \
205 $(OBJDIR)/md5_.c \
@@ -278,10 +280,11 @@
280 $(OBJDIR)/http_socket.o \
281 $(OBJDIR)/http_ssl.o \
282 $(OBJDIR)/http_transport.o \
283 $(OBJDIR)/import.o \
284 $(OBJDIR)/info.o \
285 $(OBJDIR)/json.o \
286 $(OBJDIR)/leaf.o \
287 $(OBJDIR)/login.o \
288 $(OBJDIR)/main.o \
289 $(OBJDIR)/manifest.o \
290 $(OBJDIR)/md5.o \
@@ -363,11 +366,11 @@
366 $(TCLSH) test/tester.tcl $(APPNAME)
367
368 $(OBJDIR)/VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(VERSION)
369 $(VERSION) $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
370
371 EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(OBJDIR)/cson_amalgamation.o
372
373 $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o
374 $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o
375
376 # This rule prevents make from using its default rules to try build
@@ -388,11 +391,11 @@
391
392
393 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
394 $(MKINDEX) $(TRANS_SRC) >$@
395 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
396 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
397 echo Done >$(OBJDIR)/headers
398
399 $(OBJDIR)/headers: Makefile
400 Makefile:
401 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -659,10 +662,17 @@
662
663 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
664 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
665
666 info.h: $(OBJDIR)/headers
667 $(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
668 $(TRANSLATE) $(SRCDIR)/json.c >$(OBJDIR)/json_.c
669
670 $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
671 $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c
672
673 json.h: $(OBJDIR)/headers
674 $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate
675 $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c
676
677 $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h
678 $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c
@@ -970,14 +980,17 @@
980
981 zip.h: $(OBJDIR)/headers
982 $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c
983 $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o
984
985 $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c
986 $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o
987
988 $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h
989 $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o
990
991 $(OBJDIR)/th.o: $(SRCDIR)/th.c
992 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
993
994 $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
995 $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
996
997
+12 -3
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -36,13 +36,13 @@
3636
LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB)
3737
LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
3838
3939
SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
4040
41
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
41
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
4242
43
-OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
43
+OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
4444
4545
4646
APPNAME = $(OX)\fossil$(E)
4747
4848
all: $(OX) $(APPNAME)
@@ -88,10 +88,11 @@
8888
echo $(OX)\http_socket.obj >> $@
8989
echo $(OX)\http_ssl.obj >> $@
9090
echo $(OX)\http_transport.obj >> $@
9191
echo $(OX)\import.obj >> $@
9292
echo $(OX)\info.obj >> $@
93
+ echo $(OX)\json.obj >> $@
9394
echo $(OX)\leaf.obj >> $@
9495
echo $(OX)\login.obj >> $@
9596
echo $(OX)\main.obj >> $@
9697
echo $(OX)\manifest.obj >> $@
9798
echo $(OX)\md5.obj >> $@
@@ -170,10 +171,12 @@
170171
$(OX)\th_lang$O : $(SRCDIR)\th_lang.c
171172
$(TCC) /Fo$@ -c $**
172173
173174
VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION
174175
$** > $@
176
+$(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
177
+ cp $(SRCDIR)\cson_amalgamation.h $@
175178
176179
page_index.h: mkindex$E $(SRC)
177180
$** > $@
178181
179182
clean:
@@ -410,10 +413,16 @@
410413
$(OX)\info$O : info_.c info.h
411414
$(TCC) /Fo$@ -c info_.c
412415
413416
info_.c : $(SRCDIR)\info.c
414417
translate$E $** > $@
418
+
419
+$(OX)\json$O : json_.c json.h
420
+ $(TCC) /Fo$@ -c json_.c
421
+
422
+json_.c : $(SRCDIR)\json.c
423
+ translate$E $** > $@
415424
416425
$(OX)\leaf$O : leaf_.c leaf.h
417426
$(TCC) /Fo$@ -c leaf_.c
418427
419428
leaf_.c : $(SRCDIR)\leaf.c
@@ -676,7 +685,7 @@
676685
677686
zip_.c : $(SRCDIR)\zip.c
678687
translate$E $** > $@
679688
680689
headers: makeheaders$E page_index.h VERSION.h
681
- makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
690
+ makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
682691
@copy /Y nul: headers
683692
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -36,13 +36,13 @@
36 LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB)
37 LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
38
39 SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
40
41 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
42
43 OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
44
45
46 APPNAME = $(OX)\fossil$(E)
47
48 all: $(OX) $(APPNAME)
@@ -88,10 +88,11 @@
88 echo $(OX)\http_socket.obj >> $@
89 echo $(OX)\http_ssl.obj >> $@
90 echo $(OX)\http_transport.obj >> $@
91 echo $(OX)\import.obj >> $@
92 echo $(OX)\info.obj >> $@
 
93 echo $(OX)\leaf.obj >> $@
94 echo $(OX)\login.obj >> $@
95 echo $(OX)\main.obj >> $@
96 echo $(OX)\manifest.obj >> $@
97 echo $(OX)\md5.obj >> $@
@@ -170,10 +171,12 @@
170 $(OX)\th_lang$O : $(SRCDIR)\th_lang.c
171 $(TCC) /Fo$@ -c $**
172
173 VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION
174 $** > $@
 
 
175
176 page_index.h: mkindex$E $(SRC)
177 $** > $@
178
179 clean:
@@ -410,10 +413,16 @@
410 $(OX)\info$O : info_.c info.h
411 $(TCC) /Fo$@ -c info_.c
412
413 info_.c : $(SRCDIR)\info.c
414 translate$E $** > $@
 
 
 
 
 
 
415
416 $(OX)\leaf$O : leaf_.c leaf.h
417 $(TCC) /Fo$@ -c leaf_.c
418
419 leaf_.c : $(SRCDIR)\leaf.c
@@ -676,7 +685,7 @@
676
677 zip_.c : $(SRCDIR)\zip.c
678 translate$E $** > $@
679
680 headers: makeheaders$E page_index.h VERSION.h
681 makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
682 @copy /Y nul: headers
683
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -36,13 +36,13 @@
36 LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB)
37 LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
38
39 SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
40
41 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
42
43 OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
44
45
46 APPNAME = $(OX)\fossil$(E)
47
48 all: $(OX) $(APPNAME)
@@ -88,10 +88,11 @@
88 echo $(OX)\http_socket.obj >> $@
89 echo $(OX)\http_ssl.obj >> $@
90 echo $(OX)\http_transport.obj >> $@
91 echo $(OX)\import.obj >> $@
92 echo $(OX)\info.obj >> $@
93 echo $(OX)\json.obj >> $@
94 echo $(OX)\leaf.obj >> $@
95 echo $(OX)\login.obj >> $@
96 echo $(OX)\main.obj >> $@
97 echo $(OX)\manifest.obj >> $@
98 echo $(OX)\md5.obj >> $@
@@ -170,10 +171,12 @@
171 $(OX)\th_lang$O : $(SRCDIR)\th_lang.c
172 $(TCC) /Fo$@ -c $**
173
174 VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION
175 $** > $@
176 $(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h
177 cp $(SRCDIR)\cson_amalgamation.h $@
178
179 page_index.h: mkindex$E $(SRC)
180 $** > $@
181
182 clean:
@@ -410,10 +413,16 @@
413 $(OX)\info$O : info_.c info.h
414 $(TCC) /Fo$@ -c info_.c
415
416 info_.c : $(SRCDIR)\info.c
417 translate$E $** > $@
418
419 $(OX)\json$O : json_.c json.h
420 $(TCC) /Fo$@ -c json_.c
421
422 json_.c : $(SRCDIR)\json.c
423 translate$E $** > $@
424
425 $(OX)\leaf$O : leaf_.c leaf.h
426 $(TCC) /Fo$@ -c leaf_.c
427
428 leaf_.c : $(SRCDIR)\leaf.c
@@ -676,7 +685,7 @@
685
686 zip_.c : $(SRCDIR)\zip.c
687 translate$E $** > $@
688
689 headers: makeheaders$E page_index.h VERSION.h
690 makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
691 @copy /Y nul: headers
692

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button