From 37a5c7ee418d9684e3e444934b98a7474a898b3b Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 5 Nov 2012 12:28:00 +0100 Subject: [PATCH] lib/path: add path_read_u64() Signed-off-by: Karel Zak --- include/path.h | 6 +++++- lib/path.c | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/path.h b/include/path.h index cefaaa0a4..615d28491 100644 --- a/include/path.h +++ b/include/path.h @@ -2,6 +2,7 @@ #define UTIL_LINUX_PATH_H #include +#include extern FILE *path_fopen(const char *mode, int exit_on_err, const char *path, ...) __attribute__ ((__format__ (__printf__, 3, 4))); @@ -10,7 +11,10 @@ extern void path_read_str(char *result, size_t len, const char *path, ...) extern int path_write_str(const char *str, const char *path, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int path_read_s32(const char *path, ...) - __attribute__ ((__format__ (__printf__, 1, 2))); + __attribute__ ((__format__ (__printf__, 1, 2))); +extern uint64_t path_read_u64(const char *path, ...) + __attribute__ ((__format__ (__printf__, 1, 2))); + extern int path_exist(const char *path, ...) __attribute__ ((__format__ (__printf__, 1, 2))); diff --git a/lib/path.c b/lib/path.c index f4118ccd3..4f955d91c 100644 --- a/lib/path.c +++ b/lib/path.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include "all-io.h" @@ -125,6 +126,27 @@ path_read_s32(const char *path, ...) return result; } +uint64_t +path_read_u64(const char *path, ...) +{ + FILE *fd; + va_list ap; + uint64_t result; + + va_start(ap, path); + fd = path_vfopen("r", 1, path, ap); + va_end(ap); + + if (fscanf(fd, "%"SCNu64, &result) != 1) { + if (ferror(fd)) + err(EXIT_FAILURE, _("failed to read: %s"), pathbuf); + else + errx(EXIT_FAILURE, _("parse error: %s"), pathbuf); + } + fclose(fd); + return result; +} + int path_write_str(const char *str, const char *path, ...) {