|
|
- char *
- readfile(char *base, char *file)
- {
- char *path, line[513];
- FILE *fd;
-
- memset(line, 0, sizeof(line));
-
- path = smprintf("%s/%s", base, file);
- fd = fopen(path, "r");
- if (fd == NULL) {
- perror("fopen");
- exit(1);
- }
- free(path);
-
- if (fgets(line, sizeof(line)-1, fd) == NULL) {
- perror("fgets");
- exit(1);
- }
- fclose(fd);
-
- return smprintf("%s", line);
- }
-
- char *
- getbattery(char *base)
- {
- char *co;
- int descap, remcap;
-
- descap = -1;
- remcap = -1;
-
- co = readfile(base, "present");
- if (co[0] != '1') {
- free(co);
- return smprintf("not present");
- }
- free(co);
-
- co = readfile(base, "charge_full_design");
- sscanf(co, "%d", &descap);
- free(co);
-
- co = readfile(base, "charge_now");
- sscanf(co, "%d", &remcap);
- free(co);
-
- if (remcap < 0 || descap < 0)
- return smprintf("invalid");
-
- return smprintf("%.0f", ((float)remcap / (float)descap) * 100);
- }
-
|