ea411348e3714521f8eb10a374e699dc35821027
[sysstatus.git] / statuses / memusage.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "memusage.h"
4 #include "tools.h"
5
6 void status_memusage()
7 {
8   char *stline = NULL;
9   size_t stlen;
10   FILE *stfile;
11
12   int memtotal = 0;
13   int memfree = 0;
14   int memused;
15   int membuffers = 0;
16   int memcached = 0;
17
18
19   stfile = fopen("/proc/meminfo", "r");
20   if (stfile != NULL) {
21     stlen = getline(&stline, &stlen, stfile);
22     memtotal = atoi(&stline[17]);
23
24     stlen = getline(&stline, &stlen, stfile);
25     memfree = atoi(&stline[17]);
26
27     stlen = getline(&stline, &stlen, stfile);
28     membuffers = atoi(&stline[17]);
29
30     stlen = getline(&stline, &stlen, stfile);
31     memcached = atoi(&stline[17]);
32     free(stline);
33
34     fclose(stfile);
35
36     memused = memtotal - memfree - memcached - membuffers;
37
38     memused /= 1024;    // Just show MBs used
39
40     /* Change color based on % of RAM used */
41     if ((float)memused / (float)memtotal < 0.85) {
42       fputs("^fg(green)", stdout);
43     } else {
44       fputs("^fg(red)", stdout);
45     }
46
47     printf(" Mem: %d M ", memused);
48   }
49 }