2011-11-04 Phil Muldoon <pmuldoon@redhat.com>
authorPhil Muldoon <pmuldoon@redhat.com>
Fri, 4 Nov 2011 12:07:53 +0000 (12:07 +0000)
committerPhil Muldoon <pmuldoon@redhat.com>
Fri, 4 Nov 2011 12:07:53 +0000 (12:07 +0000)
PR Python/13345

* python/python.c (python_run_simple_file): Expand tilde in path.

gdb/ChangeLog
gdb/python/python.c

index d9af3e5..c1db4f6 100644 (file)
@@ -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
index 3a5a6b5..108e542 100644 (file)
@@ -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);