Lots of functions missing in various interfaces

This commit is contained in:
eknauel 2004-02-10 15:28:34 +00:00
parent 1221026d00
commit 02f0884023
3 changed files with 111 additions and 54 deletions

View File

@ -1,14 +1,44 @@
(define-interface ldap-low-interface (define-interface ldap-low-interface
(export (export
ldap-open
ldap-init ldap-init
ldap-bind-sync ldap-simple-bind
ldap-unbind-sync ldap-sasl-bind
ldap-error-string ldap-unbind
ldap-result-error)) ldap-search
set-ldap-session-option!
ldap-session-option
ldap-first-message
ldap-next-message
ldap-count-messages
ldap-get-message-type
ldap-get-message-id
ldap-first-attribute
ldap-next-attribute
ldap-all-attributes
ldap-get-values
ldap-compare
ldap-message-dn
ldap-explode-dn
ldap-explode-rdn
ldap-make-dn-userfriendly
ldap-count-entries
ldap-first-entry
ldap-next-entry
ldap-count-references
ldap-first-reference
ldap-next-reference))
(define-interface ldap-conditions-interface (define-interface ldap-conditions-interface
(export (export
raise-ldap-condition
&ldap-error ldap-error? ldap-error-code ldap-error-session &ldap-error ldap-error? ldap-error-code ldap-error-session
&ldap-security-error ldap-security-error? &ldap-security-error ldap-security-error?
&ldap-service-error ldap-service-error? &ldap-service-error ldap-service-error?
@ -16,8 +46,8 @@
&ldap-bindings-internal-error ldap-bindings-internal-error? &ldap-bindings-internal-error ldap-bindings-internal-error?
&ldap-bindings-not-implemented ldap-bindings-not-implemented? &ldap-bindings-not-implemented ldap-bindings-not-implemented?
&ldap-session-option-error ldap-session-option-error?
&ldap-implicit-unbind ldap-implicit-unbind? &ldap-implicit-unbind ldap-implicit-unbind?
&ldap-session-option-error ldap-session-option-error?
&ldap-operations-error ldap-operations-error? &ldap-operations-error ldap-operations-error?
&ldap-protocol-error ldap-protocol-error? &ldap-protocol-error ldap-protocol-error?
&ldap-timelimit-exceeded ldap-timelimit-exceeded? &ldap-timelimit-exceeded ldap-timelimit-exceeded?
@ -69,6 +99,11 @@
(define-interface ldap-handle-types-interface (define-interface ldap-handle-types-interface
(export (export
ldap-session? ldap-session?
ldap-session-bound?
set-ldap-session-bound?!
ldap-session-options
ldap-session-messages
ldap-message? ldap-message?
ldap-modification? ldap-modification?
@ -77,14 +112,24 @@
ldap-api-info-api-version ldap-api-info-api-version
ldap-api-info-protocol-version ldap-api-info-protocol-version
ldap-api-info-vendor-name ldap-api-info-vendor-name
ldap-api-info-vendor-version)) ldap-api-info-vendor-version
make-session-options
set-ldap-session-options!
ldap-session-implicit-unbind-ok?
ldap-session-auto-unbind?
ldap-session-messages-adjoin!))
(define-interface ldap-return-interface (define-interface ldap-return-interface
(export (export
ldap-return-object? ldap-return-object?
ldap-return-elements ldap-return-elements
ldap-return-name ldap-return-name
(ldap-return :syntax))) (ldap-return :syntax)
convert-ldap-return-code
ldap-success?))
(define-interface ldap-option-version-interface (define-interface ldap-option-version-interface
(export (export
@ -98,6 +143,7 @@
ldap-scope-arguments-object? ldap-scope-arguments-object?
ldap-scope-arguments-elements ldap-scope-arguments-elements
ldap-scope-arguments-name ldap-scope-arguments-name
ldap-scope-arguments-id
(ldap-scope-arguments :syntax))) (ldap-scope-arguments :syntax)))
(define-interface ldap-session-option-values-interface (define-interface ldap-session-option-values-interface
@ -105,6 +151,7 @@
ldap-session-option-value-object? ldap-session-option-value-object?
ldap-session-option-value-elements ldap-session-option-value-elements
ldap-session-option-value-name ldap-session-option-value-name
ldap-session-option-value-id
(ldap-session-option-value :syntax))) (ldap-session-option-value :syntax)))
(define-interface ldap-message-types-interface (define-interface ldap-message-types-interface
@ -112,7 +159,8 @@
ldap-message-types-object? ldap-message-types-object?
ldap-message-types-elements ldap-message-types-elements
ldap-message-types-name ldap-message-types-name
(ldap-message-types :syntax))) (ldap-message-types :syntax)
convert-ldap-message-type))
(define-interface ldap-attributes-special-values-interfaces (define-interface ldap-attributes-special-values-interfaces
(export (export

View File

@ -1,4 +1,3 @@
; ,open define-record-types external-calls
(import-lambda-definition ldap-session-free (import-lambda-definition ldap-session-free
(session) (session)
@ -7,7 +6,7 @@
(define (ldap-session-finalizer session) (define (ldap-session-finalizer session)
(if (ldap-session-bound? session) (if (ldap-session-bound? session)
(if (not (ldap-session-implicit-unbind-ok? session)) (if (not (ldap-session-implicit-unbind-ok? session))
(raise (condition (ldap-implicit-unbind (session session)))) (raise (condition (&ldap-implicit-unbind (session session))))
(if (ldap-session-auto-unbind? session) (if (ldap-session-auto-unbind? session)
(ldap-unbind session))))) (ldap-unbind session)))))
@ -35,11 +34,11 @@
(define (ldap-simple-bind session user password) (define (ldap-simple-bind session user password)
(let ((ret-obj (let ((ret-obj
(ldap-return (convert-ldap-return-code
(ldap-simple-bind-internal session user password)))) (ldap-simple-bind-internal session user password))))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
(set-ldap-session-bound?! session #t) (set-ldap-session-bound?! session #t)
(raise-ldap-error ret-obj session)))) (raise-ldap-condition ret-obj session))))
;;; SASL_BIND_S ;;; SASL_BIND_S
@ -50,7 +49,7 @@
(define (ldap-sasl-bind session dn mechanism cred (define (ldap-sasl-bind session dn mechanism cred
server-controls client-controls server-controls client-controls
credentials) credentials)
(raise (condition (ldap-bindings-not-implemented (raise (condition (&ldap-bindings-not-implemented
(what '(ldap-sasl-bind ldap-controls)))))) (what '(ldap-sasl-bind ldap-controls))))))
;;; UNBIND_S ;;; UNBIND_S
@ -60,10 +59,11 @@
"scsh_ldap_unbind_s") "scsh_ldap_unbind_s")
(define (ldap-unbind session) (define (ldap-unbind session)
(let ((ret-obj (ldap-return (ldap-unbind-internal session)))) (let ((ret-obj
(convert-ldap-return-code (ldap-unbind-internal session))))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
(set-ldap-session-bound?! ldap #f) (set-ldap-session-bound?! session #f)
(raise-ldap-error ret-obj session)))) (raise-ldap-condition ret-obj session))))
;;; SEARCH_S and SEARCH_ST ;;; SEARCH_S and SEARCH_ST
@ -91,7 +91,7 @@
(define (ldap-search session base scope filter attribute-list attributes-only? . args) (define (ldap-search session base scope filter attribute-list attributes-only? . args)
(let-optionals args ((timeout-seconds #f) (timeout-microseconds #f)) (let-optionals args ((timeout-seconds #f) (timeout-microseconds #f))
(let ((scope-id (ldap-scope-id scope)) (let ((scope-id (ldap-scope-arguments-id scope))
(attr-list (ldap-attribute-list-kludge attribute-list))) (attr-list (ldap-attribute-list-kludge attribute-list)))
(call-with-values (call-with-values
(lambda () (lambda ()
@ -103,13 +103,14 @@
session base scope filter attr-list attributes-only? session base scope filter attr-list attributes-only?
timeout-seconds (or timeout-microseconds 0))))) timeout-seconds (or timeout-microseconds 0)))))
(lambda (ret-code message) (lambda (ret-code message)
(let ((ret-obj (ldap-return ret-code))) (let ((ret-obj
(convert-ldap-return-code ret-code)))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
(begin (begin
(ldap-session-messages-adjoin! session message) (ldap-session-messages-adjoin! session message)
(add-finalizer! message ldap-message-finalizer) (add-finalizer! message ldap-message-finalizer)
message) message)
(raise-ldap-error ret-obj session)))))))) (raise-ldap-condition ret-obj session))))))))
;;; GET/SET session options ;;; GET/SET session options
@ -122,7 +123,7 @@
(lambda () (lambda ()
(apply values (apply values
(ldap-get-set-option-internal (ldap-get-set-option-internal
session (ldap-session-options-id session-option) #t value))) session (ldap-session-option-value-id session-option) #t value)))
(lambda (call-successful? result) (lambda (call-successful? result)
(if call-successful? (if call-successful?
result result
@ -134,7 +135,7 @@
(lambda () (lambda ()
(apply values (apply values
(ldap-get-set-option-internal (ldap-get-set-option-internal
session (ldap-session-options-id session-option) #f #f))) session (ldap-session-option-value-id session-option) #f #f)))
(lambda (call-successful? result) (lambda (call-successful? result)
(if call-successful? (if call-successful?
result result
@ -148,9 +149,8 @@
"scsh_ldap_error_string") "scsh_ldap_error_string")
(define (ldap-get-error-return-object session) (define (ldap-get-error-return-object session)
(ldap-return (ldap-session-option session
(ldap-session-option (ldap-session-option-value error-number)))
session (ldap-session-option error-number))))
;;; FIRST/NEXT_MESSAGE, COUNT_MESSAGES ;;; FIRST/NEXT_MESSAGE, COUNT_MESSAGES
@ -160,7 +160,7 @@
(define (ldap-first-message session message) (define (ldap-first-message session message)
(or (ldap-first-message-internal session message) (or (ldap-first-message-internal session message)
(raise-ldap-error (raise-ldap-condition
(ldap-get-error-return-object session) session))) (ldap-get-error-return-object session) session)))
(import-lambda-definition ldap-next-message-internal (import-lambda-definition ldap-next-message-internal
@ -169,7 +169,7 @@
(define (ldap-next-message session message) (define (ldap-next-message session message)
(or (ldap-next-message-internal session message) (or (ldap-next-message-internal session message)
(raise-ldap-error (raise-ldap-condition
(ldap-get-error-return-object session) session))) (ldap-get-error-return-object session) session)))
(import-lambda-definition ldap-count-messages-internal (import-lambda-definition ldap-count-messages-internal
@ -179,7 +179,7 @@
(define (ldap-count-messages session message) (define (ldap-count-messages session message)
(let ((ret (ldap-count-messages-internal session message))) (let ((ret (ldap-count-messages-internal session message)))
(or ret (or ret
(raise-ldap-error (ldap-get-error-return-object session) session)))) (raise-ldap-condition (ldap-get-error-return-object session) session))))
;;; ;;;
@ -190,9 +190,9 @@
(define (ldap-get-message-type session message) (define (ldap-get-message-type session message)
(cond (cond
((ldap-get-message-type-internal message) ((ldap-get-message-type-internal message)
=> (lambda (code) (ldap-message-type code))) => (lambda (code) (convert-ldap-message-type code)))
(else (else
(raise-ldap-error (ldap-get-error-return-object session) session)))) (raise-ldap-condition (ldap-get-error-return-object session) session))))
;;; ;;;
@ -201,8 +201,8 @@
"scsh_ldap_msgid") "scsh_ldap_msgid")
(define (ldap-get-message-id session message) (define (ldap-get-message-id session message)
(or (ldap-get-message-id-internal message) (or (ldap-message-id-internal message)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
;;; ;;;
@ -231,14 +231,14 @@
(begin (begin
(add-finalizer! ber-element ber-element-finalizer) (add-finalizer! ber-element ber-element-finalizer)
(values attribute-name ber-element)) (values attribute-name ber-element))
(raise-ldap-error (ldap-get-error-return-object session) session))))) (raise-ldap-condition (ldap-get-error-return-object session) session)))))
(define (ldap-next-attribute session entry ber-element) (define (ldap-next-attribute session entry ber-element)
(or (ldap-next-attribute-internal session entry ber-element) (or (ldap-next-attribute-internal session entry ber-element)
(let ((ret-obj (ldap-get-error-return-object session))) (let ((ret-obj (ldap-get-error-return-object session)))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
#f #f
(raise-ldap-error ret-obj session))))) (raise-ldap-condition ret-obj session)))))
(define (ldap-all-attributes session entry) (define (ldap-all-attributes session entry)
(call-with-values (call-with-values
@ -260,7 +260,7 @@
(define (ldap-get-values session entry attribute-name) (define (ldap-get-values session entry attribute-name)
(or (ldap-get-values-internal session entry attribute-name) (or (ldap-get-values-internal session entry attribute-name)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
;;; ;;;
@ -270,12 +270,12 @@
(define (ldap-compare session dn attribute value) (define (ldap-compare session dn attribute value)
(let ((ret-obj (let ((ret-obj
(ldap-return (convert-ldap-return-code
(ldap-compare-internal session dn attribute value)))) (ldap-compare-internal session dn attribute value))))
(if (or (equal? (ldap-return compare-true) ret-obj) (if (or (equal? (ldap-return compare-true) ret-obj)
(equal? (ldap-return compare-false) ret-obj)) (equal? (ldap-return compare-false) ret-obj))
(equal? (ldap-return compare-true) ret-obj) (equal? (ldap-return compare-true) ret-obj)
(raise-ldap-error ret-obj session)))) (raise-ldap-condition ret-obj session))))
;;; ;;;
@ -285,7 +285,7 @@
(define (ldap-message-dn session entry) (define (ldap-message-dn session entry)
(or (ldap-get-dn-internal session entry) (or (ldap-get-dn-internal session entry)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
;;; ;;;
@ -295,7 +295,7 @@
(define (ldap-explode-dn session dn no-types?) (define (ldap-explode-dn session dn no-types?)
(or (ldap-explode-dn-internal dn no-types?) (or (ldap-explode-dn-internal dn no-types?)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
;;; ;;;
@ -305,7 +305,7 @@
(define (ldap-explode-rdn session dn no-types?) (define (ldap-explode-rdn session dn no-types?)
(or (ldap-explode-rdn-internal dn no-types?) (or (ldap-explode-rdn-internal dn no-types?)
(raise-ldap-error (ldap-get-error-return-object session dn no-types?)))) (raise-ldap-condition (ldap-get-error-return-object session dn no-types?))))
;;; ;;;
@ -315,7 +315,7 @@
(define (ldap-make-dn-userfriendly session dn) (define (ldap-make-dn-userfriendly session dn)
(or (ldap-dn2ufn-internal dn) (or (ldap-dn2ufn-internal dn)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
;;; ;;;
@ -333,7 +333,7 @@
(define (ldap-count-entries session message) (define (ldap-count-entries session message)
(or (ldap-count-entries-internal session message) (or (ldap-count-entries-internal session message)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
(define (ldap-first-entry session message) (define (ldap-first-entry session message)
(cond (cond
@ -345,7 +345,7 @@
(let ((ret-obj (ldap-get-error-return-object session))) (let ((ret-obj (ldap-get-error-return-object session)))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
#f #f
(raise-ldap-error ret-obj session)))))) (raise-ldap-condition ret-obj session))))))
(define (ldap-next-entry session message) (define (ldap-next-entry session message)
(cond (cond
@ -357,7 +357,7 @@
(let ((ret-obj (ldap-get-error-return-object session))) (let ((ret-obj (ldap-get-error-return-object session)))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
#f #f
(raise-ldap-error ret-obj session)))))) (raise-ldap-condition ret-obj session))))))
;;; ;;;
@ -375,7 +375,7 @@
(define (ldap-count-references session message) (define (ldap-count-references session message)
(or (ldap-count-references-internal session message) (or (ldap-count-references-internal session message)
(raise-ldap-error (ldap-get-error-return-object session) session))) (raise-ldap-condition (ldap-get-error-return-object session) session)))
(define (ldap-first-reference session message) (define (ldap-first-reference session message)
(cond (cond
@ -387,7 +387,7 @@
(let ((ret-obj (ldap-get-error-return-object session))) (let ((ret-obj (ldap-get-error-return-object session)))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
#f #f
(raise-ldap-error ret-obj session)))))) (raise-ldap-condition ret-obj session))))))
(define (ldap-next-reference session message) (define (ldap-next-reference session message)
(cond (cond
@ -399,7 +399,7 @@
(let ((ret-obj (ldap-get-error-return-object session))) (let ((ret-obj (ldap-get-error-return-object session)))
(if (ldap-success? ret-obj) (if (ldap-success? ret-obj)
#f #f
(raise-ldap-error ret-obj session)))))) (raise-ldap-condition ret-obj session))))))
;;; ;;;
@ -407,6 +407,17 @@
(session dn ldap-modification-vector) (session dn ldap-modification-vector)
"scsh_ldap_modify") "scsh_ldap_modify")
(define (ldap-modify session dn ldap-modifications)
(let ((vec (if (list? ldap-modifications)
(list->vector ldap-modifications)
(vector ldap-modifications))))
(let ((ret-obj
(convert-ldap-return-code (ldap-modify-internal session dn vec))))
(or (ldap-success? ret-obj)
(raise-ldap-condition ret-obj session)))))
;;;
(import-lambda-definition ldap-add-internal (import-lambda-definition ldap-add-internal
(session dn ldap-modification-vector) (session dn ldap-modification-vector)
"scsh_ldap_add") "scsh_ldap_add")
@ -419,9 +430,3 @@
(session message-id) (session message-id)
"scsh_ldap_abandon") "scsh_ldap_abandon")
;;; import functions from C
(define c-value->ldap-success
(make-finite-type-import-function
'ldap-success ldap-success-elements ldap-success-id))

View File

@ -3,8 +3,12 @@
define-record-types define-record-types
primitives primitives
external-calls external-calls
let-opt
srfi-34 srfi-35 srfi-34 srfi-35
ffi-tools-rts) ffi-tools-rts
ldap-conditions
ldap-types)
(files ldap)) (files ldap))
(define-structure ldap-types ldap-types-interface (define-structure ldap-types ldap-types-interface