projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[kirkwood] Fix mv_cesa module dependencies and .ko file location
[openwrt.git]
/
package
/
mtd
/
src
/
mtd.c
diff --git
a/package/mtd/src/mtd.c
b/package/mtd/src/mtd.c
index
ff75fcb
..
b2d760e
100644
(file)
--- a/
package/mtd/src/mtd.c
+++ b/
package/mtd/src/mtd.c
@@
-367,6
+367,16
@@
mtd_refresh(const char *mtd)
return 0;
}
return 0;
}
+static void
+indicate_writing(const char *mtd)
+{
+ if (quiet < 2)
+ fprintf(stderr, "\nWriting from %s to %s ... ", imagefile, mtd);
+
+ if (!quiet)
+ fprintf(stderr, " [ ]");
+}
+
static int
mtd_write(int imagefd, const char *mtd, char *fis_layout)
{
static int
mtd_write(int imagefd, const char *mtd, char *fis_layout)
{
@@
-374,6
+384,7
@@
mtd_write(int imagefd, const char *mtd, char *fis_layout)
char *str = NULL;
int fd, result;
ssize_t r, w, e;
char *str = NULL;
int fd, result;
ssize_t r, w, e;
+ ssize_t skip = 0;
uint32_t offset = 0;
#ifdef FIS_SUPPORT
uint32_t offset = 0;
#ifdef FIS_SUPPORT
@@
-451,13
+462,9
@@
resume:
exit(1);
}
exit(1);
}
- if (quiet < 2)
- fprintf(stderr, "Writing from %s to %s ... ", imagefile, mtd);
+ indicate_writing(mtd);
w = e = 0;
w = e = 0;
- if (!quiet)
- fprintf(stderr, " [ ]");
-
for (;;) {
/* buffer may contain data already (from trx check or last mtd partition write attempt) */
while (buflen < erasesize) {
for (;;) {
/* buffer may contain data already (from trx check or last mtd partition write attempt) */
while (buflen < erasesize) {
@@
-480,6
+487,15
@@
resume:
if (buflen == 0)
break;
if (buflen == 0)
break;
+ if (skip > 0) {
+ skip -= buflen;
+ buflen = 0;
+ if (skip <= 0)
+ indicate_writing(mtd);
+
+ continue;
+ }
+
if (jffs2file) {
if (memcmp(buf, JFFS2_EOF, sizeof(JFFS2_EOF) - 1) == 0) {
if (!quiet)
if (jffs2file) {
if (memcmp(buf, JFFS2_EOF, sizeof(JFFS2_EOF) - 1) == 0) {
if (!quiet)
@@
-487,8
+503,14
@@
resume:
if (quiet < 2)
fprintf(stderr, "\nAppending jffs2 data from %s to %s...", jffs2file, mtd);
/* got an EOF marker - this is the place to add some jffs2 data */
if (quiet < 2)
fprintf(stderr, "\nAppending jffs2 data from %s to %s...", jffs2file, mtd);
/* got an EOF marker - this is the place to add some jffs2 data */
- mtd_replace_jffs2(mtd, fd, e, jffs2file);
- goto done;
+ skip = mtd_replace_jffs2(mtd, fd, e, jffs2file);
+
+ w += skip;
+ e += skip;
+ skip -= buflen;
+ buflen = 0;
+ offset = 0;
+ continue;
}
/* no EOF marker, make sure we figure out the last inode number
* before appending some data */
}
/* no EOF marker, make sure we figure out the last inode number
* before appending some data */
This page took
0.036779 seconds
and
4
git commands to generate.