Fossil

Changes On Branch tcl-argv0-only
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch tcl-argv0-only Excluding Merge-Ins

This is equivalent to a diff from e25f55dd4d to b82eacd569

2012-08-21
14:25
Tcl only uses argv0 so it is enough to transfer only that one argument. check-in: 7f96a71599 user: drh tags: trunk
14:15
Merge the mingw-w64 compiler warning fixes into trunk. check-in: d89b99e383 user: drh tags: trunk
13:29
Tcl only uses argv0, so it's enough to transfer this argument only Closed-Leaf check-in: b82eacd569 user: jan.nijtmans tags: tcl-argv0-only
13:26
Those two files tell eclipse that it can be checked out as a project, and that the LF eol-convention should be used. check-in: 6c945311bc user: jan.nijtmans tags: eclipse-project
11:05
Fix error messages associated with the "scrub" command. check-in: e25f55dd4d user: drh tags: trunk
2012-08-20
19:01
Expand the "diffFlags" variable to 64-bits in order to accommodate new options to the various "diff" commands. check-in: 2b1767500e user: drh tags: trunk

Changes to src/main.c.

84
85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
84
85
86
87
88
89
90


91
92
93
94
95
96
97
98







-
-
+







#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;
  char *argv0;
  Tcl_Interp *interp;
};
#endif

/*
** All global variables are in this structure.
*/
410
411
412
413
414
415
416
417
418

419
420
421
422
423
424
425
409
410
411
412
413
414
415


416
417
418
419
420
421
422
423







-
-
+







int main(int argc, char **argv){
  const char *zCmdName = "unknown";
  int idx;
  int rc;
  int i;

#ifdef FOSSIL_ENABLE_TCL
  g.tcl.argc = argc;
  g.tcl.argv = argv;
  g.tcl.argv0 = argv[0];
  g.tcl.interp = 0;
#endif

  sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
  memset(&g, 0, sizeof(g));
  g.now = time(0);
  g.argc = argc;

Changes to src/th_tcl.c.

91
92
93
94
95
96
97
98
99

100
101
102
103
104
105
106
91
92
93
94
95
96
97


98
99
100
101
102
103
104
105







-
-
+







}

/*
** Tcl context information used by TH1.  This structure definition has been
** copied from and should be kept in sync with the one in "main.c".
*/
struct TclContext {
  int argc;
  char **argv;
  char *argv0;
  Tcl_Interp *interp;
};

/*
** Syntax:
**
**   tclEval arg ?arg ...?
339
340
341
342
343
344
345
346

347
348
349
350
351
352
353
338
339
340
341
342
343
344

345
346
347
348
349
350
351
352







-
+







  return rc;
}

/*
** Array of Tcl integration commands.  Used when adding or removing the Tcl
** integration commands from TH1.
*/
static struct _Command {
static const struct _Command {
  const char *zName;
  Th_CommandProc xProc;
  void *pContext;
} aCommand[] = {
  {"tclEval",   tclEval_command,   0},
  {"tclExpr",   tclExpr_command,   0},
  {"tclInvoke", tclInvoke_command, 0},
387
388
389
390
391
392
393
394
395


396
397
398
399
400
401
402
386
387
388
389
390
391
392


393
394
395
396
397
398
399
400
401







-
-
+
+







    Th_ErrorMessage(interp,
        "Invalid Tcl context", (const char *)"", 0);
    return TH_ERROR;
  }
  if ( tclContext->interp ){
    return TH_OK;
  }
  if ( tclContext->argc>0 && tclContext->argv ) {
    Tcl_FindExecutable(tclContext->argv[0]);
  if ( tclContext->argv0 ){
    Tcl_FindExecutable(tclContext->argv0);
  }
  tclInterp = tclContext->interp = Tcl_CreateInterp();
  if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){
    Th_ErrorMessage(interp,
        "Could not create Tcl interpreter", (const char *)"", 0);
    return TH_ERROR;
  }