#include <assert.h>
#include <errno.h>
+#include <limits.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
return 0;
}
-int td_read_uint64(td_ctx* ctx, const char* path, uint64_t* number) {
+int td_read_uint64(td_ctx* ctx, uint64_t* number, const char* format, ...) {
td_file* file = NULL;
+ char path[PATH_MAX];
+ va_list args;
int r;
+ // Format the path
+ va_start(args, format);
+ r = td_string_vformat(path, format, args);
+ va_end(args);
+
+ // Handle formatting errors
+ if (r < 0)
+ goto ERROR;
+
// Open the file
r = td_file_open_path(&file, ctx, path);
if (r < 0)
// Shorthands
-int td_read_uint64(td_ctx* ctx, const char* path, uint64_t* number);
+int td_read_uint64(td_ctx* ctx, uint64_t* number, const char* format, ...)
+ __attribute__((format(printf, 3, 4)));
int td_parse(td_ctx* ctx, const char* path, td_file_parser* parser);
#endif /* TELEMETRY_FILE_H */
int r;
// Read the total number of connections
- r = td_read_uint64(ctx, "/proc/sys/net/netfilter/nf_conntrack_count", &count);
+ r = td_read_uint64(ctx, &count, "/proc/sys/net/netfilter/nf_conntrack_count");
if (r < 0) {
ERROR(ctx, "Failed to read %s: %s\n",
"/proc/sys/net/netfilter/nf_conntrack_count", strerror(-r));
}
// Read the maximum number of connections
- r = td_read_uint64(ctx, "/proc/sys/net/netfilter/nf_conntrack_max", &max);
+ r = td_read_uint64(ctx, &max, "/proc/sys/net/netfilter/nf_conntrack_max");
if (r < 0) {
ERROR(ctx, "Failed to read %s: %s\n",
"/proc/sys/net/netfilter/nf_conntrack_max", strerror(-r));