8 static int str_to_dec(char *src, char **dst)
12 while(((*src < '0') || (*src > '9')) && *src)
18 while(((*src >= '0') && (*src <= '9')) && *src)
26 static int get_word(char *src, char **dst, char *word)
29 while(((*src == ' ') || (*src == '\t')) && *src)
32 while(((*src != ' ') && (*src != '\t')) && *src) {
46 #define STATFILE "/proc/stat"
48 int cpu_parser(char *data)
52 FILE *file = fopen(STATFILE, "r");
53 int user, nice, sys, idle, wait, irq, softirq;
56 fprintf(stderr, "Failed to open file %s\n", STATFILE);
60 if (!fgets(buf, 1024, file)) {
61 fprintf(stderr, "Failed to read file %s\n", STATFILE);
66 user = str_to_dec(str, &str);
67 nice = str_to_dec(str, &str);
68 sys = str_to_dec(str, &str);
69 idle = str_to_dec(str, &str);
70 wait = str_to_dec(str, &str);
71 irq = str_to_dec(str, &str);
72 softirq = str_to_dec(str, &str);
74 sprintf(data, "%d:%d:%d:%d:%d:%d:%d",
75 user, nice, sys, idle, wait, irq, softirq);
81 #define MEMFILE "/proc/meminfo"
83 int mem_parser(char *data)
85 char buf[1024], word[1024];
86 int free = 0, buffered = 0, cache = 0, active = 0, inactive = 0,
87 swapfree = 0, anon = 0, slab = 0, tables = 0;
88 FILE *file = fopen(MEMFILE, "r");
91 fprintf(stderr, "Failed to open file %s\n", MEMFILE);
95 while (fgets(buf, 1024, file)) {
96 get_word(buf, 0, word);
98 if (!strcmp(word, "MemFree:")) {
99 free = str_to_dec(buf, 0);
100 } else if (!strcmp(word, "Buffers:")) {
101 buffered = str_to_dec(buf, 0);
102 } else if (!strcmp(word, "Cached:")) {
103 cache = str_to_dec(buf, 0);
104 } else if (!strcmp(word, "Active:")) {
105 active = str_to_dec(buf, 0);
106 } else if (!strcmp(word, "Inactive:")) {
107 inactive = str_to_dec(buf, 0);
108 } else if (!strcmp(word, "SwapFree:")) {
109 swapfree = str_to_dec(buf, 0);
110 } else if (!strcmp(word, "AnonPages:")) {
111 anon = str_to_dec(buf, 0);
112 } else if (!strcmp(word, "Slab:")) {
113 slab = str_to_dec(buf, 0);
114 } else if (!strcmp(word, "PageTables:")) {
115 tables = str_to_dec(buf, 0);
120 sprintf(data, "%f:%f:%f:%f:%f:%f:%f:%f:%f",
134 int cpu_mem_parser(char *data)
136 char cpu[1024], mem[1024];
140 sprintf(data, "%s:%s", cpu, mem);