   (if (not (fboundp 'gethash))
       (require 'cl-macs)))
 (defalias 'svn-puthash (if (fboundp 'puthash) 'puthash 'cl-puthash))
+
+;; emacs 21
+(if (fboundp 'line-number-at-pos)
+    (defalias 'svn-line-number-at-pos 'line-number-at-pos)
+  (defun svn-line-number-at-pos (&optional pos)
+    "Return (narrowed) buffer line number at position POS.
+If POS is nil, use current buffer location."
+    (let ((opoint (or pos (point))) start)
+      (save-excursion
+        (goto-char (point-min))
+        (setq start (point))
+        (goto-char opoint)
+        (forward-line 0)
+        (1+ (count-lines start (point)))))))
 
 ; xemacs
 ;; Evaluate the defsubst at compile time, so that the byte compiler


See `svn-status-message' for the meaning of values for that variable.")

(defvar svn-bookmark-list "A list of locations for a quick access via `svn-status-via-bookmark'" nil)
;;(setq svn-bookmark-list '(("proj1" . "~/work/proj1")
;;                          ("doc1" . "~/docs/doc1")))


        if (listp item) nconc (svn-status-flatten-list item)
        else collect item))

(defun svn-status-window-line-position ()
  "Return the window line at point."
  (count-lines (window-start) (point)))

;;;###autoload
(defun svn-checkout (repos-url path)
