diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c
index fd4a628717430e3c9aa87f81f6779b6c3684715c..6c4a9f8d4837aab03f23bb1ac148db06b719be98 100644
--- a/src/modules/files/efuns.c
+++ b/src/modules/files/efuns.c
@@ -24,7 +24,7 @@
 #include "file_machine.h"
 #include "file.h"
 
-RCSID("$Id: efuns.c,v 1.72 1999/06/19 20:26:28 hubbe Exp $");
+RCSID("$Id: efuns.c,v 1.73 1999/06/25 20:43:47 per Exp $");
 
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -334,66 +334,52 @@ void f_filesystem_stat(INT32 args)
   {
     push_int(0);
   }else{
-#ifdef HAVE_STATVFS
     int num_fields = 8;
-    push_text("blocksize");
-    push_int(st.f_frsize);
-    push_text("blocks");
-    push_int(st.f_blocks);
-    push_text("bfree");
-    push_int(st.f_bfree);
-    push_text("bavail");
-    push_int(st.f_bavail);
-    push_text("files");
-    push_int(st.f_files);
-    push_text("ffree");
-    push_int(st.f_ffree);
-    push_text("favail");
-    push_int(st.f_favail);
+#ifdef HAVE_STATVFS
+    push_text("id");         push_int(st.f_fsid);
+    push_text("blocksize");  push_int(st.f_frsize);
+    push_text("blocks");     push_int(st.f_blocks);
+    push_text("bfree");      push_int(st.f_bfree);
+    push_text("bavail");     push_int(st.f_bavail);
+    push_text("files");      push_int(st.f_files);
+    push_text("ffree");      push_int(st.f_ffree);
+    push_text("favail");     push_int(st.f_favail);
 #ifdef HAVE_STATVFS_F_FSTR
-    push_text("fsname");
-    push_text(st.f_fstr);
+    push_text("fsname");     push_text(st.f_fstr);
     num_fields++;
 #endif /* HAVE_STATVFS_F_FSTR */
 #ifdef HAVE_STATVFS_F_BASETYPE
-    push_text("fstype");
-    push_text(st.f_basetype);
+    push_text("fstype");     push_text(st.f_basetype);
     num_fields++;
 #endif /* HAVE_STATVFS_F_BASETYPE */
     f_aggregate_mapping(num_fields*2);
 #else /* !HAVE_STATVFS */
 #ifdef HAVE_STATFS
 #ifdef HAVE_STRUCT_STATFS
-    push_text("blocksize");
-    push_int(st.f_bsize);
-    push_text("blocks");
-    push_int(st.f_blocks);
-    push_text("bfree");
-    push_int(st.f_bfree);
-    push_text("files");
-    push_int(st.f_files);
-    push_text("ffree");
-    push_int(st.f_ffree);
-    push_text("favail");
-    push_int(st.f_ffree);
+#ifdef HAVE_STATFS_F_FSID
+    push_text("id");           push_int(st.f_fsid);
+#else
+    num_fields--;
+#endif
+    push_text("blocksize");    push_int(st.f_bsize);
+    push_text("blocks");       push_int(st.f_blocks);
+    push_text("bfree");        push_int(st.f_bfree);
+    push_text("files");        push_int(st.f_files);
+    push_text("ffree");        push_int(st.f_ffree);
+    push_text("favail");       push_int(st.f_ffree);
 #ifdef HAVE_STATFS_F_BAVAIL
-    push_text("bavail");
-    push_int(st.f_bavail);
-    f_aggregate_mapping(7*2);
+    push_text("bavail");       push_int(st.f_bavail);
+    f_aggregate_mapping((num_fields-1)*2);
 #else
-    f_aggregate_mapping(6*2);
+    f_aggregate_mapping((num_fields-2)*2);
 #endif /* HAVE_STATFS_F_BAVAIL */
 #else /* !HAVE_STRUCT_STATFS */
 #ifdef HAVE_STRUCT_FS_DATA
     /* ULTRIX */
-    push_text("blocksize");
-    push_int(st.fd_bsize);
-    push_text("blocks");
-    push_int(st.fd_btot);
-    push_text("bfree");
-    push_int(st.fd_bfree);
-    push_text("bavail");
-    push_int(st.fd_bfreen);
+    push_text("blocksize");    push_int(st.fd_bsize);
+    push_text("blocks");       push_int(st.fd_btot);
+    push_text("bfree");        push_int(st.fd_bfree);
+    push_text("bavail");       push_int(st.fd_bfreen);
     f_aggregate_mapping(4*2);
 #else /* !HAVE_STRUCT_FS_DATA */
     /* Should not be reached */
@@ -402,12 +388,9 @@ void f_filesystem_stat(INT32 args)
 #endif /* HAVE_STRUCT_STATFS */
 #else /* !HAVE_STATFS */
 #ifdef HAVE_USTAT
-    push_text("bfree");
-    push_int(st.f_tfree);
-    push_text("ffree");
-    push_int(st.f_tinode);
-    push_text("fsname");
-    push_text(st.f_fname);
+    push_text("bfree");      push_int(st.f_tfree);
+    push_text("ffree");      push_int(st.f_tinode);
+    push_text("fsname");     push_text(st.f_fname);
     f_aggregate_mapping(3*2);
 #else
     /* Should not be reached */