--- src/man.c.orig	2006-06-02 12:52:27.000000000 -0700
+++ src/man.c	2006-06-02 15:11:32.000000000 -0700
@@ -335,7 +335,7 @@
      if (expander && *expander) {
 	  char *command;
 
-	  command = my_xsprintf ("%s %S", expander, name);
+	  command = my_xsprintf ("%s '%Q'", expander, name);
 	  fp = my_popen (command, "r");
 	  if (fp == NULL) {
 	       perror("popen");
@@ -604,10 +604,10 @@
 
      if (expander && *expander) {
 	  if (converter && *converter)
-	     command = my_xsprintf("%s%s '%S' | %s%s",
+	     command = my_xsprintf("%s%s '%Q' | %s%s",
 				   bufh, expander, file, converter, buft);
 	  else
-	     command = my_xsprintf("%s%s '%S'%s",
+	     command = my_xsprintf("%s%s '%Q'%s",
 				   bufh, expander, file, buft);
      } else if (ll || pl) {
 	  const char *cat = getval("CAT");
@@ -615,10 +615,10 @@
 		  cat = "cat";
 
 	  if (converter && *converter)
-	      command = my_xsprintf("%s%s '%S' | %s%s",
+	      command = my_xsprintf("%s%s '%Q' | %s%s",
 				    bufh, cat, file, converter, buft);
 	  else
-	      command = my_xsprintf("%s%s '%S'%s",
+	      command = my_xsprintf("%s%s '%Q'%s",
 				    bufh, cat, file, buft);
      }
 
@@ -641,7 +641,7 @@
      }
 
      if (expander && *expander) {
-	  char *cmd = my_xsprintf ("%s %S", expander, file);
+	  char *cmd = my_xsprintf ("%s '%Q'", expander, file);
 	  fp = my_popen (cmd, "r");
 	  if (fp == NULL) {
 	       perror("popen");
@@ -826,9 +826,9 @@
      if (roff_command == NULL)
 	  return 0;
      if (do_troff)
-	  command = my_xsprintf ("(cd \"%S\" && %s)", path, roff_command);
+	  command = my_xsprintf ("(cd '%Q' && %s)", path, roff_command);
      else
-	  command = my_xsprintf ("(cd \"%S\" && %s | (%s || true))", path,
+	  command = my_xsprintf ("(cd '%Q' && %s | (%s || true))", path,
 		   roff_command, pager);
 
      return !do_system_command (command, 0);
