summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-05-09 08:49:42 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-05-09 08:49:42 +0200
commit55aca0a48c5cb68eeddf723a5bc69fc052071e61 (patch)
tree00961bee994725f5d3ee678c5630b53ecc5a02fe /lib
parent216f412ede9cb78ccdfd00df89246ab1ffc9e300 (diff)
parent18f0d2221a4c781dad2a224f8ac17e7c95fd1d9c (diff)
downloadbarebox-55aca0a48c5cb68eeddf723a5bc69fc052071e61.tar.gz
barebox-55aca0a48c5cb68eeddf723a5bc69fc052071e61.tar.xz
Merge branch 'for-next/include-cleanup'
Diffstat (limited to 'lib')
-rw-r--r--lib/libfile.c38
-rw-r--r--lib/logo/logo.c2
-rw-r--r--lib/make_directory.c1
-rw-r--r--lib/parameter.c8
-rw-r--r--lib/readkey.c8
-rw-r--r--lib/readline_simple.c2
-rw-r--r--lib/show_progress.c3
-rw-r--r--lib/stringlist.c2
-rw-r--r--lib/uncompress.c3
-rw-r--r--lib/unlink-recursive.c1
-rw-r--r--lib/vsprintf.c48
-rw-r--r--lib/xfuncs.c2
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;