From: Steven Barth Date: Thu, 18 Sep 2008 16:44:49 +0000 (+0000) Subject: More mtdow fixes X-Git-Tag: 0.9.0~1263 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8509b6a83f5545f06b47505c9856411b2c053d66;p=oweals%2Fluci.git More mtdow fixes --- diff --git a/libs/sys/luasrc/sys/mtdow.lua b/libs/sys/luasrc/sys/mtdow.lua index ffe3e4229..bfa2e9e93 100644 --- a/libs/sys/luasrc/sys/mtdow.lua +++ b/libs/sys/luasrc/sys/mtdow.lua @@ -63,7 +63,7 @@ CFEWriter.blocks = { image = { magic = {"4844", "5735"}, device = "linux", - write = WRITE_COMBINED + write = WRITE_IMAGE } } @@ -181,11 +181,22 @@ function Writer._write_emulated(self, devicename, imagestream, appendfile) end function Writer._write_memory(self, devicename, imagestream) - local devicestream = ltn12.sink.file(io.open(devicename, "w")) - local stat, err = ltn12.pump.all(imagestream, devicestream) - if stat then - return os.execute("sync") + local imageproc = posix.fork() + assert(imageproc ~= -1, ERROR_RESOURCE) + if imageproc == 0 then + fs.unlink(self.IMAGEFIFO) + assert(posix.mkfifo(self.IMAGEFIFO), ERROR_RESOURCE) + local imagefifo = io.open(self.IMAGEFIFO, "w") + assert(imagefifo, ERROR_RESOURCE) + ltn12.pump.all(imagestream, ltn12.sink.file(imagefifo)) + os.exit(0) end + + return os.execute( + "%s write '%s' '%s'" % { + self.MTD, self.IMAGEFIFO, devicename + } + ) end function Writer._write_combined(self, devicename, imagestream, appendfile)