From 4f17444eccebeeadeaed212568a202ef97f4e71f Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 11 Apr 2016 11:06:07 +0200 Subject: libfile: move open_and_lseek() to libfile libfile is a collection of helpers for handling files. open_and_lseek() is a perfect match for this, so move it there. Signed-off-by: Sascha Hauer --- commands/md.c | 1 + commands/mem.c | 23 ----------------------- commands/memcmp.c | 1 + commands/memcpy.c | 1 + commands/memset.c | 1 + commands/mm.c | 1 + commands/mw.c | 1 + include/common.h | 1 - include/libfile.h | 2 ++ lib/libfile.c | 32 ++++++++++++++++++++++++++++++++ 10 files changed, 40 insertions(+), 24 deletions(-) diff --git a/commands/md.c b/commands/md.c index c88259a3f8..3e83c723a3 100644 --- a/commands/md.c +++ b/commands/md.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/commands/mem.c b/commands/mem.c index 23c703f0b5..907f1f76a8 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -41,29 +41,6 @@ char *mem_rw_buf; -int open_and_lseek(const char *filename, int mode, loff_t pos) -{ - int fd, ret; - - fd = open(filename, mode | O_RDONLY); - if (fd < 0) { - perror("open"); - return fd; - } - - if (!pos) - return fd; - - ret = lseek(fd, pos, SEEK_SET); - if (ret == -1) { - perror("lseek"); - close(fd); - return -errno; - } - - return fd; -} - /* * Common function for parsing options for the 'md', 'mw', 'memcpy', 'memcmp' * commands. diff --git a/commands/memcmp.c b/commands/memcmp.c index e079d5f78e..ce044df0d9 100644 --- a/commands/memcmp.c +++ b/commands/memcmp.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/commands/memcpy.c b/commands/memcpy.c index 9c8b64525c..168ef3b4fc 100644 --- a/commands/memcpy.c +++ b/commands/memcpy.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/commands/memset.c b/commands/memset.c index fc5b659b9b..f871e07c95 100644 --- a/commands/memset.c +++ b/commands/memset.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/commands/mm.c b/commands/mm.c index 7c890a6696..6d2a887892 100644 --- a/commands/mm.c +++ b/commands/mm.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/commands/mw.c b/commands/mw.c index 8ca3c61d7f..bb6a16ef3d 100644 --- a/commands/mw.c +++ b/commands/mw.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/include/common.h b/include/common.h index 54120c447a..680a0affb6 100644 --- a/include/common.h +++ b/include/common.h @@ -128,7 +128,6 @@ static inline void print_hex_dump(const char *level, const char *prefix_str, int mem_parse_options(int argc, char *argv[], char *optstr, int *mode, char **sourcefile, char **destfile, int *swab); -int open_and_lseek(const char *filename, int mode, loff_t pos); #define RW_BUF_SIZE (unsigned)4096 extern const char version_string[]; diff --git a/include/libfile.h b/include/libfile.h index d5b914a47a..51fa06008f 100644 --- a/include/libfile.h +++ b/include/libfile.h @@ -19,4 +19,6 @@ int copy_recursive(const char *src, const char *dst); int compare_file(const char *f1, const char *f2); +int open_and_lseek(const char *filename, int mode, loff_t pos); + #endif /* __LIBFILE_H */ diff --git a/lib/libfile.c b/lib/libfile.c index a27460c10d..2c72ffe066 100644 --- a/lib/libfile.c +++ b/lib/libfile.c @@ -442,3 +442,35 @@ err_out1: close(fd1); return ret; } + +/** + * open_and_lseek - open file and lseek to position + * @filename: The file to open + * @mode: The file open mode + * @pos: The position to lseek to + * + * Return: If successful this function returns a positive filedescriptor + * number, otherwise a negative error code is returned + */ +int open_and_lseek(const char *filename, int mode, loff_t pos) +{ + int fd, ret; + + fd = open(filename, mode | O_RDONLY); + if (fd < 0) { + perror("open"); + return fd; + } + + if (!pos) + return fd; + + ret = lseek(fd, pos, SEEK_SET); + if (ret == -1) { + perror("lseek"); + close(fd); + return -errno; + } + + return fd; +} -- cgit v1.2.3