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);
}
|