improve the uncompressed .so search

--- a/src/man.c
+++ b/src/man.c
@@ -381,13 +381,23 @@ again:
 	  }
 	  /*
 	   * Some people have compressed man pages, but uncompressed
-	   * .so files - we could glob for all possible extensions,
-	   * for now: only try .gz
+	   * .so files - we should discover this list dynamically, but
+	   * for now just hardcode it.
 	   */
-	  else if (fp == NULL && get_expander(".gz") &&
-		   strlen(name)+strlen(".gz") < BUFSIZE) {
-	       strcat(name, ".gz");
-	       fp = fopen (name, "r");
+	  else if (fp == NULL) {
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))
+	       size_t i, name_len = strlen(name);
+	       const char *extensions[] = { ".gz", ".bz2", ".lzma", ".xz", ".z", ".Z" };
+	       for (i = 0; i < ARRAY_SIZE(extensions); ++i) {
+		    const char *comp = extensions[i];
+		    name[name_len] = '\0';
+		    if (get_expander(comp) && name_len+strlen(comp) < BUFSIZE) {
+			 strcat(name, comp);
+			 fp = fopen(name, "r");
+			 if (fp)
+			      break;
+		    }
+	       }
 	  }
 
 	  if (fp == NULL) {
