diff --git a/bin/feature_list b/bin/feature_list
index 44246dab6df1435d41ed5c7e76b6634076ea09f8..109e8658bdfb4f6649b60ddf5b5e0c24d708803e 100755
--- a/bin/feature_list
+++ b/bin/feature_list
@@ -11,11 +11,17 @@ int main(int argc, string *argv)
   write("threads ");
 #endif
 
-  catch { if(master()->resolv("Gdbm")->gdbm)   write("Gdbm "); };
-  catch { if(master()->resolv("Gmp")->mpz)     write("Gmp ");  };
-  catch { if(master()->resolv("Gz")->deflate)  write("Gz ");   };
-  catch { if(master()->resolv("Odbc")->odbc)   write("Odbc ");   };
-  catch { if(master()->resolv("Mysql")->mysql) write("Mysql ");   };
+  // Special case
+  catch { if(sizeof(indices(master()->resolv("_Crypto"))))
+    write("Crypto ");
+  };
+
+  foreach(({ "Gdbm", "Gmp", "Gz", "Msql", "Mysql", "Odbc", "Oracle",
+	       "Postgres", "Ssleay", "X", "Yp" }), string modname) {
+    catch { if (sizeof(indices(master()->resolv(modname))))
+      write(modname+" ");
+    };
+  }
 
   write("\n");
 }