aboutsummaryrefslogtreecommitdiff
path: root/src/blocks/ram.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blocks/ram.c')
-rw-r--r--src/blocks/ram.c35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/blocks/ram.c b/src/blocks/ram.c
index 5ea7760..da56baa 100644
--- a/src/blocks/ram.c
+++ b/src/blocks/ram.c
@@ -19,19 +19,34 @@ static const struct timespec block_ram_interval = {
static void block_ram_update(block_t *block)
{
- FILE *meminfo = fopen("/proc/meminfo", "rb");
- assert(meminfo != NULL);
+ const char *path = "/proc/meminfo";
+ FILE *meminfo = fopen(path, "rb");
+
+ if (meminfo == NULL) {
+ log_value_debug("Failed to open meminfo",
+ "s:label", block->label,
+ "s:path", path,
+ "i:errno", errno);
+ return;
+ }
uintmax_t total, unused, available, buffers, cached;
- assert(5 == fscanf(meminfo,
- "MemTotal: %ju kB\n"
- "MemFree: %ju kB\n"
- "MemAvailable: %ju kB\n"
- "Buffers: %ju kB\n"
- "Cached: %ju kB\n",
- &total, &unused, &available, &buffers, &cached));
+ int n = fscanf(meminfo,
+ "MemTotal: %ju kB\n"
+ "MemFree: %ju kB\n"
+ "MemAvailable: %ju kB\n"
+ "Buffers: %ju kB\n"
+ "Cached: %ju kB\n",
+ &total, &unused, &available, &buffers, &cached);
fclose(meminfo);
+ if (n != 5) {
+ log_value_debug("Failed to read meminfo",
+ "s:label", block->label,
+ "i:errno", errno);
+ return;
+ }
+
static const char *ram_formats[] = {
"total",
"free",
@@ -98,7 +113,7 @@ static bool block_ram_validate(block_t *block, const block_scheme_t *scheme)
}
ram->format = ram->block.text;
- ram->block.text = NULL;
+ ram->block.text = strcopy("?");
return true;
}