Fossil SCM
Tcl only uses argv0 so it is enough to transfer only that one argument.
Commit
7f96a7159942bfd9c8d5ac2c9d7c4026dcce0860
Parent
d89b99e38365155…
2 files changed
+2
-4
+4
-5
+2
-4
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -86,12 +86,11 @@ | ||
| 86 | 86 | ** All Tcl related context information is in this structure. This structure |
| 87 | 87 | ** definition has been copied from and should be kept in sync with the one in |
| 88 | 88 | ** "th_tcl.c". |
| 89 | 89 | */ |
| 90 | 90 | struct TclContext { |
| 91 | - int argc; | |
| 92 | - char **argv; | |
| 91 | + char *argv0; | |
| 93 | 92 | Tcl_Interp *interp; |
| 94 | 93 | }; |
| 95 | 94 | #endif |
| 96 | 95 | |
| 97 | 96 | /* |
| @@ -412,12 +411,11 @@ | ||
| 412 | 411 | int idx; |
| 413 | 412 | int rc; |
| 414 | 413 | int i; |
| 415 | 414 | |
| 416 | 415 | #ifdef FOSSIL_ENABLE_TCL |
| 417 | - g.tcl.argc = argc; | |
| 418 | - g.tcl.argv = argv; | |
| 416 | + g.tcl.argv0 = argv[0]; | |
| 419 | 417 | g.tcl.interp = 0; |
| 420 | 418 | #endif |
| 421 | 419 | |
| 422 | 420 | sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0); |
| 423 | 421 | memset(&g, 0, sizeof(g)); |
| 424 | 422 |
| --- 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 @@ | ||
| 93 | 93 | /* |
| 94 | 94 | ** Tcl context information used by TH1. This structure definition has been |
| 95 | 95 | ** copied from and should be kept in sync with the one in "main.c". |
| 96 | 96 | */ |
| 97 | 97 | struct TclContext { |
| 98 | - int argc; | |
| 99 | - char **argv; | |
| 98 | + char *argv0; | |
| 100 | 99 | Tcl_Interp *interp; |
| 101 | 100 | }; |
| 102 | 101 | |
| 103 | 102 | /* |
| 104 | 103 | ** Syntax: |
| @@ -341,11 +340,11 @@ | ||
| 341 | 340 | |
| 342 | 341 | /* |
| 343 | 342 | ** Array of Tcl integration commands. Used when adding or removing the Tcl |
| 344 | 343 | ** integration commands from TH1. |
| 345 | 344 | */ |
| 346 | -static struct _Command { | |
| 345 | +static const struct _Command { | |
| 347 | 346 | const char *zName; |
| 348 | 347 | Th_CommandProc xProc; |
| 349 | 348 | void *pContext; |
| 350 | 349 | } aCommand[] = { |
| 351 | 350 | {"tclEval", tclEval_command, 0}, |
| @@ -389,12 +388,12 @@ | ||
| 389 | 388 | return TH_ERROR; |
| 390 | 389 | } |
| 391 | 390 | if ( tclContext->interp ){ |
| 392 | 391 | return TH_OK; |
| 393 | 392 | } |
| 394 | - if ( tclContext->argc>0 && tclContext->argv ) { | |
| 395 | - Tcl_FindExecutable(tclContext->argv[0]); | |
| 393 | + if ( tclContext->argv0 ){ | |
| 394 | + Tcl_FindExecutable(tclContext->argv0); | |
| 396 | 395 | } |
| 397 | 396 | tclInterp = tclContext->interp = Tcl_CreateInterp(); |
| 398 | 397 | if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){ |
| 399 | 398 | Th_ErrorMessage(interp, |
| 400 | 399 | "Could not create Tcl interpreter", (const char *)"", 0); |
| 401 | 400 |
| --- 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 |