Lines Matching full:lf

39 static int scan_lines(struct lnstat_file *lf, int i)  in scan_lines()  argument
44 for (j = 0; j < lf->num_fields; j++) in scan_lines()
45 lf->fields[j].values[i] = 0; in scan_lines()
47 rewind(lf->fp); in scan_lines()
49 if (!lf->compat && !fgets(buf, sizeof(buf)-1, lf->fp)) in scan_lines()
52 while (!feof(lf->fp) && fgets(buf, sizeof(buf)-1, lf->fp)) { in scan_lines()
57 gettimeofday(&lf->last_read, NULL); in scan_lines()
59 for (j = 0; j < lf->num_fields; j++) { in scan_lines()
63 lf->fields[j].values[i] = f; in scan_lines()
65 lf->fields[j].values[i] += f; in scan_lines()
88 struct lnstat_file *lf; in lnstat_update() local
93 for (lf = lnstat_files; lf; lf = lf->next) { in lnstat_update()
94 if (time_after(&lf->last_read, &lf->interval, &tv)) { in lnstat_update()
98 scan_lines(lf, 1); in lnstat_update()
100 for (i = 0, lfi = &lf->fields[i]; in lnstat_update()
101 i < lf->num_fields; i++, lfi = &lf->fields[i]) { in lnstat_update()
106 / lf->interval.tv_sec; in lnstat_update()
109 scan_lines(lf, 0); in lnstat_update()
117 static int __lnstat_scan_fields(struct lnstat_file *lf, char *buf) in __lnstat_scan_fields() argument
124 lf->fields[i].file = lf; in __lnstat_scan_fields()
125 strncpy(lf->fields[i].name, tok, LNSTAT_MAX_FIELD_NAME_LEN); in __lnstat_scan_fields()
130 lf->num_fields = i+1; in __lnstat_scan_fields()
137 static int lnstat_scan_fields(struct lnstat_file *lf) in lnstat_scan_fields() argument
141 rewind(lf->fp); in lnstat_scan_fields()
142 if (!fgets(buf, sizeof(buf)-1, lf->fp)) in lnstat_scan_fields()
145 return __lnstat_scan_fields(lf, buf); in lnstat_scan_fields()
149 static int lnstat_scan_compat_rtstat_fields(struct lnstat_file *lf) in lnstat_scan_compat_rtstat_fields() argument
156 return __lnstat_scan_fields(lf, buf); in lnstat_scan_compat_rtstat_fields()
174 struct lnstat_file *lf; in alloc_and_open() local
177 lf = calloc(1, sizeof(*lf)); in alloc_and_open()
178 if (!lf) { in alloc_and_open()
184 snprintf(lf->basename, sizeof(lf->basename), "%s", file); in alloc_and_open()
185 snprintf(lf->path, sizeof(lf->path), "%s/%s", path, file); in alloc_and_open()
188 lf->interval.tv_sec = 1; in alloc_and_open()
191 lf->fp = fopen(lf->path, "r"); in alloc_and_open()
192 if (!lf->fp) { in alloc_and_open()
193 perror(lf->path); in alloc_and_open()
194 free(lf); in alloc_and_open()
198 return lf; in alloc_and_open()
215 struct lnstat_file *lf; in lnstat_scan_dir() local
234 lf = alloc_and_open("/proc/net", "rt_cache_stat"); in lnstat_scan_dir()
235 if (!lf) in lnstat_scan_dir()
237 lf->compat = 1; in lnstat_scan_dir()
238 strncpy(lf->basename, "rt_cache", sizeof(lf->basename)); in lnstat_scan_dir()
241 if (lnstat_scan_compat_rtstat_fields(lf) < 0) in lnstat_scan_dir()
244 lf->next = lnstat_files; in lnstat_scan_dir()
245 lnstat_files = lf; in lnstat_scan_dir()
250 struct lnstat_file *lf; in lnstat_scan_dir() local
259 lf = alloc_and_open(path, de->d_name); in lnstat_scan_dir()
260 if (!lf) { in lnstat_scan_dir()
266 if (lnstat_scan_fields(lf) < 0) { in lnstat_scan_dir()
272 lf->next = lnstat_files; in lnstat_scan_dir()
273 lnstat_files = lf; in lnstat_scan_dir()
282 struct lnstat_file *lf; in lnstat_dump() local
284 for (lf = lnstat_files; lf; lf = lf->next) { in lnstat_dump()
287 fprintf(outfd, "%s:\n", lf->path); in lnstat_dump()
289 for (i = 0; i < lf->num_fields; i++) in lnstat_dump()
290 fprintf(outfd, "\t%2u: %s\n", i+1, lf->fields[i].name); in lnstat_dump()
299 struct lnstat_file *lf; in lnstat_find_field() local
313 for (lf = lnstat_files; lf; lf = lf->next) { in lnstat_find_field()
316 if (file && strcmp(file, lf->basename)) in lnstat_find_field()
319 for (i = 0; i < lf->num_fields; i++) { in lnstat_find_field()
320 if (!strcmp(field, lf->fields[i].name)) { in lnstat_find_field()
321 ret = &lf->fields[i]; in lnstat_find_field()