Commit f5bbcba9 authored by Kristofer Pettersson's avatar Kristofer Pettersson

merge 5.0->5.0-bugteam

parents 6da6bbc7 6825ffd1
...@@ -2812,9 +2812,15 @@ EOF ...@@ -2812,9 +2812,15 @@ EOF
case $SYSTEM_TYPE-$MACHINE_TYPE-$ac_cv_prog_gcc-$have_ndbcluster in case $SYSTEM_TYPE-$MACHINE_TYPE-$ac_cv_prog_gcc-$have_ndbcluster in
*solaris*-i?86-no-yes) *solaris*-i?86-no-yes)
# ndb fail for whatever strange reason to link Sun Forte/x86 if $CC -xildon 2>&1 | grep "illegal option" >/dev/null
# unless using incremental linker then
CXXFLAGS="$CXXFLAGS -xildon" # This Solaris ld does not support -xildon
true
else
# ndb fail for whatever strange reason to link Sun Forte/x86
# unless using incremental linker
CXXFLAGS="$CXXFLAGS -xildon"
fi
;; ;;
*) ;; *) ;;
esac esac
......
...@@ -681,6 +681,7 @@ extern my_string fn_format(my_string to,const char *name,const char *dir, ...@@ -681,6 +681,7 @@ extern my_string fn_format(my_string to,const char *name,const char *dir,
const char *form, uint flag); const char *form, uint flag);
extern size_s strlength(const char *str); extern size_s strlength(const char *str);
extern void pack_dirname(my_string to,const char *from); extern void pack_dirname(my_string to,const char *from);
extern uint normalize_dirname(char * to, const char *from);
extern uint unpack_dirname(my_string to,const char *from); extern uint unpack_dirname(my_string to,const char *from);
extern uint cleanup_dirname(my_string to,const char *from); extern uint cleanup_dirname(my_string to,const char *from);
extern uint system_filename(my_string to,const char *from); extern uint system_filename(my_string to,const char *from);
......
...@@ -965,8 +965,7 @@ static int add_directory(MEM_ROOT *alloc, const char *dir, const char **dirs) ...@@ -965,8 +965,7 @@ static int add_directory(MEM_ROOT *alloc, const char *dir, const char **dirs)
char *p; char *p;
my_bool err __attribute__((unused)); my_bool err __attribute__((unused));
/* Normalize directory name */ len= normalize_dirname(buf, dir);
len= unpack_dirname(buf, dir);
if (!(p= strmake_root(alloc, buf, len))) if (!(p= strmake_root(alloc, buf, len)))
return 1; /* Failure */ return 1; /* Failure */
/* Should never fail if DEFAULT_DIRS_SIZE is correct size */ /* Should never fail if DEFAULT_DIRS_SIZE is correct size */
......
...@@ -266,22 +266,64 @@ void symdirget(char *dir) ...@@ -266,22 +266,64 @@ void symdirget(char *dir)
#endif /* USE_SYMDIR */ #endif /* USE_SYMDIR */
/* /**
Fixes a directroy name so that can be used by open() Convert a directory name to a format which can be compared as strings
SYNOPSIS @param to result buffer, FN_REFLEN chars in length; may be == from
unpack_dirname() @param from 'packed' directory name, in whatever format
to result-buffer, FN_REFLEN characters. may be == from @returns size of the normalized name
from 'Packed' directory name (may contain ~)
IMPLEMENTATION @details
Make that last char of to is '/' if from not empty and - Ensures that last char is FN_LIBCHAR, unless it is FN_DEVCHAR
from doesn't end in FN_DEVCHAR - Uses cleanup_dirname
Uses cleanup_dirname and changes ~/.. to home_dir/..
Changes a UNIX filename to system filename (replaces / with \ on windows) It does *not* expand ~/ (although, see cleanup_dirname). Nor does it do
any case folding. All case-insensitive normalization should be done by
the caller.
*/
RETURN uint normalize_dirname(char *to, const char *from)
{
uint length;
char buff[FN_REFLEN];
DBUG_ENTER("normalize_dirname");
/*
Despite the name, this actually converts the name to the system's
format (TODO: rip out the non-working VMS stuff and name this
properly).
*/
(void) intern_filename(buff, from);
length= (uint) strlen(buff); /* Fix that '/' is last */
if (length &&
#ifdef FN_DEVCHAR
buff[length - 1] != FN_DEVCHAR &&
#endif
buff[length - 1] != FN_LIBCHAR && buff[length - 1] != '/')
{
buff[length]= FN_LIBCHAR;
buff[length + 1]= '\0';
}
length=cleanup_dirname(to, buff);
DBUG_RETURN(length);
}
/**
Fixes a directory name so that can be used by open()
@param to Result buffer, FN_REFLEN characters. May be == from
@param from 'Packed' directory name (may contain ~)
@details
- Uses normalize_dirname()
- Expands ~/... to home_dir/...
- Resolves MySQL's fake "foo.sym" symbolic directory names (if USE_SYMDIR)
- Changes a UNIX filename to system filename (replaces / with \ on windows)
@returns
Length of new directory name (= length of to) Length of new directory name (= length of to)
*/ */
...@@ -291,19 +333,8 @@ uint unpack_dirname(my_string to, const char *from) ...@@ -291,19 +333,8 @@ uint unpack_dirname(my_string to, const char *from)
char buff[FN_REFLEN+1+4],*suffix,*tilde_expansion; char buff[FN_REFLEN+1+4],*suffix,*tilde_expansion;
DBUG_ENTER("unpack_dirname"); DBUG_ENTER("unpack_dirname");
(void) intern_filename(buff,from); /* Change to intern name */ length= normalize_dirname(buff, from);
length= (uint) strlen(buff); /* Fix that '/' is last */
if (length &&
#ifdef FN_DEVCHAR
buff[length-1] != FN_DEVCHAR &&
#endif
buff[length-1] != FN_LIBCHAR && buff[length-1] != '/')
{
buff[length]=FN_LIBCHAR;
buff[length+1]= '\0';
}
length=cleanup_dirname(buff,buff);
if (buff[0] == FN_HOMELIB) if (buff[0] == FN_HOMELIB)
{ {
suffix=buff+1; tilde_expansion=expand_tilde(&suffix); suffix=buff+1; tilde_expansion=expand_tilde(&suffix);
......
...@@ -61,6 +61,7 @@ system=`echo $system | sed -e 's/[a-z]*-\(.*\)/\1/g'` ...@@ -61,6 +61,7 @@ system=`echo $system | sed -e 's/[a-z]*-\(.*\)/\1/g'`
system=`echo $system | sed -e 's/darwin6.*/osx10.2/g'` system=`echo $system | sed -e 's/darwin6.*/osx10.2/g'`
system=`echo $system | sed -e 's/darwin7.*/osx10.3/g'` system=`echo $system | sed -e 's/darwin7.*/osx10.3/g'`
system=`echo $system | sed -e 's/darwin8.*/osx10.4/g'` system=`echo $system | sed -e 's/darwin8.*/osx10.4/g'`
system=`echo $system | sed -e 's/darwin9.*/osx10.5/g'`
system=`echo $system | sed -e 's/\(aix4.3\).*/\1/g'` system=`echo $system | sed -e 's/\(aix4.3\).*/\1/g'`
system=`echo $system | sed -e 's/\(aix5.1\).*/\1/g'` system=`echo $system | sed -e 's/\(aix5.1\).*/\1/g'`
system=`echo $system | sed -e 's/\(aix5.2\).*/\1/g'` system=`echo $system | sed -e 's/\(aix5.2\).*/\1/g'`
......
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