Commit 3b2964c5 authored by unknown's avatar unknown

Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/M41/mysql-4.1


acinclude.m4:
  Auto merged
configure.in:
  Auto merged
parents 1faa742b 98b911d5
...@@ -1005,7 +1005,7 @@ AC_DEFUN([MYSQL_FIND_OPENSSL], [ ...@@ -1005,7 +1005,7 @@ AC_DEFUN([MYSQL_FIND_OPENSSL], [
if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then
echo "Could not find an installation of OpenSSL" echo "Could not find an installation of OpenSSL"
if test -n "$OPENSSL_LIB" ; then if test -n "$OPENSSL_LIB" ; then
if test "$IS_LINUX" = "true"; then if test "$TARGET_LINUX" = "true"; then
echo "Looks like you've forgotten to install OpenSSL development RPM" echo "Looks like you've forgotten to install OpenSSL development RPM"
fi fi
fi fi
......
...@@ -410,15 +410,16 @@ AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os") ...@@ -410,15 +410,16 @@ AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os")
if expr "$target_os" : "[[Ll]]inux.*" > /dev/null if expr "$target_os" : "[[Ll]]inux.*" > /dev/null
then then
MYSQLD_DEFAULT_SWITCHES="--skip-locking" MYSQLD_DEFAULT_SWITCHES="--skip-locking"
IS_LINUX="true" TARGET_LINUX="true"
AC_MSG_RESULT("yes"); AC_MSG_RESULT("yes")
AC_DEFINE([TARGET_OS_LINUX], [1], [Whether we build for Linux])
else else
MYSQLD_DEFAULT_SWITCHES="" MYSQLD_DEFAULT_SWITCHES=""
IS_LINUX="false" TARGET_LINUX="false"
AC_MSG_RESULT("no"); AC_MSG_RESULT("no")
fi fi
AC_SUBST(MYSQLD_DEFAULT_SWITCHES) AC_SUBST(MYSQLD_DEFAULT_SWITCHES)
AC_SUBST(IS_LINUX) AC_SUBST(TARGET_LINUX)
dnl Find paths to some shell programs dnl Find paths to some shell programs
AC_PATH_PROG(LN, ln, ln) AC_PATH_PROG(LN, ln, ln)
...@@ -607,7 +608,7 @@ AC_SUBST(NOINST_LDFLAGS) ...@@ -607,7 +608,7 @@ AC_SUBST(NOINST_LDFLAGS)
# (this is true on the MySQL build machines to avoid NSS problems) # (this is true on the MySQL build machines to avoid NSS problems)
# #
if test "$IS_LINUX" = "true" -a "$static_nss" = "" if test "$TARGET_LINUX" = "true" -a "$static_nss" = ""
then then
tmp=`nm /usr/lib/libc.a | grep _nss_files_getaliasent_r` tmp=`nm /usr/lib/libc.a | grep _nss_files_getaliasent_r`
if test -n "$tmp" if test -n "$tmp"
...@@ -841,7 +842,7 @@ struct request_info *req; ...@@ -841,7 +842,7 @@ struct request_info *req;
]) ])
AC_SUBST(WRAPLIBS) AC_SUBST(WRAPLIBS)
if test "$IS_LINUX" = "true"; then if test "$TARGET_LINUX" = "true"; then
AC_MSG_CHECKING([for atomic operations]) AC_MSG_CHECKING([for atomic operations])
atom_ops= atom_ops=
...@@ -885,7 +886,7 @@ int main() ...@@ -885,7 +886,7 @@ int main()
[ USE_PSTACK=no ]) [ USE_PSTACK=no ])
pstack_libs= pstack_libs=
pstack_dirs= pstack_dirs=
if test "$USE_PSTACK" = yes -a "$IS_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386" -a "$with_mit_threads" = "no" if test "$USE_PSTACK" = yes -a "$TARGET_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386" -a "$with_mit_threads" = "no"
then then
have_libiberty= have_libbfd= have_libiberty= have_libbfd=
my_save_LIBS="$LIBS" my_save_LIBS="$LIBS"
...@@ -1266,61 +1267,93 @@ esac ...@@ -1266,61 +1267,93 @@ esac
# We have to check libc last because else it fails on Solaris 2.6 # We have to check libc last because else it fails on Solaris 2.6
with_posix_threads="no" with_posix_threads="no"
# Hack for DEC-UNIX (OSF1) # Search thread lib on Linux
if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
then then
# Look for LinuxThreads. AC_MSG_CHECKING("Linux threads")
AC_MSG_CHECKING("LinuxThreads") if test "$TARGET_LINUX" = "true"
res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
if test "$res" -gt 0
then then
AC_MSG_RESULT("Found") AC_MSG_RESULT("starting")
AC_DEFINE([HAVE_LINUXTHREADS], [1], # use getconf to check glibc contents
[Whether we are using Xavier Leroy's LinuxThreads]) AC_MSG_CHECKING("getconf GNU_LIBPTHREAD_VERSION")
# Linux 2.0 sanity check case `getconf GNU_LIBPTHREAD_VERSION | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` in
AC_TRY_COMPILE([#include <sched.h>], [int a = sched_get_priority_min(1);], , NPTL* )
AC_MSG_ERROR([Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual])) AC_MSG_RESULT("NPTL")
# RedHat 5.0 does not work with dynamic linking of this. -static also AC_DEFINE([HAVE_NPTL], [1], [NPTL threads implementation])
# gives a speed increase in linux so it does not hurt on other systems. with_named_thread="-lpthread"
with_named_thread="-lpthread" ;;
else LINUXTHREADS* )
AC_MSG_RESULT("Not found") AC_MSG_RESULT("Linuxthreads")
# If this is a linux machine we should barf AC_DEFINE([HAVE_LINUXTHREADS], [1],
if test "$IS_LINUX" = "true" [Whether we are using Xavier Leroy's LinuxThreads])
then with_named_thread="-lpthread"
AC_MSG_ERROR([This is a linux system and Linuxthreads was not ;;
found. On linux Linuxthreads should be used. Please install Linuxthreads * )
(or a new glibc) and try again. See the Installation chapter in the AC_MSG_RESULT("unknown")
Reference Manual for more information.]) ;;
else esac
AC_MSG_CHECKING("DEC threads") if test "$with_named_thread" = "no"
if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a then
then # old method, check headers
with_named_thread="-lpthread -lmach -lexc" # Look for LinuxThreads.
CFLAGS="$CFLAGS -D_REENTRANT" AC_MSG_CHECKING("LinuxThreads in header file comment")
CXXFLAGS="$CXXFLAGS -D_REENTRANT" res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
AC_DEFINE(HAVE_DEC_THREADS, [1], if test "$res" -gt 0
[Whether we are using DEC threads]) then
AC_MSG_RESULT("yes") AC_MSG_RESULT("Found")
else AC_DEFINE([HAVE_LINUXTHREADS], [1],
AC_MSG_RESULT("no") [Whether we are using Xavier Leroy's LinuxThreads])
AC_MSG_CHECKING("DEC 3.2 threads") # Linux 2.0 sanity check
if test -f /usr/shlib/libpthreads.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a AC_TRY_COMPILE([#include <sched.h>], [int a = sched_get_priority_min(1);], ,
then AC_MSG_ERROR([Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual]))
with_named_thread="-lpthreads -lmach -lc_r" # RedHat 5.0 does not work with dynamic linking of this. -static also
AC_DEFINE(HAVE_DEC_THREADS, [1]) # gives a speed increase in linux so it does not hurt on other systems.
AC_DEFINE([HAVE_DEC_3_2_THREADS], [1], with_named_thread="-lpthread"
[Whether we are using OSF1 DEC threads on 3.2]) else
with_osf32_threads="yes" AC_MSG_RESULT("Not found")
MYSQLD_DEFAULT_SWITCHES="--skip-thread-priority" # If this is a linux machine we should barf
AC_MSG_RESULT("yes") AC_MSG_ERROR([This is a Linux system without a working getconf,
else and Linuxthreads was not found. Please install it (or a new glibc) and try again.
AC_MSG_RESULT("no") See the Installation chapter in the Reference Manual for more information.])
fi fi
fi else
fi AC_MSG_RESULT("no need to check headers")
fi fi
fi
AC_MSG_CHECKING("for pthread_create in -lpthread");
ac_save_LIBS="$LIBS"
LIBS="$LIBS -lpthread"
AC_TRY_LINK( [#include <pthread.h>],
[ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ],
AC_MSG_RESULT("yes"),
[ AC_MSG_RESULT("no")
AC_MSG_ERROR([
This is a Linux system claiming to support threads, either Linuxthreads or NPTL, but linking a test program failed.
Please install one of these (or a new glibc) and try again.
See the Installation chapter in the Reference Manual for more information.]) ]
)
LIBS="$ac_save_LIBS"
else
AC_MSG_RESULT("no")
fi # "$TARGET_LINUX"
fi # "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
# Hack for DEC-UNIX (OSF1 -> Tru64)
if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
then
AC_MSG_CHECKING("DEC threads post OSF/1 3.2")
if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a
then
with_named_thread="-lpthread -lmach -lexc"
CFLAGS="$CFLAGS -D_REENTRANT"
CXXFLAGS="$CXXFLAGS -D_REENTRANT"
AC_DEFINE(HAVE_DEC_THREADS, [1], [Whether we are using DEC threads])
AC_MSG_RESULT("yes")
else
AC_MSG_RESULT("no")
fi # DEC threads
fi # "$with_named_thread" = "no" -a "$with_mit_threads" = "no"
dnl This is needed because -lsocket has to come after the thread dnl This is needed because -lsocket has to come after the thread
...@@ -1738,7 +1771,7 @@ fi ...@@ -1738,7 +1771,7 @@ fi
AC_SUBST(COMPILATION_COMMENT) AC_SUBST(COMPILATION_COMMENT)
AC_MSG_CHECKING("need of special linking flags") AC_MSG_CHECKING("need of special linking flags")
if test "$IS_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes" if test "$TARGET_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes"
then then
LDFLAGS="$LDFLAGS -rdynamic" LDFLAGS="$LDFLAGS -rdynamic"
AC_MSG_RESULT("-rdynamic") AC_MSG_RESULT("-rdynamic")
...@@ -1957,7 +1990,7 @@ CFLAGS="$ORG_CFLAGS" ...@@ -1957,7 +1990,7 @@ CFLAGS="$ORG_CFLAGS"
# Sanity check: We chould not have any fseeko symbol unless # Sanity check: We chould not have any fseeko symbol unless
# large_file_support=yes # large_file_support=yes
AC_CHECK_FUNC(fseeko, AC_CHECK_FUNC(fseeko,
[if test "$large_file_support" = no -a "$IS_LINUX" = "true"; [if test "$large_file_support" = no -a "$TARGET_LINUX" = "true";
then then
AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!"); AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!");
fi] fi]
......
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
/* Fix problem with S_ISLNK() on Linux */ /* Fix problem with S_ISLNK() on Linux */
#if defined(HAVE_LINUXTHREADS) #if defined(TARGET_OS_LINUX)
#undef _GNU_SOURCE #undef _GNU_SOURCE
#define _GNU_SOURCE 1 #define _GNU_SOURCE 1
#endif #endif
...@@ -107,6 +107,7 @@ ...@@ -107,6 +107,7 @@
#undef THREAD #undef THREAD
#undef HAVE_mit_thread #undef HAVE_mit_thread
#undef HAVE_LINUXTHREADS #undef HAVE_LINUXTHREADS
#undef HAVE_NPTL
#undef HAVE_UNIXWARE7_THREADS #undef HAVE_UNIXWARE7_THREADS
#endif #endif
...@@ -214,13 +215,13 @@ C_MODE_START int __cxa_pure_virtual() {\ ...@@ -214,13 +215,13 @@ C_MODE_START int __cxa_pure_virtual() {\
#endif #endif
/* In Linux-alpha we have atomic.h if we are using gcc */ /* In Linux-alpha we have atomic.h if we are using gcc */
#if defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && defined(__alpha__) && (__GNUC__ > 2 || ( __GNUC__ == 2 && __GNUC_MINOR__ >= 95)) && !defined(HAVE_ATOMIC_ADD) #if defined(TARGET_OS_LINUX) && defined(__GNUC__) && defined(__alpha__) && (__GNUC__ > 2 || ( __GNUC__ == 2 && __GNUC_MINOR__ >= 95)) && !defined(HAVE_ATOMIC_ADD)
#define HAVE_ATOMIC_ADD #define HAVE_ATOMIC_ADD
#define HAVE_ATOMIC_SUB #define HAVE_ATOMIC_SUB
#endif #endif
/* In Linux-ia64 including atomic.h will give us an error */ /* In Linux-ia64 including atomic.h will give us an error */
#if (defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && (defined(__ia64__)||defined(__powerpc64__))) || !defined(THREAD) #if (defined(TARGET_OS_LINUX) && defined(__GNUC__) && (defined(__ia64__)||defined(__powerpc64__))) || !defined(THREAD)
#undef HAVE_ATOMIC_ADD #undef HAVE_ATOMIC_ADD
#undef HAVE_ATOMIC_SUB #undef HAVE_ATOMIC_SUB
#endif #endif
...@@ -755,7 +756,7 @@ typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */ ...@@ -755,7 +756,7 @@ typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */
error "Neither int or long is of 4 bytes width" error "Neither int or long is of 4 bytes width"
#endif #endif
#if !defined(HAVE_ULONG) && !defined(HAVE_LINUXTHREADS) && !defined(__USE_MISC) #if !defined(HAVE_ULONG) && !defined(TARGET_OS_LINUX) && !defined(__USE_MISC)
typedef unsigned long ulong; /* Short for unsigned long */ typedef unsigned long ulong; /* Short for unsigned long */
#endif #endif
#ifndef longlong_defined #ifndef longlong_defined
......
...@@ -88,7 +88,7 @@ SUFFIXES = .sh ...@@ -88,7 +88,7 @@ SUFFIXES = .sh
-e 's!@''FIND_PROC''@!@FIND_PROC@!' \ -e 's!@''FIND_PROC''@!@FIND_PROC@!' \
-e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \ -e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \ -e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
-e 's!@''IS_LINUX''@!@IS_LINUX@!' \ -e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \ -e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \ -e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
-e 's!@''sysconfdir''@!@sysconfdir@!' \ -e 's!@''sysconfdir''@!@sysconfdir@!' \
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
/* This makes a wrapper for mutex handling to make it easier to debug mutex */ /* This makes a wrapper for mutex handling to make it easier to debug mutex */
#include <my_global.h> #include <my_global.h>
#if defined(HAVE_LINUXTHREADS) && !defined (__USE_UNIX98) #if defined(TARGET_OS_LINUX) && !defined (__USE_UNIX98)
#define __USE_UNIX98 /* To get rw locks under Linux */ #define __USE_UNIX98 /* To get rw locks under Linux */
#endif #endif
#if defined(THREAD) && defined(SAFE_MUTEX) #if defined(THREAD) && defined(SAFE_MUTEX)
......
...@@ -135,7 +135,7 @@ SUFFIXES = .sh ...@@ -135,7 +135,7 @@ SUFFIXES = .sh
-e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \ -e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \ -e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
-e 's!@''MYSQL_TCP_PORT''@!@MYSQL_TCP_PORT@!' \ -e 's!@''MYSQL_TCP_PORT''@!@MYSQL_TCP_PORT@!' \
-e 's!@''IS_LINUX''@!@IS_LINUX@!' \ -e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \ -e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \ -e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
-e 's!@''STATIC_NSS_FLAGS''@!@STATIC_NSS_FLAGS@!' \ -e 's!@''STATIC_NSS_FLAGS''@!@STATIC_NSS_FLAGS@!' \
......
...@@ -324,7 +324,7 @@ do ...@@ -324,7 +324,7 @@ do
break break
fi fi
if @IS_LINUX@ && test $KILL_MYSQLD -eq 1 if @TARGET_LINUX@ && test $KILL_MYSQLD -eq 1
then then
# Test if one process was hanging. # Test if one process was hanging.
# This is only a fix for Linux (running as base 3 mysqld processes) # This is only a fix for Linux (running as base 3 mysqld processes)
......
...@@ -43,7 +43,7 @@ void safe_print_str(const char* name, const char* val, int max_len) ...@@ -43,7 +43,7 @@ void safe_print_str(const char* name, const char* val, int max_len)
fputc('\n', stderr); fputc('\n', stderr);
} }
#ifdef HAVE_LINUXTHREADS #ifdef TARGET_OS_LINUX
#define SIGRETURN_FRAME_COUNT 2 #define SIGRETURN_FRAME_COUNT 2
#if defined(__alpha__) && defined(__GNUC__) #if defined(__alpha__) && defined(__GNUC__)
...@@ -201,7 +201,7 @@ end: ...@@ -201,7 +201,7 @@ end:
stack trace is much more helpful in diagnosing the problem, so please do \n\ stack trace is much more helpful in diagnosing the problem, so please do \n\
resolve it\n"); resolve it\n");
} }
#endif /* HAVE_LINUXTHREADS */ #endif /* TARGET_OS_LINUX */
#endif /* HAVE_STACKTRACE */ #endif /* HAVE_STACKTRACE */
/* Produce a core for the thread */ /* Produce a core for the thread */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
extern "C" { extern "C" {
#endif #endif
#ifdef HAVE_LINUXTHREADS #ifdef TARGET_OS_LINUX
#if defined(HAVE_STACKTRACE) || (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) #if defined(HAVE_STACKTRACE) || (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__)))
#undef HAVE_STACKTRACE #undef HAVE_STACKTRACE
#define HAVE_STACKTRACE #define HAVE_STACKTRACE
...@@ -30,7 +30,7 @@ extern char* heap_start; ...@@ -30,7 +30,7 @@ extern char* heap_start;
void print_stacktrace(gptr stack_bottom, ulong thread_stack); void print_stacktrace(gptr stack_bottom, ulong thread_stack);
void safe_print_str(const char* name, const char* val, int max_len); void safe_print_str(const char* name, const char* val, int max_len);
#endif /* (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) */ #endif /* (defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) */
#endif /* HAVE_LINUXTHREADS */ #endif /* TARGET_OS_LINUX */
/* Define empty prototypes for functions that are not implemented */ /* Define empty prototypes for functions that are not implemented */
#ifndef HAVE_STACKTRACE #ifndef HAVE_STACKTRACE
......
...@@ -90,7 +90,7 @@ SUFFIXES = .sh ...@@ -90,7 +90,7 @@ SUFFIXES = .sh
-e 's!@''FIND_PROC''@!@FIND_PROC@!' \ -e 's!@''FIND_PROC''@!@FIND_PROC@!' \
-e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \ -e 's!@''MYSQLD_DEFAULT_SWITCHES''@!@MYSQLD_DEFAULT_SWITCHES@!' \
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \ -e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
-e 's!@''IS_LINUX''@!@IS_LINUX@!' \ -e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \ -e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \ -e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
-e 's!@''sysconfdir''@!@sysconfdir@!' \ -e 's!@''sysconfdir''@!@sysconfdir@!' \
......
...@@ -101,7 +101,7 @@ static CHARSET_INFO *cs= &my_charset_latin1; ...@@ -101,7 +101,7 @@ static CHARSET_INFO *cs= &my_charset_latin1;
set by the user set by the user
*/ */
#if defined(__i386__) && defined(HAVE_LINUXTHREADS) #if defined(__i386__) && defined(TARGET_OS_LINUX)
#define DO_STACKTRACE 1 #define DO_STACKTRACE 1
#endif #endif
......
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