r9949: delete-directory-and-files update
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 31 Aug 2004 22:30:52 +0000 (22:30 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 31 Aug 2004 22:30:52 +0000 (22:30 +0000)
os.lisp

diff --git a/os.lisp b/os.lisp
index 0861b07b8418ed1f5bb81e25b21dd899f8bc86f9..5b6fff3aa3d90aad02dd8ce57fa88f25c0560f87 100644 (file)
--- a/os.lisp
+++ b/os.lisp
@@ -136,7 +136,15 @@ returns (VALUES output-string pid)"
 
     ))
 
-(defun delete-directory-and-files (dir)
-  #+allegro (excl:delete-directory-and-files dir)
-  #-(or allegro) (warn "delete-directory-and-files not implemented for this platform.")
-  )
+(defun delete-directory-and-files (dir &key (if-does-not-exist :error) (quiet t) force)
+  #+allegro (excl:delete-directory-and-files dir :if-does-not-exist if-does-not-exist
+                                            :quiet quiet :force force)
+  #-(or allegro) (declare (ignore force))
+  #-(or allegro) (cond
+                  ((probe-directory dir)
+                   (let ((cmd (format nil "rm -rf ~A" (namestring dir))))
+                     (unless quiet
+                       (format *trace-output* ";; ~A" cmd))
+                     (command-output cmd)))
+                  ((eq if-does-not-exist :error)
+                   (error "Directory ~A does not exist [delete-directory-and-files]." dir))))