summaryrefslogtreecommitdiff
path: root/statuses/memusage.c
blob: 37ba563ca59a45c5cf8e22e9aa2e157fe85dabf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
#include "memusage.h"
#include "tools.h"

void status_memusage()
{
	char *stline = NULL;
	size_t stlen;
	FILE *stfile;

	int memtotal = 0;
	int memfree = 0;
	int memused;
	int membuffers = 0;
	int memcached = 0;


	stfile = fopen("/proc/meminfo", "r");
	if (stfile != NULL)
	{
		stlen = getline(&stline, &stlen, stfile);
		memtotal = atoi(&stline[17]);

		stlen = getline(&stline, &stlen, stfile);
		memfree = atoi(&stline[17]);

		stlen = getline(&stline, &stlen, stfile);
		membuffers = atoi(&stline[17]);

		stlen = getline(&stline, &stlen, stfile);
		memcached = atoi(&stline[17]);
		free(stline);

		fclose(stfile);

		memused = memtotal - memfree - memcached - membuffers;

		memused /= 1024;	// Just show MBs used

		if ((float)memused / (float)memtotal < 0.85)
			fputs("^fg(green)", stdout);	// < 85% mem used
		else
			fputs("^fg(red)", stdout);	// >= 85% mem used

		printf(" Mem: %d M ", memused);
	}
}