--- wmacpi-1.34/libacpi.c	2002-02-17 06:07:00.000000000 +0100
+++ libacpi.c	2002-12-03 14:53:53.000000000 +0100
@@ -22,6 +22,29 @@
 /* local proto */
 int acpi_get_design_cap(int battery);
 
+int battery_is_present (char *fnam)
+{
+   FILE *acpi;
+   char buf[512], present[4];
+   char *ptr;
+
+   if (!(acpi = fopen(fnam, "r"))) return 0;
+    
+   fread(buf, 512, 1, acpi);
+   fclose(acpi);
+
+   if ((ptr = strstr(buf, "present")))
+   {
+	   ptr += 25;
+	   sscanf(ptr, "%s", present);
+      if (strstr (present, "no")) return 0;
+   }
+
+   return 1;
+}
+
+
+
 /* see if we have ACPI support and check version */
 int power_init(void)
 {
@@ -60,15 +83,17 @@
     while ((batt = readdir(battdir))) {
 	name = batt->d_name;
 	
-	/* skip . and .. */
-	if (!strncmp(".", name, 1) || !strncmp("..", name, 2))
-	    continue;
-
-	sprintf(batteries[batt_count], "/proc/acpi/battery/%s/state", name);
-	sprintf(battinfo[batt_count], "/proc/acpi/battery/%s/info", name);
-	eprint(1, "battery detected at %s\n", batteries[batt_count]);
-	batt_count++;
-    }
+	   /* skip . and .. */
+	   if (!strncmp(".", name, 1) || !strncmp("..", name, 2)) continue;
+
+	   sprintf(batteries[batt_count], "/proc/acpi/battery/%s/state", name);
+      /* check if battery is really present */
+      if (battery_is_present (batteries[batt_count])) {
+	      sprintf(battinfo[batt_count], "/proc/acpi/battery/%s/info", name);
+	      eprint(1, "battery detected at %s\n", batteries[batt_count]);
+	      batt_count++;
+      }
+   }
     closedir(battdir);
 
     /* tell user some info */

