3-Jun-2004 Mike Slifcak

This patch works with the freebsd5.h patch to
successfully compile on FreeBSD 5.x

Patch using net-snmp-5.1.1 or V5-1-patdhes branch,
Built using FreeBSD 5.2.1

--- net-snmp-5.1.1/agent/mibgroup/ucd-snmp/disk.c	Thu Jan  8 18:10:06 2004
+++ net-snmp/agent/mibgroup/ucd-snmp/disk.c	Thu Jun  3 22:44:57 2004
@@ -566,9 +566,6 @@
     double          totalblks, free, used, avail, availblks;
 #else
     static long     avail;
-#if defined(STRUCT_STATVFS_HAS_F_FILES) || defined(STRUCT_STATFS_HAS_F_FILES)
-    int             percent_inode;
-#endif
 #endif
     static long     long_ret;
     static char     errmsg[300];
@@ -651,18 +648,7 @@
     iserror = (disks[disknum].minimumspace >= 0 ?
                avail < disks[disknum].minimumspace :
                100 - percent <= disks[disknum].minpercent) ? 1 : 0;
-#if defined(STRUCT_STATVFS_HAS_F_FILES) || defined STRUCT_STATFS_HAS_F_FAVAIL
-    percent_inode = vfs.f_favail <= 0 ? 100 :
-        (int) ((double) (vfs.f_files - vfs.f_ffree) /
-               (double) (vfs.f_files -
-                         (vfs.f_ffree - vfs.f_favail)) * 100.0 + 0.5);
-#else
-#if defined(STRUCT_STATFS_HAS_F_FILES) && defined(STRUCT_STATFS_HAS_F_FFREE)
-   percent_inode = vfs.f_files == 0 ? 100.0 :
-      (int) ((double) (vfs.f_files - vfs.f_ffree) /
-	          (double) (vfs.f_files) * 100.0 + 0.5);
-#endif 
-#endif /* defined(STRUCT_STATVFS_HAS_F_FILES) */ 
+
     switch (vp->magic) {
     case DISKTOTAL:
         long_ret = (long)(vfs.f_blocks * multiplier);
@@ -677,7 +663,20 @@
         return ((u_char *) (&long_ret));
 #if defined(STRUCT_STATVFS_HAS_F_FILES) || defined (STRUCT_STATFS_HAS_F_FILES)
     case DISKPERCENTNODE:
-        long_ret = percent_inode;
+        long_ret = 100;
+
+    #if defined(STRUCT_STATFS_HAS_F_FAVAIL)
+	if (vfs.f_avail > 0)
+	    long_ret = (long) ((double) (vfs.f_files - vfs.f_ffree) /
+               (double) (vfs.f_files -
+                         (vfs.f_ffree - vfs.f_favail)) * 100.0 + 0.5);
+    #endif
+    #if defined(STRUCT_STATFS_HAS_F_FFREE)
+	if (vfs.f_files != 0)
+	    long_ret = (long) ((double) (vfs.f_files - vfs.f_ffree) /
+	          (double) (vfs.f_files) * 100.0 + 0.5);
+    #endif 
+
         return ((u_char *) (&long_ret));
 #endif
     case ERRORFLAG:
