Diff
Not logged in

Differences From Artifact [e6ecc35196]:

To Artifact [5d050d5fbe]:


86
87
88
89
90
91
92
93
94
95
96
97
98







99
100
101
102
103
104
105
86
87
88
89
90
91
92






93
94
95
96
97
98
99
100
101
102
103
104
105
106







-
-
-
-
-
-
+
+
+
+
+
+
+







#ifdef FOSSIL_ENABLE_TCL
/*
** All Tcl related context information is in this structure.  This structure
** definition has been copied from and should be kept in sync with the one in
** "th_tcl.c".
*/
struct TclContext {
  int argc;
  char **argv;
  void *library;
  void *xFindExecutable; /* see tcl_FindExecutableProc in th_tcl.c */
  void *xCreateInterp;   /* see tcl_CreateInterpProc in th_tcl.c */
  Tcl_Interp *interp;
  int argc;              /* Number of original (expanded) arguments. */
  char **argv;           /* Full copy of the original (expanded) arguments. */
  void *library;         /* The Tcl library module handle. */
  void *xFindExecutable; /* See tcl_FindExecutableProc in th_tcl.c. */
  void *xCreateInterp;   /* See tcl_CreateInterpProc in th_tcl.c. */
  Tcl_Interp *interp;    /* The on-demand created Tcl interpreter. */
  char *setup;           /* The optional Tcl setup script. */
};
#endif

/*
** All global variables are in this structure.
*/
struct Global {
547
548
549
550
551
552
553














554
555
556
557
558
559
560
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575







+
+
+
+
+
+
+
+
+
+
+
+
+
+







  }
  i += 2;
  while( i<g.argc ) newArgv[j++] = g.argv[i++];
  newArgv[j] = 0;
  g.argc = j;
  g.argv = newArgv;
}

/*
** Make a deep copy of the provided argument array and return it.
*/
static char **copy_args(int argc, char **argv){
  char **zNewArgv;
  int i;
  zNewArgv = fossil_malloc( sizeof(char*)*(argc+1) );
  memset(zNewArgv, 0, sizeof(char*)*(argc+1));
  for(i=0; i<argc; i++){
    zNewArgv[i] = fossil_strdup(argv[i]);
  }
  return zNewArgv;
}

/*
** This procedure runs first.
*/
int main(int argc, char **argv)
{
  const char *zCmdName = "unknown";
575
576
577
578
579
580
581

582
583

584
585
586
587
588
589
590
591
590
591
592
593
594
595
596
597
598

599

600
601
602
603
604
605
606







+

-
+
-







#endif
  g.json.outOpt = cson_output_opt_empty;
  g.json.outOpt.addNewline = 1;
  g.json.outOpt.indentation = 1 /* in CGI/server mode this can be configured */;
#endif /* FOSSIL_ENABLE_JSON */
  expand_args_option(argc, argv);
#ifdef FOSSIL_ENABLE_TCL
  memset(&g.tcl, 0, sizeof(TclContext));
  g.tcl.argc = g.argc;
  g.tcl.argv = g.argv;
  g.tcl.argv = copy_args(g.argc, g.argv); /* save full arguments */
  g.tcl.interp = 0;
#endif
  if( fossil_getenv("GATEWAY_INTERFACE")!=0 && !find_option("nocgi", 0, 0)){
    zCmdName = "cgi";
    g.isHTTP = 1;
  }else if( g.argc<2 ){
    fossil_print(
       "Usage: %s COMMAND ...\n"