Changeset 58898d1d in mainline for uspace/app/sysinst/futil.c


Ignore:
Timestamp:
2017-03-24T20:31:54Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8e9b2534
Parents:
c9e3692
Message:

Remove VFS_IN_SEEK from VFS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/sysinst/futil.c

    rc9e3692 r58898d1d  
    6060        ssize_t nr, nw;
    6161        int rc;
     62        aoff64_t posr = 0, posw = 0;
    6263
    6364        printf("Copy '%s' to '%s'.\n", srcp, destp);
     
    7273
    7374        do {
    74                 nr = read(sf, buf, BUF_SIZE);
     75                nr = read(sf, &posr, buf, BUF_SIZE);
    7576                if (nr == 0)
    7677                        break;
     
    7879                        return EIO;
    7980
    80                 nw = write(df, buf, nr);
     81                nw = write(df, &posw, buf, nr);
    8182                if (nw <= 0)
    8283                        return EIO;
     
    157158        int sf;
    158159        ssize_t nr;
    159         off64_t off;
    160160        size_t fsize;
    161161        char *data;
     162        struct stat st;
    162163
    163164        sf = open(srcp, O_RDONLY);
     
    165166                return ENOENT;
    166167
    167         off = lseek(sf, 0, SEEK_END);
    168         if (off == (off64_t)-1)
     168        if (fstat(sf, &st) != EOK) {
     169                close(sf);
    169170                return EIO;
     171        }       
    170172
    171         fsize = (size_t)off;
    172 
    173         off = lseek(sf, 0, SEEK_SET);
    174         if (off == (off64_t)-1)
    175                 return EIO;
     173        fsize = st.size;
    176174
    177175        data = calloc(fsize, 1);
    178         if (data == NULL)
     176        if (data == NULL) {
     177                close(sf);
    179178                return ENOMEM;
     179        }
    180180
    181         nr = read(sf, data, fsize);
    182         if (nr != (ssize_t)fsize)
     181        nr = read(sf, (aoff64_t []) { 0 }, data, fsize);
     182        if (nr != (ssize_t)fsize) {
     183                close(sf);
     184                free(data);
    183185                return EIO;
     186        }
    184187
    185188        (void) close(sf);
Note: See TracChangeset for help on using the changeset viewer.