diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-02-20 02:32:37 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-02-22 01:18:05 +0100 |
commit | ed98ca730773737e0e87e8e0a7984151adbd7805 (patch) | |
tree | 4a37a0213d883dc76dd1a9d9d56bba541c738742 /src/main.cpp | |
parent | 42e8056c59255e366d12a84642398cd47fde7278 (diff) | |
download | sciteco-ed98ca730773737e0e87e8e0a7984151adbd7805.tar.gz |
Windows (MinGW) compatibility fixes: suspending impossible and environment initialization revised
* g_get_environ() appears to be broken, at least in Wine and Win2k
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/main.cpp b/src/main.cpp index 47cd77f..f7ce9a1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -168,25 +168,24 @@ process_options(int &argc, char **&argv) static inline void initialize_environment(void) { - gchar **environ; + gchar **env; g_setenv("SCITECOPATH", DEFAULT_SCITECOPATH, FALSE); - environ = g_get_environ(); + env = g_listenv(); - for (gchar **p = environ; *p; p++) { - gchar *value = strchr(*p, '=') + 1; - gchar name[value - *p + 1]; + for (gchar **key = env; *key; key++) { + gchar name[1 + strlen(*key) + 1]; QRegister *reg; name[0] = '$'; - g_strlcpy(name + 1, *p, sizeof(name) - 1); + strcpy(name + 1, *key); reg = QRegisters::globals.insert(name); - reg->set_string(value); + reg->set_string(g_getenv(*key)); } - g_strfreev(environ); + g_strfreev(env); } int |