   (if (<= level svn-status-debug-level)
       (apply 'message args)))
 
-;; taken from esh-util: eshell-for
-(defmacro svn-status-for (for-var for-list &rest forms)
-  "Iterate through a list"
-  `(let ((list-iter ,for-list))
-     (while list-iter
-       (let ((,for-var (car list-iter)))
-         ,@forms)
-       (setq list-iter (cdr list-iter)))))
-(put 'svn-status-for 'lisp-indent-function 2)
-
-;; taken from esh-util: eshell-flatten-list
-(defun svn-status-flatten-list (args)
+(defun svn-status-flatten-list (list)
   "Flatten any lists within ARGS, so that there are no sublists."
-  (let ((new-list (list t)))
-    (svn-status-for a args
-      (if (and (listp a)
-               (listp (cdr a)))
-          (nconc new-list (svn-status-flatten-list a))
-        (nconc new-list (list a))))
-    (cdr new-list)))
+  (loop for item in list
+	if (listp item) nconc (svn-status-flatten-list item)
+	else collect item))
 
 (defvar svn-status-display-new-status-buffer nil)
 ;;;###autoload

(defvar svn-log-edit-mode-hook nil "Hook run when entering `svn-log-edit-mode'.")
(defvar svn-log-edit-done-hook nil "Hook run after commiting files via svn.")

(defvar svn-status-wash-control-M-in-process-buffers
  (eq system-type 'windows-nt)
  "*Remove any trailing ^M from the *svn-process* buffer.")

;; is run. Currently you have to toggle this variable manually.
;; This buffer uses svn-status mode in which the following keys are defined:
;; g     - svn-status-update:               run 'svn status -v'
;; M-s   - svn-status-update:               run 'svn status -v'
;; C-u g - svn-status-update:               run 'svn status -vu'
;; =     - svn-status-show-svn-diff         run 'svn diff'
;; l     - svn-status-show-svn-log          run 'svn log'
