/* General utility routines for GDB, the GNU debugger.
- Copyright (C) 1986-2013 Free Software Foundation, Inc.
+ Copyright (C) 1986-2014 Free Software Foundation, Inc.
This file is part of GDB.
#include "dyn-string.h"
#include "gdb_assert.h"
#include <ctype.h>
-#include "gdb_string.h"
+#include <string.h>
#include "gdb_wait.h"
#include "event-top.h"
#include "exceptions.h"
#include <pc.h>
#endif
-/* SunOS's curses.h has a '#define reg register' in it. Thank you Sun. */
-#ifdef reg
-#undef reg
-#endif
-
#include <signal.h>
#include "timeval-utils.h"
#include "gdbcmd.h"
return result;
}
+/* Return PATH in absolute form, performing tilde-expansion if necessary.
+ PATH cannot be NULL or the empty string.
+ This does not resolve symlinks however, use gdb_realpath for that.
+ Space for the result is allocated with malloc.
+ If the path is already absolute, it is strdup'd.
+ If there is a problem computing the absolute path, the path is returned
+ unchanged (still strdup'd). */
+
+char *
+gdb_abspath (const char *path)
+{
+ gdb_assert (path != NULL && path[0] != '\0');
+
+ if (path[0] == '~')
+ return tilde_expand (path);
+
+ if (IS_ABSOLUTE_PATH (path))
+ return xstrdup (path);
+
+ /* Beware the // my son, the Emacs barfs, the botch that catch... */
+ return concat (current_directory,
+ IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
+ ? "" : SLASH_STRING,
+ path, (char *) NULL);
+}
+
ULONGEST
align_up (ULONGEST v, int n)
{