aboutsummaryrefslogtreecommitdiff
path: root/src/blocks/ram.c
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-11-16 03:04:47 +0100
committerFederico Angelilli <code@fedang.net>2024-11-16 03:04:47 +0100
commit43fb3ac0b3f25cf1cc8aa0624b883ad372a5da95 (patch)
tree588d1e5e5b92cca3bde6594aa7c107084e21a2c8 /src/blocks/ram.c
parent7d2b6ded634ef926cd6baf25dd8e89db7e45c7c2 (diff)
Handle errors without assert
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;
}