- long free, total, buffers, cached;
- FILE *fp;
-
- fp = fopen("/proc/meminfo", "r");
- if (fp == NULL) {
- warn("Failed to open file /proc/meminfo");
- return unknown_str;
- }
- if (fscanf(fp, "MemTotal: %ld kB\n", &total) != 1 ||
- fscanf(fp, "MemFree: %ld kB\n", &free) != 1 ||
- fscanf(fp, "MemAvailable: %ld kB\nBuffers: %ld kB\n",
- &buffers, &buffers) != 2 ||
- fscanf(fp, "Cached: %ld kB\n", &cached) != 1)
- goto scanerr;
- fclose(fp);
-
- return bprintf("%f", (float)(total - free - buffers - cached) / 1024 / 1024);
+ long total, free, buffers, cached;