- return smprintf(unknowntext);
-}
-
-static char *
-load_avg(void)
-{
- double avgs[3];
-
- if (getloadavg(avgs, 3) < 0) {
- fprintf(stderr, "Error getting load avg.\n");
- return smprintf(unknowntext);
- }
-
- return smprintf("%.2f %.2f %.2f", avgs[0], avgs[1], avgs[2]);
-}
-
-static char *
-ram_free(void)
-{
- long free;
- FILE *fp;
-
- if (!(fp = fopen("/proc/meminfo", "r"))) {
- fprintf(stderr, "Error opening meminfo file.\n");
- return smprintf(unknowntext);
- }
-
- fscanf(fp, "MemFree: %ld kB\n", &free);
- fclose(fp);
- return smprintf("%f", (float)free / 1024 / 1024);
-}
-
-static char *
-ram_perc(void)
-{
- int perc;
- long total, free, buffers, cached;
- FILE *fp;
-
- if (!(fp = fopen("/proc/meminfo", "r"))) {
- fprintf(stderr, "Error opening meminfo file.\n");
- return smprintf(unknowntext);
- }
-
- fscanf(fp, "MemTotal: %ld kB\n", &total);
- fscanf(fp, "MemFree: %ld kB\n", &free);
- fscanf(fp, "MemAvailable: %ld kB\nBuffers: %ld kB\n", &buffers, &buffers);
- fscanf(fp, "Cached: %ld kB\n", &cached);
-
- fclose(fp);
- perc = 100 * ((total - free) - (buffers + cached)) / total;
- return smprintf("%d%%", perc);
-}
-
-static char *
-ram_total(void)
-{
- long total;
- FILE *fp;
-
- if (!(fp = fopen("/proc/meminfo", "r"))) {
- fprintf(stderr, "Error opening meminfo file.\n");
- return smprintf(unknowntext);
- }
-
- fscanf(fp, "MemTotal: %ld kB\n", &total);
- fclose(fp);
- return smprintf("%f", (float)total / 1024 / 1024);
-}
-
-static char *
-ram_used(void)
-{
- long free, total, buffers, cached, used;
- FILE *fp;
-
- if (!(fp = fopen("/proc/meminfo", "r"))) {
- fprintf(stderr, "Error opening meminfo file.\n");
- return smprintf(unknowntext);
- }
-
- fscanf(fp, "MemTotal: %ld kB\n", &total);
- fscanf(fp, "MemFree: %ld kB\n", &free);
- fscanf(fp, "MemAvailable: %ld kB\nBuffers: %ld kB\n", &buffers, &buffers);
- fscanf(fp, "Cached: %ld kB\n", &cached);
-
- fclose(fp);
- used = total - free - buffers - cached;
- return smprintf("%f", (float)used / 1024 / 1024);
-}
-
-static char *
-run_command(const char* command)
-{
- int good;
- FILE *fp;
- char buffer[64];
-
- if (!(fp = popen(command, "r"))) {
- fprintf(stderr, "Could not get command output for: %s.\n", command);
- return smprintf(unknowntext);
- }
-
- fgets(buffer, sizeof(buffer) - 1, fp);
- pclose(fp);
- for (int i = 0 ; i != sizeof(buffer); i++) {
- if (buffer[i] == '\0') {
- good = 1;
- break;