Commit Diff


commit - b4135f04f136150b27a89876d51797ba2a8a78c0
commit + 8a830ad0906b8a488aa2a7743bce168fd0332a1e
blob - d881ad86cc3963034d47171d1dd02989b37135bf
blob + 2d0fd57ede4a4a275dfe42a84f429c3a53777242
--- src/cmd/auxstats/FreeBSD.c
+++ src/cmd/auxstats/FreeBSD.c
@@ -18,6 +18,8 @@
 #include <bio.h>
 #include "dat.h"
 
+/* XXX: #if __FreeBSD_version */
+
 void xapm(int);
 void xloadavg(int);
 void xcpu(int);
@@ -104,9 +106,15 @@ xnet(int first)
 	out = in = outb = inb = err = 0;
 	addr = (ulong)TAILQ_FIRST(&ifnethead);
 	while(addr){
+#if __FreeBSD_version < 500000
 		if(kread(addr, (char*)&ifnet, sizeof ifnet) < 0
 		|| kread((ulong)ifnet.if_name, name, 16) < 0)
 			return;
+#else
+		if(kread(addr, (char*)&ifnet, sizeof ifnet) < 0
+		|| kread((ulong)ifnet.if_dname, name, 16) < 0)
+			return;
+#endif
 		name[15] = 0;
 		addr = (ulong)TAILQ_NEXT(&ifnet, if_link);
 		out += ifnet.if_opackets;
@@ -122,7 +130,29 @@ xnet(int first)
 	Bprint(&bout, "ethererr %lud 1000\n", err);
 	Bprint(&bout, "ether %lud 1000\n", in+out);
 	Bprint(&bout, "etherb %lud 1000000\n", inb+outb);
+}
+
+#if __FreeBSD_version >= 500000
+int
+xacpi(int first)
+{
+	int rv;
+	int val, len;
+
+	len = sizeof(val);
+	rv = sysctlbyname("hw.acpi.battery.life", &val, &len, nil, 0);
+	if(rv != 0)
+		return -1;
+	Bprint(&bout, "battery =%d 100\n", val);
+	return 0;
 }
+#else
+int
+xacpi(int first)
+{
+	return -1;
+}
+#endif
 
 void
 xapm(int first)
@@ -131,10 +161,14 @@ xapm(int first)
 	struct apm_info ai;
 
 	if(first){
+		xacpi(first);
 		fd = open("/dev/apm", OREAD);
 		return;
 	}
 
+	if(xacpi(0) >= 0)
+		return;
+
 	if(ioctl(fd, APMIO_GETINFO, &ai) < 0)
 		return;