Before: barebox:/ memset -d /dev/fb0 -l 0 10 0xdeadbeef write: No space left on device barebox:/ md -s /dev/fb0 00000000: 0a0a0a0a 0a0a0a0a 0a0a0a0a 0a0a0a0a ................ ... After: barebox:/ memset -d /dev/fb0 -l 0 10 0xdeadbeef barebox:/ md -s /dev/fb0 00000000: deadbeef deadbeef deadbeef deadbeef ................ 00000010: deadbeef deadbeef deadbeef deadbeef ................ 00000020: deadbeef deadbeef 00ffffff 00ffffff ................ 00000030: 00ffffff 00ffffff 00ffffff 00ffffff ............... Signed-off-by: Holger Schurig <holgerschurig@xxxxxxxxx> --- commands/memset.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/commands/memset.c b/commands/memset.c index f869306..4afe404 100644 --- a/commands/memset.c +++ b/commands/memset.c @@ -39,7 +39,6 @@ static int do_memset(int argc, char *argv[]) { loff_t s, c, n; int fd; - char *buf; int mode = O_RWSIZE_1; int ret = 1; char *file = "/dev/mem"; @@ -59,28 +58,19 @@ static int do_memset(int argc, char *argv[]) if (fd < 0) return 1; - buf = xmalloc(RW_BUF_SIZE); - memset(buf, c, RW_BUF_SIZE); - while (n > 0) { - int now; - - now = min((loff_t)RW_BUF_SIZE, n); - - ret = write(fd, buf, now); + while (c--) { + ret = write(fd, &n, mode >> O_RWSIZE_SHIFT); if (ret < 0) { perror("write"); ret = 1; goto out; } - - n -= now; } ret = 0; out: close(fd); - free(buf); return ret; } -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox