Changeset 22881


Ignore:
Timestamp:
2010-09-03T20:14:32+02:00 (7 years ago)
Author:
juhosg
Message:

package/mtd: write remaining data after adding file to the jffs2 partition

Location:
trunk/package/mtd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mtd/Makefile

    r21823 r22881  
    11# 
    2 # Copyright (C) 2006-2009 OpenWrt.org 
     2# Copyright (C) 2006-2010 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    1010 
    1111PKG_NAME:=mtd 
    12 PKG_RELEASE:=13 
     12PKG_RELEASE:=14 
    1313 
    1414PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME) 
  • trunk/package/mtd/src/jffs2.c

    r17666 r22881  
    248248        trx_fixup(outfd, mtd); 
    249249#endif 
    250         return 0; 
     250        return (mtdofs - ofs); 
    251251} 
    252252 
  • trunk/package/mtd/src/mtd.c

    r20524 r22881  
    368368} 
    369369 
     370static void 
     371indicate_writing(const char *mtd) 
     372{ 
     373        if (quiet < 2) 
     374                fprintf(stderr, "\nWriting from %s to %s ... ", imagefile, mtd); 
     375 
     376        if (!quiet) 
     377                fprintf(stderr, " [ ]"); 
     378} 
     379 
    370380static int 
    371381mtd_write(int imagefd, const char *mtd, char *fis_layout) 
     
    375385        int fd, result; 
    376386        ssize_t r, w, e; 
     387        ssize_t skip = 0; 
    377388        uint32_t offset = 0; 
    378389 
     
    452463        } 
    453464 
    454         if (quiet < 2) 
    455                 fprintf(stderr, "Writing from %s to %s ... ", imagefile, mtd); 
     465        indicate_writing(mtd); 
    456466 
    457467        w = e = 0; 
    458         if (!quiet) 
    459                 fprintf(stderr, " [ ]"); 
    460  
    461468        for (;;) { 
    462469                /* buffer may contain data already (from trx check or last mtd partition write attempt) */ 
     
    481488                        break; 
    482489 
     490                if (skip > 0) { 
     491                        skip -= buflen; 
     492                        buflen = 0; 
     493                        if (skip <= 0) 
     494                                indicate_writing(mtd); 
     495 
     496                        continue; 
     497                } 
     498 
    483499                if (jffs2file) { 
    484500                        if (memcmp(buf, JFFS2_EOF, sizeof(JFFS2_EOF) - 1) == 0) { 
     
    488504                                        fprintf(stderr, "\nAppending jffs2 data from %s to %s...", jffs2file, mtd); 
    489505                                /* got an EOF marker - this is the place to add some jffs2 data */ 
    490                                 mtd_replace_jffs2(mtd, fd, e, jffs2file); 
    491                                 goto done; 
     506                                skip = mtd_replace_jffs2(mtd, fd, e, jffs2file); 
     507 
     508                                w += skip; 
     509                                e += skip; 
     510                                skip -= buflen; 
     511                                buflen = 0; 
     512                                offset = 0; 
     513                                continue; 
    492514                        } 
    493515                        /* no EOF marker, make sure we figure out the last inode number 
Note: See TracChangeset for help on using the changeset viewer.