summaryrefslogtreecommitdiffstats
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
parent216f412ede9cb78ccdfd00df89246ab1ffc9e300 (diff)
parent18f0d2221a4c781dad2a224f8ac17e7c95fd1d9c (diff)
downloadbarebox-55aca0a48c5cb68eeddf723a5bc69fc052071e61.tar.gz
Merge branch 'for-next/include-cleanup'
-rw-r--r--arch/arm/boards/edb93xx/edb93xx.c2
-rw-r--r--arch/arm/boards/embedsky-e9/board.c4
-rw-r--r--arch/arm/boards/phytec-som-imx6/board.c10
-rw-r--r--arch/arm/boards/raspberry-pi/rpi-common.c6
-rw-r--r--arch/arm/mach-at91/bootstrap.c16
-rw-r--r--arch/arm/mach-imx/iim.c2
-rw-r--r--arch/arm/mach-omap/omap_generic.c2
-rw-r--r--arch/arm/mach-omap/xload.c4
-rw-r--r--arch/ppc/boards/geip-da923rc/product_data.c1
-rw-r--r--commands/automount.c1
-rw-r--r--commands/boot.c6
-rw-r--r--commands/clk.c4
-rw-r--r--commands/crc.c5
-rw-r--r--commands/defaultenv.c4
-rw-r--r--commands/echo.c10
-rw-r--r--commands/edit.c2
-rw-r--r--commands/hashsum.c2
-rw-r--r--commands/loadb.c7
-rw-r--r--commands/loadenv.c1
-rw-r--r--commands/loads.c6
-rw-r--r--commands/md.c1
-rw-r--r--commands/mem.c23
-rw-r--r--commands/memcmp.c1
-rw-r--r--commands/memcpy.c1
-rw-r--r--commands/memset.c1
-rw-r--r--commands/menu.c4
-rw-r--r--commands/miitool.c2
-rw-r--r--commands/mkdir.c1
-rw-r--r--commands/mm.c1
-rw-r--r--commands/mmc_extcsd.c83
-rw-r--r--commands/mw.c1
-rw-r--r--commands/rm.c1
-rw-r--r--commands/tftp.c4
-rw-r--r--common/blspec.c34
-rw-r--r--common/bootargs.c6
-rw-r--r--common/console.c22
-rw-r--r--common/console_common.c18
-rw-r--r--common/console_countdown.c2
-rw-r--r--common/console_simple.c6
-rw-r--r--common/env.c2
-rw-r--r--common/environment.c5
-rw-r--r--common/firmware.c2
-rw-r--r--common/globalvar.c9
-rw-r--r--common/imd.c4
-rw-r--r--common/imx-bbu-nand-fcb.c1
-rw-r--r--common/menutree.c6
-rw-r--r--common/partitions.c2
-rw-r--r--common/partitions/efi.c1
-rw-r--r--common/password.c3
-rw-r--r--common/startup.c1
-rw-r--r--common/state.c5
-rw-r--r--common/uimage.c1
-rw-r--r--crypto/crc32.c1
-rw-r--r--crypto/hmac.c4
-rw-r--r--drivers/ata/disk_ata_drive.c2
-rw-r--r--drivers/ata/disk_bios_drive.c2
-rw-r--r--drivers/eeprom/at24.c2
-rw-r--r--drivers/mci/mci-core.c6
-rw-r--r--drivers/mfd/stmpe-i2c.c4
-rw-r--r--drivers/misc/sram.c3
-rw-r--r--drivers/mtd/core.c12
-rw-r--r--drivers/mtd/devices/docg3.c4
-rw-r--r--drivers/mtd/mtdoob.c2
-rw-r--r--drivers/mtd/mtdraw.c2
-rw-r--r--drivers/mtd/nand/nand-bb.c2
-rw-r--r--drivers/mtd/nand/nand_imx_bbm.c2
-rw-r--r--drivers/mtd/ubi/barebox.c4
-rw-r--r--drivers/mtd/ubi/ubi-barebox.h3
-rw-r--r--drivers/mtd/ubi/ubi.h1
-rw-r--r--drivers/net/ksz8864rmn.c2
-rw-r--r--drivers/of/barebox.c2
-rw-r--r--drivers/of/base.c3
-rw-r--r--drivers/of/of_path.c2
-rw-r--r--drivers/of/partition.c2
-rw-r--r--drivers/pci/pci-mvebu.c4
-rw-r--r--drivers/pinctrl/pinctrl.c2
-rw-r--r--drivers/pwm/pwm-imx.c5
-rw-r--r--drivers/pwm/pwm-mxs.c2
-rw-r--r--drivers/pwm/pxa_pwm.c2
-rw-r--r--drivers/regulator/core.c2
-rw-r--r--drivers/spi/gpio_spi.c2
-rw-r--r--drivers/usb/gadget/composite.c2
-rw-r--r--drivers/usb/gadget/f_fastboot.c8
-rw-r--r--drivers/usb/storage/usb.c2
-rw-r--r--drivers/video/edid.c9
-rw-r--r--drivers/video/fb.c2
-rw-r--r--drivers/video/imx-ipu-v3/imx-ldb.c8
-rw-r--r--drivers/video/imx-ipu-v3/ipu-di.c3
-rw-r--r--drivers/video/imx-ipu-v3/ipufb.c2
-rw-r--r--drivers/w1/slaves/w1_ds2431.c2
-rw-r--r--drivers/w1/slaves/w1_ds2433.c2
-rw-r--r--fs/bpkfs.c7
-rw-r--r--fs/efi.c5
-rw-r--r--fs/efivarfs.c4
-rw-r--r--fs/fs.c9
-rw-r--r--fs/nfs.c9
-rw-r--r--fs/ubifs/ubifs.c4
-rw-r--r--fs/ubifs/ubifs.h1
-rw-r--r--fs/uimagefs.c11
-rw-r--r--include/command.h1
-rw-r--r--include/common.h29
-rw-r--r--include/crc.h102
-rw-r--r--include/dirent.h20
-rw-r--r--include/fcntl.h100
-rw-r--r--include/fs.h56
-rw-r--r--include/libfile.h7
-rw-r--r--include/mtd/utils.h2
-rw-r--r--include/shell.h11
-rw-r--r--include/stdio.h57
-rw-r--r--include/sys/ioctl.h6
-rw-r--r--include/sys/mount.h8
-rw-r--r--include/sys/stat.h9
-rw-r--r--include/unistd.h24
-rw-r--r--include/w1_mac_address.h2
-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
-rw-r--r--net/dhcp.c6
-rw-r--r--net/dns.c4
-rw-r--r--net/ifup.c4
-rw-r--r--scripts/bareboximd.c2
130 files changed, 509 insertions, 584 deletions
diff --git a/arch/arm/boards/edb93xx/edb93xx.c b/arch/arm/boards/edb93xx/edb93xx.c
index 0fb93d2..3b8e668 100644
--- a/arch/arm/boards/edb93xx/edb93xx.c
+++ b/arch/arm/boards/edb93xx/edb93xx.c
@@ -123,7 +123,7 @@ static int edb93xx_console_init(void)
else
shortname = "unknown";
- board = asprintf("Cirrus Logic %s", shortname);
+ board = basprintf("Cirrus Logic %s", shortname);
barebox_set_model(board);
free(board);
barebox_set_hostname(shortname);
diff --git a/arch/arm/boards/embedsky-e9/board.c b/arch/arm/boards/embedsky-e9/board.c
index 23bfec1..251bfee 100644
--- a/arch/arm/boards/embedsky-e9/board.c
+++ b/arch/arm/boards/embedsky-e9/board.c
@@ -70,8 +70,8 @@ static int e9_devices_init(void)
armlinux_set_architecture(3980);
- environment_path = asprintf("/chosen/environment-mmc%d",
- bootsource_get_instance());
+ environment_path = basprintf("/chosen/environment-mmc%d",
+ bootsource_get_instance());
ret = of_device_enable_path(environment_path);
diff --git a/arch/arm/boards/phytec-som-imx6/board.c b/arch/arm/boards/phytec-som-imx6/board.c
index 9338f1c..fe23794 100644
--- a/arch/arm/boards/phytec-som-imx6/board.c
+++ b/arch/arm/boards/phytec-som-imx6/board.c
@@ -125,20 +125,20 @@ static int physom_imx6_devices_init(void)
switch (bootsource_get()) {
case BOOTSOURCE_MMC:
- environment_path = asprintf("/chosen/environment-sd%d",
- bootsource_get_instance() + 1);
+ environment_path = basprintf("/chosen/environment-sd%d",
+ bootsource_get_instance() + 1);
envdev = "MMC";
break;
case BOOTSOURCE_NAND:
- environment_path = asprintf("/chosen/environment-nand");
+ environment_path = basprintf("/chosen/environment-nand");
envdev = "NAND flash";
break;
case BOOTSOURCE_SPI:
- environment_path = asprintf("/chosen/environment-spinor");
+ environment_path = basprintf("/chosen/environment-spinor");
envdev = "SPI NOR flash";
break;
default:
- environment_path = asprintf(default_environment_path);
+ environment_path = basprintf(default_environment_path);
envdev = default_envdev;
break;
}
diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c
index 0e17587..147fce9 100644
--- a/arch/arm/boards/raspberry-pi/rpi-common.c
+++ b/arch/arm/boards/raspberry-pi/rpi-common.c
@@ -201,8 +201,8 @@ static void rpi_get_board_rev(void)
if (!rpi_board_rev)
goto unknown_rev;
- name = asprintf("RaspberryPi %s %s", rpi_models[rpi_board_rev].name,
- rpi_model_string);
+ name = basprintf("RaspberryPi %s %s",
+ rpi_models[rpi_board_rev].name, rpi_model_string);
barebox_set_model(name);
free(name);
@@ -210,7 +210,7 @@ static void rpi_get_board_rev(void)
unknown_rev:
rpi_board_rev = 0;
- name = asprintf("RaspberryPi %s", rpi_model_string);
+ name = basprintf("RaspberryPi %s", rpi_model_string);
barebox_set_model(name);
free(name);
}
diff --git a/arch/arm/mach-at91/bootstrap.c b/arch/arm/mach-at91/bootstrap.c
index 47e7896..8502bb0 100644
--- a/arch/arm/mach-at91/bootstrap.c
+++ b/arch/arm/mach-at91/bootstrap.c
@@ -99,49 +99,49 @@ static void boot_nand_barebox_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_nand(true);
- getc();
+ getchar();
}
static void boot_nand_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_nand(false);
- getc();
+ getchar();
}
static void boot_m25p80_barebox_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_nand(true);
- getc();
+ getchar();
}
static void boot_m25p80_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_nand(false);
- getc();
+ getchar();
}
static void boot_dataflash_barebox_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_dataflash(true);
- getc();
+ getchar();
}
static void boot_dataflash_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_dataflash(false);
- getc();
+ getchar();
}
static void boot_mmc_disk_action(struct menu *m, struct menu_entry *me)
{
at91bootstrap_boot_mmc();
- getc();
+ getchar();
}
static void boot_reset_action(struct menu *m, struct menu_entry *me)
@@ -234,7 +234,7 @@ static int at91_bootstrap(void)
{
if (is_menu()) {
printf("press 'm' to start the menu\n");
- if (tstc() && getc() == 'm')
+ if (tstc() && getchar() == 'm')
at91_bootstrap_menu();
}
diff --git a/arch/arm/mach-imx/iim.c b/arch/arm/mach-imx/iim.c
index dbd8ccf..ecaa7e6 100644
--- a/arch/arm/mach-imx/iim.c
+++ b/arch/arm/mach-imx/iim.c
@@ -330,7 +330,7 @@ static void imx_iim_add_mac_param(struct iim_priv *iim, int macnum, int bank, in
iimmac->offset = offset;
iimmac->bank = iim->bank[bank];
- name = asprintf("ethaddr%d", macnum);
+ name = basprintf("ethaddr%d", macnum);
dev_add_param_mac(&iim->dev, name, imx_iim_set_mac,
imx_iim_get_mac, iimmac->ethaddr, iimmac);
diff --git a/arch/arm/mach-omap/omap_generic.c b/arch/arm/mach-omap/omap_generic.c
index 34ed940..d27c7a8 100644
--- a/arch/arm/mach-omap/omap_generic.c
+++ b/arch/arm/mach-omap/omap_generic.c
@@ -130,7 +130,7 @@ static int omap_env_init(void)
device_detect_by_name(diskdev);
- partname = asprintf("/dev/%s.0", diskdev);
+ partname = basprintf("/dev/%s.0", diskdev);
mkdir("/boot", 0666);
ret = mount(partname, "fat", "/boot", NULL);
diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
index 8805930..7793819 100644
--- a/arch/arm/mach-omap/xload.c
+++ b/arch/arm/mach-omap/xload.c
@@ -115,7 +115,7 @@ static void *omap_xload_boot_mmc(void)
device_detect_by_name(diskdev);
- partname = asprintf("%s.0", diskdev);
+ partname = basprintf("%s.0", diskdev);
ret = mount(partname, NULL, "/", NULL);
@@ -280,7 +280,7 @@ static void *am33xx_net_boot(void)
return NULL;
}
- file = asprintf("%s/%s", TFTP_MOUNT, bootfile);
+ file = basprintf("%s/%s", TFTP_MOUNT, bootfile);
buf = read_file(file, &len);
if (!buf)
diff --git a/arch/ppc/boards/geip-da923rc/product_data.c b/arch/ppc/boards/geip-da923rc/product_data.c
index 0c46006..eda10a4 100644
--- a/arch/ppc/boards/geip-da923rc/product_data.c
+++ b/arch/ppc/boards/geip-da923rc/product_data.c
@@ -15,6 +15,7 @@
*/
#include <common.h>
+#include <crc.h>
#include <i2c/i2c.h>
#include <mach/immap_85xx.h>
#include <mach/fsl_i2c.h>
diff --git a/commands/automount.c b/commands/automount.c
index b491d20..a71430c 100644
--- a/commands/automount.c
+++ b/commands/automount.c
@@ -20,6 +20,7 @@
#include <fs.h>
#include <errno.h>
#include <getopt.h>
+#include <libfile.h>
static int do_automount(int argc, char *argv[])
{
diff --git a/commands/boot.c b/commands/boot.c
index f403010..bd1be4b 100644
--- a/commands/boot.c
+++ b/commands/boot.c
@@ -156,7 +156,7 @@ static int bootscript_scan_path(struct blspec *blspec, const char *path)
return 1;
}
- files = asprintf("%s/*", path);
+ files = basprintf("%s/*", path);
glob(files, 0, NULL, &globb);
@@ -208,7 +208,7 @@ static int bootentry_parse_one(struct blspec *blspec, const char *name)
char *path;
if (*name != '/')
- path = asprintf("/env/boot/%s", name);
+ path = basprintf("/env/boot/%s", name);
else
path = xstrdup(name);
@@ -233,7 +233,7 @@ static struct blspec *bootentries_collect(char *entries[], int num_entries)
blspec = blspec_alloc();
if (IS_ENABLED(CONFIG_MENU))
- blspec->menu->display = asprintf("boot");
+ blspec->menu->display = basprintf("boot");
if (!num_entries)
bootscript_scan_path(blspec, "/env/boot");
diff --git a/commands/clk.c b/commands/clk.c
index e9459a3..f862c45 100644
--- a/commands/clk.c
+++ b/commands/clk.c
@@ -97,7 +97,7 @@ static int do_clk_get_rate(int argc, char *argv[])
}
if (optind == argc) {
- fprintf(stderr, "No clock name given\n");
+ eprintf("No clock name given\n");
return COMMAND_ERROR_USAGE;
}
@@ -110,7 +110,7 @@ static int do_clk_get_rate(int argc, char *argv[])
if (variable_name) {
char *t;
- t = asprintf("%lu", rate);
+ t = basprintf("%lu", rate);
setenv(variable_name, t);
free(t);
} else
diff --git a/commands/crc.c b/commands/crc.c
index 58b750e..edb1fb1 100644
--- a/commands/crc.c
+++ b/commands/crc.c
@@ -20,6 +20,7 @@
#include <common.h>
#include <command.h>
#include <fs.h>
+#include <crc.h>
#include <getopt.h>
#include <malloc.h>
#include <libfile.h>
@@ -97,13 +98,13 @@ static int do_crc(int argc, char *argv[])
filename, (ulong)start, (ulong)start + total - 1, crc);
if (crcvarname) {
- char *crcstr = asprintf("0x%lx", crc);
+ char *crcstr = basprintf("0x%lx", crc);
setenv(crcvarname, crcstr);
kfree(crcstr);
}
if (sizevarname) {
- char *sizestr = asprintf("0x%lx", total);
+ char *sizestr = basprintf("0x%lx", total);
setenv(sizevarname, sizestr);
kfree(sizestr);
}
diff --git a/commands/defaultenv.c b/commands/defaultenv.c
index bae2d78..47bdf26 100644
--- a/commands/defaultenv.c
+++ b/commands/defaultenv.c
@@ -60,8 +60,8 @@ static int do_defaultenv(int argc, char *argv[])
if (ret)
return ret;
- from = asprintf("/.defaultenv/%s", restorepath);
- to = asprintf("%s/%s", dirname, restorepath);
+ from = basprintf("/.defaultenv/%s", restorepath);
+ to = basprintf("%s/%s", dirname, restorepath);
printf("Restoring %s from default environment\n", restorepath);
diff --git a/commands/echo.c b/commands/echo.c
index 7d47ab7..8853ee0 100644
--- a/commands/echo.c
+++ b/commands/echo.c
@@ -27,7 +27,7 @@
static int do_echo(int argc, char *argv[])
{
int i, optind = 1;
- int fd = stdout, opt, newline = 1;
+ int fd = STDOUT_FILENO, opt, newline = 1;
char *file = NULL;
int oflags = O_WRONLY | O_CREAT;
char str[CONFIG_CBSIZE];
@@ -81,17 +81,17 @@ exit_parse:
for (i = optind; i < argc; i++) {
if (i > optind)
- fputc(fd, ' ');
+ dputc(fd, ' ');
if (process_escape) {
process_escape_sequence(argv[i], str, CONFIG_CBSIZE);
- fputs(fd, str);
+ dputs(fd, str);
} else {
- fputs(fd, argv[i]);
+ dputs(fd, argv[i]);
}
}
if (newline)
- fputc(fd, '\n');
+ dputc(fd, '\n');
if (file)
close(fd);
diff --git a/commands/edit.c b/commands/edit.c
index c014892..a5415a6 100644
--- a/commands/edit.c
+++ b/commands/edit.c
@@ -367,7 +367,7 @@ static void getwinsize(void)
printf(ESC "7" ESC "[r" ESC "[999;999H" ESC "[6n");
- while ((r = getc()) != 'R') {
+ while ((r = getchar()) != 'R') {
buf[i] = r;
i++;
}
diff --git a/commands/hashsum.c b/commands/hashsum.c
index 8d3694f..d05e571 100644
--- a/commands/hashsum.c
+++ b/commands/hashsum.c
@@ -46,7 +46,7 @@ static int do_hash(char *algo, int argc, char *argv[])
}
if (key) {
- char *tmp = asprintf("hmac(%s)", algo);
+ char *tmp = basprintf("hmac(%s)", algo);
d = digest_alloc(tmp);
free(tmp);
BUG_ON(!d);
diff --git a/commands/loadb.c b/commands/loadb.c
index 6223512..6180ce3 100644
--- a/commands/loadb.c
+++ b/commands/loadb.c
@@ -183,8 +183,7 @@ static int os_data_save(void)
ret = write(ofd, write_buffer,
MAX_WRITE_BUFFER);
if (ret < 0) {
- fprintf(stderr,
- "write to device failed\n");
+ eprintf("write to device failed\n");
return ret;
}
write_idx = 0;
@@ -563,7 +562,7 @@ static ulong load_serial_bin(void)
/* Try to allocate the buffer we shall write to files */
write_buffer = malloc(MAX_WRITE_BUFFER);
if (write_buffer == NULL) {
- fprintf(stderr, "could not allocate file i/o buffer\n");
+ eprintf("could not allocate file i/o buffer\n");
return -ENOMEM;
}
@@ -585,7 +584,7 @@ static ulong load_serial_bin(void)
if (write_idx > 0) {
i = write(ofd, write_buffer, write_idx);
if (i < 0) {
- fprintf(stderr, "write to device failed\n");
+ eprintf("write to device failed\n");
size = i;
goto err_quit;
}
diff --git a/commands/loadenv.c b/commands/loadenv.c
index 8d6be2f..44e96c3 100644
--- a/commands/loadenv.c
+++ b/commands/loadenv.c
@@ -26,6 +26,7 @@
#include <envfs.h>
#include <errno.h>
#include <fs.h>
+#include <libfile.h>
#include <malloc.h>
#include <globalvar.h>
diff --git a/commands/loads.c b/commands/loads.c
index aa3095e..eb3e109 100644
--- a/commands/loads.c
+++ b/commands/loads.c
@@ -59,7 +59,7 @@ static int do_load_serial(int argc, char *argv[])
*/
for (i=0; i<100; ++i) {
if (tstc()) {
- (void) getc();
+ (void) getchar();
}
udelay(1000);
}
@@ -142,7 +142,7 @@ static int read_record(char *buf, ulong len)
--len; /* always leave room for terminating '\0' byte */
for (p=buf; p < buf+len; ++p) {
- c = getc(); /* read character */
+ c = getchar(); /* read character */
if (do_echo)
putchar(c);
@@ -180,7 +180,7 @@ static int do_save_serial(int argc, char *argv[])
printf ("## Ready for S-Record upload, press ENTER to proceed ...\n");
for (;;) {
- if (getc() == '\r')
+ if (getchar() == '\r')
break;
}
if (save_serial(offset, size)) {
diff --git a/commands/md.c b/commands/md.c
index c88259a..3e83c72 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 23c703f..907f1f7 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 e079d5f..ce044df 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 9c8b645..168ef3b 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 fc5b659..f871e07 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/menu.c b/commands/menu.c
index 2008aa5..9ec2d57 100644
--- a/commands/menu.c
+++ b/commands/menu.c
@@ -160,8 +160,8 @@ static int do_menu_add(struct cmd_menu *cm)
free:
eprintf("Menu '%s' add fail", cm->menu);
if (ret == -EEXIST)
- eputs(" already exist");
- eputs("\n");
+ eprintf(" already exist");
+ eprintf("\n");
menu_free(m);
diff --git a/commands/miitool.c b/commands/miitool.c
index ba6e604..07bce18 100644
--- a/commands/miitool.c
+++ b/commands/miitool.c
@@ -120,7 +120,7 @@ static int show_basic_mii(struct mii_bus *mii, struct phy_device *phydev,
if (mii_val[MII_BMCR] == 0xffff || mii_val[MII_BMSR] == 0x0000) {
- fprintf(stderr, " No MII transceiver present!.\n");
+ eprintf(" No MII transceiver present!.\n");
return -1;
}
diff --git a/commands/mkdir.c b/commands/mkdir.c
index 1f97886..7d024c8 100644
--- a/commands/mkdir.c
+++ b/commands/mkdir.c
@@ -22,6 +22,7 @@
#include <fs.h>
#include <errno.h>
#include <getopt.h>
+#include <libfile.h>
static int do_mkdir(int argc, char *argv[])
{
diff --git a/commands/mm.c b/commands/mm.c
index 7c890a6..6d2a887 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/mmc_extcsd.c b/commands/mmc_extcsd.c
index d05128c..d7fc506 100644
--- a/commands/mmc_extcsd.c
+++ b/commands/mmc_extcsd.c
@@ -153,15 +153,16 @@ static int print_field_ge_v7(u8 *reg, int index)
tmp = get_field_val(DATA_SECTOR_SIZE, 0, 0x1);
if (tmp64 == 0xFFFFFFFF)
if (tmp)
- str = "16 TB";
+ str = strdup("16 TB");
else
- str = "2 TB";
+ str = strdup("2 TB");
else
if (tmp)
- sprintf(str, "%llu B", tmp64 * 4096);
+ str = basprintf("%llu B", tmp64 * 4096);
else
- sprintf(str, "%llu B", tmp64 * 512);
+ str = basprintf("%llu B", tmp64 * 512);
printf("\tMax_Pre_Loading_Data_Size: %s\n", str);
+ free(str);
return 1;
/* EXT_CSD_PRE_LOADING_DATA_SIZE */
@@ -181,15 +182,16 @@ static int print_field_ge_v7(u8 *reg, int index)
tmp = get_field_val(DATA_SECTOR_SIZE, 0, 0x1);
if (tmp64 == 0xFFFFFFFF)
if (tmp)
- str = "16 TB";
+ str = strdup("16 TB");
else
- str = "2 TB";
+ str = strdup("2 TB");
else
if (tmp)
- sprintf(str, "%llu B", tmp64 * 4096);
+ str = basprintf("%llu B", tmp64 * 4096);
else
- sprintf(str, "%llu B", tmp64 * 512);
+ str = basprintf("%llu B", tmp64 * 512);
printf("\tPre_Loading_Data_Size: %s\n", str);
+ free(str);
return 1;
case EXT_CSD_FFU_STATUS:
@@ -319,12 +321,13 @@ static int print_field_ge_v7(u8 *reg, int index)
val = get_field_val(DEVICE_LIFE_TIME_EST_TYP_A, 0, 0xFF);
val = val * 10;
if (val == 0)
- str = "not defined";
+ str = strdup("not defined");
else if (val == 0xB)
- str = "maximum";
+ str = strdup("maximum");
else
- sprintf(str, "%u%% - %u%%", (val - 10), val);
+ str = basprintf("%u%% - %u%%", (val - 10), val);
printf("\tDevice life time, type A (estimation): %s\n", str);
+ free(str);
return 1;
case EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B:
@@ -332,12 +335,13 @@ static int print_field_ge_v7(u8 *reg, int index)
val = get_field_val(DEVICE_LIFE_TIME_EST_TYP_B, 0, 0xFF);
val = val * 10;
if (val == 0)
- str = "not defined";
+ str = strdup("not defined");
else if (val == 0xB)
- str = "maximum";
+ str = strdup("maximum");
else
- sprintf(str, "%u%% - %u%%", (val - 10), val);
+ str = basprintf("%u%% - %u%%", (val - 10), val);
printf("\tDevice life time, type B (estimation): %s\n", str);
+ free(str);
return 1;
/* EXT_CSD_NMBR_OF_FW_SCTRS_CRRCTLY_PRGRMD */
@@ -1687,11 +1691,12 @@ static int print_field(u8 *reg, int index)
val = get_field_val(SLEEP_NOTIFICATION_TIME, 0, 0xFF);
val = 100 << val;
if (val)
- sprintf(str, "Sleep Notification timeout values: %u us",
- val);
+ str = basprintf("Sleep Notification timeout values: %u us",
+ val);
else
- str = "Not defined";
+ str = strdup("Not defined");
printf("\t[7-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_S_A_TIMEOUT:
@@ -1699,10 +1704,11 @@ static int print_field(u8 *reg, int index)
val = get_field_val(S_A_TIMEOUT, 0, 0xFF);
val = 100 << val;
if (val)
- sprintf(str, "Sleep/awake timeout values: %u ns", val);
+ str = basprintf("Sleep/awake timeout values: %u ns", val);
else
- str = "Not defined";
+ str = strdup("Not defined");
printf("\t[7-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_PRODUCTION_ST8_AWARENSS_TIMEOUT:
@@ -1710,12 +1716,13 @@ static int print_field(u8 *reg, int index)
val = get_field_val(PRODUCTION_ST8_AWARENSS_TIMEOUT, 0, 0xFF);
val = 100 << val;
if (val)
- sprintf(str,
+ str = basprintf(
"Production State Awareness timeout definition: %u us",
val);
else
- str = "Not defined";
+ str = strdup("Not defined");
printf("\t[7-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_S_C_VCCQ:
@@ -1723,10 +1730,11 @@ static int print_field(u8 *reg, int index)
val = get_field_val(S_C_VCCQ, 0, 0xF);
val = 1 << val;
if (val)
- sprintf(str, "S_C_VCCQ Sleep Current: %u uA", val);
+ str = basprintf("S_C_VCCQ Sleep Current: %u uA", val);
else
- str = "Not defined";
+ str = strdup("Not defined");
printf("\t[3-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_S_C_VCC:
@@ -1734,20 +1742,22 @@ static int print_field(u8 *reg, int index)
val = get_field_val(S_C_VCC, 0, 0xFF);
val = 1 << val;
if (val)
- sprintf(str, "S_C_VCC Sleep Current: %u uA", val);
+ str = basprintf("S_C_VCC Sleep Current: %u uA", val);
else
- str = "Not defined";
+ str = strdup("Not defined");
printf("\t[3-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_HC_WP_GRP_SIZE:
print_field_caption(HC_WP_GRP_SIZE, R);
val = get_field_val(HC_WP_GRP_SIZE, 0, 0xFF);
if (val)
- sprintf(str, "Write protect group size: %u", val);
+ str = basprintf("Write protect group size: %u", val);
else
- str = "No support";
+ str = strdup("No support");
printf("\t[7-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_REL_WR_SEC_C:
@@ -1761,10 +1771,11 @@ static int print_field(u8 *reg, int index)
val = get_field_val(ERASE_TIMEOUT_MULT, 0, 0xFF);
val = val * 300;
if (val)
- sprintf(str, "Erase timeout values: %u", val);
+ str = basprintf("Erase timeout values: %u", val);
else
- str = "No support";
+ str = strdup("No support");
printf("\t[7-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_HC_ERASE_GRP_SIZE:
@@ -1772,10 +1783,11 @@ static int print_field(u8 *reg, int index)
val = get_field_val(HC_ERASE_GRP_SIZE, 0, 0xFF);
val = val * 524288;
if (val)
- sprintf(str, "Erase-unit size: %u", val);
+ str = basprintf("Erase-unit size: %u", val);
else
- str = "No support";
+ str = strdup("No support");
printf("\t[7-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_ACC_SIZE:
@@ -1783,10 +1795,11 @@ static int print_field(u8 *reg, int index)
val = get_field_val(ACC_SIZE, 0, 0xF);
val = val * 512;
if (val)
- sprintf(str, "Superpage size: %u", val);
+ str = basprintf("Superpage size: %u", val);
else
- str = "Not defined";
+ str = strdup("Not defined");
printf("\t[3-0] %s\n", str);
+ free(str);
return 1;
case EXT_CSD_BOOT_SIZE_MULT:
@@ -1867,14 +1880,14 @@ static int request_write_operation(void)
int c;
printf("This is a one time programmable field!\nDo you want to write? [y/N] ");
- c = getc();
+ c = getchar();
/* default is N */
if (c == 0xD) {
printf("\n");
return 0;
}
printf("%c", c);
- getc(); /* wait for carriage return */
+ getchar(); /* wait for carriage return */
printf("\n");
if (c == 'y' || c == 'Y')
return 1;
diff --git a/commands/mw.c b/commands/mw.c
index 8ca3c61..bb6a16e 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/commands/rm.c b/commands/rm.c
index 5f1f582..4eebb3d 100644
--- a/commands/rm.c
+++ b/commands/rm.c
@@ -19,6 +19,7 @@
#include <common.h>
#include <command.h>
#include <fs.h>
+#include <libfile.h>
#include <getopt.h>
#include <errno.h>
diff --git a/commands/tftp.c b/commands/tftp.c
index 8a3b541..6a3121a 100644
--- a/commands/tftp.c
+++ b/commands/tftp.c
@@ -58,10 +58,10 @@ static int do_tftpb(int argc, char *argv[])
dest = argv[optind];
if (tftp_push) {
- dest = freep = asprintf("%s/%s", TFTP_MOUNT_PATH, dest);
+ dest = freep = basprintf("%s/%s", TFTP_MOUNT_PATH, dest);
flags = O_RDONLY;
} else {
- source = freep = asprintf("%s/%s", TFTP_MOUNT_PATH, source);
+ source = freep = basprintf("%s/%s", TFTP_MOUNT_PATH, source);
flags = O_WRONLY | O_CREAT;
}
diff --git a/common/blspec.c b/common/blspec.c
index ac8f512..bf98e6b 100644
--- a/common/blspec.c
+++ b/common/blspec.c
@@ -203,16 +203,18 @@ static char *parse_nfs_url(const char *url)
if (ip == 0)
goto out;
- hostpath = asprintf("%s:%s", ip_to_string(ip), path);
+ hostpath = basprintf("%s:%s", ip_to_string(ip), path);
prevpath = nfs_find_mountpath(hostpath);
if (prevpath) {
mountpath = xstrdup(prevpath);
} else {
- mountpath = asprintf("/mnt/nfs-%s-blspec-%08x", host, rand());
+ mountpath = basprintf("/mnt/nfs-%s-blspec-%08x", host,
+ rand());
if (port)
- options = asprintf("mountport=%s,port=%s", port, port);
+ options = basprintf("mountport=%s,port=%s", port,
+ port);
ret = make_directory(mountpath);
if (ret)
@@ -278,7 +280,7 @@ static bool entry_is_of_compatible(struct blspec_entry *entry)
if (!strcmp(devicetree, "none"))
return true;
- filename = asprintf("%s/%s", abspath, devicetree);
+ filename = basprintf("%s/%s", abspath, devicetree);
fdt = read_file(filename, &size);
if (!fdt) {
@@ -338,7 +340,7 @@ int blspec_scan_directory(struct blspec *blspec, const char *root)
entry_default = read_file_line("%s/default", root);
entry_once = read_file_line("%s/once", root);
- abspath = asprintf("%s/%s", root, dirname);
+ abspath = basprintf("%s/%s", root, dirname);
dir = opendir(abspath);
if (!dir) {
@@ -356,7 +358,7 @@ int blspec_scan_directory(struct blspec *blspec, const char *root)
if (*d->d_name == '.')
continue;
- configname = asprintf("%s/%s", abspath, d->d_name);
+ configname = basprintf("%s/%s", abspath, d->d_name);
dot = strrchr(configname, '.');
if (!dot) {
@@ -402,7 +404,7 @@ int blspec_scan_directory(struct blspec *blspec, const char *root)
found++;
- name = asprintf("%s/%s", dirname, d->d_name);
+ name = basprintf("%s/%s", dirname, d->d_name);
if (entry_default && !strcmp(name, entry_default))
entry->boot_default = true;
if (entry_once && !strcmp(name, entry_once))
@@ -415,10 +417,10 @@ int blspec_scan_directory(struct blspec *blspec, const char *root)
hwdevname = xstrdup(dev_name(entry->cdev->dev->parent));
}
- entry->me.display = asprintf("%-20s %-20s %s",
- devname ? devname : "",
- hwdevname ? hwdevname : "",
- blspec_entry_var_get(entry, "title"));
+ entry->me.display = basprintf("%-20s %-20s %s",
+ devname ? devname : "",
+ hwdevname ? hwdevname : "",
+ blspec_entry_var_get(entry, "title"));
free(devname);
free(hwdevname);
@@ -669,7 +671,7 @@ int blspec_boot(struct blspec_entry *entry, int verbose, int dryrun)
else
abspath = "";
- data.os_file = asprintf("%s/%s", abspath, linuximage);
+ data.os_file = basprintf("%s/%s", abspath, linuximage);
if (devicetree) {
if (!strcmp(devicetree, "none")) {
@@ -677,13 +679,13 @@ int blspec_boot(struct blspec_entry *entry, int verbose, int dryrun)
if (node)
of_delete_node(node);
} else {
- data.oftree_file = asprintf("%s/%s", abspath,
- devicetree);
+ data.oftree_file = basprintf("%s/%s", abspath,
+ devicetree);
}
}
if (initrd)
- data.initrd_file = asprintf("%s/%s", abspath, initrd);
+ data.initrd_file = basprintf("%s/%s", abspath, initrd);
globalvar_add_simple("linux.bootargs.dyn.blspec", options);
@@ -704,7 +706,7 @@ int blspec_boot(struct blspec_entry *entry, int verbose, int dryrun)
entry->cdev ? dev_name(entry->cdev->dev) : "none");
if (entry->boot_once) {
- char *s = asprintf("%s/once", abspath);
+ char *s = basprintf("%s/once", abspath);
ret = unlink(s);
if (ret)
diff --git a/common/bootargs.c b/common/bootargs.c
index 803736f..a89f23a 100644
--- a/common/bootargs.c
+++ b/common/bootargs.c
@@ -53,7 +53,8 @@ const char *linux_bootargs_get(void)
parts = globalvar_get_match("linux.mtdparts.", ";");
if (strlen(parts)) {
- bootargs = asprintf("%s mtdparts=%s", linux_bootargs, parts);
+ bootargs = basprintf("%s mtdparts=%s", linux_bootargs,
+ parts);
free(linux_bootargs);
free(parts);
linux_bootargs = bootargs;
@@ -61,7 +62,8 @@ const char *linux_bootargs_get(void)
parts = globalvar_get_match("linux.blkdevparts.", ";");
if (strlen(parts)) {
- bootargs = asprintf("%s blkdevparts=%s", linux_bootargs, parts);
+ bootargs = basprintf("%s blkdevparts=%s", linux_bootargs,
+ parts);
free(linux_bootargs);
free(parts);
linux_bootargs = bootargs;
diff --git a/common/console.c b/common/console.c
index a541892..a67f169 100644
--- a/common/console.c
+++ b/common/console.c
@@ -164,7 +164,7 @@ int console_set_baudrate(struct console_device *cdev, unsigned baudrate)
if (cdev->f_active) {
mdelay(50);
do {
- c = getc();
+ c = getchar();
} while (c != '\r' && c != '\n');
}
@@ -208,8 +208,8 @@ static void console_set_stdoutpath(struct console_device *cdev)
if (id < 0)
return;
- str = asprintf("console=%s%d,%dn8", cdev->linux_console_name,
- id, cdev->baudrate);
+ str = basprintf("console=%s%d,%dn8", cdev->linux_console_name, id,
+ cdev->baudrate);
globalvar_add_simple("linux.bootargs.console", str);
@@ -345,7 +345,7 @@ static int tstc_raw(void)
return 0;
}
-int getc(void)
+int getchar(void)
{
unsigned char ch;
uint64_t start;
@@ -380,17 +380,7 @@ int getc(void)
return ch;
}
-EXPORT_SYMBOL(getc);
-
-int fgetc(int fd)
-{
- char c;
-
- if (!fd)
- return getc();
- return read(fd, &c, 1);
-}
-EXPORT_SYMBOL(fgetc);
+EXPORT_SYMBOL(getchar);
int tstc(void)
{
@@ -476,7 +466,7 @@ int ctrlc (void)
{
poller_call();
- if (tstc() && getc() == 3)
+ if (tstc() && getchar() == 3)
return 1;
return 0;
}
diff --git a/common/console_common.c b/common/console_common.c
index a9bbce9..2e5869f 100644
--- a/common/console_common.c
+++ b/common/console_common.c
@@ -278,7 +278,7 @@ EXPORT_SYMBOL(console_get_first_active);
#endif /* !CONFIG_CONSOLE_NONE */
-int fprintf(int file, const char *fmt, ...)
+int dprintf(int file, const char *fmt, ...)
{
va_list args;
char printbuffer[CFG_PBSIZE];
@@ -293,30 +293,30 @@ int fprintf(int file, const char *fmt, ...)
va_end(args);
/* Print the string */
- return fputs(file, printbuffer);
+ return dputs(file, printbuffer);
}
-EXPORT_SYMBOL(fprintf);
+EXPORT_SYMBOL(dprintf);
-int fputs(int fd, const char *s)
+int dputs(int fd, const char *s)
{
if (fd == 1)
return puts(s);
else if (fd == 2)
- return eputs(s);
+ return console_puts(CONSOLE_STDERR, s);
else
return write(fd, s, strlen(s));
}
-EXPORT_SYMBOL(fputs);
+EXPORT_SYMBOL(dputs);
-int fputc(int fd, char c)
+int dputc(int fd, char c)
{
if (fd == 1)
putchar(c);
else if (fd == 2)
- eputc(c);
+ console_putc(CONSOLE_STDERR, c);
else
return write(fd, &c, 1);
return 0;
}
-EXPORT_SYMBOL(fputc);
+EXPORT_SYMBOL(dputc);
diff --git a/common/console_countdown.c b/common/console_countdown.c
index ffbdb4f..c0c8c95 100644
--- a/common/console_countdown.c
+++ b/common/console_countdown.c
@@ -39,7 +39,7 @@ int console_countdown(int timeout_s, unsigned flags, char *out_key)
do {
if (tstc()) {
- key = getc();
+ key = getchar();
if (flags & CONSOLE_COUNTDOWN_ANYKEY)
goto out;
if (flags & CONSOLE_COUNTDOWN_RETURN && key == '\n')
diff --git a/common/console_simple.c b/common/console_simple.c
index 69e7659..9675cbb 100644
--- a/common/console_simple.c
+++ b/common/console_simple.c
@@ -48,13 +48,13 @@ int tstc(void)
}
EXPORT_SYMBOL(tstc);
-int getc(void)
+int getchar(void)
{
if (!console)
return -EINVAL;
return console->getc(console);
}
-EXPORT_SYMBOL(getc);
+EXPORT_SYMBOL(getchar);
void console_flush(void)
{
@@ -67,7 +67,7 @@ EXPORT_SYMBOL(console_flush);
/* test if ctrl-c was pressed */
int ctrlc (void)
{
- if (tstc() && getc() == 3)
+ if (tstc() && getchar() == 3)
return 1;
return 0;
}
diff --git a/common/env.c b/common/env.c
index d6cab52..6f736d5 100644
--- a/common/env.c
+++ b/common/env.c
@@ -261,7 +261,7 @@ EXPORT_SYMBOL(export);
void export_env_ull(const char *name, unsigned long long val)
{
- char *valstr = asprintf("%llu", val);
+ char *valstr = basprintf("%llu", val);
setenv(name, valstr);
export(name);
diff --git a/common/environment.c b/common/environment.c
index be102db..c3ad252 100644
--- a/common/environment.c
+++ b/common/environment.c
@@ -29,6 +29,7 @@
#include <malloc.h>
#include <errno.h>
#include <fs.h>
+#include <crc.h>
#include <fcntl.h>
#include <envfs.h>
#include <xfuncs.h>
@@ -79,7 +80,7 @@ static int do_compare_file(const char *filename, const char *base)
char *cmp;
const char *relname = filename + strlen(base) + 1;
- cmp = asprintf("%s/%s", TMPDIR, relname);
+ cmp = basprintf("%s/%s", TMPDIR, relname);
ret = compare_file(cmp, filename);
free(cmp);
@@ -193,7 +194,7 @@ static int file_remove_action(const char *filename, struct stat *statbuf,
filename += sizeof(TMPDIR) - 1;
- envname = asprintf("%s/%s", data->base, filename);
+ envname = basprintf("%s/%s", data->base, filename);
ret = stat(envname, &s);
if (ret) {
diff --git a/common/firmware.c b/common/firmware.c
index a6f75bf..664f910 100644
--- a/common/firmware.c
+++ b/common/firmware.c
@@ -202,7 +202,7 @@ out:
int firmwaremgr_load_file(struct firmware_mgr *mgr, const char *firmware)
{
int ret;
- char *name = asprintf("/dev/%s", mgr->handler->id);
+ char *name = basprintf("/dev/%s", mgr->handler->id);
ret = copy_file(firmware, name, 0);
diff --git a/common/globalvar.c b/common/globalvar.c
index 05c3e79..5dad4f6 100644
--- a/common/globalvar.c
+++ b/common/globalvar.c
@@ -52,7 +52,7 @@ static int nv_save(const char *name, const char *val)
if (ret)
return ret;
- fname = asprintf("/env/nv/%s", name);
+ fname = basprintf("/env/nv/%s", name);
fd = open(fname, O_CREAT | O_WRONLY | O_TRUNC);
@@ -61,7 +61,7 @@ static int nv_save(const char *name, const char *val)
if (fd < 0)
return fd;
- fprintf(fd, "%s", val);
+ dprintf(fd, "%s", val);
close(fd);
@@ -145,7 +145,7 @@ int nvvar_remove(const char *name)
if (!p)
return -ENOENT;
- fname = asprintf("/env/nv/%s", p->name);
+ fname = basprintf("/env/nv/%s", p->name);
unlink(fname);
free(fname);
@@ -227,7 +227,8 @@ char *globalvar_get_match(const char *match, const char *separator)
if (!strncmp(match, param->name, strlen(match))) {
const char *p = dev_get_param(&global_device, param->name);
if (val) {
- char *new = asprintf("%s%s%s", val, separator, p);
+ char *new = basprintf("%s%s%s", val,
+ separator, p);
free(val);
val = new;
} else {
diff --git a/common/imd.c b/common/imd.c
index 241ebbd..159b73a 100644
--- a/common/imd.c
+++ b/common/imd.c
@@ -306,7 +306,7 @@ int imd_command(int argc, char *argv[])
case 't':
type = imd_name_to_type(optarg);
if (type == IMD_TYPE_INVALID) {
- fprintf(stderr, "no such type: %s\n", optarg);
+ eprintf("no such type: %s\n", optarg);
return -ENOSYS;
}
break;
@@ -325,7 +325,7 @@ int imd_command(int argc, char *argv[])
}
if (optind == argc) {
- fprintf(stderr, "No image given\n");
+ eprintf("No image given\n");
return -ENOSYS;
}
diff --git a/common/imx-bbu-nand-fcb.c b/common/imx-bbu-nand-fcb.c
index 04c6e60..1ffa79d 100644
--- a/common/imx-bbu-nand-fcb.c
+++ b/common/imx-bbu-nand-fcb.c
@@ -34,6 +34,7 @@
#include <linux/mtd/nand.h>
#include <linux/stat.h>
#include <io.h>
+#include <crc.h>
#include <mach/generic.h>
#include <mtd/mtd-peb.h>
diff --git a/common/menutree.c b/common/menutree.c
index 97e628d..eb14da0 100644
--- a/common/menutree.c
+++ b/common/menutree.c
@@ -12,9 +12,11 @@
#include <environment.h>
#include <libbb.h>
#include <common.h>
+#include <command.h>
#include <glob.h>
#include <menu.h>
#include <fs.h>
+#include <shell.h>
#include <libfile.h>
#include <linux/stat.h>
@@ -96,7 +98,7 @@ int menutree(const char *path, int toplevel)
menu = menu_alloc();
- globpath = asprintf("%s/*", path);
+ globpath = basprintf("%s/*", path);
ret = glob(globpath, 0, NULL, &g);
free(globpath);
if (ret == GLOB_NOMATCH) {
@@ -147,7 +149,7 @@ int menutree(const char *path, int toplevel)
mt->me.type = MENU_ENTRY_NORMAL;
- mt->action = asprintf("%s/action", g.gl_pathv[i]);
+ mt->action = basprintf("%s/action", g.gl_pathv[i]);
ret = stat(mt->action, &s);
if (ret) {
diff --git a/common/partitions.c b/common/partitions.c
index 82ec508..69a2b1fe 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -51,7 +51,7 @@ static int register_one_partition(struct block_device *blk,
uint64_t size = part->size * SECTOR_SIZE;
struct cdev *cdev;
- partition_name = asprintf("%s.%d", blk->cdev.name, no);
+ partition_name = basprintf("%s.%d", blk->cdev.name, no);
if (!partition_name)
return -ENOMEM;
dev_dbg(blk->dev, "Registering partition %s on drive %s\n",
diff --git a/common/partitions/efi.c b/common/partitions/efi.c
index a9945dd..88734f1 100644
--- a/common/partitions/efi.c
+++ b/common/partitions/efi.c
@@ -17,6 +17,7 @@
#include <init.h>
#include <asm/unaligned.h>
#include <dma.h>
+#include <crc.h>
#include <linux/ctype.h>
#include "efi.h"
diff --git a/common/password.c b/common/password.c
index 5b754d9..d52b746 100644
--- a/common/password.c
+++ b/common/password.c
@@ -24,6 +24,7 @@
#include <digest.h>
#include <malloc.h>
#include <xfuncs.h>
+#include <command.h>
#include <magicvar.h>
#include <clock.h>
#include <init.h>
@@ -62,7 +63,7 @@ int password(unsigned char *passwd, size_t length, int flags, int timeout)
do {
if (tstc()) {
- ch = getc();
+ ch = getchar();
switch (ch) {
case '\r':
diff --git a/common/startup.c b/common/startup.c
index 093a23b..432be67 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -30,6 +30,7 @@
* @brief Main entry into the C part of barebox
*/
#include <common.h>
+#include <shell.h>
#include <init.h>
#include <command.h>
#include <malloc.h>
diff --git a/common/state.c b/common/state.c
index b55b150..87afff3 100644
--- a/common/state.c
+++ b/common/state.c
@@ -20,6 +20,7 @@
#include <errno.h>
#include <fcntl.h>
#include <fs.h>
+#include <crc.h>
#include <init.h>
#include <ioctl.h>
#include <libbb.h>
@@ -703,8 +704,8 @@ static int state_convert_node_variable(struct state *state,
*indexs = 0;
/* construct full name */
- name = asprintf("%s%s%s",
- parent_name, parent_name[0] ? "." : "", short_name);
+ name = basprintf("%s%s%s", parent_name, parent_name[0] ? "." : "",
+ short_name);
free(short_name);
if ((conv == STATE_CONVERT_TO_NODE) ||
diff --git a/common/uimage.c b/common/uimage.c
index 59d7b65..34daf70 100644
--- a/common/uimage.c
+++ b/common/uimage.c
@@ -21,6 +21,7 @@
#include <image.h>
#include <malloc.h>
#include <errno.h>
+#include <crc.h>
#include <libbb.h>
#include <libfile.h>
#include <uncompress.h>
diff --git a/crypto/crc32.c b/crypto/crc32.c
index 58637bd..3bff6fe 100644
--- a/crypto/crc32.c
+++ b/crypto/crc32.c
@@ -12,6 +12,7 @@
#include <common.h>
#include <xfuncs.h>
#include <fs.h>
+#include <crc.h>
#include <fcntl.h>
#include <malloc.h>
#include <linux/ctype.h>
diff --git a/crypto/hmac.c b/crypto/hmac.c
index 20af2a5..05b9b50 100644
--- a/crypto/hmac.c
+++ b/crypto/hmac.c
@@ -173,8 +173,8 @@ static int digest_hmac_register(char *name, unsigned int pad_length)
dh->name = xstrdup(name);
dh->pad_length = pad_length;
dh->algo = hmac_algo;
- dh->algo.base.name = asprintf("hmac(%s)", name);
- dh->algo.base.driver_name = asprintf("hmac(%s)-generic", name);
+ dh->algo.base.name = basprintf("hmac(%s)", name);
+ dh->algo.base.driver_name = basprintf("hmac(%s)-generic", name);
return digest_algo_register(&dh->algo);
}
diff --git a/drivers/ata/disk_ata_drive.c b/drivers/ata/disk_ata_drive.c
index d30d0ad..cd46e0c 100644
--- a/drivers/ata/disk_ata_drive.c
+++ b/drivers/ata/disk_ata_drive.c
@@ -243,7 +243,7 @@ static int ata_port_init(struct ata_port *port)
rc = cdev_find_free_index("ata");
if (rc == -1)
pr_err("Cannot find a free index for the disk node\n");
- port->blk.cdev.name = asprintf("ata%d", rc);
+ port->blk.cdev.name = basprintf("ata%d", rc);
}
port->blk.num_blocks = ata_id_n_sectors(port->id);
diff --git a/drivers/ata/disk_bios_drive.c b/drivers/ata/disk_bios_drive.c
index 8e768dc..363af3c 100644
--- a/drivers/ata/disk_bios_drive.c
+++ b/drivers/ata/disk_bios_drive.c
@@ -258,7 +258,7 @@ static int biosdisk_probe(struct device_d *dev)
rc = cdev_find_free_index("disk");
if (rc < 0)
pr_err("Cannot find a free number for the disk node\n");
- m->blk.cdev.name = asprintf("disk%d", rc);
+ m->blk.cdev.name = basprintf("disk%d", rc);
m->blk.blockbits = SECTOR_SHIFT;
rc = blockdevice_register(&m->blk);
diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
index 3c0a7a9..a323d25 100644
--- a/drivers/eeprom/at24.c
+++ b/drivers/eeprom/at24.c
@@ -429,7 +429,7 @@ static int at24_probe(struct device_d *dev)
at24->chip = chip;
at24->num_addresses = num_addresses;
- at24->cdev.name = asprintf("eeprom%d", dev->id);
+ at24->cdev.name = basprintf("eeprom%d", dev->id);
at24->cdev.priv = at24;
at24->cdev.dev = dev;
at24->cdev.ops = &at24->fops;
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 24f57f9..59f6675 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -506,8 +506,8 @@ static int mmc_change_freq(struct mci *mci)
char *name, *partname;
part_size = mci->ext_csd[EXT_CSD_BOOT_MULT] << 17;
- partname = asprintf("boot%d", idx);
- name = asprintf("%s.%s", mci->cdevname, partname);
+ partname = basprintf("boot%d", idx);
+ name = basprintf("%s.%s", mci->cdevname, partname);
mci_part_add(mci, part_size,
EXT_CSD_PART_CONFIG_ACC_BOOT0 + idx,
name, partname, idx, true,
@@ -1626,7 +1626,7 @@ static int mci_card_probe(struct mci *mci)
mci->cdevname = strdup(host->devname);
} else {
disknum = cdev_find_free_index("disk");
- mci->cdevname = asprintf("disk%d", disknum);
+ mci->cdevname = basprintf("disk%d", disknum);
}
rc = mci_startup(mci);
diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c
index c1e7d9e..fb91ffa 100644
--- a/drivers/mfd/stmpe-i2c.c
+++ b/drivers/mfd/stmpe-i2c.c
@@ -141,8 +141,8 @@ static int stmpe_probe(struct device_d *dev)
}
stmpe_dev = xzalloc(sizeof(struct stmpe));
- stmpe_dev->cdev.name = asprintf(DRIVERNAME "%d",
- cdev_find_free_index(DRIVERNAME));
+ stmpe_dev->cdev.name = basprintf(DRIVERNAME"%d",
+ cdev_find_free_index(DRIVERNAME));
stmpe_dev->client = to_i2c_client(dev);
stmpe_dev->cdev.size = 191; /* 191 known registers */
stmpe_dev->cdev.dev = dev;
diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
index 58b5741..4fb6f80 100644
--- a/drivers/misc/sram.c
+++ b/drivers/misc/sram.c
@@ -47,8 +47,7 @@ static int sram_probe(struct device_d *dev)
sram = xzalloc(sizeof(*sram));
- sram->cdev.name = asprintf("sram%d",
- cdev_find_free_index("sram"));
+ sram->cdev.name = basprintf("sram%d", cdev_find_free_index("sram"));
res = dev_get_resource(dev, IORESOURCE_MEM, 0);
if (IS_ERR(res))
diff --git a/drivers/mtd/core.c b/drivers/mtd/core.c
index dcf94bf..6d04b88 100644
--- a/drivers/mtd/core.c
+++ b/drivers/mtd/core.c
@@ -470,10 +470,10 @@ static int mtd_partition_set(struct device_d *dev, struct param_d *p, const char
static char *print_size(uint64_t s)
{
if (!(s & ((1 << 20) - 1)))
- return asprintf("%lldM", s >> 20);
+ return basprintf("%lldM", s >> 20);
if (!(s & ((1 << 10) - 1)))
- return asprintf("%lldk", s >> 10);
- return asprintf("0x%lld", s);
+ return basprintf("%lldk", s >> 10);
+ return basprintf("0x%lld", s);
}
static int print_part(char *buf, int bufsize, struct mtd_info *mtd, uint64_t last_ofs,
@@ -577,7 +577,8 @@ static int of_mtd_fixup(struct device_node *root, void *ctx)
list_for_each_entry(partmtd, &mtd->partitions, partitions_entry) {
int na, ns, len = 0;
- char *name = asprintf("partition@%0llx", partmtd->master_offset);
+ char *name = basprintf("partition@%0llx",
+ partmtd->master_offset);
void *p;
u8 tmp[16 * 16]; /* Up to 64-bit address + 64-bit size */
@@ -675,7 +676,8 @@ int add_mtd_device(struct mtd_info *mtd, const char *devname, int device_id)
if (device_id == DEVICE_ID_SINGLE)
mtd->cdev.name = xstrdup(devname);
else
- mtd->cdev.name = asprintf("%s%d", devname, mtd->class_dev.id);
+ mtd->cdev.name = basprintf("%s%d", devname,
+ mtd->class_dev.id);
INIT_LIST_HEAD(&mtd->partitions);
diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c
index 6a9bc74..a40ba25 100644
--- a/drivers/mtd/devices/docg3.c
+++ b/drivers/mtd/devices/docg3.c
@@ -1058,8 +1058,8 @@ static void __init doc_set_driver_info(int chip_id, struct mtd_info *mtd)
switch (chip_id) {
case DOC_CHIPID_G3:
- mtd->name = asprintf("DiskOnChip G3 floor %d",
- docg3->device_id);
+ mtd->name = basprintf("DiskOnChip G3 floor %d",
+ docg3->device_id);
docg3->max_block = 2047;
break;
}
diff --git a/drivers/mtd/mtdoob.c b/drivers/mtd/mtdoob.c
index 4dcf2f5..86076f0 100644
--- a/drivers/mtd/mtdoob.c
+++ b/drivers/mtd/mtdoob.c
@@ -79,7 +79,7 @@ static int add_mtdoob_device(struct mtd_info *mtd, const char *devname, void **p
mtdoob = xzalloc(sizeof(*mtdoob));
mtdoob->cdev.ops = &mtd_ops_oob;
mtdoob->cdev.size = mtd_div_by_wb(mtd->size, mtd) * mtd->oobsize;
- mtdoob->cdev.name = asprintf("%s.oob", mtd->cdev.name);
+ mtdoob->cdev.name = basprintf("%s.oob", mtd->cdev.name);
mtdoob->cdev.priv = mtdoob;
mtdoob->cdev.dev = &mtd->class_dev;
mtdoob->mtd = mtd;
diff --git a/drivers/mtd/mtdraw.c b/drivers/mtd/mtdraw.c
index 4d6ac72..b06eb18 100644
--- a/drivers/mtd/mtdraw.c
+++ b/drivers/mtd/mtdraw.c
@@ -308,7 +308,7 @@ static int add_mtdraw_device(struct mtd_info *mtd, const char *devname, void **p
mtdraw->cdev.ops = (struct file_operations *)&mtd_raw_fops;
mtdraw->cdev.size = mtd_div_by_wb(mtd->size, mtd) *
(mtd->writesize + mtd->oobsize);
- mtdraw->cdev.name = asprintf("%s.raw", mtd->cdev.name);
+ mtdraw->cdev.name = basprintf("%s.raw", mtd->cdev.name);
mtdraw->cdev.priv = mtdraw;
mtdraw->cdev.dev = &mtd->class_dev;
mtdraw->cdev.mtd = mtd;
diff --git a/drivers/mtd/nand/nand-bb.c b/drivers/mtd/nand/nand-bb.c
index e6d4277..015f8dc 100644
--- a/drivers/mtd/nand/nand-bb.c
+++ b/drivers/mtd/nand/nand-bb.c
@@ -288,7 +288,7 @@ struct cdev *mtd_add_bb(struct mtd_info *mtd, const char *name)
if (name)
bb->cdev.name = xstrdup(name);
else
- bb->cdev.name = asprintf("%s.bb", mtd->cdev.name);
+ bb->cdev.name = basprintf("%s.bb", mtd->cdev.name);
nand_bb_calc_size(bb);
bb->cdev.ops = &nand_bb_ops;
diff --git a/drivers/mtd/nand/nand_imx_bbm.c b/drivers/mtd/nand/nand_imx_bbm.c
index 5caa0a2..251dfe5 100644
--- a/drivers/mtd/nand/nand_imx_bbm.c
+++ b/drivers/mtd/nand/nand_imx_bbm.c
@@ -188,7 +188,7 @@ static int do_imx_nand_bbm(int argc, char *argv[])
int c;
printf("create flash bbt (y/n)?");
- c = getc();
+ c = getchar();
if (c == 'y')
yes = 1;
printf("\n");
diff --git a/drivers/mtd/ubi/barebox.c b/drivers/mtd/ubi/barebox.c
index c26a245..ad38e69 100644
--- a/drivers/mtd/ubi/barebox.c
+++ b/drivers/mtd/ubi/barebox.c
@@ -176,7 +176,7 @@ int ubi_volume_cdev_add(struct ubi_device *ubi, struct ubi_volume *vol)
priv->ubi = ubi;
cdev->ops = &ubi_volume_fops;
- cdev->name = asprintf("%s.%s", ubi->cdev.name, vol->name);
+ cdev->name = basprintf("%s.%s", ubi->cdev.name, vol->name);
cdev->priv = priv;
cdev->size = vol->used_bytes;
cdev->dev = &vol->dev;
@@ -239,7 +239,7 @@ int ubi_cdev_add(struct ubi_device *ubi)
int ret;
cdev->ops = &ubi_fops;
- cdev->name = asprintf("%s.ubi", ubi->mtd->cdev.name);
+ cdev->name = basprintf("%s.ubi", ubi->mtd->cdev.name);
cdev->priv = ubi;
cdev->size = 0;
diff --git a/drivers/mtd/ubi/ubi-barebox.h b/drivers/mtd/ubi/ubi-barebox.h
index ab970aa..557ad88 100644
--- a/drivers/mtd/ubi/ubi-barebox.h
+++ b/drivers/mtd/ubi/ubi-barebox.h
@@ -16,6 +16,7 @@
#include <common.h>
#include <malloc.h>
+#include <crc.h>
#include <asm-generic/div64.h>
#include <errno.h>
#include <linux/err.h>
@@ -26,7 +27,7 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/ubi.h>
-#define crc32(seed, data, length) crc32_no_comp(seed, (unsigned char const *)data, length)
+#define crc32(seed, data, length) crc32_no_comp(seed, (unsigned char * const)data, length)
/* configurable */
#define CONFIG_MTD_UBI_WL_THRESHOLD 4096
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index a8ed0d7..471d784 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -20,6 +20,7 @@
#include <common.h>
#include <malloc.h>
+#include <crc.h>
#include <linux/types.h>
#include <linux/list.h>
#include <linux/rbtree.h>
diff --git a/drivers/net/ksz8864rmn.c b/drivers/net/ksz8864rmn.c
index 3ca85fb..860af44 100644
--- a/drivers/net/ksz8864rmn.c
+++ b/drivers/net/ksz8864rmn.c
@@ -149,7 +149,7 @@ static int micrel_switch_probe(struct device_d *dev)
return -ENODEV;
}
- priv->cdev.name = asprintf("switch%d", dev->id);
+ priv->cdev.name = basprintf("switch%d", dev->id);
priv->cdev.size = 256;
priv->cdev.ops = &micrel_switch_ops;
priv->cdev.priv = priv;
diff --git a/drivers/of/barebox.c b/drivers/of/barebox.c
index 125feef..64f4833 100644
--- a/drivers/of/barebox.c
+++ b/drivers/of/barebox.c
@@ -61,7 +61,7 @@ static int environment_check_mount(struct device_d *dev, char **devpath)
/* Set env to be in a file on the now mounted device */
dev_dbg(dev, "Loading default env from %s on device %s\n",
filepath, *devpath);
- *devpath = asprintf("%s/%s", ENV_MNT_DIR, filepath);
+ *devpath = basprintf("%s/%s", ENV_MNT_DIR, filepath);
return 0;
}
diff --git a/drivers/of/base.c b/drivers/of/base.c
index d12bfe3..b4ef8e3 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1702,7 +1702,8 @@ struct device_node *of_new_node(struct device_node *parent, const char *name)
if (parent) {
node->name = xstrdup(name);
- node->full_name = asprintf("%s/%s", node->parent->full_name, name);
+ node->full_name = basprintf("%s/%s",
+ node->parent->full_name, name);
list_add(&node->list, &parent->list);
} else {
node->name = xstrdup("");
diff --git a/drivers/of/of_path.c b/drivers/of/of_path.c
index ed620f1..8e1931f 100644
--- a/drivers/of/of_path.c
+++ b/drivers/of/of_path.c
@@ -75,7 +75,7 @@ static int __of_find_path(struct device_node *node, const char *part, char **out
mtd_can_have_bb(cdev->mtd))
add_bb = true;
- *outpath = asprintf("/dev/%s%s", cdev->name, add_bb ? ".bb" : "");
+ *outpath = basprintf("/dev/%s%s", cdev->name, add_bb ? ".bb" : "");
return 0;
}
diff --git a/drivers/of/partition.c b/drivers/of/partition.c
index 6017897..b6621f7 100644
--- a/drivers/of/partition.c
+++ b/drivers/of/partition.c
@@ -58,7 +58,7 @@ struct cdev *of_parse_partition(struct cdev *cdev, struct device_node *node)
if (of_get_property(node, "read-only", &len))
flags = DEVFS_PARTITION_READONLY;
- filename = asprintf("%s.%s", cdev->name, partname);
+ filename = basprintf("%s.%s", cdev->name, partname);
new = devfs_add_partition(cdev->name, offset, size, flags, filename);
if (IS_ERR(new))
diff --git a/drivers/pci/pci-mvebu.c b/drivers/pci/pci-mvebu.c
index da2459b..907bda0 100644
--- a/drivers/pci/pci-mvebu.c
+++ b/drivers/pci/pci-mvebu.c
@@ -306,7 +306,7 @@ static struct mvebu_pcie *mvebu_pcie_port_probe(struct device_d *dev,
reset_gpio = of_get_named_gpio_flags(np, "reset-gpios", 0, &flags);
if (gpio_is_valid(reset_gpio)) {
int reset_active_low = flags & OF_GPIO_ACTIVE_LOW;
- char *reset_name = asprintf("pcie%d.%d-reset", port, lane);
+ char *reset_name = basprintf("pcie%d.%d-reset", port, lane);
u32 reset_udelay = 20000;
of_property_read_u32(np, "reset-delay-us", &reset_udelay);
@@ -326,7 +326,7 @@ static struct mvebu_pcie *mvebu_pcie_port_probe(struct device_d *dev,
pcie->port = port;
pcie->lane = lane;
pcie->lane_mask = lane_mask;
- pcie->name = asprintf("pcie%d.%d", port, lane);
+ pcie->name = basprintf("pcie%d.%d", port, lane);
pcie->devfn = devfn;
pcie->base = of_iomap(np, 0);
diff --git a/drivers/pinctrl/pinctrl.c b/drivers/pinctrl/pinctrl.c
index 10ce186..e7b08a2 100644
--- a/drivers/pinctrl/pinctrl.c
+++ b/drivers/pinctrl/pinctrl.c
@@ -68,7 +68,7 @@ int of_pinctrl_select_state(struct device_node *np, const char *name)
/* For each defined state ID */
for (state = 0; ; state++) {
/* Retrieve the pinctrl-* property */
- propname = asprintf("pinctrl-%d", state);
+ propname = basprintf("pinctrl-%d", state);
prop = of_find_property(np, propname, NULL);
free(propname);
diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
index 0845c23..b620e50 100644
--- a/drivers/pwm/pwm-imx.c
+++ b/drivers/pwm/pwm-imx.c
@@ -236,9 +236,10 @@ static int imx_pwm_probe(struct device_d *dev)
if (dev->device_node) {
imx->chip.devname = of_alias_get(dev->device_node);
if (!imx->chip.devname)
- imx->chip.devname = asprintf("pwm_%p", imx->mmio_base);
+ imx->chip.devname = basprintf("pwm_%p",
+ imx->mmio_base);
} else {
- imx->chip.devname = asprintf("pwm%d", dev->id);
+ imx->chip.devname = basprintf("pwm%d", dev->id);
}
imx->config = data->config;
diff --git a/drivers/pwm/pwm-mxs.c b/drivers/pwm/pwm-mxs.c
index 011d900..e72f1db 100644
--- a/drivers/pwm/pwm-mxs.c
+++ b/drivers/pwm/pwm-mxs.c
@@ -143,7 +143,7 @@ static int mxs_pwm_probe(struct device_d *dev)
struct mxs_pwm_chip *mxspwm = &mxs->pwm[i];
mxspwm->chip.ops = &mxs_pwm_ops;
- mxspwm->chip.devname = asprintf("pwm%d", i);
+ mxspwm->chip.devname = basprintf("pwm%d", i);
mxspwm->chip.id = i;
mxspwm->mxs = mxs;
diff --git a/drivers/pwm/pxa_pwm.c b/drivers/pwm/pxa_pwm.c
index e399d03..c7130c2 100644
--- a/drivers/pwm/pxa_pwm.c
+++ b/drivers/pwm/pxa_pwm.c
@@ -134,7 +134,7 @@ static int pxa_pwm_probe(struct device_d *dev)
struct pxa_pwm_chip *chip;
chip = xzalloc(sizeof(*chip));
- chip->chip.devname = asprintf("pwm%d", dev->id);
+ chip->chip.devname = basprintf("pwm%d", dev->id);
chip->chip.ops = &pxa_pwm_ops;
iores = dev_request_mem_resource(dev, 0);
if (IS_ERR(iores))
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 73f5c6e..39df980 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -153,7 +153,7 @@ static struct regulator_internal *of_regulator_get(struct device_d *dev, const c
struct regulator_internal *ri;
struct device_node *node;
- propname = asprintf("%s-supply", supply);
+ propname = basprintf("%s-supply", supply);
/*
* If the device does have a device node return the dummy regulator.
diff --git a/drivers/spi/gpio_spi.c b/drivers/spi/gpio_spi.c
index 4ea545a..e37db75 100644
--- a/drivers/spi/gpio_spi.c
+++ b/drivers/spi/gpio_spi.c
@@ -209,7 +209,7 @@ static int gpio_spi_probe(struct device_d *dev)
if (!gpio_is_valid(pdata->cs[n]))
continue;
- cs_name = asprintf("spi-cs%d", n);
+ cs_name = basprintf("spi-cs%d", n);
ret = gpio_request_one(pdata->cs[n], GPIOF_DIR_OUT, cs_name);
if (ret)
return ret;
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index ba3b9da..9e38ac4 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -1763,7 +1763,7 @@ EXPORT_SYMBOL_GPL(usb_composite_setup_continue);
static char *composite_default_mfr(struct usb_gadget *gadget)
{
- return asprintf("barebox %s", gadget->name);
+ return basprintf("barebox %s", gadget->name);
}
void usb_composite_overwrite_options(struct usb_composite_dev *cdev,
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index aaf7849..859aaff 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -17,6 +17,7 @@
#define pr_fmt(fmt) "fastboot: " fmt
#include <common.h>
+#include <command.h>
#include <errno.h>
#include <malloc.h>
#include <fcntl.h>
@@ -194,7 +195,7 @@ static void fb_setvar(struct fb_variable *var, const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- var->value = vasprintf(fmt, ap);
+ var->value = bvasprintf(fmt, ap);
va_end(ap);
}
@@ -204,7 +205,7 @@ static struct fb_variable *fb_addvar(struct f_fastboot *f_fb, const char *fmt, .
va_list ap;
va_start(ap, fmt);
- var->name = vasprintf(fmt, ap);
+ var->name = bvasprintf(fmt, ap);
va_end(ap);
list_add_tail(&var->list, &f_fb->variables);
@@ -701,7 +702,8 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req, const char *cmd
if (ret)
goto copy;
- cmd = asprintf("ubiformat -y -f %s %s", FASTBOOT_TMPFILE, filename);
+ cmd = basprintf("ubiformat -y -f %s %s", FASTBOOT_TMPFILE,
+ filename);
fastboot_tx_print(f_fb, "INFOThis is an UBI image...");
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 9d1ffa3..8218bb2 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -397,7 +397,7 @@ static int usb_stor_add_blkdev(struct us_data *us, struct device_d *dev,
pr_err("Cannot find a free number for the disk node\n");
pr_info("Using index %d for the new disk\n", result);
- pblk_dev->blk.cdev.name = asprintf("disk%d", result);
+ pblk_dev->blk.cdev.name = basprintf("disk%d", result);
pblk_dev->blk.blockbits = SECTOR_SHIFT;
result = blockdevice_register(&pblk_dev->blk);
diff --git a/drivers/video/edid.c b/drivers/video/edid.c
index 828c361..e5c32a0 100644
--- a/drivers/video/edid.c
+++ b/drivers/video/edid.c
@@ -469,7 +469,8 @@ static void calc_mode_timings(int xres, int yres, int refresh,
mode->yres = yres;
mode->refresh = refresh;
fb_get_mode(0, refresh, mode);
- mode->name = asprintf("%dx%d@%d-calc", mode->xres, mode->yres, mode->refresh);
+ mode->name = basprintf("%dx%d@%d-calc", mode->xres, mode->yres,
+ mode->refresh);
pr_debug(" %s\n", mode->name);
}
@@ -602,7 +603,8 @@ const struct fb_videomode vesa_modes[] = {
static void add_vesa_mode(struct fb_videomode *mode, int num)
{
*mode = vesa_modes[num];
- mode->name = asprintf("%dx%d@%d-vesa", mode->xres, mode->yres, mode->refresh);
+ mode->name = basprintf("%dx%d@%d-vesa", mode->xres, mode->yres,
+ mode->refresh);
pr_debug(" %s\n", mode->name);
}
@@ -748,7 +750,8 @@ static void get_detailed_timing(unsigned char *block,
pr_debug("%sHSync %sVSync\n", (HSYNC_POSITIVE) ? "+" : "-",
(VSYNC_POSITIVE) ? "+" : "-");
- mode->name = asprintf("%dx%d@%d", mode->xres, mode->yres, mode->refresh);
+ mode->name = basprintf("%dx%d@%d", mode->xres, mode->yres,
+ mode->refresh);
}
/**
diff --git a/drivers/video/fb.c b/drivers/video/fb.c
index 09bba00..4d2d3aa 100644
--- a/drivers/video/fb.c
+++ b/drivers/video/fb.c
@@ -262,7 +262,7 @@ int register_framebuffer(struct fb_info *info)
info->line_length = info->xres * (info->bits_per_pixel >> 3);
info->cdev.ops = &fb_ops;
- info->cdev.name = asprintf("fb%d", id);
+ info->cdev.name = basprintf("fb%d", id);
info->cdev.size = info->line_length * info->yres;
info->cdev.dev = dev;
info->cdev.priv = info;
diff --git a/drivers/video/imx-ipu-v3/imx-ldb.c b/drivers/video/imx-ipu-v3/imx-ldb.c
index 2340b9b..17ae894 100644
--- a/drivers/video/imx-ipu-v3/imx-ldb.c
+++ b/drivers/video/imx-ipu-v3/imx-ldb.c
@@ -161,7 +161,7 @@ static int imx6q_ldb_prepare(struct imx_ldb_channel *imx_ldb_ch, int di,
ipuno = ((di >> 1) & 1) + 1;
dino = di & 0x1;
- clkname = asprintf("ipu%d_di%d_sel", ipuno, dino);
+ clkname = basprintf("ipu%d_di%d_sel", ipuno, dino);
diclk = clk_lookup(clkname);
free(clkname);
if (IS_ERR(diclk)) {
@@ -169,7 +169,7 @@ static int imx6q_ldb_prepare(struct imx_ldb_channel *imx_ldb_ch, int di,
return PTR_ERR(diclk);
}
- clkname = asprintf("ldb_di%d_podf", imx_ldb_ch->chno);
+ clkname = basprintf("ldb_di%d_podf", imx_ldb_ch->chno);
ldbclk = clk_lookup(clkname);
free(clkname);
if (IS_ERR(ldbclk)) {
@@ -208,7 +208,7 @@ static int imx53_ldb_prepare(struct imx_ldb_channel *imx_ldb_ch, int di,
dino = di & 0x1;
- clkname = asprintf("ipu_di%d_sel", dino);
+ clkname = basprintf("ipu_di%d_sel", dino);
diclk = clk_lookup(clkname);
free(clkname);
if (IS_ERR(diclk)) {
@@ -216,7 +216,7 @@ static int imx53_ldb_prepare(struct imx_ldb_channel *imx_ldb_ch, int di,
return PTR_ERR(diclk);
}
- clkname = asprintf("ldb_di%d_div", imx_ldb_ch->chno);
+ clkname = basprintf("ldb_di%d_div", imx_ldb_ch->chno);
ldbclk = clk_lookup(clkname);
free(clkname);
if (IS_ERR(ldbclk)) {
diff --git a/drivers/video/imx-ipu-v3/ipu-di.c b/drivers/video/imx-ipu-v3/ipu-di.c
index 8df9c9f..b6e64fe 100644
--- a/drivers/video/imx-ipu-v3/ipu-di.c
+++ b/drivers/video/imx-ipu-v3/ipu-di.c
@@ -732,8 +732,7 @@ int ipu_di_init(struct ipu_soc *ipu, struct device_d *dev, int id,
ipu_di_write(di, 0x10, DI_BS_CLKGEN0);
di->clk_di_pixel.parent_names = di->di_parent_names;
- di->clk_name = asprintf("%s_di%d_pixel",
- dev_name(dev), id);
+ di->clk_name = basprintf("%s_di%d_pixel", dev_name(dev), id);
if (!di->clk_name)
return -ENOMEM;
diff --git a/drivers/video/imx-ipu-v3/ipufb.c b/drivers/video/imx-ipu-v3/ipufb.c
index 747e094..67fec11 100644
--- a/drivers/video/imx-ipu-v3/ipufb.c
+++ b/drivers/video/imx-ipu-v3/ipufb.c
@@ -284,7 +284,7 @@ static int ipufb_probe(struct device_d *dev)
info = &fbi->info;
ipuid = of_alias_get_id(dev->parent->device_node, "ipu");
- fbi->name = asprintf("ipu%d-di%d", ipuid + 1, pdata->di);
+ fbi->name = basprintf("ipu%d-di%d", ipuid + 1, pdata->di);
fbi->id = ipuid * 2 + pdata->di;
fbi->dino = pdata->di;
diff --git a/drivers/w1/slaves/w1_ds2431.c b/drivers/w1/slaves/w1_ds2431.c
index 30e6e1d..e3e9296 100644
--- a/drivers/w1/slaves/w1_ds2431.c
+++ b/drivers/w1/slaves/w1_ds2431.c
@@ -272,7 +272,7 @@ static int ds2431_probe(struct w1_device *dev)
cdev->priv = dev;
cdev->ops = &ds2431_ops;
cdev->size = W1_F2D_EEPROM_SIZE;
- cdev->name = asprintf(DRIVERNAME"%d", ds2431_count++);
+ cdev->name = basprintf(DRIVERNAME"%d", ds2431_count++);
if (cdev->name == NULL)
return -ENOMEM;
diff --git a/drivers/w1/slaves/w1_ds2433.c b/drivers/w1/slaves/w1_ds2433.c
index a840d9a..a907c6b 100644
--- a/drivers/w1/slaves/w1_ds2433.c
+++ b/drivers/w1/slaves/w1_ds2433.c
@@ -171,7 +171,7 @@ static int ds2433_cdev_create(struct w1_device *dev, int size, int id)
cdev->priv = dev;
cdev->ops = &ds2433_ops;
cdev->size = size;
- cdev->name = asprintf("%s%d", dev->dev.driver->name, id);
+ cdev->name = basprintf("%s%d", dev->dev.driver->name, id);
if (cdev->name == NULL)
return -ENOMEM;
diff --git a/fs/bpkfs.c b/fs/bpkfs.c
index 1e2619e..f1db963 100644
--- a/fs/bpkfs.c
+++ b/fs/bpkfs.c
@@ -14,6 +14,7 @@
#include <fcntl.h>
#include <malloc.h>
#include <init.h>
+#include <crc.h>
#include <linux/stat.h>
#include <linux/err.h>
#include <bpkfs.h>
@@ -102,7 +103,7 @@ static struct bpkfs_handle_hw *bpkfs_get_or_add_hw_id(
INIT_LIST_HEAD(&h->list_data);
h->hw_id = hw_id;
- h->name = asprintf("hw_id_%x", hw_id);
+ h->name = basprintf("hw_id_%x", hw_id);
list_add_tail(&h->list_hw_id, &handle->list);
return h;
@@ -430,7 +431,7 @@ static int bpkfs_probe(struct device_d *dev)
if (!type) {
type = "unknown";
- d->name = asprintf("%s_%08x", type, d->type);
+ d->name = basprintf("%s_%08x", type, d->type);
} else {
d->name = xstrdup(type);
}
@@ -463,7 +464,7 @@ static int bpkfs_probe(struct device_d *dev)
type = d->name;
d = xzalloc(sizeof(*d));
d->type = be32_to_cpu(data_header.type);
- d->name = asprintf("%s.crc", type);
+ d->name = basprintf("%s.crc", type);
d->type |= (1 << 31);
d->size = 8;
sprintf(d->data, "%08x", be32_to_cpu(data_header.crc));
diff --git a/fs/efi.c b/fs/efi.c
index 0f74cda..26f2f66 100644
--- a/fs/efi.c
+++ b/fs/efi.c
@@ -30,6 +30,7 @@
#include <fcntl.h>
#include <wchar.h>
#include <efi.h>
+#include <libfile.h>
#include <mach/efi.h>
#include <mach/efi-device.h>
@@ -530,8 +531,8 @@ int efi_fs_probe(struct efi_device *efidev)
if (efi_loaded_image && efidev->protocol == volume)
path = xstrdup("/boot");
else
- path = asprintf("/efi%d", index);
- device = asprintf("%s", dev_name(&efidev->dev));
+ path = basprintf("/efi%d", index);
+ device = basprintf("%s", dev_name(&efidev->dev));
ret = make_directory(path);
if (ret)
diff --git a/fs/efivarfs.c b/fs/efivarfs.c
index c7a282b..86cdcf0 100644
--- a/fs/efivarfs.c
+++ b/fs/efivarfs.c
@@ -154,7 +154,7 @@ static int efivars_create(struct device_d *dev, const char *pathname, mode_t mod
name8 = xstrdup_wchar_to_char(inode->name);
- inode->full_name = asprintf("%s-%pUl", name8, &inode->vendor);
+ inode->full_name = basprintf("%s-%pUl", name8, &inode->vendor);
free(name8);
efiret = RT->set_variable(inode->name, &inode->vendor,
@@ -405,7 +405,7 @@ static int efivarfs_probe(struct device_d *dev)
inode->vendor = vendor;
name8 = xstrdup_wchar_to_char(inode->name);
- inode->full_name = asprintf("%s-%pUl", name8, &vendor);
+ inode->full_name = basprintf("%s-%pUl", name8, &vendor);
free(name8);
list_add_tail(&inode->node, &priv->inodes);
diff --git a/fs/fs.c b/fs/fs.c
index 966abe9..f63a2dd 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -18,6 +18,7 @@
*/
#include <common.h>
+#include <command.h>
#include <fs.h>
#include <driver.h>
#include <errno.h>
@@ -33,6 +34,7 @@
#include <environment.h>
#include <libgen.h>
#include <block.h>
+#include <libfile.h>
char *mkmodestr(unsigned long mode, char *str)
{
@@ -1299,7 +1301,8 @@ int mount(const char *device, const char *fsname, const char *_path,
}
if (!fsdev->linux_rootarg && fsdev->cdev && fsdev->cdev->partuuid[0] != 0) {
- char *str = asprintf("root=PARTUUID=%s", fsdev->cdev->partuuid);
+ char *str = basprintf("root=PARTUUID=%s",
+ fsdev->cdev->partuuid);
fsdev_set_linux_rootarg(fsdev, str);
}
@@ -1718,10 +1721,10 @@ const char *cdev_mount_default(struct cdev *cdev, const char *fsoptions)
if (path)
return path;
- newpath = asprintf("/mnt/%s", cdev->name);
+ newpath = basprintf("/mnt/%s", cdev->name);
make_directory(newpath);
- devpath = asprintf("/dev/%s", cdev->name);
+ devpath = basprintf("/dev/%s", cdev->name);
ret = mount(devpath, NULL, newpath, fsoptions);
diff --git a/fs/nfs.c b/fs/nfs.c
index 87828fc..1e874d5 100644
--- a/fs/nfs.c
+++ b/fs/nfs.c
@@ -1317,19 +1317,18 @@ static void nfs_set_rootarg(struct nfs_priv *npriv, struct fs_device_d *fsdev)
const char *ip;
ip = ip_to_string(npriv->server);
- str = asprintf("root=/dev/nfs nfsroot=%s:%s%s%s",
- ip, npriv->path, rootnfsopts[0] ? "," : "",
- rootnfsopts);
+ str = basprintf("root=/dev/nfs nfsroot=%s:%s%s%s", ip, npriv->path,
+ rootnfsopts[0] ? "," : "", rootnfsopts);
/* forward specific mount options on demand */
if (npriv->manual_nfs_port == 1) {
- tmp = asprintf("%s,port=%hu", str, npriv->nfs_port);
+ tmp = basprintf("%s,port=%hu", str, npriv->nfs_port);
free(str);
str = tmp;
}
if (npriv->manual_mount_port == 1) {
- tmp = asprintf("%s,mountport=%hu", str, npriv->mount_port);
+ tmp = basprintf("%s,mountport=%hu", str, npriv->mount_port);
free(str);
str = tmp;
}
diff --git a/fs/ubifs/ubifs.c b/fs/ubifs/ubifs.c
index f07ad5e..8062baa 100644
--- a/fs/ubifs/ubifs.c
+++ b/fs/ubifs/ubifs.c
@@ -1269,8 +1269,8 @@ void ubifs_set_rootarg(struct ubifs_priv *priv, struct fs_device_d *fsdev)
mtd = di.mtd;
- str = asprintf("root=ubi0:%s ubi.mtd=%s rootfstype=ubifs",
- vi.name, mtd->cdev.partname);
+ str = basprintf("root=ubi0:%s ubi.mtd=%s rootfstype=ubifs",
+ vi.name, mtd->cdev.partname);
fsdev_set_linux_rootarg(fsdev, str);
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index 75e54e7..d2dcf7e 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -34,6 +34,7 @@
#else
#include <common.h>
#include <lzo.h>
+#include <crc.h>
#include <linux/fs.h>
#include <linux/sched.h>
#include <linux/ctype.h>
diff --git a/fs/uimagefs.c b/fs/uimagefs.c
index 3fdc5bd..13c1fba 100644
--- a/fs/uimagefs.c
+++ b/fs/uimagefs.c
@@ -17,6 +17,7 @@
#include <uimagefs.h>
#include <libbb.h>
#include <rtc.h>
+#include <crc.h>
#include <libfile.h>
static bool uimagefs_is_data_file(struct uimagefs_handle_data *d)
@@ -249,7 +250,7 @@ static int uimagefs_add_name(struct uimagefs_handle *priv)
static int uimagefs_add_hex(struct uimagefs_handle *priv, enum uimagefs_type type,
uint32_t data)
{
- char *val = asprintf("0x%x", data);
+ char *val = basprintf("0x%x", data);
return uimagefs_add_str(priv, type, val);
}
@@ -265,7 +266,7 @@ static int __uimagefs_add_data(struct uimagefs_handle *priv, size_t offset,
if (i < 0)
d->name = xstrdup(name);
else
- d->name = asprintf("%s%d", name, i);
+ d->name = basprintf("%s%d", name, i);
d->offset = offset;
d->size = size;
@@ -303,7 +304,7 @@ static int uimagefs_add_time(struct uimagefs_handle *priv)
char *val;
to_tm(header->ih_time, &tm);
- val = asprintf("%4d-%02d-%02d %2d:%02d:%02d UTC",
+ val = basprintf("%4d-%02d-%02d %2d:%02d:%02d UTC",
tm.tm_year, tm.tm_mon, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
@@ -514,8 +515,8 @@ static int uimagefs_probe(struct device_d *dev)
dev_dbg(dev, "mount: %s\n", fsdev->backingstore);
if (IS_BUILTIN(CONFIG_FS_TFTP))
- priv->tmp = asprintf("/.uImage_tmp_%08x",
- crc32(0, fsdev->path, strlen(fsdev->path)));
+ priv->tmp = basprintf("/.uImage_tmp_%08x",
+ crc32(0, fsdev->path, strlen(fsdev->path)));
ret = __uimage_open(priv);
if (ret)
diff --git a/include/command.h b/include/command.h
index 3aca1a9..4ed5e37 100644
--- a/include/command.h
+++ b/include/command.h
@@ -71,6 +71,7 @@ extern struct command __barebox_cmd_end;
struct command *find_cmd(const char *cmd);
int execute_command(int argc, char **argv);
void barebox_cmd_usage(struct command *cmdtp);
+int run_command(const char *cmd);
#define COMMAND_SUCCESS 0
#define COMMAND_ERROR 1
diff --git a/include/common.h b/include/common.h
index 38a6dbf..680a0af 100644
--- a/include/common.h
+++ b/include/common.h
@@ -61,7 +61,6 @@ void __noreturn hang (void);
char *size_human_readable(unsigned long long size);
-int run_command(const char *cmd);
int readline (const char *prompt, char *buf, int len);
/* common/memsize.c */
@@ -70,12 +69,6 @@ long get_ram_size (volatile long *, long);
/* $(CPU)/cpu.c */
void __noreturn poweroff(void);
-/* lib_generic/crc32.c */
-uint32_t crc32(uint32_t, const void*, unsigned int);
-uint32_t crc32_no_comp(uint32_t, const void*, unsigned int);
-int file_crc(char *filename, ulong start, ulong size, ulong *crc,
- ulong *total);
-
/* common/console.c */
int ctrlc (void);
@@ -88,16 +81,6 @@ static inline void dump_stack(void)
}
#endif
-#define MEMAREA_SIZE_SPECIFIED 1
-
-struct memarea_info {
- struct device_d *device;
- unsigned long start;
- unsigned long end;
- unsigned long size;
- unsigned long flags;
-};
-
int parse_area_spec(const char *str, loff_t *start, loff_t *size);
/* Just like simple_strtoul(), but this one honors a K/M/G suffix */
@@ -113,17 +96,6 @@ extern int (*barebox_main)(void);
void __noreturn start_barebox(void);
void shutdown_barebox(void);
-int run_shell(void);
-
-#ifdef CONFIG_SHELL_HUSH
-char *shell_expand(char *str);
-#else
-static inline char *shell_expand(char *str)
-{
- return strdup(str);
-}
-#endif
-
#define ALIGN_DOWN(x, a) ((x) & ~((typeof(x))(a) - 1))
#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
@@ -156,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/crc.h b/include/crc.h
index 4290f41..847a0a4 100644
--- a/include/crc.h
+++ b/include/crc.h
@@ -1,100 +1,14 @@
-/*
- *==========================================================================
- *
- * crc.h
- *
- * Interface for the CRC algorithms.
- *
- *==========================================================================
- *####ECOSGPLCOPYRIGHTBEGIN####
- * -------------------------------------------
- * This file is part of eCos, the Embedded Configurable Operating System.
- * Copyright (C) 2002 Andrew Lunn
- *
- * eCos is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 or (at your option) any later version.
- *
- * eCos is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with eCos; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * As a special exception, if other files instantiate templates or use macros
- * or inline functions from this file, or you compile this file and link it
- * with other works to produce a work based on this file, this file does not
- * by itself cause the resulting work to be covered by the GNU General Public
- * License. However the source code for this file must still be made available
- * in accordance with section (3) of the GNU General Public License.
- *
- * This exception does not invalidate any other reasons why a work based on
- * this file might be covered by the GNU General Public License.
- *
- * Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
- * at http: *sources.redhat.com/ecos/ecos-license/
- * -------------------------------------------
- *####ECOSGPLCOPYRIGHTEND####
- *==========================================================================
- *#####DESCRIPTIONBEGIN####
- *
- * Author(s): Andrew Lunn
- * Contributors: Andrew Lunn
- * Date: 2002-08-06
- * Purpose:
- * Description:
- *
- * This code is part of eCos (tm).
- *
- *####DESCRIPTIONEND####
- *
- *==========================================================================
- */
-
-#ifndef _SERVICES_CRC_CRC_H_
-#define _SERVICES_CRC_CRC_H_
+#ifndef __INCLUDE_CRC_H
+#define __INCLUDE_CRC_H
#include <linux/types.h>
-#ifndef __externC
-# ifdef __cplusplus
-# define __externC extern "C"
-# else
-# define __externC extern
-# endif
-#endif
-
-/* Compute a CRC, using the POSIX 1003 definition */
-extern uint32_t
-cyg_posix_crc32(unsigned char *s, int len);
-
-/* Gary S. Brown's 32 bit CRC */
-
-extern uint32_t
-cyg_crc32(unsigned char *s, int len);
-
-/* Gary S. Brown's 32 bit CRC, but accumulate the result from a */
-/* previous CRC calculation */
-
-extern uint32_t
-cyg_crc32_accumulate(uint32_t crc, unsigned char *s, int len);
-
-/* Ethernet FCS Algorithm */
-
-extern uint32_t
-cyg_ether_crc32(unsigned char *s, int len);
-
-/* Ethernet FCS algorithm, but accumulate the result from a previous */
-/* CRC calculation. */
-
-extern uint32_t
-cyg_ether_crc32_accumulate(uint32_t crc, unsigned char *s, int len);
-
/* 16 bit CRC with polynomial x^16+x^12+x^5+1 */
-
extern uint16_t cyg_crc16(const unsigned char *s, int len);
-#endif /* _SERVICES_CRC_CRC_H_ */
+uint32_t crc32(uint32_t, const void *, unsigned int);
+uint32_t crc32_no_comp(uint32_t, const void *, unsigned int);
+int file_crc(char *filename, unsigned long start, unsigned long size,
+ unsigned long *crc, unsigned long *total);
+
+#endif /* __INCLUDE_CRC_H */
diff --git a/include/dirent.h b/include/dirent.h
new file mode 100644
index 0000000..5ee4c20
--- /dev/null
+++ b/include/dirent.h
@@ -0,0 +1,20 @@
+#ifndef __DIRENT_H
+#define __DIRENT_H
+
+struct dirent {
+ char d_name[256];
+};
+
+typedef struct dir {
+ struct device_d *dev;
+ struct fs_driver_d *fsdrv;
+ struct node_d *node;
+ struct dirent d;
+ void *priv; /* private data for the fs driver */
+} DIR;
+
+DIR *opendir(const char *pathname);
+struct dirent *readdir(DIR *dir);
+int closedir(DIR *dir);
+
+#endif /* __DIRENT_H */
diff --git a/include/fcntl.h b/include/fcntl.h
index 12f370a..98020bd 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_GENERIC_FCNTL_H
-#define _ASM_GENERIC_FCNTL_H
+#ifndef __FCNTL_H
+#define __FCNTL_H
#include <linux/types.h>
@@ -24,97 +24,7 @@
#define O_RWSIZE_4 004000000
#define O_RWSIZE_8 010000000
-#define F_DUPFD 0 /* dup */
-#define F_GETFD 1 /* get close_on_exec */
-#define F_SETFD 2 /* set/clear close_on_exec */
-#define F_GETFL 3 /* get file->f_flags */
-#define F_SETFL 4 /* set file->f_flags */
-#ifndef F_GETLK
-#define F_GETLK 5
-#define F_SETLK 6
-#define F_SETLKW 7
-#endif
-#ifndef F_SETOWN
-#define F_SETOWN 8 /* for sockets. */
-#define F_GETOWN 9 /* for sockets. */
-#endif
-#ifndef F_SETSIG
-#define F_SETSIG 10 /* for sockets. */
-#define F_GETSIG 11 /* for sockets. */
-#endif
+int open(const char *pathname, int flags, ...);
+int creat(const char *pathname, mode_t mode);
-/* for F_[GET|SET]FL */
-#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
-
-/* for posix fcntl() and lockf() */
-#ifndef F_RDLCK
-#define F_RDLCK 0
-#define F_WRLCK 1
-#define F_UNLCK 2
-#endif
-
-/* for old implementation of bsd flock () */
-#ifndef F_EXLCK
-#define F_EXLCK 4 /* or 3 */
-#define F_SHLCK 8 /* or 4 */
-#endif
-
-/* for leases */
-#ifndef F_INPROGRESS
-#define F_INPROGRESS 16
-#endif
-
-/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH 1 /* shared lock */
-#define LOCK_EX 2 /* exclusive lock */
-#define LOCK_NB 4 /* or'd with one of the above to prevent
- blocking */
-#define LOCK_UN 8 /* remove lock */
-
-#define LOCK_MAND 32 /* This is a mandatory flock ... */
-#define LOCK_READ 64 /* which allows concurrent read operations */
-#define LOCK_WRITE 128 /* which allows concurrent write operations */
-#define LOCK_RW 192 /* which allows concurrent read & write ops */
-
-#define F_LINUX_SPECIFIC_BASE 1024
-
-#ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-
-struct flock {
- short l_type;
- short l_whence;
- off_t l_start;
- off_t l_len;
- pid_t l_pid;
- __ARCH_FLOCK_PAD
-};
-#endif
-
-#ifndef CONFIG_64BIT
-
-#ifndef F_GETLK64
-#define F_GETLK64 12 /* using 'struct flock64' */
-#define F_SETLK64 13
-#define F_SETLKW64 14
-#endif
-
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
-
-struct flock64 {
- short l_type;
- short l_whence;
- loff_t l_start;
- loff_t l_len;
- pid_t l_pid;
- __ARCH_FLOCK64_PAD
-};
-#endif
-#endif /* !CONFIG_64BIT */
-
-#endif /* _ASM_GENERIC_FCNTL_H */
+#endif /* __FCNTL_H */
diff --git a/include/fs.h b/include/fs.h
index 943ba55..6a59289 100644
--- a/include/fs.h
+++ b/include/fs.h
@@ -1,6 +1,12 @@
#ifndef __FS_H
#define __FS_H
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <dirent.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
#include <driver.h>
#include <filetype.h>
#include <linux/fs.h>
@@ -11,18 +17,6 @@ struct partition;
struct node_d;
struct stat;
-struct dirent {
- char d_name[256];
-};
-
-typedef struct dir {
- struct device_d *dev;
- struct fs_driver_d *fsdrv;
- struct node_d *node;
- struct dirent d;
- void *priv; /* private data for the fs driver */
-} DIR;
-
typedef struct filep {
struct fs_device_d *fsdev; /* The device this FILE belongs to */
char *path;
@@ -107,43 +101,7 @@ struct fs_device_d {
#define drv_to_fs_driver(d) container_of(d, struct fs_driver_d, drv)
-/*
- * standard posix file functions
- */
-int open(const char *pathname, int flags, ...);
-int creat(const char *pathname, mode_t mode);
-int unlink(const char *pathname);
-int close(int fd);
int flush(int fd);
-int lstat(const char *filename, struct stat *s);
-int stat(const char *filename, struct stat *s);
-int fstat(int fd, struct stat *s);
-ssize_t read(int fd, void *buf, size_t count);
-ssize_t pread(int fd, void *buf, size_t count, loff_t offset);
-int ioctl(int fd, int request, void *buf);
-ssize_t write(int fd, const void *buf, size_t count);
-ssize_t pwrite(int fd, const void *buf, size_t count, loff_t offset);
-
-loff_t lseek(int fildes, loff_t offset, int whence);
-int mkdir (const char *pathname, mode_t mode);
-
-/* Create a directory and its parents */
-int make_directory(const char *pathname);
-int rmdir (const char *pathname);
-
-const char *getcwd(void);
-int chdir(const char *pathname);
-
-DIR *opendir(const char *pathname);
-struct dirent *readdir(DIR *dir);
-int closedir(DIR *dir);
-
-int symlink(const char *pathname, const char *newpath);
-int readlink(const char *path, char *buf, size_t bufsiz);
-
-int mount (const char *device, const char *fsname, const char *path,
- const char *fsoptions);
-int umount(const char *pathname);
int umount_by_cdev(struct cdev *cdev);
/* not-so-standard functions */
@@ -183,8 +141,6 @@ void automount_remove(const char *_path);
int automount_add(const char *path, const char *cmd);
void automount_print(void);
-int unlink_recursive(const char *path, char **failedpath);
-
int fsdev_open_cdev(struct fs_device_d *fsdev);
const char *cdev_get_mount_path(struct cdev *cdev);
const char *cdev_mount_default(struct cdev *cdev, const char *fsoptions);
diff --git a/include/libfile.h b/include/libfile.h
index d5b914a..de4f42d 100644
--- a/include/libfile.h
+++ b/include/libfile.h
@@ -19,4 +19,11 @@ 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);
+
+/* Create a directory and its parents */
+int make_directory(const char *pathname);
+
+int unlink_recursive(const char *path, char **failedpath);
+
#endif /* __LIBFILE_H */
diff --git a/include/mtd/utils.h b/include/mtd/utils.h
index fca64ab..58f89df 100644
--- a/include/mtd/utils.h
+++ b/include/mtd/utils.h
@@ -41,7 +41,7 @@
#define sys_errmsg errmsg
#define warnmsg(fmt, ...) do { \
- fprintf(stderr, "%s: warning!: " fmt "\n", PROGRAM_NAME, ##__VA_ARGS__); \
+ eprintf("%s: warning!: " fmt "\n", PROGRAM_NAME, ##__VA_ARGS__); \
} while(0)
#endif /* INCLUDE_MTD_UTILS_H */
diff --git a/include/shell.h b/include/shell.h
index b98cac3..65dad0e 100644
--- a/include/shell.h
+++ b/include/shell.h
@@ -9,4 +9,15 @@
int shell_get_last_return_code(void);
+int run_shell(void);
+
+#ifdef CONFIG_SHELL_HUSH
+char *shell_expand(char *str);
+#else
+static inline char *shell_expand(char *str)
+{
+ return strdup(str);
+}
+#endif
+
#endif /* __SHELL_H__ */
diff --git a/include/stdio.h b/include/stdio.h
index d0817bd..7b2a42b 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -9,28 +9,30 @@
*/
/* serial stuff */
-void serial_printf(const char *fmt, ...) __attribute__ ((format(__printf__, 1, 2)));
-
-int sprintf(char *buf, const char *fmt, ...) __attribute__ ((format(__printf__, 2, 3)));
-int snprintf(char *buf, size_t size, const char *fmt, ...) __attribute__ ((format(__printf__, 3, 4)));
-int scnprintf(char *buf, size_t size, const char *fmt, ...) __attribute__ ((format(__printf__, 3, 4)));
-int vsprintf(char *buf, const char *fmt, va_list args);
-char *asprintf(const char *fmt, ...) __attribute__ ((format(__printf__, 1, 2)));
-char *vasprintf(const char *fmt, va_list ap);
-int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
-int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
+void serial_printf(const char *fmt, ...) __attribute__ ((format(__printf__, 1, 2)));
+
+int sprintf(char *buf, const char *fmt, ...) __attribute__ ((format(__printf__, 2, 3)));
+int snprintf(char *buf, size_t size, const char *fmt, ...) __attribute__ ((format(__printf__, 3, 4)));
+int scnprintf(char *buf, size_t size, const char *fmt, ...) __attribute__ ((format(__printf__, 3, 4)));
+int vsprintf(char *buf, const char *fmt, va_list args);
+char *basprintf(const char *fmt, ...) __attribute__ ((format(__printf__, 1, 2)));
+int asprintf(char **strp, const char *fmt, ...) __attribute__ ((format(__printf__, 2, 3)));
+char *bvasprintf(const char *fmt, va_list ap);
+int vasprintf(char **strp, const char *fmt, va_list ap);
+int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
+int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
#ifndef CONFIG_CONSOLE_NONE
/* stdin */
-int tstc(void);
+int tstc(void);
/* stdout */
-void console_putc(unsigned int ch, const char c);
-int getc(void);
-int console_puts(unsigned int ch, const char *s);
-void console_flush(void);
+void console_putc(unsigned int ch, const char c);
+int getchar(void);
+int console_puts(unsigned int ch, const char *s);
+void console_flush(void);
-int vprintf(const char *fmt, va_list args);
+int vprintf(const char *fmt, va_list args);
#else
static inline int tstc(void)
{
@@ -42,7 +44,7 @@ static inline int console_puts(unsigned int ch, const char *str)
return 0;
}
-static inline int getc(void)
+static inline int getchar(void)
{
return -EINVAL;
}
@@ -87,23 +89,20 @@ static inline void putchar(char c)
console_putc(CONSOLE_STDOUT, c);
}
-/* stderr */
-#define eputc(c) console_putc(CONSOLE_STDERR, c)
-#define eputs(s) console_puts(CONSOLE_STDERR, s)
-#define eprintf(fmt,args...) fprintf(stderr,fmt ,##args)
-
/*
* FILE based functions
*/
-#define stdin 0
-#define stdout 1
-#define stderr 2
+/* stderr */
+#define eprintf(fmt,args...) dprintf(STDERR_FILENO, fmt ,##args)
+
+#define STDIN_FILENO 0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
#define MAX_FILES 128
-int fprintf(int file, const char *fmt, ...) __attribute__ ((format(__printf__, 2, 3)));
-int fputs(int file, const char *s);
-int fputc(int file, const char c);
-int fgetc(int file);
+int dprintf(int file, const char *fmt, ...) __attribute__ ((format(__printf__, 2, 3)));
+int dputs(int file, const char *s);
+int dputc(int file, const char c);
#endif /* __STDIO_H */
diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h
new file mode 100644
index 0000000..6d6d3f5
--- /dev/null
+++ b/include/sys/ioctl.h
@@ -0,0 +1,6 @@
+#ifndef __SYS_IOCTL_H
+#define __SYS_IOCTL_H
+
+int ioctl(int fd, int request, void *buf);
+
+#endif /* __SYS_IOCTL_H */
diff --git a/include/sys/mount.h b/include/sys/mount.h
new file mode 100644
index 0000000..978f340
--- /dev/null
+++ b/include/sys/mount.h
@@ -0,0 +1,8 @@
+#ifndef __SYS_MOUNT_H
+#define __SYS_MOUNT_H
+
+int mount(const char *device, const char *fsname, const char *path,
+ const char *fsoptions);
+int umount(const char *pathname);
+
+#endif /* __SYS_MOUNT_H */
diff --git a/include/sys/stat.h b/include/sys/stat.h
new file mode 100644
index 0000000..037e5f1
--- /dev/null
+++ b/include/sys/stat.h
@@ -0,0 +1,9 @@
+#ifndef __STAT_H
+#define __STAT_H
+
+#include <linux/types.h>
+#include <linux/stat.h>
+
+int mkdir (const char *pathname, mode_t mode);
+
+#endif /* __STAT_H */
diff --git a/include/unistd.h b/include/unistd.h
new file mode 100644
index 0000000..31f430a
--- /dev/null
+++ b/include/unistd.h
@@ -0,0 +1,24 @@
+#ifndef __UNISTD_H
+#define __UNISTD_H
+
+#include <linux/types.h>
+
+struct stat;
+
+int unlink(const char *pathname);
+int close(int fd);
+int lstat(const char *filename, struct stat *s);
+int stat(const char *filename, struct stat *s);
+int fstat(int fd, struct stat *s);
+ssize_t read(int fd, void *buf, size_t count);
+ssize_t pread(int fd, void *buf, size_t count, loff_t offset);
+ssize_t write(int fd, const void *buf, size_t count);
+ssize_t pwrite(int fd, const void *buf, size_t count, loff_t offset);
+loff_t lseek(int fildes, loff_t offset, int whence);
+int rmdir (const char *pathname);
+int symlink(const char *pathname, const char *newpath);
+int readlink(const char *path, char *buf, size_t bufsiz);
+int chdir(const char *pathname);
+const char *getcwd(void);
+
+#endif /* __UNISTD_H */
diff --git a/include/w1_mac_address.h b/include/w1_mac_address.h
index 89dd914..cd4be76 100644
--- a/include/w1_mac_address.h
+++ b/include/w1_mac_address.h
@@ -33,7 +33,7 @@ static inline int w1_local_mac_address_register(int ethid, char * oui, char *w1_
addr[i] = oui[i];
}
- tmp = asprintf("%s.id", w1_dev);
+ tmp = basprintf("%s.id", w1_dev);
if (!tmp)
return -ENOMEM;
diff --git a/lib/libfile.c b/lib/libfile.c
index a27460c..62e9b8e 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 614d8c0..9edf212 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 7432efc..29d08cf 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 cf34817..3d356fb 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 2073a73..2870a5a 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 1a40d11..c296066 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 f9aa1a9..a32a13c 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 8a18366..8e92c1b 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 329c9fc..3e4bc5f 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 78dc015..434fdc7 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 00b8863..1122a4a 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 152081c..aaf0788 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;
diff --git a/net/dhcp.c b/net/dhcp.c
index 4433b44..792ece4 100644
--- a/net/dhcp.c
+++ b/net/dhcp.c
@@ -83,7 +83,7 @@ static char dhcp_tftpname[256];
static const char* dhcp_get_barebox_global(const char * var)
{
- char * var_global = asprintf("global.dhcp.%s", var);
+ char * var_global = basprintf("global.dhcp.%s", var);
const char *val;
if (!var_global)
@@ -96,7 +96,7 @@ static const char* dhcp_get_barebox_global(const char * var)
static int dhcp_set_barebox_global(const char * var, char *val)
{
- char * var_global = asprintf("global.dhcp.%s", var);
+ char * var_global = basprintf("global.dhcp.%s", var);
int ret;
if (!var_global)
@@ -717,7 +717,7 @@ out:
#ifdef CONFIG_GLOBALVAR
static void dhcp_global_add(const char *var)
{
- char *var_global = asprintf("dhcp.%s", var);
+ char *var_global = basprintf("dhcp.%s", var);
if (!var_global)
return;
diff --git a/net/dns.c b/net/dns.c
index 5488e9f..2acdb93 100644
--- a/net/dns.c
+++ b/net/dns.c
@@ -80,9 +80,9 @@ static int dns_send(const char *name)
domain = getenv("net.domainname");
if (!strchr(name, '.') && domain && *domain)
- fullname = asprintf(".%s.%s.", name, domain);
+ fullname = basprintf(".%s.%s.", name, domain);
else
- fullname = asprintf(".%s.", name);
+ fullname = basprintf(".%s.", name);
/* replace dots in fullname with chunk len */
dotptr = fullname;
diff --git a/net/ifup.c b/net/ifup.c
index adab683..f22afc9 100644
--- a/net/ifup.c
+++ b/net/ifup.c
@@ -67,8 +67,8 @@ int ifup(const char *name, unsigned flags)
for (i = 0; i < ARRAY_SIZE(vars); i++)
setenv(vars[i], "");
- cmd = asprintf("source /env/network/%s", name);
- cmd_discover = asprintf("/env/network/%s-discover", name);
+ cmd = basprintf("source /env/network/%s", name);
+ cmd_discover = basprintf("/env/network/%s-discover", name);
ret = run_command(cmd);
if (ret) {
diff --git a/scripts/bareboximd.c b/scripts/bareboximd.c
index d4da681..7d4cbeb 100644
--- a/scripts/bareboximd.c
+++ b/scripts/bareboximd.c
@@ -37,6 +37,8 @@
#include "../include/image-metadata.h"
+#define eprintf(args...) fprintf(stderr, ## args)
+
static void debug(const char *fmt, ...)
{
va_list ap;