diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-04-11 11:06:07 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-04-15 12:21:45 +0200 |
commit | 4f17444eccebeeadeaed212568a202ef97f4e71f (patch) | |
tree | b006ce0f54caf425510289408ed771c1276ac42f | |
parent | db33f32842973245f0adcae2fb7fd23ec4325630 (diff) | |
download | barebox-4f17444eccebeeadeaed212568a202ef97f4e71f.tar.gz barebox-4f17444eccebeeadeaed212568a202ef97f4e71f.tar.xz |
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 <s.hauer@pengutronix.de>
-rw-r--r-- | commands/md.c | 1 | ||||
-rw-r--r-- | commands/mem.c | 23 | ||||
-rw-r--r-- | commands/memcmp.c | 1 | ||||
-rw-r--r-- | commands/memcpy.c | 1 | ||||
-rw-r--r-- | commands/memset.c | 1 | ||||
-rw-r--r-- | commands/mm.c | 1 | ||||
-rw-r--r-- | commands/mw.c | 1 | ||||
-rw-r--r-- | include/common.h | 1 | ||||
-rw-r--r-- | include/libfile.h | 2 | ||||
-rw-r--r-- | 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 <malloc.h> #include <errno.h> #include <fs.h> +#include <libfile.h> #include <fcntl.h> #include <getopt.h> #include <linux/stat.h> 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 <malloc.h> #include <errno.h> #include <fs.h> +#include <libfile.h> #include <fcntl.h> #include <getopt.h> #include <linux/stat.h> 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 <malloc.h> #include <errno.h> #include <fs.h> +#include <libfile.h> #include <fcntl.h> #include <getopt.h> #include <linux/stat.h> 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 <malloc.h> #include <errno.h> #include <fs.h> +#include <libfile.h> #include <fcntl.h> #include <getopt.h> #include <linux/stat.h> 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 <malloc.h> #include <errno.h> #include <fs.h> +#include <libfile.h> #include <fcntl.h> #include <getopt.h> #include <linux/stat.h> 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 <malloc.h> #include <errno.h> #include <fs.h> +#include <libfile.h> #include <fcntl.h> #include <getopt.h> #include <linux/stat.h> 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; +} |