1.1 --- a/libfsserver/lib/files/opener_resource.cc Mon Oct 11 23:56:21 2021 +0200
1.2 +++ b/libfsserver/lib/files/opener_resource.cc Wed Oct 13 00:50:33 2021 +0200
1.3 @@ -48,14 +48,11 @@
1.4
1.5
1.6
1.7 -/* Obtain any active parent directory for a path, notifying its subscribers of
1.8 - the file opening event. */
1.9 +/* Obtain the identifier for any active parent directory for a path. */
1.10
1.11 -long OpenerResource::notify_parent(const char *path)
1.12 +long OpenerResource::get_parent(const char *path, fileid_t *fileid)
1.13 {
1.14 char *sep = strrchr(path, (int) '/');
1.15 - DirectoryProvider *provider;
1.16 - fileid_t fileid;
1.17 long err;
1.18
1.19 /* For top-level paths, use the empty string to get the root directory.
1.20 @@ -63,16 +60,30 @@
1.21 identifier. */
1.22
1.23 if (sep == NULL)
1.24 - err = get_fileid("", 0, &fileid);
1.25 + err = get_fileid("", 0, fileid);
1.26 else
1.27 {
1.28 char *parent = strndup(path, sep - path + 1);
1.29
1.30 parent[sep - path] = '\0';
1.31 - err = get_fileid(parent, 0, &fileid);
1.32 + err = get_fileid(parent, 0, fileid);
1.33 free(parent);
1.34 }
1.35
1.36 + return err;
1.37 +}
1.38 +
1.39 +/* Obtain any active parent directory for a path, notifying its subscribers of
1.40 + the file opening event. */
1.41 +
1.42 +long OpenerResource::notify_parent(const char *path)
1.43 +{
1.44 + DirectoryProvider *provider;
1.45 + fileid_t fileid;
1.46 + long err;
1.47 +
1.48 + err = get_parent(path, &fileid);
1.49 +
1.50 if (err)
1.51 return err;
1.52
1.53 @@ -98,7 +109,8 @@
1.54 long OpenerResource::open(const char *path, flags_t flags, offset_t *size,
1.55 l4_cap_idx_t *cap, object_flags_t *object_flags)
1.56 {
1.57 - /* Obtain an identifier for the file, even for new files. */
1.58 + /* Obtain an identifier for the file, even for new files (subject to use of
1.59 + the appropriate flag). */
1.60
1.61 fileid_t fileid;
1.62 long err = get_fileid(path, flags, &fileid);