diff options
-rw-r--r-- | utils.c | 38 | ||||
-rw-r--r-- | utils.h | 5 |
2 files changed, 41 insertions, 2 deletions
@@ -95,3 +95,41 @@ out_free: free(rpath); return ret; } + +int file_open(FILE **fp, const char *path, const char *name, const char *format) +{ + int ret; + char *rpath; + + ret = asprintf(&rpath, "%s/%s", path, name); + if (ret < 0) + return ret; + + ret = 0; + *fp = fopen(rpath, format); + if (!(*fp)) + ret = -1; + + free(rpath); + return ret; +} + +int file_read_line(FILE **fp, char *line, int size) +{ + if (!(*fp)) + return -1; + + if (fgets(line, size, *fp) != NULL) + return 0; + else + return -1; +} + +int file_close(FILE **fp) +{ + if (!(*fp)) + return -1; + + fclose(*fp); + return 0; +} @@ -25,6 +25,7 @@ extern int file_read_value(const char *path, const char *name, const char *format, void *value); extern int file_write_value(const char *path, const char *name, const char *format, void *value); - - +extern int file_open(FILE **fp, const char *path, const char *name, const char *format); +extern int file_read_line(FILE **fp, char *line, int size); +extern int file_close(FILE **fp); #endif |