diff --git a/find-system.lisp b/find-system.lisp
index 3ecc03b46ce35a5acccb53788bb010a07114bc9c..469affc8c0a193bdecc25ee41b49fe32caebd169 100644
--- a/find-system.lisp
+++ b/find-system.lisp
@@ -174,14 +174,16 @@ Going forward, we recommend new users should be using the source-registry.
                        :truename truename))
           (return file))
         #-(or clisp genera) ; clisp doesn't need it, plain genera doesn't have read-sequence(!)
-        (when (and (os-windows-p) (physical-pathname-p defaults))
-          (let ((shortcut
-                  (make-pathname
-                   :defaults defaults :case :local
-                   :name (strcat name ".asd")
-                   :type "lnk")))
-            (when (probe-file* shortcut)
-              (ensure-pathname (parse-windows-shortcut shortcut) :namestring :native)))))))
+        (os-cond
+         ((os-windows-p)
+          (when (physical-pathname-p defaults)
+            (let ((shortcut
+                    (make-pathname
+                     :defaults defaults :case :local
+                     :name (strcat name ".asd")
+                     :type "lnk")))
+              (when (probe-file* shortcut)
+                (ensure-pathname (parse-windows-shortcut shortcut) :namestring :native)))))))))
 
   (defun sysdef-central-registry-search (system)
     (let ((name (primary-system-name system))
diff --git a/test/asdf-pathname-test.script b/test/asdf-pathname-test.script
index 157ada18710d6116359f7a06d6bad36426058e46..c7c9b9b34cc822b529c62585547e4ae16b61d8a6 100644
--- a/test/asdf-pathname-test.script
+++ b/test/asdf-pathname-test.script
@@ -417,10 +417,7 @@
 
 (defun test-pathname-parsing ()
   #-(or allegro clisp clozure cmu ecl lispworks mkcl sbcl)
-  (progn
-    ;; FIXME: unable to get DBG to load in this file. [2014/11/30:rpg]
-    (format t "Can't test pathname parsing: this lisp lacks SETENV support.")
-    t)
+  (DBG "Can't test pathname parsing: this lisp lacks SETENV support.")
   #+(or allegro clisp clozure cmu ecl lispworks mkcl sbcl)
   (let ((old-config (uiop:getenvp "XDG_CONFIG_DIRS"))
         (old-home-config (uiop:getenvp "XDG_CONFIG_HOME")))
diff --git a/uiop/configuration.lisp b/uiop/configuration.lisp
index c8ebfe88905cd943806162d0e7f53ffe76cc660e..4c5b63090574ee1e385de97ac11d47f52e7c280a 100644
--- a/uiop/configuration.lisp
+++ b/uiop/configuration.lisp
@@ -331,7 +331,8 @@ this function tries to locate the Windows FOLDER for one of
 
   (defun config-system-pathnames (&optional app &rest more)
     "Determine system user configuration directories"
-     (when (os-unix-p) (list (resolve-location `(,(parse-unix-namestring "/etc/") ,app ,more)))))
+    (os-cond
+     ((os-unix-p) (list (resolve-location `(,(parse-unix-namestring "/etc/") ,app ,more))))))
 
   (defun clean-search-pathnames (dirs)
     "Parse strings as unix namestrings and remove duplicates and non absolute-pathnames in a list"
diff --git a/uiop/filesystem.lisp b/uiop/filesystem.lisp
index a8b6f2dac27f0a46d1504d04bed42486c83f0879..5c6e39dcd0e5af5107cb86e3b6923ff02f30daa2 100644
--- a/uiop/filesystem.lisp
+++ b/uiop/filesystem.lisp
@@ -37,8 +37,9 @@
         #+(or cmu scl) (ext:unix-namestring p nil)
         #+sbcl (sb-ext:native-namestring p)
         #-(or clozure cmu sbcl scl)
-        (if (os-unix-p) (unix-namestring p)
-            (namestring p)))))
+        (os-cond
+         ((os-unix-p) (unix-namestring p))
+         (t (namestring p))))))
 
   (defun parse-native-namestring (string &rest constraints &key ensure-directory &allow-other-keys)
     "From a native namestring suitable for use by the operating system, return
@@ -50,9 +51,9 @@ a CL pathname satisfying all the specified constraints as per ENSURE-PATHNAME"
                  #+clozure (ccl:native-to-pathname string)
                  #+sbcl (sb-ext:parse-native-namestring string)
                  #-(or clozure sbcl)
-                 (if (os-unix-p)
-                     (parse-unix-namestring string :ensure-directory ensure-directory)
-                     (parse-namestring string)))))
+                 (os-cond
+                  ((os-unix-p) (parse-unix-namestring string :ensure-directory ensure-directory))
+                  (t (parse-namestring string))))))
            (pathname
              (if ensure-directory
                  (and pathname (ensure-directory-pathname pathname))
@@ -501,7 +502,7 @@ Note that this operation is usually NOT thread-safe."
 (with-upgradability ()
   (defun inter-directory-separator ()
     "What character does the current OS conventionally uses to separate directories?"
-    (if (os-unix-p) #\: #\;))
+    (os-cond ((os-unix-p) #\:) (t #\;)))
 
   (defun split-native-pathnames-string (string &rest constraints &key &allow-other-keys)
     "Given a string of pathnames specified in native OS syntax, separate them in a list,
diff --git a/uiop/pathname.lisp b/uiop/pathname.lisp
index 74177b8e2982185d1d090285aed58e527787b7f2..f56a4ea62de0150cea78cae8a041e2d9b4e5da2e 100644
--- a/uiop/pathname.lisp
+++ b/uiop/pathname.lisp
@@ -656,9 +656,10 @@ given DEFAULTS-PATHNAME as a base pathname."
   (defun directorize-pathname-host-device (pathname)
     "Given a PATHNAME, return a pathname that has representations of its HOST and DEVICE components
 added to its DIRECTORY component. This is useful for output translations."
-    #+(or unix abcl)
-    (when (and #+abcl (os-unix-p) (physical-pathname-p pathname))
-      (return-from directorize-pathname-host-device pathname))
+    (os-cond
+     ((os-unix-p)
+      (when (physical-pathname-p pathname)
+        (return-from directorize-pathname-host-device pathname))))
     (let* ((root (pathname-root pathname))
            (wild-root (wilden root))
            (absolute-pathname (merge-pathnames* pathname root))
diff --git a/uiop/run-program.lisp b/uiop/run-program.lisp
index 7fdaf817f1b656f92aa2e7925883431d4030132e..3bf5222a3bd7f8a00dda6a7bb8c4d847044d0478 100644
--- a/uiop/run-program.lisp
+++ b/uiop/run-program.lisp
@@ -739,7 +739,9 @@ It returns a process-info plist with possible keys:
     (etypecase command
       (string command)
       (list (escape-shell-command
-             (if (os-unix-p) (cons "exec" command) command)))))
+             (os-cond
+              ((os-unix-p) (cons "exec" command))
+              (t command))))))
 
   (defun %redirected-system-command (command in out err directory) ;; helper for %USE-SYSTEM
     (flet ((redirect (spec operator)
@@ -756,14 +758,16 @@ It returns a process-info plist with possible keys:
                        (escape-shell-token (native-namestring pathname)))))))
       (multiple-value-bind (before after)
           (let ((normalized (%normalize-system-command command)))
-            (if (os-unix-p)
-                (values '("exec") (list " ; " normalized))
-                (values (list normalized) ())))
+            (os-cond
+             ((os-unix-p) (values '("exec") (list " ; " normalized)))
+             (t (values (list normalized) ()))))
         (reduce/strcat
          (append
           before (redirect in " <") (redirect out " >") (redirect err " 2>")
-          (when (and directory (os-unix-p)) ;; NB: unless on Unix, %system uses with-current-directory
-            `(" ; cd " ,(escape-shell-token (native-namestring directory))))
+          (os-cond
+           ((os-unix-p)
+            (when directory ;; NB: unless on Unix, %system uses with-current-directory
+              `(" ; cd " ,(escape-shell-token (native-namestring directory))))))
           after)))))
 
   (defun %system (command &rest keys
@@ -782,7 +786,7 @@ It returns a process-info plist with possible keys:
        (apply '%run-program %command :wait t
               :input :interactive :output :interactive :error-output :interactive keys))
       #-(or clisp (and lispworks os-windows))
-      (with-current-directory ((unless (os-unix-p) directory))
+      (with-current-directory ((os-cond ((not (os-unix-p)) directory)))
         #+abcl (ext:run-shell-command %command)
         #+cormanlisp (win32:system %command)
         #+(or clasp ecl) (let ((*standard-input* *stdin*)