Fossil SCM
Made an exception for sqlite3 command: add "--no-repository" flag so it behave like the real sqlite3 program.
Commit
4cc76a6e440a47b5a0ebdda6cb34da822b7fa12cffa986aa012bec47b6fa9af2
Parent
7d9cae848eddd38…
1 file changed
+17
-5
+17
-5
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -460,29 +460,44 @@ | ||
| 460 | 460 | ** invoked with the matching subcommand. |
| 461 | 461 | */ |
| 462 | 462 | void process_argv0(void){ |
| 463 | 463 | int i; |
| 464 | 464 | int nNewArgc = g.argc; |
| 465 | + /* strip any path element: "/path/to/cmd" -> "cmd" */ | |
| 465 | 466 | char *zArg0BaseName = command_basename(g.argv[0]); |
| 466 | 467 | int nArgcDiff = 0; |
| 467 | 468 | char **zNewArgv = NULL; |
| 468 | 469 | |
| 469 | 470 | |
| 470 | 471 | if( fossil_strcmp(zArg0BaseName, "md5sum") == 0 |
| 471 | 472 | || fossil_strcmp(zArg0BaseName, "pikchr") == 0 |
| 472 | 473 | || fossil_strcmp(zArg0BaseName, "sha1sum") == 0 |
| 473 | - || fossil_strcmp(zArg0BaseName, "sha3sum") == 0 | |
| 474 | - || fossil_strcmp(zArg0BaseName, "sqlite3") == 0 ){ | |
| 474 | + || fossil_strcmp(zArg0BaseName, "sha3sum") == 0 ){ | |
| 475 | 475 | nNewArgc++; |
| 476 | + | |
| 476 | 477 | }else if( fossil_strcmp(zArg0BaseName, "date") == 0 |
| 477 | 478 | || fossil_strcmp(zArg0BaseName, "ls") == 0 |
| 478 | 479 | || fossil_strcmp(zArg0BaseName, "pwd") == 0 |
| 479 | 480 | || fossil_strcmp(zArg0BaseName, "stty") == 0 |
| 480 | 481 | || fossil_strcmp(zArg0BaseName, "unzip") == 0 |
| 481 | 482 | || fossil_strcmp(zArg0BaseName, "which") == 0 |
| 482 | 483 | || fossil_strcmp(zArg0BaseName, "zip") == 0 ){ |
| 483 | 484 | nNewArgc+=2; |
| 485 | + | |
| 486 | + }else if( fossil_strcmp(zArg0BaseName, "sqlite3") == 0 ){ | |
| 487 | + /* with sqlite3 use --no-repository to make it behave like real sqlite3 */ | |
| 488 | + nNewArgc+=2; | |
| 489 | + zNewArgv = fossil_malloc( sizeof(char*)*(nNewArgc) ); | |
| 490 | + zNewArgv[0] = "fossil"; | |
| 491 | + zNewArgv[1] = zArg0BaseName; | |
| 492 | + zNewArgv[2] = "--no-repository"; | |
| 493 | + for(i=1; i<g.argc; i++){ | |
| 494 | + zNewArgv[i+2] = g.argv[i]; | |
| 495 | + } | |
| 496 | + g.argc = nNewArgc; | |
| 497 | + g.argv = zNewArgv; | |
| 498 | + return; | |
| 484 | 499 | } |
| 485 | 500 | |
| 486 | 501 | nArgcDiff = nNewArgc - g.argc; |
| 487 | 502 | if( nArgcDiff > 0 ){ |
| 488 | 503 | zNewArgv = fossil_malloc( sizeof(char*)*(nNewArgc) ); |
| @@ -494,19 +509,16 @@ | ||
| 494 | 509 | /* FALLTHROUGH */ |
| 495 | 510 | |
| 496 | 511 | case 1: |
| 497 | 512 | /*regular subcommand */ |
| 498 | 513 | zNewArgv[0] = "fossil"; |
| 499 | - /* strip any path element: "/path/to/cmd" -> "cmd" */ | |
| 500 | 514 | zNewArgv[nArgcDiff] = zArg0BaseName; |
| 501 | 515 | for(i=1; i<g.argc; i++){ |
| 502 | 516 | zNewArgv[i+nArgcDiff] = g.argv[i]; |
| 503 | 517 | } |
| 504 | 518 | g.argc = nNewArgc; |
| 505 | 519 | g.argv = zNewArgv; |
| 506 | - | |
| 507 | - default: break; | |
| 508 | 520 | } |
| 509 | 521 | } |
| 510 | 522 | } |
| 511 | 523 | |
| 512 | 524 | /* |
| 513 | 525 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -460,29 +460,44 @@ | |
| 460 | ** invoked with the matching subcommand. |
| 461 | */ |
| 462 | void process_argv0(void){ |
| 463 | int i; |
| 464 | int nNewArgc = g.argc; |
| 465 | char *zArg0BaseName = command_basename(g.argv[0]); |
| 466 | int nArgcDiff = 0; |
| 467 | char **zNewArgv = NULL; |
| 468 | |
| 469 | |
| 470 | if( fossil_strcmp(zArg0BaseName, "md5sum") == 0 |
| 471 | || fossil_strcmp(zArg0BaseName, "pikchr") == 0 |
| 472 | || fossil_strcmp(zArg0BaseName, "sha1sum") == 0 |
| 473 | || fossil_strcmp(zArg0BaseName, "sha3sum") == 0 |
| 474 | || fossil_strcmp(zArg0BaseName, "sqlite3") == 0 ){ |
| 475 | nNewArgc++; |
| 476 | }else if( fossil_strcmp(zArg0BaseName, "date") == 0 |
| 477 | || fossil_strcmp(zArg0BaseName, "ls") == 0 |
| 478 | || fossil_strcmp(zArg0BaseName, "pwd") == 0 |
| 479 | || fossil_strcmp(zArg0BaseName, "stty") == 0 |
| 480 | || fossil_strcmp(zArg0BaseName, "unzip") == 0 |
| 481 | || fossil_strcmp(zArg0BaseName, "which") == 0 |
| 482 | || fossil_strcmp(zArg0BaseName, "zip") == 0 ){ |
| 483 | nNewArgc+=2; |
| 484 | } |
| 485 | |
| 486 | nArgcDiff = nNewArgc - g.argc; |
| 487 | if( nArgcDiff > 0 ){ |
| 488 | zNewArgv = fossil_malloc( sizeof(char*)*(nNewArgc) ); |
| @@ -494,19 +509,16 @@ | |
| 494 | /* FALLTHROUGH */ |
| 495 | |
| 496 | case 1: |
| 497 | /*regular subcommand */ |
| 498 | zNewArgv[0] = "fossil"; |
| 499 | /* strip any path element: "/path/to/cmd" -> "cmd" */ |
| 500 | zNewArgv[nArgcDiff] = zArg0BaseName; |
| 501 | for(i=1; i<g.argc; i++){ |
| 502 | zNewArgv[i+nArgcDiff] = g.argv[i]; |
| 503 | } |
| 504 | g.argc = nNewArgc; |
| 505 | g.argv = zNewArgv; |
| 506 | |
| 507 | default: break; |
| 508 | } |
| 509 | } |
| 510 | } |
| 511 | |
| 512 | /* |
| 513 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -460,29 +460,44 @@ | |
| 460 | ** invoked with the matching subcommand. |
| 461 | */ |
| 462 | void process_argv0(void){ |
| 463 | int i; |
| 464 | int nNewArgc = g.argc; |
| 465 | /* strip any path element: "/path/to/cmd" -> "cmd" */ |
| 466 | char *zArg0BaseName = command_basename(g.argv[0]); |
| 467 | int nArgcDiff = 0; |
| 468 | char **zNewArgv = NULL; |
| 469 | |
| 470 | |
| 471 | if( fossil_strcmp(zArg0BaseName, "md5sum") == 0 |
| 472 | || fossil_strcmp(zArg0BaseName, "pikchr") == 0 |
| 473 | || fossil_strcmp(zArg0BaseName, "sha1sum") == 0 |
| 474 | || fossil_strcmp(zArg0BaseName, "sha3sum") == 0 ){ |
| 475 | nNewArgc++; |
| 476 | |
| 477 | }else if( fossil_strcmp(zArg0BaseName, "date") == 0 |
| 478 | || fossil_strcmp(zArg0BaseName, "ls") == 0 |
| 479 | || fossil_strcmp(zArg0BaseName, "pwd") == 0 |
| 480 | || fossil_strcmp(zArg0BaseName, "stty") == 0 |
| 481 | || fossil_strcmp(zArg0BaseName, "unzip") == 0 |
| 482 | || fossil_strcmp(zArg0BaseName, "which") == 0 |
| 483 | || fossil_strcmp(zArg0BaseName, "zip") == 0 ){ |
| 484 | nNewArgc+=2; |
| 485 | |
| 486 | }else if( fossil_strcmp(zArg0BaseName, "sqlite3") == 0 ){ |
| 487 | /* with sqlite3 use --no-repository to make it behave like real sqlite3 */ |
| 488 | nNewArgc+=2; |
| 489 | zNewArgv = fossil_malloc( sizeof(char*)*(nNewArgc) ); |
| 490 | zNewArgv[0] = "fossil"; |
| 491 | zNewArgv[1] = zArg0BaseName; |
| 492 | zNewArgv[2] = "--no-repository"; |
| 493 | for(i=1; i<g.argc; i++){ |
| 494 | zNewArgv[i+2] = g.argv[i]; |
| 495 | } |
| 496 | g.argc = nNewArgc; |
| 497 | g.argv = zNewArgv; |
| 498 | return; |
| 499 | } |
| 500 | |
| 501 | nArgcDiff = nNewArgc - g.argc; |
| 502 | if( nArgcDiff > 0 ){ |
| 503 | zNewArgv = fossil_malloc( sizeof(char*)*(nNewArgc) ); |
| @@ -494,19 +509,16 @@ | |
| 509 | /* FALLTHROUGH */ |
| 510 | |
| 511 | case 1: |
| 512 | /*regular subcommand */ |
| 513 | zNewArgv[0] = "fossil"; |
| 514 | zNewArgv[nArgcDiff] = zArg0BaseName; |
| 515 | for(i=1; i<g.argc; i++){ |
| 516 | zNewArgv[i+nArgcDiff] = g.argv[i]; |
| 517 | } |
| 518 | g.argc = nNewArgc; |
| 519 | g.argv = zNewArgv; |
| 520 | } |
| 521 | } |
| 522 | } |
| 523 | |
| 524 | /* |
| 525 |