wl*.texi: Add wl-summary-resend, wl-summary-delete.
[elisp/wanderlust.git] / elmo / pldap.el
index 5d90138..1d6d65f 100644 (file)
@@ -509,12 +509,12 @@ DN is the distinguished name of the entry to delete."
                       nil (current-buffer) t
                       (append arglist
                               (list dn))))
-      (if (integerp ret)
-         (if (not (zerop ret))
-             (error (car (split-string (buffer-string) "\n"))))
-       (if (and (setq ret (buffer-string)); Nemacs
-                (string-match "ldap_delete:" ret))
-           (error (car (split-string ret "\n"))))))))
+      (cond ((integerp ret)
+            (or (zerop ret)
+                (error "%s" (car (split-string (buffer-string) "\n")))))
+           ((and (setq ret (buffer-string)); Nemacs
+                 (string-match "ldap_delete:" ret))
+            (error "%s" (car (split-string ret "\n"))))))))
 
 (defmacro ldap/ldif-insert-field (attr value)
   (` (if (not (ldap/ldif-safe-string-p (, value)))
@@ -567,12 +567,12 @@ or `replace'.  ATTR is the LDAP attribute type to modify."
                       ldap-modify-program
                       t t nil
                       arglist))
-      (if (integerp ret)
-         (if (not (zerop ret))
-             (error (car (split-string (buffer-string) "\n"))))
-       (if (and (setq ret (buffer-string)); Nemacs
-                (string-match "ldap_modify:" ret))
-           (error (car (split-string ret "\n"))))))))
+      (cond ((integerp ret)
+            (or (zerop ret)
+                (error "%s" (car (split-string (buffer-string) "\n")))))
+           ((and (setq ret (buffer-string)); Nemacs
+                 (string-match "ldap_modify:" ret))
+            (error "%s" (car (split-string ret "\n"))))))))
 
 (defun ldap-add (ldap dn entry)
   "Add an entry to an LDAP directory.
@@ -607,12 +607,12 @@ containing attribute/value string pairs."
                       ldap-add-program
                       t t nil
                       arglist))
-      (if (integerp ret)
-         (if (not (zerop ret))
-             (error (car (split-string (buffer-string) "\n"))))
-       (if (and (setq ret (buffer-string)) ; Nemacs
-                (string-match "ldap_add:" ret))
-           (error (car (split-string ret "\n"))))))))
+      (cond ((integerp ret)
+            (or (zerop ret)
+                (error "%s" (car (split-string (buffer-string) "\n")))))
+           ((and (setq ret (buffer-string)) ; Nemacs
+                 (string-match "ldap_add:" ret))
+            (error "%s" (car (split-string ret "\n"))))))))
 
 (defun ldap-search-basic (ldap filter base scope
                               &optional attrs attrsonly withdn verbose)
@@ -691,7 +691,10 @@ entry according to the value of WITHDN."
               (not (zerop ret))
               ;; When openldap's `ldapsearch' exceeds response size limit,
               ;; it's exit status becomes `4'.
-               (/= ret 4))
+               (/= ret 4)
+              ;; When openldap's `ldapsearch' uses referral,
+              ;; it's exit status becomes `32'.
+              (/= ret 32))
          (error "LDAP error: \"No such object\""))
       (goto-char (point-min))
       (setq start (point))