Fossil SCM

Tcl only uses argv0 so it is enough to transfer only that one argument.

drh 2012-08-21 14:25 trunk merge
Commit 7f96a7159942bfd9c8d5ac2c9d7c4026dcce0860
2 files changed +2 -4 +4 -5
+2 -4
--- src/main.c
+++ src/main.c
@@ -86,12 +86,11 @@
8686
** All Tcl related context information is in this structure. This structure
8787
** definition has been copied from and should be kept in sync with the one in
8888
** "th_tcl.c".
8989
*/
9090
struct TclContext {
91
- int argc;
92
- char **argv;
91
+ char *argv0;
9392
Tcl_Interp *interp;
9493
};
9594
#endif
9695
9796
/*
@@ -412,12 +411,11 @@
412411
int idx;
413412
int rc;
414413
int i;
415414
416415
#ifdef FOSSIL_ENABLE_TCL
417
- g.tcl.argc = argc;
418
- g.tcl.argv = argv;
416
+ g.tcl.argv0 = argv[0];
419417
g.tcl.interp = 0;
420418
#endif
421419
422420
sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
423421
memset(&g, 0, sizeof(g));
424422
--- src/main.c
+++ src/main.c
@@ -86,12 +86,11 @@
86 ** All Tcl related context information is in this structure. This structure
87 ** definition has been copied from and should be kept in sync with the one in
88 ** "th_tcl.c".
89 */
90 struct TclContext {
91 int argc;
92 char **argv;
93 Tcl_Interp *interp;
94 };
95 #endif
96
97 /*
@@ -412,12 +411,11 @@
412 int idx;
413 int rc;
414 int i;
415
416 #ifdef FOSSIL_ENABLE_TCL
417 g.tcl.argc = argc;
418 g.tcl.argv = argv;
419 g.tcl.interp = 0;
420 #endif
421
422 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
423 memset(&g, 0, sizeof(g));
424
--- src/main.c
+++ src/main.c
@@ -86,12 +86,11 @@
86 ** All Tcl related context information is in this structure. This structure
87 ** definition has been copied from and should be kept in sync with the one in
88 ** "th_tcl.c".
89 */
90 struct TclContext {
91 char *argv0;
 
92 Tcl_Interp *interp;
93 };
94 #endif
95
96 /*
@@ -412,12 +411,11 @@
411 int idx;
412 int rc;
413 int i;
414
415 #ifdef FOSSIL_ENABLE_TCL
416 g.tcl.argv0 = argv[0];
 
417 g.tcl.interp = 0;
418 #endif
419
420 sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
421 memset(&g, 0, sizeof(g));
422
+4 -5
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -93,12 +93,11 @@
9393
/*
9494
** Tcl context information used by TH1. This structure definition has been
9595
** copied from and should be kept in sync with the one in "main.c".
9696
*/
9797
struct TclContext {
98
- int argc;
99
- char **argv;
98
+ char *argv0;
10099
Tcl_Interp *interp;
101100
};
102101
103102
/*
104103
** Syntax:
@@ -341,11 +340,11 @@
341340
342341
/*
343342
** Array of Tcl integration commands. Used when adding or removing the Tcl
344343
** integration commands from TH1.
345344
*/
346
-static struct _Command {
345
+static const struct _Command {
347346
const char *zName;
348347
Th_CommandProc xProc;
349348
void *pContext;
350349
} aCommand[] = {
351350
{"tclEval", tclEval_command, 0},
@@ -389,12 +388,12 @@
389388
return TH_ERROR;
390389
}
391390
if ( tclContext->interp ){
392391
return TH_OK;
393392
}
394
- if ( tclContext->argc>0 && tclContext->argv ) {
395
- Tcl_FindExecutable(tclContext->argv[0]);
393
+ if ( tclContext->argv0 ){
394
+ Tcl_FindExecutable(tclContext->argv0);
396395
}
397396
tclInterp = tclContext->interp = Tcl_CreateInterp();
398397
if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){
399398
Th_ErrorMessage(interp,
400399
"Could not create Tcl interpreter", (const char *)"", 0);
401400
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -93,12 +93,11 @@
93 /*
94 ** Tcl context information used by TH1. This structure definition has been
95 ** copied from and should be kept in sync with the one in "main.c".
96 */
97 struct TclContext {
98 int argc;
99 char **argv;
100 Tcl_Interp *interp;
101 };
102
103 /*
104 ** Syntax:
@@ -341,11 +340,11 @@
341
342 /*
343 ** Array of Tcl integration commands. Used when adding or removing the Tcl
344 ** integration commands from TH1.
345 */
346 static struct _Command {
347 const char *zName;
348 Th_CommandProc xProc;
349 void *pContext;
350 } aCommand[] = {
351 {"tclEval", tclEval_command, 0},
@@ -389,12 +388,12 @@
389 return TH_ERROR;
390 }
391 if ( tclContext->interp ){
392 return TH_OK;
393 }
394 if ( tclContext->argc>0 && tclContext->argv ) {
395 Tcl_FindExecutable(tclContext->argv[0]);
396 }
397 tclInterp = tclContext->interp = Tcl_CreateInterp();
398 if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){
399 Th_ErrorMessage(interp,
400 "Could not create Tcl interpreter", (const char *)"", 0);
401
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -93,12 +93,11 @@
93 /*
94 ** Tcl context information used by TH1. This structure definition has been
95 ** copied from and should be kept in sync with the one in "main.c".
96 */
97 struct TclContext {
98 char *argv0;
 
99 Tcl_Interp *interp;
100 };
101
102 /*
103 ** Syntax:
@@ -341,11 +340,11 @@
340
341 /*
342 ** Array of Tcl integration commands. Used when adding or removing the Tcl
343 ** integration commands from TH1.
344 */
345 static const struct _Command {
346 const char *zName;
347 Th_CommandProc xProc;
348 void *pContext;
349 } aCommand[] = {
350 {"tclEval", tclEval_command, 0},
@@ -389,12 +388,12 @@
388 return TH_ERROR;
389 }
390 if ( tclContext->interp ){
391 return TH_OK;
392 }
393 if ( tclContext->argv0 ){
394 Tcl_FindExecutable(tclContext->argv0);
395 }
396 tclInterp = tclContext->interp = Tcl_CreateInterp();
397 if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){
398 Th_ErrorMessage(interp,
399 "Could not create Tcl interpreter", (const char *)"", 0);
400

Keyboard Shortcuts

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