- return smprintf("%.2f %.2f %.2f", avgs[0], avgs[1], avgs[2]);
-}
-
-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");
- free(path);
- if (fd == NULL)
- return NULL;
-
- if (fgets(line, sizeof(line)-1, fd) == NULL)
- return NULL;
- fclose(fd);
-
- return smprintf("%s", line);
-}
-
-char *
-getbattery(char *base)
-{
- char *co, status;
- int descap, remcap;
-
- descap = -1;
- remcap = -1;
-
- co = readfile(base, "present");
- if (co == NULL)
- return smprintf("");
- if (co[0] != '1') {
- free(co);
- return smprintf("not present");
- }
- free(co);
-
- co = readfile(base, "charge_full_design");
- if (co == NULL) {
- co = readfile(base, "energy_full_design");
- if (co == NULL)
- return smprintf("");
- }
- sscanf(co, "%d", &descap);
- free(co);
-
- co = readfile(base, "charge_now");
- if (co == NULL) {
- co = readfile(base, "energy_now");
- if (co == NULL)
- return smprintf("");
- }
- sscanf(co, "%d", &remcap);
- free(co);
-
- co = readfile(base, "status");
- if (!strncmp(co, "Discharging", 11)) {
- status = '-';
- } else if(!strncmp(co, "Charging", 8)) {
- status = '+';
- } else {
- status = '?';
- }
-
- if (remcap < 0 || descap < 0)
- return smprintf("invalid");
-
- return smprintf("%.0f%%%c", ((float)remcap / (float)descap) * 100, status);
-}
-
-char *
-gettemperature(char *base, char *sensor)
-{
- char *co;
-
- co = readfile(base, sensor);
- if (co == NULL)
- return smprintf("");
- return smprintf("%02.0f°C", atof(co) / 1000);
-}
-
-char *
-execscript(char *cmd)
-{
- FILE *fp;
- char retval[1025], rv;
-
- memset(retval, 0, sizeof(retval));
-
- fp = popen(cmd, "r");
- if (fp == NULL)
- return smprintf("");
-
- rv = fgets(retval, sizeof(retval), fp);
- pclose(fp);
- if (rv == NULL)
- return smprintf("");
- retval[strlen(retval)-1] = '\0';
-
- return smprintf("%s", retval);