diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-01-20 00:30:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-01-20 00:30:23 +0300 |
commit | f0d9ff34af265e6f6172c4912ff2efbde37f05b2 (patch) | |
tree | 75fa22af76cf676f39445bcd7f41f0357056d9bf /source/creator | |
parent | e2f9006bd38ec99d8633bbb9f32cf423bceb1c2c (diff) |
Command line options to set blender system environment variables.
Added because CTest has no convenient way to set environment vars for commands it runs.
--env-system-config -> BLENDER_SYSTEM_CONFIG
--env-system-datafiles -> BLENDER_SYSTEM_DATAFILES
--env-system-scripts -> BLENDER_SYSTEM_SCRIPTS
--env-system-plugins -> BLENDER_SYSTEM_PLUGINS
--env-system-python -> BLENDER_SYSTEM_PYTHON
Diffstat (limited to 'source/creator')
-rw-r--r-- | source/creator/creator.c | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/source/creator/creator.c b/source/creator/creator.c index 90f579a9d9e..b5aea70ac8e 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -245,10 +245,15 @@ static int print_help(int UNUSED(argc), char **UNUSED(argv), void *data) printf ("Misc Options:\n"); BLI_argsPrintArgDoc(ba, "--debug"); BLI_argsPrintArgDoc(ba, "--debug-fpe"); + printf("\n"); BLI_argsPrintArgDoc(ba, "--factory-startup"); - printf("\n"); - + BLI_argsPrintArgDoc(ba, "--env-system-config"); + BLI_argsPrintArgDoc(ba, "--env-system-datafiles"); + BLI_argsPrintArgDoc(ba, "--env-system-scripts"); + BLI_argsPrintArgDoc(ba, "--env-system-plugins"); + BLI_argsPrintArgDoc(ba, "--env-system-python"); + printf("\n"); BLI_argsPrintArgDoc(ba, "-nojoystick"); BLI_argsPrintArgDoc(ba, "-noglsl"); BLI_argsPrintArgDoc(ba, "-noaudio"); @@ -399,6 +404,28 @@ static int set_factory_startup(int UNUSED(argc), char **UNUSED(argv), void *UNUS return 0; } +static int set_env(int argc, char **argv, void *UNUSED(data)) +{ + /* "--env-system-scripts" --> "BLENDER_SYSTEM_SCRIPTS" */ + + char env[64]= "BLENDER"; + char *ch_dst= env + 7; /* skip BLENDER */ + char *ch_src= argv[0] + 5; /* skip --env */ + + if (argc < 2) { + printf("%s requires one argument\n", argv[0]); + exit(1); + } + + for(; *ch_src; ch_src++, ch_dst++) { + *ch_dst= (*ch_src == '-') ? '_' : (*ch_src)-32; /* toupper() */ + } + + *ch_dst= '\0'; + BLI_setenv(env, argv[1]); + return 1; +} + static int playback_mode(int UNUSED(argc), char **UNUSED(argv), void *UNUSED(data)) { /* not if -b was given first */ @@ -1017,6 +1044,13 @@ void setupArguments(bContext *C, bArgs *ba, SYS_SystemHandle *syshandle) BLI_argsAdd(ba, 1, NULL, "--factory-startup", "\n\tSkip reading the "STRINGIFY(BLENDER_STARTUP_FILE)" in the users home directory", set_factory_startup, NULL); + /* TODO, add user env vars? */ + BLI_argsAdd(ba, 1, NULL, "--env-system-config", "\n\tSet the "STRINGIFY_ARG(BLENDER_SYSTEM_CONFIG)" environment variable", set_env, NULL); + BLI_argsAdd(ba, 1, NULL, "--env-system-datafiles", "\n\tSet the "STRINGIFY_ARG(BLENDER_SYSTEM_DATAFILES)" environment variable", set_env, NULL); + BLI_argsAdd(ba, 1, NULL, "--env-system-scripts", "\n\tSet the "STRINGIFY_ARG(BLENDER_SYSTEM_SCRIPTS)" environment variable", set_env, NULL); + BLI_argsAdd(ba, 1, NULL, "--env-system-plugins", "\n\tSet the "STRINGIFY_ARG(BLENDER_SYSTEM_PLUGINS)" environment variable", set_env, NULL); + BLI_argsAdd(ba, 1, NULL, "--env-system-python", "\n\tSet the "STRINGIFY_ARG(BLENDER_SYSTEM_PYTHON)" environment variable", set_env, NULL); + /* second pass: custom window stuff */ BLI_argsAdd(ba, 2, "-p", "--window-geometry", "<sx> <sy> <w> <h>\n\tOpen with lower left corner at <sx>, <sy> and width and height as <w>, <h>", prefsize, NULL); BLI_argsAdd(ba, 2, "-w", "--window-border", "\n\tForce opening with borders (default)", with_borders, NULL); |