Function: url-dav-lock-resource
url-dav-lock-resource is a byte-compiled function defined in
url-dav.el.gz.
Signature
(url-dav-lock-resource URL EXCLUSIVE &optional DEPTH)
Documentation
Request a lock on URL. If EXCLUSIVE is non-nil, get an exclusive lock.
Optional 3rd argument DEPTH says how deep the lock should go, default is 0
(lock only the resource and none of its children).
Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS). SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken). FAILURE-RESULTS is a list of (URL STATUS).
Source Code
;; Defined in /usr/src/emacs/lisp/url/url-dav.el.gz
(defun url-dav-lock-resource (url exclusive &optional depth)
"Request a lock on URL. If EXCLUSIVE is non-nil, get an exclusive lock.
Optional 3rd argument DEPTH says how deep the lock should go, default is 0
\(lock only the resource and none of its children).
Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS).
SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken).
FAILURE-RESULTS is a list of (URL STATUS)."
(setq exclusive (if exclusive "<DAV:exclusive/>" "<DAV:shared/>"))
(let* ((body
(concat
" <DAV:lockscope>" exclusive "</DAV:lockscope>\n"
" <DAV:locktype> <DAV:write/> </DAV:locktype>\n"
" <DAV:owner>\n"
" <DAV:href>" url-dav-lock-identifier "</DAV:href>\n"
" </DAV:owner>\n"))
(response nil) ; Responses to the LOCK request
(result nil) ; For walking thru the response list
;; (child-url nil)
(child-status nil)
(failures nil) ; List of failure cases (URL . STATUS)
(successes nil)) ; List of success cases (URL . STATUS)
(setq response (url-dav-request url "LOCK" 'DAV:lockinfo body
depth '(("Timeout" . "Infinite"))))
;; Get the parent URL ready for expand-file-name
(if (not (url-p url))
(setq url (url-generic-parse-url url)))
;; Walk thru the response list, fully expand the URL, and grab the
;; status code.
(while response
(setq result (pop response)
;; child-url (url-expand-file-name (pop result) url)
child-status (or (plist-get result 'DAV:status) 500))
(if (url-dav-http-success-p child-status)
(push (list url child-status "huh") successes)
(push (list url child-status) failures)))
(cons successes failures)))