diff options
author | Richard Henderson <rth@redhat.com> | 2002-03-15 00:44:49 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2002-03-15 00:44:49 +0000 |
commit | a4db0f0748629c825090fda9d4037b615f789917 (patch) | |
tree | dda5653dc5ae876235ed4b93f8f9a6aa51ff11e5 /gdb/utils.c | |
parent | bd2b03193d7687db9aaf94302e5d8822630a8b5a (diff) | |
download | gdb-a4db0f0748629c825090fda9d4037b615f789917.zip gdb-a4db0f0748629c825090fda9d4037b615f789917.tar.gz gdb-a4db0f0748629c825090fda9d4037b615f789917.tar.bz2 |
* configure.in: Detect declaration for canonicalize_file_name.
* utils.c (canonicalize_file_name): Declare, if needed.
(gdb_realpath): Prefer realpath if available and usable.
* config.in, configure: Rebuild.
Diffstat (limited to 'gdb/utils.c')
-rw-r--r-- | gdb/utils.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/gdb/utils.c b/gdb/utils.c index be9dc45..edc340e 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -81,6 +81,11 @@ extern PTR realloc (); #ifdef NEED_DECLARATION_FREE extern void free (); #endif +/* Actually, we'll never have the decl, since we don't define _GNU_SOURCE. */ +#if defined(HAVE_CANONICALIZE_FILE_NAME) \ + && defined(NEED_DECLARATION_CANONICALIZE_FILE_NAME) +extern char *canonicalize_file_name (const char *); +#endif #undef XMALLOC #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE))) @@ -2532,20 +2537,24 @@ string_to_core_addr (const char *my_string) char * gdb_realpath (const char *filename) { -#ifdef HAVE_CANONICALIZE_FILE_NAME - return canonicalize_file_name (filename); -#elif defined (HAVE_REALPATH) -#if defined (PATH_MAX) +#if defined(HAVE_REALPATH) +# if defined (PATH_MAX) char buf[PATH_MAX]; -#elif defined (MAXPATHLEN) +# define USE_REALPATH +# elif defined (MAXPATHLEN) char buf[MAXPATHLEN]; -#elif defined (HAVE_UNISTD_H) && defined(HAVE_ALLOCA) +# define USE_REALPATH +# elif defined (HAVE_UNISTD_H) && defined(HAVE_ALLOCA) char *buf = alloca ((size_t)pathconf ("/", _PC_PATH_MAX)); -#else -#error "Neither PATH_MAX nor MAXPATHLEN defined" -#endif +# define USE_REALPATH +# endif +#endif /* HAVE_REALPATH */ + +#if defined(USE_REALPATH) char *rp = realpath (filename, buf); return xstrdup (rp ? rp : filename); +#elif defined(HAVE_CANONICALIZE_FILE_NAME) + return canonicalize_file_name (filename); #else return xstrdup (filename); #endif |