X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gcc%2Fprefix.c;h=369ede703090153bebb615dbba1b20ac1e0b70c5;hb=629c2cca17ff1c931a89011abdbd3ef4761aecb6;hp=1d2eded8ca0a97fc32fb8572dff597c81fdd1938;hpb=0682f0b80c5a14f1a2d9c6499c7481af34ebfb18;p=platform%2Fupstream%2Fgcc.git
diff --git a/gcc/prefix.c b/gcc/prefix.c
index 1d2eded..369ede7 100644
--- a/gcc/prefix.c
+++ b/gcc/prefix.c
@@ -1,12 +1,12 @@
/* Utility to update paths from internal to external forms.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
- Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ 2007, 2011 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
+the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.
GCC is distributed in the hope that it will be useful,
@@ -15,9 +15,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
-License along with GCC; see the file COPYING. If not, write to the Free
-Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+License along with GCC; see the file COPYING3. If not see
+. */
/* This file contains routines to update a path, both to canonicalize
the directory format and to handle any prefix translation.
@@ -68,11 +67,11 @@ Boston, MA 02111-1307, USA. */
#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
#if defined(_WIN32) && defined(ENABLE_WIN32_REGISTRY)
#include
#endif
#include "prefix.h"
+#include "common/common-target.h"
static const char *std_prefix = PREFIX;
@@ -104,8 +103,7 @@ get_key_value (char *key)
if (prefix == 0)
prefix = std_prefix;
- if (temp)
- free (temp);
+ free (temp);
return prefix;
}
@@ -115,7 +113,7 @@ get_key_value (char *key)
static char *
save_string (const char *s, int len)
{
- char *result = xmalloc (len + 1);
+ char *result = XNEWVEC (char, len + 1);
memcpy (result, s, len);
result[len] = 0;
@@ -124,6 +122,10 @@ save_string (const char *s, int len)
#if defined(_WIN32) && defined(ENABLE_WIN32_REGISTRY)
+#ifndef WIN32_REGISTRY_KEY
+# define WIN32_REGISTRY_KEY BASEVER
+#endif
+
/* Look up "key" in the registry, as above. */
static char *
@@ -157,11 +159,11 @@ lookup_key (char *key)
size = 32;
dst = xmalloc (size);
- res = RegQueryValueExA (reg_key, key, 0, &type, dst, &size);
+ res = RegQueryValueExA (reg_key, key, 0, &type, (LPBYTE) dst, &size);
if (res == ERROR_MORE_DATA && type == REG_SZ)
{
dst = xrealloc (dst, size);
- res = RegQueryValueExA (reg_key, key, 0, &type, dst, &size);
+ res = RegQueryValueExA (reg_key, key, 0, &type, (LPBYTE) dst, &size);
}
if (type != REG_SZ || res != ERROR_SUCCESS)
@@ -197,7 +199,7 @@ translate_name (char *name)
keylen++)
;
- key = alloca (keylen + 1);
+ key = (char *) alloca (keylen + 1);
strncpy (key, &name[1], keylen);
key[keylen] = 0;
@@ -248,7 +250,7 @@ update_path (const char *path, const char *key)
char *result, *p;
const int len = strlen (std_prefix);
- if (! strncmp (path, std_prefix, len)
+ if (! filename_ncmp (path, std_prefix, len)
&& (IS_DIR_SEPARATOR(path[len])
|| path[len] == '\0')
&& key != 0)
@@ -263,16 +265,12 @@ update_path (const char *path, const char *key)
result = concat (key, &path[len], NULL);
if (free_key)
- free ((char *) key);
+ free (CONST_CAST (char *, key));
result = translate_name (result);
}
else
result = xstrdup (path);
-#ifndef ALWAYS_STRIP_DOTDOT
-#define ALWAYS_STRIP_DOTDOT 0
-#endif
-
p = result;
while (1)
{
@@ -287,7 +285,8 @@ update_path (const char *path, const char *key)
&& (p != result && IS_DIR_SEPARATOR (p[-1])))
{
*p = 0;
- if (!ALWAYS_STRIP_DOTDOT && access (result, X_OK) == 0)
+ if (!targetm_common.always_strip_dotdot
+ && access (result, X_OK) == 0)
{
*p = '.';
break;