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