Diff for /embedtools/src/imgupd.c between versions 1.6 and 1.6.2.4

version 1.6, 2014/02/05 23:31:55 version 1.6.2.4, 2014/02/06 01:23:56
Line 47  SUCH DAMAGE. Line 47  SUCH DAMAGE.
   
   
 char imgName[PATH_MAX], imgFile[PATH_MAX];  char imgName[PATH_MAX], imgFile[PATH_MAX];
off_t imgSize, iSize;off_t imgSize, iSize, fromBegin;
 int Verbose, bufSize = IMGBUF_SIZE;  int Verbose, bufSize = IMGBUF_SIZE;
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
   
Line 61  Usage() Line 61  Usage()
                 "\t-v\t\tVerbose ...\n"                  "\t-v\t\tVerbose ...\n"
                 "\t-R\t\tReboot system after complete\n"                  "\t-R\t\tReboot system after complete\n"
                 "\t-p\t\tPipe suitable transfer on little chunks\n"                  "\t-p\t\tPipe suitable transfer on little chunks\n"
                   "\t-i\t\tStart fill storage from begin\n"
                 "\t-g\t\tGet image from Storage\n"                  "\t-g\t\tGet image from Storage\n"
                 "\t-t\t\tTruncate Storage file name\n"                  "\t-t\t\tTruncate Storage file name\n"
                 "\t-s <size>\tStorage size (required for stdin)\n"                  "\t-s <size>\tStorage size (required for stdin)\n"
Line 77  EmptyStore(int img) Line 78  EmptyStore(int img)
   
         VERB(1) printf("Erase store %s\n", imgName);          VERB(1) printf("Erase store %s\n", imgName);
   
        iSize = lseek(img, 0, SEEK_END);        if (!fromBegin) {
        if (iSize == -1) {                iSize = lseek(img, 0, SEEK_END);
                ESYSERR(0);                if (iSize == -1) {
                return -1;                        ESYSERR(0);
                         return -1;
                 } else
                         imgSize += E_ALIGN(iSize, bufSize);
         } else          } else
                imgSize += E_ALIGN(iSize, bufSize);                iSize ^= iSize;
   
         memset(buf, 0, sizeof buf);          memset(buf, 0, sizeof buf);
         for (i = howmany(iSize, bufSize); i < howmany(imgSize, bufSize); i++)          for (i = howmany(iSize, bufSize); i < howmany(imgSize, bufSize); i++)
                 if ((wlen = write(img, buf, bufSize)) == -1 ||                   if ((wlen = write(img, buf, bufSize)) == -1 || 
                                 (wlen && wlen != bufSize)) {                                  (wlen && wlen != bufSize)) {
                        EERROR(EIO, "Error at chunk %d init %d bytes, "                        if (wlen == -1)
                                        "should be %u\n", i, wlen, bufSize);                                ESYSERR(0);
                         else
                                 EERROR(EIO, "Error at chunk %d init %d bytes, "
                                                 "should be %u\n", i, wlen, bufSize);
                         return -1;                          return -1;
                 } else                  } else
                         VERB(1) printf("+Written chunk #%d\n", i);                          VERB(1) printf("+Written chunk #%d\n", i);
Line 119  FillStore(int img, int fd) Line 126  FillStore(int img, int fd)
                 else                  else
                         VERB(1) printf("+Readed %d bytes for chunk #%d\n", rlen, j);                          VERB(1) printf("+Readed %d bytes for chunk #%d\n", rlen, j);
   
                wlen = write(img, buf, rlen);                wlen = write(img, buf, bufSize);
                 if (wlen == -1) {                  if (wlen == -1) {
                         ESYSERR(0);                          ESYSERR(0);
                         return -1;                          return -1;
                } else if (wlen && wlen != rlen) {                } else if (wlen && wlen != bufSize) {
                        EERROR(EIO, "Readed %d bytes are not equal to written %d bytes\n",                         EERROR(EIO, "Error at chunk %d written %d bytes, "
                                        rlen, wlen);                                        "should be %u\n", i, wlen, bufSize);
                 } else                  } else
                         VERB(1) printf("+Written %d bytes at chunk #%d\n", wlen, i);                          VERB(1) printf("+Written %d bytes at chunk #%d\n", wlen, i);
         }          }
Line 139  main(int argc, char **argv) Line 146  main(int argc, char **argv)
         char ch, m = 0, R = 0;          char ch, m = 0, R = 0;
         int fd, img, tr = 0;          int fd, img, tr = 0;
   
        while ((ch = getopt(argc, argv, "hvRpgts:f:")) != -1)        while ((ch = getopt(argc, argv, "hvRipgts:f:")) != -1)
                 switch (ch) {                  switch (ch) {
                         case 'f':                          case 'f':
                                 strlcpy(imgName, optarg, sizeof imgName);                                  strlcpy(imgName, optarg, sizeof imgName);
Line 154  main(int argc, char **argv) Line 161  main(int argc, char **argv)
                         case 't':                          case 't':
                                 tr = O_TRUNC;                                  tr = O_TRUNC;
                                 break;                                  break;
                         case 'g':  
                                 m = 1;  
                                 break;  
                         case 'p':                          case 'p':
                                 bufSize = IMGBUF_SIZE2;                                  bufSize = IMGBUF_SIZE2;
                                 break;                                  break;
                           case 'g':
                                   m = 1;
                           case 'i':
                                   fromBegin = 1;
                                   break;
                         case 'R':                          case 'R':
                                 R = 1;                                  R = 1;
                                 break;                                  break;
Line 265  main(int argc, char **argv) Line 274  main(int argc, char **argv)
                         return 4;                          return 4;
                 }                  }
         } else {        /* GET */          } else {        /* GET */
                   iSize ^= iSize;
                 if (EmptyStore(fd) == -1) {                  if (EmptyStore(fd) == -1) {
                         if (fd > 2)                          if (fd > 2)
                                 close(fd);                                  close(fd);

Removed from v.1.6  
changed lines
  Added in v.1.6.2.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>