aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-20 02:32:37 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-22 01:18:05 +0100
commited98ca730773737e0e87e8e0a7984151adbd7805 (patch)
tree4a37a0213d883dc76dd1a9d9d56bba541c738742 /src
parent42e8056c59255e366d12a84642398cd47fde7278 (diff)
downloadsciteco-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')
-rw-r--r--src/cmdline.cpp4
-rw-r--r--src/main.cpp15
2 files changed, 10 insertions, 9 deletions
diff --git a/src/cmdline.cpp b/src/cmdline.cpp
index f374efc..2a46a75 100644
--- a/src/cmdline.cpp
+++ b/src/cmdline.cpp
@@ -63,7 +63,7 @@ void
cmdline_keypress(gchar key)
{
gchar *old_cmdline = NULL;
- gint repl_pos;
+ gint repl_pos = 0;
const gchar *insert;
gchar *echo;
@@ -254,6 +254,7 @@ process_edit_cmd(gchar key)
}
break;
+#ifdef SIGTSTP
case CTL_KEY('Z'):
/*
* <CTL/Z> does not raise signal if handling of
@@ -264,6 +265,7 @@ process_edit_cmd(gchar key)
raise(SIGTSTP);
*insert = '\0';
break;
+#endif
}
return insert;
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