@@ -55,11 +55,11 @@
55 55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
56 56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
58 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Given the current request path string, this function returns true
59 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** if it refers to a JSON API path. i.e. if (1) it starts with /json
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** or (2) g.zCmdName is "server" and the path starts with
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or (2) g.zCmdName is "server" or "cgi" and the path starts with
61 61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** /somereponame/json. Specifically, it returns 1 in the former case
62 62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and 2 for the latter.
63 63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
64 64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int json_request_is_json_api(const char * zPathInfo){
65 65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc = 0;
@@ -66,15 +66,16 @@
66 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(zPathInfo==0){
67 67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 0;
68 68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if(0==strncmp("/json",zPathInfo,5)
69 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (zPathInfo[5]==0 || zPathInfo[5]=='/')){
70 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = 1;
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if(g.zCmdName!=0 && 0==strcmp("server",g.zCmdName)){
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* When running in server "directory" mode, zPathInfo is
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if(g.zCmdName!=0 && (0==strcmp("server",g.zCmdName)
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ || 0==strcmp("cgi",g.zCmdName)) ){
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* When running in server/cgi "directory" mode, zPathInfo is
73 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** prefixed with the repository's name, so in order to determine
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** whether or not we're really running in json mode we have to
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** try a bit harder. Problem reported here:
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** whether or not we're really running in json mode we have to try
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a bit harder. Problem reported here:
76 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** https://fossil-scm.org/forum/forumpost/e4953666d6
77 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
78 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled * pReg = 0;
79 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char * zErr = re_compile(&pReg, "^/[^/]+/json(/.*)?", 0);
80 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(zErr==0 && "Regex compilation failed?");
@@ -687,11 +688,11 @@
687 688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection is "local", any authToken provided by the user is
688 689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** ignored and no new token is created: localauth mode trumps the
689 690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** authToken.
690 691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
691 692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_value * json_auth_token(){
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert(g.json.gc.a && "json_main_bootstrap() was not called!");
693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(g.json.gc.a && "json_bootstrap_early() was not called!");
693 694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.json.authToken==0 && g.noPswd==0
694 695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* g.noPswd!=0 means the user was logged in via a local
695 696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
connection using --localauth. */
696 697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
697 698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Try to get an authorization token from GET parameter, POSTed
@@ -740,43 +741,49 @@
740 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_value * json_req_payload_get(char const *pKey){
741 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return g.json.reqPayload.o
742 743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
? cson_object_get(g.json.reqPayload.o,pKey)
743 744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
: NULL;
744 745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
745 747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
746 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Returns non-zero if the json_main_bootstrap() function has already
749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Returns non-zero if the json_bootstrap_early() function has already
748 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** been called. In general, this function should be used sparingly,
749 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** e.g. from low-level support functions like fossil_warning() where
750 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** there is genuine uncertainty about whether (or not) the JSON setup
751 753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** has already been called.
752 754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int json_is_main_boostrapped(){
755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int json_is_bootstrapped_early(){
754 756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return ((g.json.gc.v != NULL) && (g.json.gc.a != NULL));
755 757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
756 758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
757 759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
758 760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Initializes some JSON bits which need to be initialized relatively
759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** early on. It should only be called from cgi_init() or
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** json_cmd_top() (early on in those functions).
761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** early on. It should be called by any routine which might need to
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** call into JSON relatively early on in the init process.
763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Specifically, early on in cgi_init() and json_cmd_top(), but also
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** from any error reporting routines which might be triggered (early
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on in those functions).
761 766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
762 767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Initializes g.json.gc and g.json.param. This code does not (and
763 768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** must not) rely on any of the fossil environment having been set
764 769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** up. e.g. it must not use cgi_parameter() and friends because this
765 770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** must be called before those data are initialized.
771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If called multiple times, calls after the first are a no-op.
766 773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void json_main_bootstrap(){
774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void json_bootstrap_early(){
768 775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_value * v;
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (NULL == g.json.gc.v) &&
770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "json_main_bootstrap() was called twice!" );
771 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(g.json.gc.v!=NULL){
778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Avoid multiple bootstrappings. */
779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
772 781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.timerId = fossil_timer_start();
773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
774 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* g.json.gc is our "garbage collector" - where we put JSON values
775 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
which need a long lifetime but don't have a logical parent to put
776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- them in.
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ them in. */
778 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = cson_value_new_array();
779 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.gc.v = v;
780 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(0 != g.json.gc.v);
781 788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.gc.a = cson_value_get_array(v);
782 789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert(0 != g.json.gc.a);
@@ -783,12 +790,11 @@
783 790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_value_add_reference(v)
784 791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Needed to allow us to include this value in other JSON
785 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
containers without transferring ownership to those containers.
786 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
All other persistent g.json.XXX.v values get appended to
787 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.gc.a, and therefore already have a live reference
788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for this purpose.
789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for this purpose. */
790 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
;
791 797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
792 798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
793 799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.param holds the JSONized counterpart of fossil's
794 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_parameter_xxx() family of data. We store them as JSON, as
@@ -828,11 +834,11 @@
828 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void json_warn( int code, char const * fmt, ... ){
829 835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_object * obj = NULL;
830 836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( (code>FSL_JSON_W_START)
831 837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (code<FSL_JSON_W_END)
832 838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& "Invalid warning code.");
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert(g.json.gc.a && "json_main_bootstrap() was not called!");
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(g.json.gc.a && "json_bootstrap_early() was not called!");
834 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!g.json.warnings){
835 841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.warnings = cson_new_array();
836 842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert((NULL != g.json.warnings) && "Alloc error.");
837 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
json_gc_add("$WARNINGS",cson_array_value(g.json.warnings));
838 844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -975,15 +981,15 @@
975 981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This must be called by the top-level JSON command dispatching code
976 982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** before they do any work.
977 983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
978 984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This must only be called once, or an assertion may be triggered.
979 985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void json_mode_bootstrap(){
986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void json_bootstrap_late(){
981 987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char once = 0 /* guard against multiple runs */;
982 988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const * zPath = P("PATH_INFO");
983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert(g.json.gc.a && "json_main_bootstrap() was not called!");
984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( (0==once) && "json_mode_bootstrap() called too many times!");
989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(g.json.gc.a && "json_bootstrap_early() was not called!");
990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( (0==once) && "json_bootstrap_late() called too many times!");
985 991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( once ){
986 992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
987 993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
988 994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
once = 1;
989 995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1158,11 +1164,11 @@
1158 1164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** find_option() to get those.
1159 1165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1160 1166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1161 1167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const * json_command_arg(unsigned short ndx){
1162 1168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cson_array * ar = g.json.cmd.a;
1163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?");
1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert((NULL!=ar) && "Internal error. Was json_bootstrap_late() called?");
1164 1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert((g.argc>1) && "Internal error - we never should have gotten this far.");
1165 1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.json.cmd.offset < 0 ){
1166 1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* first-time setup. */
1167 1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
short i = 0;
1168 1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define NEXT cson_string_cstr( \
@@ -2305,12 +2311,12 @@
2305 2311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This function dispatches them, and is the HTTP equivalent of
2306 2312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** json_cmd_top().
2307 2313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2308 2314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void json_page_top(void){
2309 2315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const * zCommand;
2310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert(g.json.gc.a && "json_main_bootstrap() was not called!");
2311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert(g.json.cmd.a && "json_mode_bootstrap() was not called!");
2316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(g.json.gc.a && "json_bootstrap_early() was not called!");
2317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert(g.json.cmd.a && "json_bootstrap_late() was not called!");
2312 2318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zCommand = json_command_arg(1);
2313 2319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if(!zCommand || !*zCommand){
2314 2320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
json_dispatch_missing_args_err( JsonPageDefs,
2315 2321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"No command (sub-path) specified."
2316 2322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" Try one of: ");
@@ -2377,12 +2383,12 @@
2377 2383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mode but (B) having them set gives us one less
2378 2384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
difference in the CLI/CGI/Server-mode JSON
2379 2385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
handling.
2380 2386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2381 2387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
;
2382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- json_main_bootstrap();
2383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- json_mode_bootstrap();
2388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_bootstrap_early();
2389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ json_bootstrap_late();
2384 2390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( 2 > cson_array_length_get(g.json.cmd.a) ){
2385 2391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto usage;
2386 2392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2387 2393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if 0
2388 2394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
json_warn(FSL_JSON_W_ROW_TO_JSON_FAILED, "Just testing.");
2389 2395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!