/*
  RISC OS: MyODBC 3.51.30 against the MySQL 3.23 client library.

  3.51.30 expects a MySQL >= 4.0 client. The 3.23 client has the same
  protocol for the subset the driver uses, but older names, so map them
  here. Anything a 3.23 server can never send (BIT, NEWDECIMAL, VARCHAR,
  GEOMETRY) gets its MySQL 5 value so the switch statements still build.
*/

#ifndef RISCOSCOMPAT_H
#define RISCOSCOMPAT_H

#include <assert.h>

#if MYSQL_VERSION_ID < 40000

#define MYSQL_TYPE_DECIMAL     FIELD_TYPE_DECIMAL
#define MYSQL_TYPE_TINY        FIELD_TYPE_TINY
#define MYSQL_TYPE_SHORT       FIELD_TYPE_SHORT
#define MYSQL_TYPE_LONG        FIELD_TYPE_LONG
#define MYSQL_TYPE_FLOAT       FIELD_TYPE_FLOAT
#define MYSQL_TYPE_DOUBLE      FIELD_TYPE_DOUBLE
#define MYSQL_TYPE_NULL        FIELD_TYPE_NULL
#define MYSQL_TYPE_TIMESTAMP   FIELD_TYPE_TIMESTAMP
#define MYSQL_TYPE_LONGLONG    FIELD_TYPE_LONGLONG
#define MYSQL_TYPE_INT24       FIELD_TYPE_INT24
#define MYSQL_TYPE_DATE        FIELD_TYPE_DATE
#define MYSQL_TYPE_TIME        FIELD_TYPE_TIME
#define MYSQL_TYPE_DATETIME    FIELD_TYPE_DATETIME
#define MYSQL_TYPE_YEAR        FIELD_TYPE_YEAR
#define MYSQL_TYPE_NEWDATE     FIELD_TYPE_NEWDATE
#define MYSQL_TYPE_ENUM        FIELD_TYPE_ENUM
#define MYSQL_TYPE_SET         FIELD_TYPE_SET
#define MYSQL_TYPE_TINY_BLOB   FIELD_TYPE_TINY_BLOB
#define MYSQL_TYPE_MEDIUM_BLOB FIELD_TYPE_MEDIUM_BLOB
#define MYSQL_TYPE_LONG_BLOB   FIELD_TYPE_LONG_BLOB
#define MYSQL_TYPE_BLOB        FIELD_TYPE_BLOB
#define MYSQL_TYPE_VAR_STRING  FIELD_TYPE_VAR_STRING
#define MYSQL_TYPE_STRING      FIELD_TYPE_STRING
#define MYSQL_TYPE_VARCHAR     ((enum enum_field_types) 15)
#define MYSQL_TYPE_BIT         ((enum enum_field_types) 16)
#define MYSQL_TYPE_NEWDECIMAL  ((enum enum_field_types) 246)
#define MYSQL_TYPE_GEOMETRY    ((enum enum_field_types) 255)

/* No multi-statement / multi-result support before 4.1 */
#define CLIENT_MULTI_STATEMENTS 0
#define CLIENT_MULTI_RESULTS    0

/* No multiple result sets before 4.1 */
#define mysql_more_results(mysql) 0
#define mysql_next_result(mysql)  (-1)

/* No NO_BACKSLASH_ESCAPES sql_mode before 5.0 */
#define SERVER_STATUS_NO_BACKSLASH_ESCAPES 0

/* 3.23 client is Latin-1 only */
#define MYSQL_DEFAULT_CHARSET_NAME "latin1"

/* Provided by c.riscoscompat */
my_bool mysql_autocommit(MYSQL *mysql, my_bool auto_mode);
my_bool net_realloc(NET *net, ulong length);
char *strmake_root(MEM_ROOT *root, const char *str, unsigned int len);
my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append, ...);

#endif /* MYSQL_VERSION_ID < 40000 */

#ifndef RISCOS_UNIXLIB_PROTOS
#define RISCOS_UNIXLIB_PROTOS
/* From TCPIPLibs unixlib (in the !ODBC Rink map); unixlib.h itself
   clashes with the MySQL bzero/bcopy macros */
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, unsigned int);
extern char *strdup(const char *);
#endif

/* Not in the Acorn C library */
#include <time.h>
struct tm *localtime_r(const time_t *timep, struct tm *result);

#endif /* RISCOSCOMPAT_H */
