diff -ur --exclude '*~' --exclude '*.fasl' archive_0.6.0.orig/archive.asd archive_0.6.0/archive.asd
--- archive_0.6.0.orig/archive.asd	2006-09-11 20:31:34.000000000 -0500
+++ archive_0.6.0/archive.asd	2007-07-21 15:58:20.000000000 -0500
@@ -23,3 +23,10 @@
                (:static-file "TODO")
                (:static-file "NEWS")
                (:static-file "LICENSE")))
+
+(defmethod perform :around ((o compile-op) (c (eql (find-system 'archive))))
+  (let ((use-sb-posix #+(and sbcl (not win32)) t))
+    (if use-sb-posix
+	(let ((*features* (cons :use-sb-posix *features*)))
+	  (call-next-method))
+	(call-next-method))))
\ No newline at end of file
diff -ur --exclude '*~' --exclude '*.fasl' archive_0.6.0.orig/archive.lisp archive_0.6.0/archive.lisp
--- archive_0.6.0.orig/archive.lisp	2006-09-08 16:29:18.000000000 -0500
+++ archive_0.6.0/archive.lisp	2007-07-21 16:06:04.000000000 -0500
@@ -62,6 +62,7 @@
 
 (defmethod write-entry-to-archive :before ((archive archive) entry
                                            &key stream)
+  (declare (ignore stream))
   (unless (eq (%archive-direction archive) :output)
     (error "Attempting to write to a non-output archive")))
 
diff -ur --exclude '*~' --exclude '*.fasl' archive_0.6.0.orig/compat.lisp archive_0.6.0/compat.lisp
--- archive_0.6.0.orig/compat.lisp	2007-02-01 20:06:27.000000000 -0600
+++ archive_0.6.0/compat.lisp	2007-07-21 15:58:38.000000000 -0500
@@ -3,10 +3,10 @@
 (in-package :archive)
 
 (defconstant +permissions-mask+ 
-  #+sbcl (logior sb-posix:s-irusr sb-posix:s-iwusr sb-posix:s-ixusr
-                 sb-posix:s-irgrp sb-posix:s-iwgrp sb-posix:s-ixgrp
-                 sb-posix:s-iroth sb-posix:s-iwoth sb-posix:s-ixoth)
-  #-sbcl 511)
+  #+use-sb-posix (logior sb-posix:s-irusr sb-posix:s-iwusr sb-posix:s-ixusr
+			 sb-posix:s-irgrp sb-posix:s-iwgrp sb-posix:s-ixgrp
+			 sb-posix:s-iroth sb-posix:s-iwoth sb-posix:s-ixoth)
+  #-use-sb-posix 511)
 
 ;;; CMUCL returns multiple values from UNIX:UNIX-STAT.  We need to
 ;;; package these up into something to which we can repeatedly reference.
diff -ur --exclude '*~' --exclude '*.fasl' archive_0.6.0.orig/cpio.lisp archive_0.6.0/cpio.lisp
--- archive_0.6.0.orig/cpio.lisp	2007-02-01 20:34:13.000000000 -0600
+++ archive_0.6.0/cpio.lisp	2007-07-21 16:04:28.000000000 -0500
@@ -57,7 +57,7 @@
   (isdir (mode entry)))
 
 (defmethod entry-symbolic-link-p ((entry cpio-entry))
-  (islnk (mode entry)))
+  (islink (mode entry)))
 
 (defmethod entry-character-device-p ((entry cpio-entry))
   (ischarfile (mode entry)))
diff -ur --exclude '*~' --exclude '*.fasl' archive_0.6.0.orig/tar.lisp archive_0.6.0/tar.lisp
--- archive_0.6.0.orig/tar.lisp	2007-02-01 20:29:46.000000000 -0600
+++ archive_0.6.0/tar.lisp	2007-07-21 16:00:28.000000000 -0500
@@ -235,18 +235,20 @@
           finally (return-from null-block-p t))))
 
 (defparameter *modefuns-to-typeflags*
-  #+sbcl (list (cons #'sb-posix::s-isreg +tar-regular-file+)
-               (cons #'sb-posix::s-isdir +tar-directory-file+)
-               (cons #'sb-posix::s-ischr +tar-character-device+)
-               (cons #'sb-posix::s-isblk +tar-block-device+)
-               (cons #'sb-posix::s-isfifo +tar-fifo-device+)
-               (cons #'sb-posix::s-islnk +tar-symbolic-link+))
-  #-sbcl (list (cons 'isreg +tar-regular-file+)
-               (cons 'isdir +tar-directory-file+)
-               (cons 'ischarfile +tar-character-device+)
-               (cons 'isblockfile +tar-block-device+)
-               (cons 'isfifo +tar-fifo-device+)
-               (cons 'islink +tar-symbolic-link+)))
+  #+use-sb-posix
+  (list (cons #'sb-posix::s-isreg +tar-regular-file+)
+	(cons #'sb-posix::s-isdir +tar-directory-file+)
+	(cons #'sb-posix::s-ischr +tar-character-device+)
+	(cons #'sb-posix::s-isblk +tar-block-device+)
+	(cons #'sb-posix::s-isfifo +tar-fifo-device+)
+	(cons #'sb-posix::s-islnk +tar-symbolic-link+))
+  #-use-sb-posix
+  (list (cons 'isreg +tar-regular-file+)
+	(cons 'isdir +tar-directory-file+)
+	(cons 'ischarfile +tar-character-device+)
+	(cons 'isblockfile +tar-block-device+)
+	(cons 'isfifo +tar-fifo-device+)
+	(cons 'islink +tar-symbolic-link+)))
 
 (defun typeflag-for-mode (mode)
   (loop for (modefun . typeflag) in *modefuns-to-typeflags*

