[PATCH] commands: fix memset command
Holger Schurig
holgerschurig at gmail.com
Tue Jul 22 02:58:42 PDT 2014
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 at gmail.com>
---
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
More information about the barebox
mailing list