summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorIgnacio Galarza <iggy@mysql.com>2009-03-19 09:44:58 -0400
committerIgnacio Galarza <iggy@mysql.com>2009-03-19 09:44:58 -0400
commit675c3ce2bbe7f033930822dd0ef9126ebb25d44b (patch)
tree0d1697348f5ffacdf22ddce0537910d41d6482f0 /include
parent54fbbf9591e21cda9f7b26c2d795d88f51827f07 (diff)
parent0d18d930aed47ed97ef3309f9510cfd7a366202e (diff)
downloadmariadb-git-675c3ce2bbe7f033930822dd0ef9126ebb25d44b.tar.gz
auto-merge
Diffstat (limited to 'include')
-rw-r--r--include/config-win.h9
-rw-r--r--include/my_base.h1
-rw-r--r--include/my_global.h38
-rw-r--r--include/my_md5.h90
-rw-r--r--include/my_sys.h1
5 files changed, 64 insertions, 75 deletions
diff --git a/include/config-win.h b/include/config-win.h
index eba699159c7..ab463a7c142 100644
--- a/include/config-win.h
+++ b/include/config-win.h
@@ -31,7 +31,6 @@ functions */
#include <sys/locking.h>
#include <windows.h>
-#include <math.h> /* Because of rint() */
#include <fcntl.h>
#include <io.h>
#include <malloc.h>
@@ -223,13 +222,6 @@ typedef uint rf_SetTimer;
#define inline __inline
#endif /* __cplusplus */
-inline double rint(double nr)
-{
- double f = floor(nr);
- double c = ceil(nr);
- return (((c-nr) >= (nr-f)) ? f :c);
-}
-
#ifdef _WIN64
#define ulonglong2double(A) ((double) (ulonglong) (A))
#define my_off_t2double(A) ((double) (my_off_t) (A))
@@ -281,7 +273,6 @@ inline ulonglong double2ulonglong(double d)
#define HAVE_FLOAT_H
#define HAVE_LIMITS_H
#define HAVE_STDDEF_H
-#define HAVE_RINT /* defined in this file */
#define NO_FCNTL_NONBLOCK /* No FCNTL */
#define HAVE_ALLOCA
#define HAVE_STRPBRK
diff --git a/include/my_base.h b/include/my_base.h
index 9240b01a9f1..e45a73d68ed 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -377,6 +377,7 @@ enum ha_base_keytype {
#define HA_ERR_TABLE_READONLY 161 /* The table is not writable */
#define HA_ERR_AUTOINC_READ_FAILED 162/* Failed to get the next autoinc value */
#define HA_ERR_AUTOINC_ERANGE 163 /* Failed to set the row autoinc value */
+/* You must also add numbers and description to extra/perror.c ! */
#define HA_ERR_LAST 163 /*Copy last error nr.*/
/* Add error numbers before HA_ERR_LAST and change it accordingly. */
diff --git a/include/my_global.h b/include/my_global.h
index 845ae042a42..f5a3016bb1e 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -324,6 +324,9 @@ C_MODE_END
#ifdef HAVE_FLOAT_H
#include <float.h>
#endif
+#ifdef HAVE_FENV_H
+#include <fenv.h> /* For fesetround() */
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -484,8 +487,39 @@ typedef unsigned short ushort;
#define set_bits(type, bit_count) (sizeof(type)*8 <= (bit_count) ? ~(type) 0 : ((((type) 1) << (bit_count)) - (type) 1))
#define array_elements(A) ((uint) (sizeof(A)/sizeof(A[0])))
#ifndef HAVE_RINT
-#define rint(A) floor((A)+(((A) < 0)? -0.5 : 0.5))
-#endif
+/**
+ All integers up to this number can be represented exactly as double precision
+ values (DBL_MANT_DIG == 53 for IEEE 754 hardware).
+*/
+#define MAX_EXACT_INTEGER ((1LL << DBL_MANT_DIG) - 1)
+
+/**
+ rint(3) implementation for platforms that do not have it.
+ Always rounds to the nearest integer with ties being rounded to the nearest
+ even integer to mimic glibc's rint() behavior in the "round-to-nearest"
+ FPU mode. Hardware-specific optimizations are possible (frndint on x86).
+ Unlike this implementation, hardware will also honor the FPU rounding mode.
+*/
+
+static inline double rint(double x)
+{
+ double f, i;
+ f = modf(x, &i);
+ /*
+ All doubles with absolute values > MAX_EXACT_INTEGER are even anyway,
+ no need to check it.
+ */
+ if (x > 0.0)
+ i += (double) ((f > 0.5) || (f == 0.5 &&
+ i <= (double) MAX_EXACT_INTEGER &&
+ (longlong) i % 2));
+ else
+ i -= (double) ((f < -0.5) || (f == -0.5 &&
+ i >= (double) -MAX_EXACT_INTEGER &&
+ (longlong) i % 2));
+ return i;
+}
+#endif /* HAVE_RINT */
/* Define some general constants */
#ifndef TRUE
diff --git a/include/my_md5.h b/include/my_md5.h
index f92976b3beb..6458f27c5cc 100644
--- a/include/my_md5.h
+++ b/include/my_md5.h
@@ -13,80 +13,42 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/* See md5.c for explanation and copyright information. */
-/* MD5.H - header file for MD5C.C
+/*
+ * $FreeBSD: src/contrib/cvs/lib/md5.h,v 1.2 1999/12/11 15:10:02 peter Exp $
*/
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
+/* Unlike previous versions of this code, uint32 need not be exactly
+ 32 bits, merely 32 bits or more. Choosing a data type which is 32
+ bits instead of 64 is not important; speed is considerably more
+ important. ANSI guarantees that "unsigned long" will be big enough,
+ and always using it seems to have few disadvantages. */
+typedef uint32 cvs_uint32;
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-/* GLOBAL.H - RSAREF types and constants
- */
-
-/* PROTOTYPES should be set to one if and only if the compiler supports
- function argument prototyping.
-The following makes PROTOTYPES default to 0 if it has not already
- been defined with C compiler flags.
- */
-
-/* egcs 1.1.2 under linux didn't defined it.... :( */
-
-#ifndef PROTOTYPES
-#define PROTOTYPES 1 /* Assume prototypes */
-#endif
-
-/* POINTER defines a generic pointer type */
-typedef unsigned char *POINTER;
-
-/* UINT2 defines a two byte word */
-typedef uint16 UINT2; /* Fix for MySQL / Alpha */
-
-/* UINT4 defines a four byte word */
-typedef uint32 UINT4; /* Fix for MySQL / Alpha */
-
-/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
-If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
- returns an empty list.
- */
-#if PROTOTYPES
-#define PROTO_LIST(list) list
-#else
-#define PROTO_LIST(list) ()
-#endif
-/* MD5 context. */
typedef struct {
- UINT4 state[4]; /* state (ABCD) */
- UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
- unsigned char buffer[64]; /* input buffer */
-} my_MD5_CTX;
+ cvs_uint32 buf[4];
+ cvs_uint32 bits[2];
+ unsigned char in[64];
+} my_MD5Context;
#ifdef __cplusplus
extern "C" {
#endif
- void my_MD5Init PROTO_LIST ((my_MD5_CTX *));
- void my_MD5Update PROTO_LIST
- ((my_MD5_CTX *, unsigned char *, unsigned int));
- void my_MD5Final PROTO_LIST ((unsigned char [16], my_MD5_CTX *));
+void my_MD5Init (my_MD5Context *context);
+void my_MD5Update (my_MD5Context *context,
+ unsigned char const *buf, unsigned len);
+void my_MD5Final (unsigned char digest[16],
+ my_MD5Context *context);
#ifdef __cplusplus
}
#endif
+
+#define MY_MD5_HASH(digest,buf,len) \
+do { \
+ my_MD5Context ctx; \
+ my_MD5Init (&ctx); \
+ my_MD5Update (&ctx, buf, len); \
+ my_MD5Final (digest, &ctx); \
+} while (0)
diff --git a/include/my_sys.h b/include/my_sys.h
index f3429b02967..35c4eb5f2b1 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -636,6 +636,7 @@ extern int nt_share_delete(const char *name,myf MyFlags);
extern void TERMINATE(FILE *file);
#endif
extern void init_glob_errs(void);
+extern void wait_for_free_space(const char *filename, int errors);
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
extern int my_fclose(FILE *fd,myf MyFlags);