Changeset 15460


Ignore:
Timestamp:
10/13/10 21:41:47 (3 years ago)
Author:
BrainSlayer
Message:

buffered write

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/httpd/modules/upgrade_x86.c

    r15245 r15460  
    206206                fseek(in, 0, SEEK_END); 
    207207                long mtdlen = ftell(in); 
    208                 fseek(in, mtdlen-(65536*2), SEEK_SET); 
     208                fseek(in, mtdlen - (65536 * 2), SEEK_SET); 
    209209                fwrite(mem, 65536, 1, in); 
    210210                fclose(in); 
    211211                eval("sync"); 
    212212                in = fopen(drive, "rb"); 
    213                 fseek(in, mtdlen-(65536*2), SEEK_SET); 
     213                fseek(in, mtdlen - (65536 * 2), SEEK_SET); 
    214214                fread(mem, 65536, 1, in); 
    215215                fclose(in); 
     
    218218        fprintf(stderr, "write system\n"); 
    219219        FILE *out = fopen(drive, "r+b"); 
    220         for (i = 0; i < linuxsize; i++) 
    221                 putc(getc(fifo), out); 
     220        char *flashbuf = (char *)malloc(linuxsize); 
     221        if (!flashbuf)          // not enough memory, use direct way 
     222        { 
     223                for (i = 0; i < linuxsize; i++) 
     224                        putc(getc(fifo), out); 
     225        } else { 
     226                //read into temp buffer 
     227                fread(flashbuf, linuxsize, 1, fifo); 
     228                fwrite(flashbuf, linuxsize, 1, out); 
     229                free(flashbuf); 
     230        } 
    222231        fclose(out); 
    223232        fprintf(stderr, "sync system\n"); 
    224  
    225233        sysprintf("sync"); 
    226234        sysprintf("sync"); 
Note: See TracChangeset for help on using the changeset viewer.