Changeset 368ee04 in mainline for uspace/app/getterm/getterm.c


Ignore:
Timestamp:
2017-04-05T18:10:39Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
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/app/getterm/getterm.c

    r39f892a9 r368ee04  
    3636
    3737#include <sys/types.h>
    38 #include <fcntl.h>
    3938#include <unistd.h>
    4039#include <stdio.h>
     
    4342#include <errno.h>
    4443#include <loc.h>
     44#include <vfs/vfs.h>
    4545#include "version.h"
    4646#include "welcome.h"
     
    5858}
    5959
    60 static void reopen(FILE **stream, int fd, const char *path, int flags,
    61     const char *mode)
     60static void reopen(FILE **stream, int fd, const char *path, int mode,
     61    const char *fmode)
    6262{
    6363        if (fclose(*stream))
     
    6666        *stream = NULL;
    6767       
    68         int oldfd = open(path, flags);
     68        int oldfd = vfs_lookup_open(path, WALK_REGULAR, mode);
    6969        if (oldfd < 0)
    7070                return;
    7171       
    7272        if (oldfd != fd) {
    73                 if (dup2(oldfd, fd) != fd)
     73                if (vfs_clone(oldfd, fd, false) != fd)
    7474                        return;
    7575               
    76                 if (close(oldfd))
     76                if (vfs_put(oldfd))
    7777                        return;
    7878        }
    7979       
    80         *stream = fdopen(fd, mode);
     80        *stream = fdopen(fd, fmode);
    8181}
    8282
     
    141141        snprintf(term_node, LOC_NAME_MAXLEN, "%s/%s", locfs, term);
    142142       
    143         reopen(&stdin, 0, term_node, O_RDONLY, "r");
    144         reopen(&stdout, 1, term_node, O_WRONLY, "w");
    145         reopen(&stderr, 2, term_node, O_WRONLY, "w");
     143        reopen(&stdin, 0, term_node, MODE_READ, "r");
     144        reopen(&stdout, 1, term_node, MODE_WRITE, "w");
     145        reopen(&stderr, 2, term_node, MODE_WRITE, "w");
    146146       
    147147        if (stdin == NULL)
Note: See TracChangeset for help on using the changeset viewer.