Commit 334737af by Andrew Stubbs Committed by Joern Rennecke

re PR driver/29931 (following argv[0] symlink in process_command breaks…

re PR driver/29931 (following argv[0] symlink in process_command breaks symlinked-together toolchain)

include:
2006-05-03  Andrew Stubbs  <andrew.stubbs@st.com>
            J"orn Rennecke <joern.rennecke@st.com>

	PR driver/29931
	* libiberty.h (make_relative_prefix_ignore_links): Declare.

libiberty:
2006-05-03  Andrew Stubbs  <andrew.stubbs@st.com>
            J"orn Rennecke <joern.rennecke@st.com>

	PR driver/29931
	* make-relative-prefix.c (make_relative_prefix_1): New function,
	broken out of make_relative_prefix.  Make link resolution dependent
	on new parameter.
	(make_relative_prefix): Use make_relative_prefix_1.
	(make_relative_prefix_ignore_links): New function.

Co-Authored-By: J"orn Rennecke <joern.rennecke@st.com>

From-SVN: r119366
parent 456cde30
2006-11-30 Andrew Stubbs <andrew.stubbs@st.com>
J"orn Rennecke <joern.rennecke@st.com>
PR driver/29931
* libiberty.h (make_relative_prefix_ignore_links): Declare.
2006-11-27 Bob Wilson <bob.wilson@acm.org>
* xtensa-config.h (XSHAL_ABI): New.
......
......@@ -197,6 +197,13 @@ extern long get_run_time (void);
extern char *make_relative_prefix (const char *, const char *,
const char *) ATTRIBUTE_MALLOC;
/* Generate a relocated path to some installation directory without
attempting to follow any soft links. Allocates
return value using malloc. */
extern char *make_relative_prefix_ignore_links (const char *, const char *,
const char *) ATTRIBUTE_MALLOC;
/* Choose a temporary directory to use for scratch files. */
extern char *choose_temp_base (void) ATTRIBUTE_MALLOC;
......
2006-11-30 Andrew Stubbs <andrew.stubbs@st.com>
J"orn Rennecke <joern.rennecke@st.com>
PR driver/29931
* make-relative-prefix.c (make_relative_prefix_1): New function,
broken out of make_relative_prefix. Make link resolution dependent
on new parameter.
(make_relative_prefix): Use make_relative_prefix_1.
(make_relative_prefix_ignore_links): New function.
2006-11-08 Vladimir Prus <vladimir@codesourcery.com>
* pex-win32.c (no_suffixes): Remove.
......
/* Relative (relocatable) prefix support.
Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1999, 2000, 2001, 2002, 2006 Free Software Foundation, Inc.
This file is part of libiberty.
......@@ -217,9 +217,9 @@ free_split_directories (char **dirs)
If no relative prefix can be found, return NULL. */
char *
make_relative_prefix (const char *progname,
const char *bin_prefix, const char *prefix)
static char *
make_relative_prefix_1 (const char *progname, const char *bin_prefix,
const char *prefix, const int resolve_links)
{
char **prog_dirs, **bin_dirs, **prefix_dirs;
int prog_num, bin_num, prefix_num;
......@@ -289,9 +289,14 @@ make_relative_prefix (const char *progname,
}
}
full_progname = lrealpath (progname);
if (full_progname == NULL)
return NULL;
if ( resolve_links )
{
full_progname = lrealpath (progname);
if (full_progname == NULL)
return NULL;
}
else
full_progname = strdup(progname);
prog_dirs = split_directories (full_progname, &prog_num);
bin_dirs = split_directories (bin_prefix, &bin_num);
......@@ -387,3 +392,33 @@ make_relative_prefix (const char *progname,
return ret;
}
/* Do the full job, including symlink resolution.
This path will find files installed in the same place as the
program even when a soft link has been made to the program
from somwhere else. */
char *
make_relative_prefix (progname, bin_prefix, prefix)
const char *progname;
const char *bin_prefix;
const char *prefix;
{
return make_relative_prefix_1 (progname, bin_prefix, prefix, 1);
}
/* Make the relative pathname without attempting to resolve any links.
'..' etc may also be left in the pathname.
This will find the files the user meant the program to find if the
installation is patched together with soft links. */
char *
make_relative_prefix_ignore_links (progname, bin_prefix, prefix)
const char *progname;
const char *bin_prefix;
const char *prefix;
{
return make_relative_prefix_1 (progname, bin_prefix, prefix, 0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment