Minor fixes...
[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         {
22                 stlen = getline(&stline, &stlen, stfile);
23                 memtotal = atoi(&stline[17]);
24
25                 stlen = getline(&stline, &stlen, stfile);
26                 memfree = atoi(&stline[17]);
27
28                 stlen = getline(&stline, &stlen, stfile);
29                 membuffers = atoi(&stline[17]);
30
31                 stlen = getline(&stline, &stlen, stfile);
32                 memcached = atoi(&stline[17]);
33                 free(stline);
34
35                 fclose(stfile);
36
37                 memused = memtotal - memfree - memcached - membuffers;
38
39                 memused /= 1024;        // Just show MBs used
40
41                 if ((float)memused / (float)memtotal < 0.85)
42                         fputs("^fg(green)", stdout);    // < 85% mem used
43                 else
44                         fputs("^fg(red)", stdout);      // >= 85% mem used
45
46                 printf(" Mem: %d M ", memused);
47         }
48 }