summaryrefslogtreecommitdiff
path: root/libnetfs/trans-callback.c
diff options
context:
space:
mode:
authorJustus Winter <justus@gnupg.org>2016-04-18 21:53:28 +0200
committerJustus Winter <justus@gnupg.org>2016-05-19 22:27:37 +0200
commit13efe6721a370c38b65e0da3d33f310f42cfa05f (patch)
tree5c05409d7e27b9cb0842af4bbe7bf242b7659ab7 /libnetfs/trans-callback.c
parent3416078aa58b095566e559b7dbd9c9da4d1fc5d5 (diff)
Unify the short-circuit translator logic
* libdiskfs/dir-lookup.c (short_circuited_callback1): Move function to libfshelp. (diskfs_S_dir_lookup): Use the function from libfshelp instead. * libdiskfs/fsys-getroot.c (diskfs_S_fsys_getroot): Adapt accordingly. * libdiskfs/trans-callback.c (_diskfs_translator_callback2_fn): Likewise. * libfshelp/fetch-root.c (fshelp_short_circuited_callback1): New function. * libfshelp/fshelp.h (struct fshelp_stat_cookie): New definition. (fshelp_short_circuited_callback1): New prototype. * libnetfs/dir-lookup.c (short_circuited_callback1): Drop function. (netfs_S_dir_lookup): Use the function from libfshelp instead. * libnetfs/fsys-getroot.c (netfs_S_fsys_getroot): Adapt accordingly. * libnetfs/trans-callback.c (_netfs_translator_callback2_fn): Likewise.
Diffstat (limited to 'libnetfs/trans-callback.c')
-rw-r--r--libnetfs/trans-callback.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libnetfs/trans-callback.c b/libnetfs/trans-callback.c
index ed21aa2a..99f4dc05 100644
--- a/libnetfs/trans-callback.c
+++ b/libnetfs/trans-callback.c
@@ -20,6 +20,7 @@
#include "priv.h"
#include <fcntl.h>
+#include <hurd/fshelp.h>
/* Callback function needed for calls to fshelp_fetch_root. See
<hurd/fshelp.h> for the interface description. */
@@ -57,6 +58,7 @@ _netfs_translator_callback2_fn (void *cookie1, void *cookie2, int flags,
error_t err;
struct protid *cred;
struct node *node = cookie1;
+ struct fshelp_stat_cookie2 *statc = cookie2;
struct iouser *user;
struct peropen *po;
@@ -65,7 +67,7 @@ _netfs_translator_callback2_fn (void *cookie1, void *cookie2, int flags,
if (err)
return err;
- po = netfs_make_peropen (node, flags, cookie2);
+ po = netfs_make_peropen (node, flags, statc->next);
if (! po)
{
err = errno;