+ if (bytes_read == 0 || bytes_read == sizeof(buf)) {
+ warn("Failed to read /proc/meminfo\n");
+ return smprintf(UNKNOWN_STR);
+ }
+
+ match = strstr(buf, "SwapTotal");
+ sscanf(match, "SwapTotal: %ld kB\n", &total);
+ if (total == 0) {
+ return smprintf(UNKNOWN_STR);
+ }
+
+ match = strstr(buf, "SwapCached");
+ sscanf(match, "SwapCached: %ld kB\n", &cached);
+
+ match = strstr(buf, "SwapFree");
+ sscanf(match, "SwapFree: %ld kB\n", &free);
+
+ return smprintf("%f", (float)(total - free - cached) / 1024 / 1024);
+}
+
+static char *
+temp(const char *file)
+{
+ int temp;
+ FILE *fp;
+
+ fp = fopen(file, "r");
+ if (fp == NULL) {
+ warn("Failed to open file %s", file);
+ return smprintf(UNKNOWN_STR);
+ }
+ fscanf(fp, "%d", &temp);
+ fclose(fp);
+
+ return smprintf("%d°C", temp / 1000);