1.1 --- a/libfsclient/lib/src/client.cc Mon Dec 11 19:17:25 2023 +0100
1.2 +++ b/libfsclient/lib/src/client.cc Mon Dec 11 19:23:39 2023 +0100
1.3 @@ -261,6 +261,37 @@
1.4
1.5
1.6
1.7 +/* Obtain a stream from the environment. */
1.8 +
1.9 +file_t *client_get_stream(const char *name, flags_t flags)
1.10 +{
1.11 + file_t *stream = (file_t *) malloc(sizeof(file_t));
1.12 +
1.13 + file_init(stream);
1.14 + stream->flags = flags;
1.15 + stream->ref = l4re_env_get_cap(name);
1.16 +
1.17 + /* Enforce blocking if necessary.
1.18 + NOTE: Ignoring any event subscription error. */
1.19 +
1.20 + if (!(flags & O_NONBLOCK))
1.21 + {
1.22 + notify_flags_t nflags = 0;
1.23 +
1.24 + if ((flags & O_WRONLY) || (flags & O_RDWR))
1.25 + nflags |= NOTIFY_SPACE_AVAILABLE;
1.26 +
1.27 + if ((flags & O_RDONLY) || (flags & O_RDWR))
1.28 + nflags |= NOTIFY_CONTENT_AVAILABLE;
1.29 +
1.30 + client_set_blocking(stream, nflags | NOTIFY_PEER_CLOSED);
1.31 + }
1.32 +
1.33 + return stream;
1.34 +}
1.35 +
1.36 +
1.37 +
1.38 /* Open a filesystem object. */
1.39
1.40 file_t *client_open(const char *name, flags_t flags)