aboutsummaryrefslogtreecommitdiff
path: root/mem.c
blob: e92b657f05ec957f3860f84b2f086c5177237564 (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
#include <stdio.h>
#include "block.h"
#define ICON_MEM " "
#define FG "#222222"
#define BG "#95b18b99"
#define mem_val(n)\
	for(n = 0; (c = fgetc(meminfo)) != '\n';)\
		if (c >= '0' && c <= '9')\
			n = 10 * n + (c - '0')
#define jmpl(n) fseek(meminfo,29*(n-1),0)
FILE *meminfo;
int mem_delay = 3; 
char mem_str[15];
void mem(void) {
	if (mem_delay++ < 3) goto show_stat;
	else mem_delay = 0;
	if (!meminfo) meminfo = fopen("/proc/meminfo","r");
	int c, mem;
	int total, free, buffers,
		cached, shared, reclaim;
	jmpl(1); mem_val(total);
	jmpl(2); mem_val(free);
	jmpl(4); mem_val(buffers);
	jmpl(5); mem_val(cached);
	jmpl(23); mem_val(shared);
	jmpl(26); mem_val(reclaim);
	mem = total + reclaim - (free+buffers+cached+shared);
	mem /= 1024;
	snprintf(mem_str,15,ICON_MEM"%5d MiB",mem);
show_stat:
	block(mem_str,FG,BG,BG);
}