* net/zeroconf.el (zeroconf-service-remove-hook): New defun.
authorMichael Albinus <albinus@detlef>
Sat, 3 Jul 2010 10:52:17 +0000 (12:52 +0200)
committerMichael Albinus <albinus@detlef>
Sat, 3 Jul 2010 10:52:17 +0000 (12:52 +0200)
lisp/ChangeLog
lisp/net/zeroconf.el

index e791d21..50de27e 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-03  Jan Moringen  <jan.moringen@uni-bielefeld.de>
+
+       * net/zeroconf.el (zeroconf-service-remove-hook): New defun.
+
 2010-06-30  Dan Nicolaescu  <dann@ics.uci.edu>
 
        Avoid displaying files with a nil state in vc-dir.
index b0b98fc..43719aa 100644 (file)
@@ -336,6 +336,23 @@ The attributes of SERVICE can be retrieved via the functions
       (puthash type l-hook zeroconf-service-removed-hooks-hash)))
    (t (error "EVENT must be either `:new' or `:removed'"))))
 
+(defun zeroconf-service-remove-hook (type event function)
+  "Remove FUNCTION from the hook of service type TYPE.
+
+EVENT must be either :new or :removed and has to match the event
+type used when registering FUNCTION."
+  (let* ((table (cond
+                ((equal event :new)
+                 zeroconf-service-added-hooks-hash)
+                ((equal event :removed)
+                 zeroconf-service-removed-hooks-hash)
+                (t (error "EVENT must be either `:new' or `:removed'"))))
+        (l-hook (gethash type table nil)))
+    (remove-hook 'l-hook function)
+    (if l-hook
+       (puthash type l-hook table)
+      (remhash type table))))
+
 (defun zeroconf-get-host ()
   "Returns the local host name as string."
   (dbus-call-method