Commit 212fe9d1 authored by unknown's avatar unknown

Portability fixes for HP compiler and HPUX11


Docs/internals.texi:
  Added protocol information
  (needs to be converted to texi and merged with the old documentation)
configure.in:
  Updates for HP compiler (cc)
include/my_global.h:
  Add option to handle bugs in 'inline' for HP compiler
libmysql/password.c:
  Portability fix (for HP compiler)
mysys/hash.c:
  Portability fix (for HP compiler)
mysys/my_static.c:
  Portability fix (for HPUX11)
mysys/my_static.h:
  Portability fix (for HPUX11)
mysys/my_tempnam.c:
  Portability fix (for HPUX11)
sql/sql_analyse.cc:
  Fixed bug in decimal handling
parent b3a8b8bd
This diff is collapsed.
...@@ -934,6 +934,16 @@ case $SYSTEM_TYPE in ...@@ -934,6 +934,16 @@ case $SYSTEM_TYPE in
echo "Using --with-named-thread=-lpthread" echo "Using --with-named-thread=-lpthread"
with_named_thread="-lpthread" with_named_thread="-lpthread"
fi fi
# Fixes for HPUX 11.0 compiler
if test "$ac_cv_prog_gcc" = "no"
then
CFLAGS="$CFLAGS +DD64 -DHAVE_BROKEN_INLINE"
CXXFLAGS="$CXXFLAGS +DD64"
if "$with_debug" = "no"
then
CXXFLAGS="$CXXFLAGS +O2"
fi
fi
;; ;;
*rhapsody*) *rhapsody*)
if test "$ac_cv_prog_gcc" = "yes" if test "$ac_cv_prog_gcc" = "yes"
......
...@@ -141,6 +141,10 @@ C_MODE_END ...@@ -141,6 +141,10 @@ C_MODE_END
#undef HAVE_PREAD #undef HAVE_PREAD
#undef HAVE_PWRITE #undef HAVE_PWRITE
#endif #endif
#if defined(HAVE_BROKEN_INLINE) && !defined(__cplusplus)
#undef inline
#define inline
#endif
#ifdef UNDEF_HAVE_GETHOSTBYNAME_R /* For OSF4.x */ #ifdef UNDEF_HAVE_GETHOSTBYNAME_R /* For OSF4.x */
#undef HAVE_GETHOSTBYNAME_R #undef HAVE_GETHOSTBYNAME_R
......
...@@ -91,7 +91,7 @@ void make_scrambled_password(char *to,const char *password) ...@@ -91,7 +91,7 @@ void make_scrambled_password(char *to,const char *password)
sprintf(to,"%08lx%08lx",hash_res[0],hash_res[1]); sprintf(to,"%08lx%08lx",hash_res[0],hash_res[1]);
} }
static inline uint char_val(char X) static inline unsigned int char_val(char X)
{ {
return (uint) (X >= '0' && X <= '9' ? X-'0' : return (uint) (X >= '0' && X <= '9' ? X-'0' :
X >= 'A' && X <= 'Z' ? X-'A'+10 : X >= 'A' && X <= 'Z' ? X-'A'+10 :
......
...@@ -82,7 +82,12 @@ void hash_free(HASH *hash) ...@@ -82,7 +82,12 @@ void hash_free(HASH *hash)
/* some helper functions */ /* some helper functions */
inline byte* /*
This function is char* instead of byte* as HPUX11 compiler can't
handle inline functions that are not defined as native types
*/
inline char*
hash_key(HASH *hash,const byte *record,uint *length,my_bool first) hash_key(HASH *hash,const byte *record,uint *length,my_bool first)
{ {
if (hash->get_key) if (hash->get_key)
...@@ -103,7 +108,7 @@ static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax, ...@@ -103,7 +108,7 @@ static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax,
uint maxlength) uint maxlength)
{ {
uint length; uint length;
byte *key=hash_key(hash,pos->data,&length,0); byte *key= (byte*) hash_key(hash,pos->data,&length,0);
return hash_mask((*hash->calc_hashnr)(key,length),buffmax,maxlength); return hash_mask((*hash->calc_hashnr)(key,length),buffmax,maxlength);
} }
...@@ -180,10 +185,10 @@ uint calc_hashnr_caseup(const byte *key, uint len) ...@@ -180,10 +185,10 @@ uint calc_hashnr_caseup(const byte *key, uint len)
#ifndef __SUNPRO_C /* SUNPRO can't handle this */ #ifndef __SUNPRO_C /* SUNPRO can't handle this */
inline inline
#endif #endif
uint rec_hashnr(HASH *hash,const byte *record) unsigned int rec_hashnr(HASH *hash,const byte *record)
{ {
uint length; uint length;
byte *key=hash_key(hash,record,&length,0); byte *key= (byte*) hash_key(hash,record,&length,0);
return (*hash->calc_hashnr)(key,length); return (*hash->calc_hashnr)(key,length);
} }
...@@ -270,7 +275,7 @@ static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink) ...@@ -270,7 +275,7 @@ static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink)
static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length) static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length)
{ {
uint rec_keylength; uint rec_keylength;
byte *rec_key=hash_key(hash,pos->data,&rec_keylength,1); byte *rec_key= (byte*) hash_key(hash,pos->data,&rec_keylength,1);
return (length && length != rec_keylength) || return (length && length != rec_keylength) ||
(hash->flags & HASH_CASE_INSENSITIVE ? (hash->flags & HASH_CASE_INSENSITIVE ?
my_casecmp(rec_key,key,rec_keylength) : my_casecmp(rec_key,key,rec_keylength) :
......
...@@ -60,7 +60,7 @@ USED_MEM* my_once_root_block=0; /* pointer to first block */ ...@@ -60,7 +60,7 @@ USED_MEM* my_once_root_block=0; /* pointer to first block */
uint my_once_extra=ONCE_ALLOC_INIT; /* Memory to alloc / block */ uint my_once_extra=ONCE_ALLOC_INIT; /* Memory to alloc / block */
/* from my_tempnam */ /* from my_tempnam */
#ifndef HAVE_TEMPNAM #if !defined(HAVE_TEMPNAM) || defined(HPUX11)
int _my_tempnam_used=0; int _my_tempnam_used=0;
#endif #endif
......
...@@ -65,7 +65,7 @@ extern const char *soundex_map; ...@@ -65,7 +65,7 @@ extern const char *soundex_map;
extern USED_MEM* my_once_root_block; extern USED_MEM* my_once_root_block;
extern uint my_once_extra; extern uint my_once_extra;
#ifndef HAVE_TEMPNAM #if !defined(HAVE_TEMPNAM) || defined(HPUX11)
extern int _my_tempnam_used; extern int _my_tempnam_used;
#endif #endif
......
...@@ -23,6 +23,12 @@ ...@@ -23,6 +23,12 @@
#include "mysys_priv.h" #include "mysys_priv.h"
#include <m_string.h> #include <m_string.h>
/* HPUX 11.0 doesn't allow us to change the environ pointer */
#ifdef HPUX11
#undef HAVE_TEMPNAM
#endif
#include "my_static.h" #include "my_static.h"
#include "mysys_err.h" #include "mysys_err.h"
......
...@@ -677,7 +677,7 @@ bool analyse::end_of_records() ...@@ -677,7 +677,7 @@ bool analyse::end_of_records()
case FIELD_TYPE_DECIMAL: case FIELD_TYPE_DECIMAL:
ans.append("DECIMAL", 7); ans.append("DECIMAL", 7);
// if item is FIELD_ITEM, it _must_be_ Field_num in this case // if item is FIELD_ITEM, it _must_be_ Field_num in this case
if (((Field_num*) (*f)->item)->zerofill) if (((Field_num*) ((Item_field*) (*f)->item)->field)->zerofill)
ans.append(" ZEROFILL"); ans.append(" ZEROFILL");
break; break;
default: default:
......
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