;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; made to achieve compatibility with OpenLDAP v2 and to make it
;; possible to retrieve LDAP attributes that are tagged ie ";binary".
-;; When Gnus drops support for Emacs 21.x this file can be removed and
-;; smime.el changed to
-
-;; - (require 'smime-ldap) => (require 'ldap)
-;; - (smime-ldap-search ...) => (ldap-search ...)
-
-;; If we are running in Emacs 22 or newer it just uses the build-in
-;; version of ldap-search.
+;; The file also adds a compatibility layer for Emacs and XEmacs.
;;; Code:
Additional search parameters can be specified through
`ldap-host-parameters-alist', which see."
(interactive "sFilter:")
- (if (>= emacs-major-version 22)
- (ldap-search filter host attributes attrsonly)
- (or host
- (setq host ldap-default-host)
- (error "No LDAP host specified"))
- (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
- result)
- (setq result (smime-ldap-search-internal
- (append host-plist
- (list 'host host
- 'filter filter
- 'attributes attributes
- 'attrsonly attrsonly
- 'withdn withdn))))
- (if ldap-ignore-attribute-codings
- result
- (mapcar (function
- (lambda (record)
- (mapcar 'ldap-decode-attribute record)))
- result)))))
+ ;; for XEmacs
+ (if (fboundp 'ldap-search-entries)
+ (ldap-search-entries filter host attributes attrsonly)
+ ;; for Emacs
+ (cdr (ldap-search filter host attributes attrsonly))))
(defun smime-ldap-search-internal (search-plist)
"Perform a search on a LDAP server.
(equal "" filter))
(error "No search filter"))
(setq filter (cons filter attributes))
- (save-excursion
- (set-buffer buf)
+ (with-current-buffer buf
(erase-buffer)
(if (and host
(not (equal "" host)))
"\\(<[\t ]*file://\\)?\\(.*\\)$"))
(setq name (match-string 1)
value (match-string 4))
- (save-excursion
- (set-buffer bufval)
+ (with-current-buffer bufval
(erase-buffer)
(insert-file-contents-literally value)
(delete-file value)