aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Muldoon <pmuldoon@redhat.com>2011-11-04 12:07:53 +0000
committerPhil Muldoon <pmuldoon@redhat.com>2011-11-04 12:07:53 +0000
commit3ab1ec277626d8f72c6f4c4a0d38dcdded240e89 (patch)
tree1a37a9d8d41a684a005ec411c5703aa181e2815e
parentcd829959ce8624dd9143911738a87d84fc415e8f (diff)
downloadgdb-3ab1ec277626d8f72c6f4c4a0d38dcdded240e89.zip
gdb-3ab1ec277626d8f72c6f4c4a0d38dcdded240e89.tar.gz
gdb-3ab1ec277626d8f72c6f4c4a0d38dcdded240e89.tar.bz2
2011-11-04 Phil Muldoon <pmuldoon@redhat.com>
PR Python/13345 * python/python.c (python_run_simple_file): Expand tilde in path.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/python/python.c18
2 files changed, 20 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d9af3e5..c1db4f6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2011-11-04 Phil Muldoon <pmuldoon@redhat.com>
+ PR Python/13345
+
+ * python/python.c (python_run_simple_file): Expand tilde in path.
+
+2011-11-04 Phil Muldoon <pmuldoon@redhat.com>
+
PR Python/13363
* python/py-type.c (typy_lookup_type): Do not return a type in
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 3a5a6b5..108e542 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -30,6 +30,7 @@
#include "exceptions.h"
#include "event-loop.h"
#include "serial.h"
+#include "readline/tilde.h"
#include "python.h"
#include <ctype.h>
@@ -162,13 +163,22 @@ ensure_python_env (struct gdbarch *gdbarch,
static void
python_run_simple_file (const char *filename)
{
- char *filename_copy;
+ char *full_path;
PyObject *python_file;
struct cleanup *cleanup;
- filename_copy = xstrdup (filename);
- cleanup = make_cleanup (xfree, filename_copy);
- python_file = PyFile_FromString (filename_copy, "r");
+ /* Because we have a string for a filename, and are using Python to
+ open the file, we need to expand any tilde in the path first. */
+ full_path = tilde_expand (filename);
+ cleanup = make_cleanup (xfree, full_path);
+ python_file = PyFile_FromString (full_path, "r");
+ if (! python_file)
+ {
+ do_cleanups (cleanup);
+ gdbpy_print_stack ();
+ error (_("Error while opening file: %s"), full_path);
+ }
+
make_cleanup_py_decref (python_file);
PyRun_SimpleFile (PyFile_AsFile (python_file), filename);
do_cleanups (cleanup);