From 5dfea0c629f967d7ace700b63adf62eb11f88d9b Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Wed, 31 Mar 2004 23:56:46 +0000 Subject: [PATCH 1/1] r8804: add automatic mysql client detection --- db-mysql/mysql-api.lisp | 10 -------- db-mysql/mysql-client-info.lisp | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 db-mysql/mysql-client-info.lisp diff --git a/db-mysql/mysql-api.lisp b/db-mysql/mysql-api.lisp index b3220b7..480345d 100644 --- a/db-mysql/mysql-api.lisp +++ b/db-mysql/mysql-api.lisp @@ -106,10 +106,6 @@ (:var-string 253) (:string 254))) -#-(or :mysql-client-v3 :mysql-client-v4) -(eval-when (:compile-toplevel :load-toplevel :execute) - (pushnew :mysql-client-v3 cl:*features*)) - #+:mysql-client-v3 (uffi:def-struct mysql-field (name (* :char)) @@ -370,12 +366,6 @@ :module "mysql" :returning :cstring) -(declaim (inline mysql-get-client-info)) -(uffi:def-function "mysql_get_client_info" - () - :module "mysql" - :returning :cstring) - (declaim (inline mysql-get-host-info)) (uffi:def-function "mysql_get_host_info" ((mysql (* mysql-mysql))) diff --git a/db-mysql/mysql-client-info.lisp b/db-mysql/mysql-client-info.lisp new file mode 100644 index 0000000..df454bd --- /dev/null +++ b/db-mysql/mysql-client-info.lisp @@ -0,0 +1,42 @@ +;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; ************************************************************************* +;;;; FILE IDENTIFICATION +;;;; +;;;; Name: mysql-client-info.lisp +;;;; Purpose: Check mysql client version +;;;; Programmer: Kevin M. Rosenberg +;;;; Date Started: April 2004 +;;;; +;;;; $Id: mysql-api.lisp 8801 2004-03-31 23:48:44Z kevin $ +;;;; +;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; and Copyright (c) 1999-2001 by Pierre R. Mai +;;;; +;;;; CLSQL users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; ************************************************************************* + +(in-package #:mysql) + +(declaim (inline mysql-get-client-info)) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (uffi:def-function "mysql_get_client_info" + () + :module "mysql" + :returning :cstring) + + (let ((version (uffi:convert-from-cstring (mysql-get-client-info)))) + (cond + ((eql (schar version 0) #\3) + (pushnew :mysql-client-v3 cl:*features*)) + ((eql (schar version 0) #\4) + (pushnew :mysql-client-v4 cl:*features*)) + (t + (error "Unknown mysql client version '~A'." version))))) + +;;#-(or :mysql-client-v3 :mysql-client-v4) +;;(eval-when (:compile-toplevel :load-toplevel :execute) +;; (pushnew :mysql-client-v3 cl:*features*)) + -- 2.34.1