;;;;
;;;; Date Started: Feb 2002
;;;;
-;;;; $Id: postgresql-socket-api.cl,v 1.11 2002/03/27 11:13:27 kevin Exp $
+;;;; $Id: postgresql-socket-api.cl,v 1.14 2002/04/07 15:10:01 kevin Exp $
;;;;
;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;; and Copyright (c) 1999-2001 by Pierre R. Mai
;;; Support for encrypted password transmission
-(defconstant +crypt-library+ "/usr/lib/libcrypt.so"
- "Name of the shared library to load in order to access the crypt
-function named by `*crypt-function-name*'.")
-
(defvar *crypt-library-loaded* nil)
(defun crypt-password (password salt)
"Encrypt a password for transmission to a PostgreSQL server."
(unless *crypt-library-loaded*
- (uffi:load-foreign-library +crypt-library+ :supporting-libaries '("c"))
- (eval (uffi:def-function "crypt"
- ((key :cstring)
- (salt :cstring))
+ (uffi:load-foreign-library
+ (uffi:find-foreign-library "libcrypt"
+ '("/usr/lib/" "/usr/local/lib/" "/lib/"))
+ :supporting-libaries '("c"))
+ (eval '(uffi:def-function "crypt"
+ ((key :cstring)
+ (salt :cstring))
:returning :cstring))
(setq *crypt-library-loaded* t))
(uffi:with-cstring (password-cstring password)
(uffi:with-cstring (salt-cstring salt)
- (uffi:convert-from-cstring (crypt password-cstring salt-cstring)))))
+ (uffi:convert-from-cstring
+ (funcall (fdefinition 'crypt) password-cstring salt-cstring)))))
;;; Condition hierarchy
(define-condition postgresql-condition (condition)
(defun read-field (socket type)
(let ((length (- (read-socket-value 'int32 socket) 4)))
(case type
- ((:int :long :longlong)
+ ((:int32 :int64)
(read-integer-from-socket socket length))
(:double
(read-double-from-socket socket length))