SF.net SVN: geany-plugins:[1171] trunk/geany-plugins/geanygdb

kugel- at users.sourceforge.net kugel- at xxxxx
Mon Mar 15 16:43:26 UTC 2010


Revision: 1171
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1171&view=rev
Author:   kugel-
Date:     2010-03-15 16:43:26 +0000 (Mon, 15 Mar 2010)

Log Message:
-----------
Run gdb with LANG=C to avoid locale-related clashes when parsing the gdb output for the localized version break- and watchpoints.

Use new utils_copy_environment() which was recently added to the plugin api.

Modified Paths:
--------------
    trunk/geany-plugins/geanygdb/ChangeLog
    trunk/geany-plugins/geanygdb/src/gdb-io-run.c
    trunk/geany-plugins/geanygdb/src/gdb-ui-break.c

Modified: trunk/geany-plugins/geanygdb/ChangeLog
===================================================================
--- trunk/geany-plugins/geanygdb/ChangeLog	2010-03-15 16:43:04 UTC (rev 1170)
+++ trunk/geany-plugins/geanygdb/ChangeLog	2010-03-15 16:43:26 UTC (rev 1171)
@@ -1,3 +1,9 @@
+2010-03-15  Thomas Martitz  <thomas.martitz at student.htw-berlin.de>
+
+ * src/gdb-io-run.c, src/gdb-ui-break.c: Run gdb with LANG=C to avoid
+   locale-related clashes when parsing the gdb output for the localized version
+   break- and watchpoints
+
 2010-03-01  Dominic Hopf  <dmaphy at googlemail.com>
 
  * src/gdb-io-run.c, src/gdb-io-read.c: Improve the way a running process gets

Modified: trunk/geany-plugins/geanygdb/src/gdb-io-run.c
===================================================================
--- trunk/geany-plugins/geanygdb/src/gdb-io-run.c	2010-03-15 16:43:04 UTC (rev 1170)
+++ trunk/geany-plugins/geanygdb/src/gdb-io-run.c	2010-03-15 16:43:26 UTC (rev 1171)
@@ -22,6 +22,7 @@
 #include <string.h>
 
 #include "geanyplugin.h"
+extern GeanyFunctions *geany_functions;
 #include "gdb-io-priv.h"
 
 
@@ -724,8 +725,15 @@
 gdbio_load(const gchar * exe_name)
 {
 	GError *err = NULL;
+	/* need to execute gdb with LANG=C because we parse the output
+	 * for break and watch points
+	 * however, the debugged applications ought to run under the
+	 * systems locale (i.e. the current LANG) */
+	const gchar *exclude[] = { "LANG", NULL };
+	gchar **gdbio_env = utils_copy_environment(exclude, "LANG", "C", NULL);
+	const gchar *env_lang = g_getenv("LANG");
 	gdbio_exit();
-	if (g_spawn_async_with_pipes(NULL, gdbio_args, NULL,
+	if (g_spawn_async_with_pipes(NULL, gdbio_args, gdbio_env,
 				     GDB_SPAWN_FLAGS, NULL,
 				     NULL, &gdbio_pid, &gdbio_in, &gdbio_out, NULL, &err))
 	{
@@ -748,6 +756,8 @@
 		gdbio_id_out = g_io_add_watch(gdbio_ch_out, G_IO_IN, on_read_from_gdb, NULL);
 
 		gdbio_send_cmd("-gdb-set width 0\n-gdb-set height 0\n");
+		/* restore LANG for apps here, gdb is under LANG=C */
+		gdbio_send_cmd("-gdb-set environment LANG=%s\n", env_lang);
 		if (exe_name)
 		{
 			load_target(exe_name);
@@ -757,6 +767,7 @@
 	{
 		gerror("Error starting debugger.", &err);
 	}
+	g_strfreev(gdbui_env);
 }
 
 

Modified: trunk/geany-plugins/geanygdb/src/gdb-ui-break.c
===================================================================
--- trunk/geany-plugins/geanygdb/src/gdb-ui-break.c	2010-03-15 16:43:04 UTC (rev 1170)
+++ trunk/geany-plugins/geanygdb/src/gdb-ui-break.c	2010-03-15 16:43:26 UTC (rev 1171)
@@ -351,7 +351,7 @@
 		{
 			continue;
 		}
-		if ((bpi) && (strstr(bpi->type, is_watchlist ? _("watchpoint") : _("breakpoint"))))
+		if (strstr(bpi->type, is_watchlist ? "watchpoint" : "breakpoint"))
 		{
 			return TRUE;
 		}
@@ -405,7 +405,7 @@
 			GdbBreakPointInfo *bpi = p->data;
 			if (bpi)
 			{
-				gboolean iswatch = !g_str_equal(_("breakpoint"), bpi->type);
+				gboolean iswatch = !g_str_equal("breakpoint", bpi->type);
 				if (is_watchlist != iswatch)
 				{
 					continue;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Plugins-Commits mailing list