Ignore:
File:
1 edited

Legend:

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

    ra6fc88a r3a34852  
    3535#include <dirent.h>
    3636#include <errno.h>
     37#include <fcntl.h>
    3738#include <stdbool.h>
    3839#include <stdio.h>
    3940#include <stdlib.h>
    40 #include <vfs/vfs.h>
     41#include <sys/stat.h>
    4142#include <sys/types.h>
    4243#include <dirent.h>
     
    5960        ssize_t nr, nw;
    6061        int rc;
    61         aoff64_t posr = 0, posw = 0;
    6262
    6363        printf("Copy '%s' to '%s'.\n", srcp, destp);
    6464
    65         sf = vfs_lookup_open(srcp, WALK_REGULAR, MODE_READ);
     65        sf = open(srcp, O_RDONLY);
    6666        if (sf < 0)
    6767                return EIO;
    6868
    69         df = vfs_lookup_open(destp, WALK_REGULAR | WALK_MAY_CREATE, MODE_WRITE);
     69        df = open(destp, O_CREAT | O_WRONLY, 0);
    7070        if (df < 0)
    7171                return EIO;
    7272
    7373        do {
    74                 nr = vfs_read(sf, &posr, buf, BUF_SIZE);
     74                nr = read(sf, buf, BUF_SIZE);
    7575                if (nr == 0)
    7676                        break;
     
    7878                        return EIO;
    7979
    80                 nw = vfs_write(df, &posw, buf, nr);
     80                nw = write(df, buf, nr);
    8181                if (nw <= 0)
    8282                        return EIO;
    8383        } while (true);
    8484
    85         (void) vfs_put(sf);
     85        (void) close(sf);
    8686
    87         rc = vfs_put(df);
     87        rc = close(df);
    8888        if (rc < 0)
    8989                return EIO;
     
    118118                        return ENOMEM;
    119119
    120                 rc = vfs_stat_path(srcp, &s);
     120                rc = stat(srcp, &s);
    121121                if (rc != EOK)
    122122                        return EIO;
     
    128128                } else if (s.is_directory) {
    129129                        printf("Create directory '%s'\n", destp);
    130                         rc = vfs_link_path(destp, KIND_DIRECTORY, NULL);
     130                        rc = mkdir(destp, 0);
    131131                        if (rc != EOK)
    132132                                return EIO;
     
    157157        int sf;
    158158        ssize_t nr;
     159        off64_t off;
    159160        size_t fsize;
    160161        char *data;
    161         struct stat st;
    162162
    163         sf = vfs_lookup_open(srcp, WALK_REGULAR, MODE_READ);
     163        sf = open(srcp, O_RDONLY);
    164164        if (sf < 0)
    165165                return ENOENT;
    166166
    167         if (vfs_stat(sf, &st) != EOK) {
    168                 vfs_put(sf);
     167        off = lseek(sf, 0, SEEK_END);
     168        if (off == (off64_t)-1)
    169169                return EIO;
    170         }       
    171170
    172         fsize = st.size;
     171        fsize = (size_t)off;
     172
     173        off = lseek(sf, 0, SEEK_SET);
     174        if (off == (off64_t)-1)
     175                return EIO;
    173176
    174177        data = calloc(fsize, 1);
    175         if (data == NULL) {
    176                 vfs_put(sf);
     178        if (data == NULL)
    177179                return ENOMEM;
    178         }
    179180
    180         nr = vfs_read(sf, (aoff64_t []) { 0 }, data, fsize);
    181         if (nr != (ssize_t)fsize) {
    182                 vfs_put(sf);
    183                 free(data);
     181        nr = read(sf, data, fsize);
     182        if (nr != (ssize_t)fsize)
    184183                return EIO;
    185         }
    186184
    187         (void) vfs_put(sf);
     185        (void) close(sf);
    188186        *rdata = data;
    189187        *rsize = fsize;
Note: See TracChangeset for help on using the changeset viewer.