SF.net SVN: geany:[4050] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun Aug 2 13:33:39 UTC 2009
Revision: 4050
http://geany.svn.sourceforge.net/geany/?rev=4050&view=rev
Author: eht16
Date: 2009-08-02 13:33:39 +0000 (Sun, 02 Aug 2009)
Log Message:
-----------
Expand system environment variables (%variableName%) on Windows when running Build commands.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/build.c
trunk/src/win32.c
trunk/src/win32.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-08-01 10:26:58 UTC (rev 4049)
+++ trunk/ChangeLog 2009-08-02 13:33:39 UTC (rev 4050)
@@ -1,3 +1,10 @@
+2009-08-02 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/build.c, src/win32.h, src/win32.c:
+ Expand system environment variables (%variableName%) on Windows when
+ running Build commands.
+
+
2009-07-30 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/keybindings.c:
Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c 2009-08-01 10:26:58 UTC (rev 4049)
+++ trunk/src/build.c 2009-08-02 13:33:39 UTC (rev 4050)
@@ -982,12 +982,18 @@
{
FILE *fp;
gchar *str;
+#ifdef G_OS_WIN32
+ gchar *expanded_cmd;
+#endif
fp = g_fopen(fname, "w");
if (! fp)
return FALSE;
#ifdef G_OS_WIN32
- str = g_strdup_printf("%s\n\n%s\ndel \"%%0\"\n\npause\n", cmd, (autoclose) ? "" : "pause");
+ /* Expand environment variables like %blah%. */
+ expanded_cmd = win32_expand_environment_variables(cmd);
+ str = g_strdup_printf("%s\n\n%s\ndel \"%%0\"\n\npause\n", expanded_cmd, (autoclose) ? "" : "pause");
+ g_free(expanded_cmd);
#else
str = g_strdup_printf(
"#!/bin/sh\n\nrm $0\n\n%s\n\necho \"\n\n------------------\n(program exited with code: $?)\" \
Modified: trunk/src/win32.c
===================================================================
--- trunk/src/win32.c 2009-08-01 10:26:58 UTC (rev 4049)
+++ trunk/src/win32.c 2009-08-02 13:33:39 UTC (rev 4050)
@@ -937,11 +937,23 @@
}
+gchar *win32_expand_environment_variables(const gchar *str)
+{
+ gchar expCmdline[32768]; /* 32768 is the limit for ExpandEnvironmentStrings() */
+
+ if (ExpandEnvironmentStrings((LPCTSTR) str, (LPTSTR) expCmdline, sizeof(expCmdline)) != 0)
+ return g_strdup(expCmdline);
+ else
+ return g_strdup(str);
+}
+
+
static gboolean CreateChildProcess(geany_win32_spawn *gw_spawn, TCHAR *szCmdline, const TCHAR *dir, GError **error)
{
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo;
BOOL bFuncRetn = FALSE;
+ gchar *expandedCmdline;
/* Set up members of the PROCESS_INFORMATION structure. */
ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION) );
@@ -955,9 +967,12 @@
siStartInfo.hStdInput = gw_spawn->hChildStdinRd;
siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
+ /* Expand environment variables like %blah%. */
+ expandedCmdline = win32_expand_environment_variables(szCmdline);
+
/* Create the child process. */
bFuncRetn = CreateProcess(NULL,
- szCmdline, /* command line */
+ expandedCmdline, /* command line */
NULL, /* process security attributes */
NULL, /* primary thread security attributes */
TRUE, /* handles are inherited */
@@ -967,6 +982,8 @@
&siStartInfo, /* STARTUPINFO pointer */
&piProcInfo); /* receives PROCESS_INFORMATION */
+ g_free(expandedCmdline);
+
if (bFuncRetn == 0)
{
gchar *msg = g_win32_error_message(GetLastError());
Modified: trunk/src/win32.h
===================================================================
--- trunk/src/win32.h 2009-08-01 10:26:58 UTC (rev 4049)
+++ trunk/src/win32.h 2009-08-02 13:33:39 UTC (rev 4050)
@@ -63,4 +63,6 @@
gchar *win32_get_installation_dir(void);
+gchar *win32_expand_environment_variables(const gchar *str);
+
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list