unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Chong Yidong <cyd@stupidchicken.com>
Subject: Fixing url-ldap.el
Date: Fri, 08 Apr 2005 22:34:09 -0700	[thread overview]
Message-ID: <m18y3sms32.fsf@partenope.stanford.edu> (raw)

This patch should fix the entry "Fix up url-ldap.el" in FOR-RELEASE.
Could someone review it?

*** c:/home/emacs/lisp/url/url-ldap.el~	Sat Apr  9 11:22:56 2005
--- c:/home/emacs/lisp/url/url-ldap.el	Sat Apr  9 13:34:55 2005
***************
*** 1,5 ****
  ;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code
! ;; Copyright (c) 1998 - 1999, 2004 Free Software Foundation, Inc.
  
  ;; Keywords: comm, data, processes
  
--- 1,5 ----
  ;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code
! ;; Copyright (c) 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
  
  ;; Keywords: comm, data, processes
  
***************
*** 112,121 ****
    (format "<img alt='JPEG Photo' src='data:image/jpeg;base64,%s'>"
  	  (url-hexify-string (base64-encode-string data))))
  
- ;; FIXME: This needs sorting out for the Emacs LDAP functions, specifically
- ;; calls of ldap-open, ldap-close, ldap-search-internal
  ;;;###autoload
  (defun url-ldap (url)
    (save-excursion
      (set-buffer (generate-new-buffer " *url-ldap*"))
      (setq url-current-object url)
--- 112,126 ----
    (format "<img alt='JPEG Photo' src='data:image/jpeg;base64,%s'>"
  	  (url-hexify-string (base64-encode-string data))))
  
  ;;;###autoload
  (defun url-ldap (url)
+   "Perform the LDAP search specified by URL, and display the result.
+ URL can be a URL string, or a URL vector of the type returned by
+ `url-generic-parse-url'."
+   (if (stringp url)
+       (setq url (url-generic-parse-url (url-unhex-string url)))
+     (if (not (vectorp url))
+         (error "Argument is not a valid URL")))
    (save-excursion
      (set-buffer (generate-new-buffer " *url-ldap*"))
      (setq url-current-object url)
***************
*** 142,151 ****
  	     (scope nil)
  	     (filter nil)
  	     (extensions nil)
! 	     (connection nil)
! 	     (results nil)
! 	     (extract-dn (and (fboundp 'function-max-args)
! 			      (= (function-max-args 'ldap-search-internal) 7))))
  
  	;; Get rid of leading /
  	(if (string-match "^/" data)
--- 147,153 ----
  	     (scope nil)
  	     (filter nil)
  	     (extensions nil)
! 	     (results nil))
  
  	;; Get rid of leading /
  	(if (string-match "^/" data)
***************
*** 163,169 ****
  	      scope (intern (url-unhex-string (or scope "base")))
  	      filter (url-unhex-string (or filter "(objectClass=*)")))
  
! 	(if (not (memq scope '(base one tree)))
  	    (error "Malformed LDAP URL: Unknown scope: %S" scope))
  
  	;; Convert to the internal LDAP support scoping names.
--- 165,171 ----
  	      scope (intern (url-unhex-string (or scope "base")))
  	      filter (url-unhex-string (or filter "(objectClass=*)")))
  
! 	(if (not (memq scope '(base one sub)))
  	    (error "Malformed LDAP URL: Unknown scope: %S" scope))
  
  	;; Convert to the internal LDAP support scoping names.
***************
*** 188,199 ****
  				   (assoc "!bindname" extensions))))
      
  	;; Now, let's actually do something with it.
! 	(setq connection (ldap-open host (if binddn (list 'binddn binddn)))
! 	      results (if extract-dn
! 			  (ldap-search-internal connection filter base-object scope attributes nil t)
! 			(ldap-search-internal connection filter base-object scope attributes nil)))
! 		      
! 	(ldap-close connection)
  	(insert "<html>\n"
  		" <head>\n"
  		"  <title>LDAP Search Results</title>\n"
--- 190,203 ----
  				   (assoc "!bindname" extensions))))
      
  	;; Now, let's actually do something with it.
! 	(setq results (ldap-search-internal
! 		       (list 'host (concat host ":" (number-to-string port))
! 			     'base base-object
! 			     'attributes attributes
! 			     'scope scope
! 			     'filter filter
! 			     'binddn binddn)))
! 
  	(insert "<html>\n"
  		" <head>\n"
  		"  <title>LDAP Search Results</title>\n"
***************
*** 205,212 ****
  	(mapc (lambda (obj)
  		(insert "  <hr>\n"
  			"  <table border=1>\n")
- 		(if extract-dn
- 		    (insert "   <tr><th colspan=2>" (car obj) "</th></tr>\n"))
  		(mapc (lambda (attr)
  			(if (= (length (cdr attr)) 1)
  			    ;; single match, easy
--- 209,214 ----
***************
*** 225,231 ****
  					     "<br>\n")
  				  "</td>"
  				  "   </tr>\n")))
! 		      (if extract-dn (cdr obj) obj))
  		(insert "  </table>\n"))
  	      results)
  
--- 227,233 ----
  					     "<br>\n")
  				  "</td>"
  				  "   </tr>\n")))
!                       obj)
  		(insert "  </table>\n"))
  	      results)

             reply	other threads:[~2005-04-09  5:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-09  5:34 Chong Yidong [this message]
2005-04-09 14:25 ` Fixing url-ldap.el Stefan Monnier
  -- strict thread matches above, loose matches on Subject: below --
2005-04-09 16:53 Chong Yidong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m18y3sms32.fsf@partenope.stanford.edu \
    --to=cyd@stupidchicken.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).