* green | red | dimgrey charging - low
* cyan | red | dimgrey charged - low [1]
* grey | red | dimgrey charging&discharching, low [1]
- * ... darkmagenta ... no batteries present
+ * ... darkgreen ... no batteries present
*
* [1] battery must be quite badly degraded
*/
QUANTITY_FIELDS
#undef QF
-static unsigned long thisbat_info_present, thisbat_state_present;
-static unsigned long thisbat_state_charging_state;
+static unsigned long thisbat_alarm_present, thisbat_info_present;
+static unsigned long thisbat_state_present, thisbat_state_charging_state;
#define VAL_NOTFOUND (~0UL)
static const batinfo_field fields[]= {
#define E(f,l) #f, #l, &thisbat_##f##_##l, 0
#define QF(f,l,u) { #f, #l, &thisbat_##f##_##l, u },
+ { E(alarm, present), { "no", "yes" } },
{ E(info, present), { "no", "yes" } },
{ E(state,present), { "no", "yes" } },
{ E(state,charging_state), { "discharging", "charging", "charged" } },
if (r) return batfaile("chdir","..");
batdirname= 0;
- for (field=fields, missing=0;
- field->file;
- field++) {
- if (*field->valuep == VAL_NOTFOUND) {
- fprintf(stderr,"battery/%s/%s: %s: not found\n",
- batdirname, field->file,field->label);
- missing++;
+ if (!(thisbat_alarm_present==0 ||
+ thisbat_info_present==0 ||
+ thisbat_state_present==0)) {
+ if (thisbat_alarm_present == VAL_NOTFOUND)
+ thisbat_alarm_present= 1;
+
+ for (field=fields, missing=0;
+ field->file;
+ field++) {
+ if (*field->valuep == VAL_NOTFOUND) {
+ fprintf(stderr,"battery/%s/%s: %s: not found\n",
+ batdirname, field->file,field->label);
+ missing++;
+ }
}
+ if (missing) return -1;
}
- if (missing) return -1;
return 0;
}
if (r) continue;
- if (!thisbat_info_present || !thisbat_state_present) {
- printf("battery/%s not present\n",de->d_name);
+ if (!thisbat_info_present || !thisbat_state_present)
continue;
- }
charging_state_mask |= 1u << thisbat_state_charging_state;
C(green) \
C(cyan) \
C(grey) \
- C(darkmagenta) \
+ C(darkgreen) \
C(white) \
GC(remain) \
GC(white) \
if (newbg == lastbackground) return;
r= XSetWindowBackground(disp,win,newbg);
- if (r) failr("XSetWindowBackground",r);
+ if (!r) fail("XSetWindowBackground");
lastbackground= newbg;
}
int i, leftmost_lit, leftmost_nondeg, beyond, first_beyond;
if (!charging_state_mask) {
- setbackground(pix_darkmagenta);
+ setbackground(pix_darkgreen);
XClearWindow(disp,win);
return;
}
refresh();
for (;;) {
+ XFlush(disp);
+
pfd.fd= ConnectionNumber(disp);
pfd.events= POLLIN|POLLERR;
height= ce->height;
}
}
-
refresh();
- XFlush(disp);
}
}