@@ -81,10 +81,22 @@
81 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** sent to stderr ends up in my apache log, so that might be useful
82 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for debuggering in some cases, but so such code should be left
83 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** enabled for non-debuggering builds.
84 84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
85 85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typedef cson_value * (*fossil_json_f)(unsigned int depth);
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Internal helpers to manipulate a byte array as a bitset. The B
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** argument must be-a array at least (BIT/8+1) bytes long.
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The BIT argument is the bit number to query/set/clear/toggle.
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BITSET_BYTEFOR(B,BIT) ((B)[ BIT / 8 ])
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BITSET_SET(B,BIT) ((BITSET_BYTEFOR(B,BIT) |= (0x01 << (BIT%8))),0x01)
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BITSET_UNSET(B,BIT) ((BITSET_BYTEFOR(B,BIT) &= ~(0x01 << (BIT%8))),0x00)
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BITSET_GET(B,BIT) ((BITSET_BYTEFOR(B,BIT) & (0x01 << (BIT%8))) ? 0x01 : 0x00)
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define BITSET_TOGGLE(B,BIT) (BITSET_GET(B,BIT) ? (BITSET_UNSET(B,BIT)) : (BITSET_SET(B,BIT)))
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
86 98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
87 99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
88 100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Placeholder /json/XXX page impl for NYI (Not Yet Implemented)
89 101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (but planned) pages/commands.
90 102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -463,26 +475,46 @@
463 475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.param.o = cson_value_get_object(v);
464 476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
json_gc_add("$PARAMS", v, 1);
465 477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
466 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
467 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Appends a warning object to the response.
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Appends a warning object to the (pending) JSON response.
469 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** TODO: specify what the code must be.
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Code must be a FSL_JSON_W_xxx value from the FossilJsonCodes enum.
471 483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
472 484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A Warning object has this JSON structure:
473 485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
474 486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** { "code":integer, "text":"string" }
475 487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
476 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** But the text part is optional.
477 489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If msg is non-NULL and not empty then it is used
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** as the "text" property's value.
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** FIXME FIXME FIXME: i am EXPERIMENTALLY using integer codes instead
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of FOSSIL-XXXX codes here. i may end up switching FOSSIL-XXXX
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** string-form codes to integers. Let's ask the mailing list for
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** opinions...
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If msg is non-NULL and not empty then it is used as the "text"
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** property's value. It is copied, and need not refer to static
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** memory.
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CURRENTLY this code only allows a given warning code to be
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** added one time, and elides subsequent warnings. The intention
501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is to remove that burden from loops which produce warnings.
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** FIXME: if msg is NULL then use a standard string for
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the given code. If !*msg then elide the "text" property,
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for consistency with how json_err() works.
480 506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void json_add_warning( int code, char const * msg ){
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void json_warn( int code, char const * msg ){
482 508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_value * objV = NULL;
483 509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_object * obj = NULL;
510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (code>FSL_JSON_W_START)
511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (code<FSL_JSON_W_END)
512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && "Invalid warning code.");
513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( BITSET_GET(g.json.warnings.bitset,code) ){
514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
484 516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!g.json.warnings.v){
485 517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.warnings.v = cson_value_new_array();
486 518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert((NULL != g.json.warnings.v) && "Alloc error.");
487 519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.warnings.a = cson_value_get_array(g.json.warnings.v);
488 520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
json_gc_add("$WARNINGS",g.json.warnings.v,0);
@@ -496,10 +528,11 @@
496 528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* FIXME: treat NULL msg as standard warning message for
497 529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
the code, but we don't have those yet.
498 530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
499 531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_object_set(obj,"text",cson_value_new_string(msg,strlen(msg)));
500 532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ BITSET_SET(g.json.warnings.bitset,code);
501 534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
502 535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
503 536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
504 537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Splits zStr (which must not be NULL) into tokens separated by the
505 538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** given separator character. If doDeHttp is true then each element
@@ -553,10 +586,18 @@
553 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = rc ? -rc : 0;
554 587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
555 588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
556 589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
557 590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(0 && "i didn't think this was possible!");
591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(stderr,"%s:%d: My God! It's full of stars!\n",
592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ __FILE__, __LINE__);
593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_exit(1)
594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Not fossil_panic() b/c this code needs to be able to
595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ run before some of the fossil/json bits are initialized,
596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ and fossil_panic() calls into the JSON API.
597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ;
558 599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
559 600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
free(zPart);
560 601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
len = 0;
561 602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
562 603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !*p ){
@@ -567,10 +608,36 @@
567 608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
568 609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
++len;
569 610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
570 611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return rc;
571 612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Wrapper around json_string_split(), taking the same first 3
616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** parameters as this function, but returns the results as
617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a JSON Array (if splitting produced tokens)
618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** OR a JSON null value (if splitting produced no tokens)
619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** OR NULL (if splitting failed in any way).
620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The returned value is owned by the caller. If not NULL then it
622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** _will_ have a JSON type of Array or Null.
623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value * json_string_split2( char const * zStr,
625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char separator,
626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char doDeHttp ){
627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value * v = cson_value_new_array();
628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_array * a = cson_value_get_array(v);
629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = json_string_split( zStr, separator, doDeHttp, a );
630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( 0 == rc ){
631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value_free(v);
632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = cson_value_null();
633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(rc<0){
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value_free(v);
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = NULL;
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return v;
638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
572 639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
573 640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
574 641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Performs some common initialization of JSON-related state. Must be
575 642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** called by the json_page_top() and json_cmd_top() dispatching
576 643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** functions to set up the JSON stat used by the dispatched functions.
@@ -799,16 +866,19 @@
799 866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
800 867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given a Fossil/JSON result code, this function "dumbs it down"
801 868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** according to the current value of g.json.errorDetailParanoia. The
802 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** dumbed-down value is returned.
803 870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function assert()s that code is either 0
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or between the range of 1000 and 9999.
871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function assert()s that code is in the inclusive range 0 to
872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 9999.
873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Note that WARNING codes (1..999) are never dumbed down.
875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
806 876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
807 877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int json_dumbdown_rc( int code ){
808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !code ){
809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(!code || ((code>FSL_JSON_W_START) && (code>FSL_JSON_W_END))){
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return code;
810 880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
811 881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int modulo = 0;
812 882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert((code >= 1000) && (code <= 9999) && "Invalid Fossil/JSON code.");
813 883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( g.json.errorDetailParanoia ){
814 884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1: modulo = 10; break;
@@ -1595,11 +1665,10 @@
1595 1665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" brief AS briefText"
1596 1666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM json_timeline"
1597 1667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ORDER BY mtime DESC",
1598 1668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-1);
1599 1669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q,blob_buffer(&sql));
1600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tmp = NULL;
1601 1670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
listV = cson_value_new_array();
1602 1671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
list = cson_value_get_array(listV);
1603 1672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tmp = listV;
1604 1673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SET("timeline");
1605 1674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (SQLITE_ROW == db_step(&q) )){
@@ -1606,27 +1675,42 @@
1606 1675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* convert each row into a JSON object...*/
1607 1676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_value * rowV = cson_sqlite3_row_to_object(q.pStmt);
1608 1677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_object * row = cson_value_get_object(rowV);
1609 1678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_string const * tagsStr = NULL;
1610 1679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!row){
1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* need a way of warning about this */
1680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_warn( FSL_JSON_W_ROW_TO_JSON_FAILED,
1681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Could not convert at least one timeline result row to JSON." );
1612 1682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
1613 1683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1615 1684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Split tags string field into JSON Array... */
1616 1685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_array_append(list, rowV);
1617 1686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagsStr = cson_value_get_string(cson_object_get(row,"tags"));
1618 1687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(tagsStr){
1619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cson_value * tagsV = cson_value_new_array();
1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cson_array * tags = cson_value_get_array(tagsV);
1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( 0 < json_string_split( cson_string_cstr(tagsStr), ',', 0, tags)){
1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cson_object_set(row,"tags",tagsV)
1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*replaces/deletes old tags value, invalidating tagsStr!*/;
1688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value * tags = json_string_split2( cson_string_cstr(tagsStr),
1689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ',', 0);
1690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( tags ){
1691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(0 != cson_object_set(row,"tags",tags)){
1692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value_free(tags);
1693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*replaced/deleted old tags value, invalidating tagsStr*/;
1695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tagsStr = NULL;
1696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1624 1697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cson_value_free(tagsV);
1698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_warn(FSL_JSON_W_STRING_TO_ARRAY_FAILED,
1699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Could not convert tags string to array.");
1626 1700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1627 1701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* replace isLeaf int w/ JSON bool */
1704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmp = cson_object_get(row,"isLeaf");
1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(tmp && cson_value_is_integer(tmp)){
1706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_object_set(row,"isLeaf",
1707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cson_value_get_integer(tmp)
1708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ? cson_value_true()
1709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ : cson_value_false());
1710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tmp = NULL;
1711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1628 1712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1629 1713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1630 1714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#undef SET
1631 1715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto ok;
1632 1716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
error:
@@ -1787,11 +1871,12 @@
1787 1871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc<3 ){
1788 1872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto usage;
1789 1873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1790 1874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_find_and_open_repository(0, 0);
1791 1875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if 0
1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- json_add_warning(-1, "Just testing.");
1876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_warn(FSL_JSON_W_ROW_TO_JSON_FAILED, "Just testing.");
1877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_warn(FSL_JSON_W_ROW_TO_JSON_FAILED, "Just testing again.");
1793 1878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1794 1879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cmd = json_command_arg(1);
1795 1880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !cmd || !*cmd ){
1796 1881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto usage;
1797 1882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1821,5 +1906,11 @@
1821 1906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1822 1907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1823 1908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usage:
1824 1909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usage("subcommand");
1825 1910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef BITSET_BYTEFOR
1913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef BITSET_SET
1914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef BITSET_UNSET
1915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef BITSET_GET
1916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #undef BITSET_TOGGLE
1826 1917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!