const char digitemp_cmd[] = "/usr/bin/digitemp";
char *const digitemp_args[] = { "", "-o2", "-a", "-q", 0 };
FILE *readf;
- int pid;
- char buf[1024], *bptr = buf;
- float t1, t2, t3;
+ int pid, ret, error;
+ float t1 = 0, t2 = 0, t3 = 0;
+ char buf[1024];
pid = run_piped_stream(digitemp_cmd, digitemp_args, 0, &readf, 0);
if (pid < 0) {
return -1;
}
- fgets(buf, 1024, readf);
+ ret = fscanf(readf, "%f %f %f", t1, t2, t3);
-/*
- get_word(bptr, &bptr, t1, 16);
- *bptr++ = 0;
- get_word(bptr, &bptr, t2, 16);
- *bptr++ = 0;
- get_word(bptr, &bptr, t3, 16);
- *bptr++ = 0;
-*/
- t1 = dec_to_float(bptr, &bptr);
- t2 = dec_to_float(bptr, &bptr);
- t3 = dec_to_float(bptr, &bptr);
+ if (ret != 3) {
+ error = errno;
+ pr_err("Failed to parse digitemp output: %s\n",
+ strerror(error));
+ sprintf(data, "U:U");
+ return 1;
+ }
t2 += 2.16;
t3 += -0.44;
+ /* Read whatever the process might be still printing out */
while (fgets(buf, 1024, readf));
+
harvest_zombies(pid);
sprintf(data, "%.2f:%.2f", t3, t2);
return 0;