diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-05-09 08:49:42 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-05-09 08:49:42 +0200 |
commit | 55aca0a48c5cb68eeddf723a5bc69fc052071e61 (patch) | |
tree | 00961bee994725f5d3ee678c5630b53ecc5a02fe /lib | |
parent | 216f412ede9cb78ccdfd00df89246ab1ffc9e300 (diff) | |
parent | 18f0d2221a4c781dad2a224f8ac17e7c95fd1d9c (diff) | |
download | barebox-55aca0a48c5cb68eeddf723a5bc69fc052071e61.tar.gz barebox-55aca0a48c5cb68eeddf723a5bc69fc052071e61.tar.xz |
Merge branch 'for-next/include-cleanup'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libfile.c | 38 | ||||
-rw-r--r-- | lib/logo/logo.c | 2 | ||||
-rw-r--r-- | lib/make_directory.c | 1 | ||||
-rw-r--r-- | lib/parameter.c | 8 | ||||
-rw-r--r-- | lib/readkey.c | 8 | ||||
-rw-r--r-- | lib/readline_simple.c | 2 | ||||
-rw-r--r-- | lib/show_progress.c | 3 | ||||
-rw-r--r-- | lib/stringlist.c | 2 | ||||
-rw-r--r-- | lib/uncompress.c | 3 | ||||
-rw-r--r-- | lib/unlink-recursive.c | 1 | ||||
-rw-r--r-- | lib/vsprintf.c | 48 | ||||
-rw-r--r-- | lib/xfuncs.c | 2 |
12 files changed, 92 insertions, 26 deletions
diff --git a/lib/libfile.c b/lib/libfile.c index a27460c10d..62e9b8ed22 100644 --- a/lib/libfile.c +++ b/lib/libfile.c @@ -91,7 +91,7 @@ char *read_file_line(const char *fmt, ...) struct stat s; va_start(args, fmt); - filename = vasprintf(fmt, args); + filename = bvasprintf(fmt, args); va_end(args); ret = stat(filename, &s); @@ -359,8 +359,8 @@ int copy_recursive(const char *src, const char *dst) if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) continue; - from = asprintf("%s/%s", src, d->d_name); - to = asprintf("%s/%s", dst, d->d_name); + from = basprintf("%s/%s", src, d->d_name); + to = basprintf("%s/%s", dst, d->d_name); ret = copy_recursive(from, to); if (ret) break; @@ -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; +} diff --git a/lib/logo/logo.c b/lib/logo/logo.c index 614d8c0908..9edf212232 100644 --- a/lib/logo/logo.c +++ b/lib/logo/logo.c @@ -36,7 +36,7 @@ static void load_logo(int width, void *start, void *end) char *filename; size_t size = end - start; - filename = asprintf("/logo/barebox-logo-%d.png", width); + filename = basprintf("/logo/barebox-logo-%d.png", width); write_file(filename, start, size); free(filename); } diff --git a/lib/make_directory.c b/lib/make_directory.c index 7432efc192..29d08cf536 100644 --- a/lib/make_directory.c +++ b/lib/make_directory.c @@ -3,6 +3,7 @@ #include <errno.h> #ifdef __BAREBOX__ #include <fs.h> +#include <libfile.h> #include <malloc.h> #include <common.h> #define STATIC diff --git a/lib/parameter.c b/lib/parameter.c index cf34817dc2..3d356fb972 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -345,7 +345,7 @@ static const char *param_int_get(struct device_d *dev, struct param_d *p) } free(p->value); - p->value = asprintf(pi->format, *pi->value); + p->value = basprintf(pi->format, *pi->value); return p->value; } @@ -447,7 +447,7 @@ static const char *param_enum_get(struct device_d *dev, struct param_d *p) free(p->value); if (*pe->value >= pe->num_names) - p->value = asprintf("invalid:%d", *pe->value); + p->value = basprintf("invalid:%d", *pe->value); else p->value = strdup(pe->names[*pe->value]); @@ -560,7 +560,7 @@ struct param_d *dev_add_param_int_ro(struct device_d *dev, const char *name, return ERR_PTR(ret); } - piro->param.value = asprintf(format, value); + piro->param.value = basprintf(format, value); return &piro->param; } @@ -586,7 +586,7 @@ struct param_d *dev_add_param_llint_ro(struct device_d *dev, const char *name, return ERR_PTR(ret); } - piro->param.value = asprintf(format, value); + piro->param.value = basprintf(format, value); return &piro->param; } diff --git a/lib/readkey.c b/lib/readkey.c index 2073a732f4..2870a5a9fe 100644 --- a/lib/readkey.c +++ b/lib/readkey.c @@ -53,15 +53,15 @@ int read_key(void) { char c; char esc[5]; - c = getc(); + c = getchar(); if (c == 27) { int i = 0; - esc[i++] = getc(); - esc[i++] = getc(); + esc[i++] = getchar(); + esc[i++] = getchar(); if (isdigit(esc[1])) { while(1) { - esc[i] = getc(); + esc[i] = getchar(); if (esc[i++] == '~') break; if (i == ARRAY_SIZE(esc)) diff --git a/lib/readline_simple.c b/lib/readline_simple.c index 1a40d113e3..c2960665fb 100644 --- a/lib/readline_simple.c +++ b/lib/readline_simple.c @@ -70,7 +70,7 @@ int readline (const char *prompt, char *line, int len) show_activity(0); } #endif - c = getc(); + c = getchar(); /* * Special character handling diff --git a/lib/show_progress.c b/lib/show_progress.c index f9aa1a945e..a32a13c16d 100644 --- a/lib/show_progress.c +++ b/lib/show_progress.c @@ -21,7 +21,6 @@ #include <fs.h> #include <progress.h> #include <asm-generic/div64.h> -#include <linux/stringify.h> #define HASHES_PER_LINE 65 @@ -58,7 +57,7 @@ void init_progression_bar(int max) progress_max = max; spin = 0; if (progress_max && progress_max != FILESIZE_MAX) - printf("\t[%"__stringify(HASHES_PER_LINE)"s]\r\t[", ""); + printf("\t[%*s]\r\t[", HASHES_PER_LINE, ""); else printf("\t"); } diff --git a/lib/stringlist.c b/lib/stringlist.c index 8a18366a96..8e92c1b207 100644 --- a/lib/stringlist.c +++ b/lib/stringlist.c @@ -34,7 +34,7 @@ int string_list_add_asprintf(struct string_list *sl, const char *fmt, ...) va_start(args, fmt); - new->str = vasprintf(fmt, args); + new->str = bvasprintf(fmt, args); va_end(args); diff --git a/lib/uncompress.c b/lib/uncompress.c index 329c9fc366..3e4bc5f9e5 100644 --- a/lib/uncompress.c +++ b/lib/uncompress.c @@ -125,7 +125,8 @@ int uncompress(unsigned char *inbuf, int len, break; #endif default: - err = asprintf("cannot handle filetype %s", file_type_to_string(ft)); + err = basprintf("cannot handle filetype %s", + file_type_to_string(ft)); error_fn(err); free(err); ret = -ENOSYS; diff --git a/lib/unlink-recursive.c b/lib/unlink-recursive.c index 78dc01593d..434fdc791b 100644 --- a/lib/unlink-recursive.c +++ b/lib/unlink-recursive.c @@ -1,4 +1,5 @@ #include <common.h> +#include <libfile.h> #include <errno.h> #include <libbb.h> #include <fs.h> diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 00b8863957..1122a4ad38 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -646,12 +646,11 @@ int scnprintf(char *buf, size_t size, const char *fmt, ...) } EXPORT_SYMBOL(scnprintf); -/* Simplified asprintf. */ -char *vasprintf(const char *fmt, va_list ap) +int vasprintf(char **strp, const char *fmt, va_list ap) { unsigned int len; - char *p; va_list aq; + char *p; va_copy(aq, ap); len = vsnprintf(NULL, 0, fmt, aq); @@ -659,23 +658,56 @@ char *vasprintf(const char *fmt, va_list ap) p = malloc(len + 1); if (!p) - return NULL; + return -1; vsnprintf(p, len + 1, fmt, ap); - return p; + *strp = p; + + return len; } EXPORT_SYMBOL(vasprintf); -char *asprintf(const char *fmt, ...) +char *bvasprintf(const char *fmt, va_list ap) +{ + char *p; + int len; + + len = vasprintf(&p, fmt, ap); + if (len < 0) + return NULL; + + return p; +} +EXPORT_SYMBOL(bvasprintf); + +int asprintf(char **strp, const char *fmt, ...) { va_list ap; char *p; + int len; va_start(ap, fmt); - p = vasprintf(fmt, ap); + len = vasprintf(&p, fmt, ap); va_end(ap); - return p; + return len; } EXPORT_SYMBOL(asprintf); + +char *basprintf(const char *fmt, ...) +{ + va_list ap; + char *p; + int len; + + va_start(ap, fmt); + len = vasprintf(&p, fmt, ap); + va_end(ap); + + if (len < 0) + return NULL; + + return p; +} +EXPORT_SYMBOL(basprintf); diff --git a/lib/xfuncs.c b/lib/xfuncs.c index 152081c662..aaf0788544 100644 --- a/lib/xfuncs.c +++ b/lib/xfuncs.c @@ -109,7 +109,7 @@ char *xvasprintf(const char *fmt, va_list ap) { char *p; - p = vasprintf(fmt, ap); + p = bvasprintf(fmt, ap); if (!p) panic("ERROR: out of memory\n"); return p; |