apm code

Liam J. Foy liamfoy at sepulcrum.org
Thu May 20 12:58:14 PDT 2004


Hey,

Just writing to the list to make sure am correct here. The issue concerns /usr/src/usr.sbin/apm/apm.c. 

--- /usr/src/usr.sbin/apm/apm.c	Thu May 20 20:30:57 2004
+++ /hd2/apm.c	Thu May 20 20:44:36 2004
@@ -174,7 +174,7 @@
 	printf("Remaining battery life: ");
 	if (aip->ai_batt_life == 255)
 		printf("unknown\n");
-	else if (aip->ai_batt_life <= 100)
+	else if (aip->ai_batt_life >= 0 && aip->ai_batt_life <= 100)
 		printf("%d%%\n", aip->ai_batt_life);
 	else
 		printf("invalid value (0x%x)\n", aip->ai_batt_life);

The above patch will make apm print invalid value when ai_batt_life does not equal 0-100. The reason for this was the the current code was printing -1 as a so called valid value(normally when acline is connected). I dont think printing -1 is correct, and really it should be printing invalid value since that is what it is. Do you guys agree with me or does -1 symbolise something?

Something else I am curious over is this snippet of code:

if (aip->ai_infoversion >= 1) {
		printf("Number of batteries: ");
		if (aip->ai_batteries == (u_int) -1)
			printf("unknown\n");
		else {

ai_batteries in machine/apm_bios.h is defined as u_int. Yet the above code is testing for -1. I _think_ this should be testing for 255(unknown). Anyone shead any light on this? I ask since I do not know apm very well. Would you guys agree my patch is correct also? 

Thanks in advance,

Liam Foy


More information about the freebsd-acpi mailing list