Introduction
Introduction Statistics Contact Development Disclaimer Help
batt.c - spoon - set dwm status
git clone git://git.codemadness.org/spoon
Log
Files
Refs
LICENSE
---
batt.c (1697B)
---
1 #include <err.h>
2 #include <stdio.h>
3
4 #include "types.h"
5 #include "util.h"
6
7 char *crit[] = {
8 "[!!!!]=",
9 " ",
10 };
11
12 void
13 battprint(char *buf, size_t len, int acon, int life)
14 {
15 char c;
16 static int frame = 0;
17
18 c = acon ? '>' : '<';
19 if (!acon && life <= 5)
20 snprintf(buf, len, "%s", crit[frame++ % LEN(crit)]);
21 else if (life >= 80)
22 snprintf(buf, len, "[////]=");
23 else if (life >= 60)
24 snprintf(buf, len, "[///%c]=", c);
25 else if (life >= 40)
26 snprintf(buf, len, "[//%c%c]=", c, c);
27 else if (life >= 20)
28 snprintf(buf, len, "[/%c%c%c]=", c, c, c);
29 else
30 snprintf(buf, len, "[%c%c%c%c]=", c, c, c, c);
31 }
32
33 #ifdef __OpenBSD__
34 #include <sys/ioctl.h>
35
36 #include <fcntl.h>
37 #include <unistd.h>
38
39 #include <machine/apmvar.h>
40
41 int
42 battread(void *arg, char *buf, size_t len)
43 {
44 struct apm_power_info info;
45 int ret, fd;
46
47 fd = open("/dev/apm", O_RDONLY);
48 if (fd < 0) {
49 warn("open %s", "/dev/apm");
50 return -1;
51 }
52 ret = ioctl(fd, APM_IOC_GETPOWER, &info);
53 if (ret < 0) {
54 warn("APM_IOC_GETPOWER %s", "/dev/apm");
55 close(fd);
56 return -1;
57 }
58 close(fd);
59
60 if (info.battery_state == APM_BATTERY_ABSENT)
61 snprintf(buf, len, "[no batt]");
62 else
63 battprint(buf, len, info.ac_state == APM_AC_ON, info.bat…
64 return 0;
65 }
66 #elif __linux__
67 int
68 battread(void *arg, char *buf, size_t len)
69 {
70 FILE *fp;
71 int acon;
72 int life;
73 struct battarg *battarg = arg;
74
75 fp = fopen(battarg->cap, "r");
76 if (fp == NULL) {
77 warn("fopen %s", battarg->cap);
78 return -1;
79 }
80 fscanf(fp, "%d", &life);
81 fclose(fp);
82 fp = fopen(battarg->ac, "r");
83 if (fp == NULL) {
84 warn("fopen %s", battarg->ac);
85 return -1;
86 }
87 fscanf(fp, "%d", &acon);
88 fclose(fp);
89 battprint(buf, len, acon, life);
90 return 0;
91 }
92 #endif
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.