Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 368ee04 in mainline for uspace/srv/devman/match.c


Ignore:
Timestamp:
2017-04-05T18:10:39Z (5 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
93ad8166
Parents:
39f892a9 (diff), 2166728 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~jakub/helenos/vfs-2.5-cherrypick

This merge cherry-picks some of the changesets from Jiri Zarevucky's:

lp:~zarevucky-jiri/helenos/vfs-2.5

and then continues independently, yet sometime in a similar vein.

Roughly speaking, Jiri's branch is merged entirely up to its revision
1926 and then cherry-picked on and off until its revision 1965. Among
these changes are:

  • relativization of the API,
  • client-side roots,
  • server-side mounts,
  • inbox for passing arbitrary files from parent to child,
  • some streamlining and cleanup.

Additional changes include:

  • addressing issues introduced by the above changes,
  • client-side I/O cursors (file positions),
  • all HelenOS file system APIs begin with the vfs_ prefix and can be used after including vfs/vfs.h,
  • removal of some POSIX-ish headers and definitions,
  • additional cleanup.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/devman/match.c

    r39f892a9 r368ee04  
    3232
    3333#include <errno.h>
    34 #include <fcntl.h>
    3534#include <io/log.h>
    3635#include <str.h>
    3736#include <str_error.h>
    3837#include <sys/types.h>
    39 #include <sys/stat.h>
     38#include <vfs/vfs.h>
    4039
    4140#include "devman.h"
     
    201200        int fd;
    202201        size_t len = 0;
    203        
    204         fd = open(conf_path, O_RDONLY);
     202        struct stat st;
     203       
     204        fd = vfs_lookup_open(conf_path, WALK_REGULAR, MODE_READ);
    205205        if (fd < 0) {
    206206                log_msg(LOG_DEFAULT, LVL_ERROR, "Unable to open `%s' for reading: %s.",
     
    210210        opened = true;
    211211       
    212         len = lseek(fd, 0, SEEK_END);
    213         lseek(fd, 0, SEEK_SET);
     212        if (vfs_stat(fd, &st) != EOK) {
     213                log_msg(LOG_DEFAULT, LVL_ERROR, "Unable to fstat %d: %s.", fd,
     214                    str_error(errno));
     215                goto cleanup;
     216        }
     217        len = st.size;
    214218        if (len == 0) {
    215219                log_msg(LOG_DEFAULT, LVL_ERROR, "Configuration file '%s' is empty.",
     
    225229        }
    226230       
    227         ssize_t read_bytes = read(fd, buf, len);
     231        ssize_t read_bytes = vfs_read(fd, (aoff64_t []) {0}, buf, len);
    228232        if (read_bytes <= 0) {
    229233                log_msg(LOG_DEFAULT, LVL_ERROR, "Unable to read file '%s' (%d).", conf_path,
     
    239243       
    240244        if (opened)
    241                 close(fd);
     245                vfs_put(fd);
    242246       
    243247        return suc;
Note: See TracChangeset for help on using the changeset viewer.