Svante Signell, le Wed 13 May 2015 09:35:28 +0200, a écrit :
> Q: Why does it work without fakeroot-hurd?
You mean on a bare filesystem?
They use libdiskfs, which implements diskfs_S_file_set_translator, which
calls diskfs_set_translator, which is implemented by filesystems.
And the filesystems which don't use libdiskfs but libnetfs quite often
don't implement netfs_set_translator indeed, and then sockets can't be
made on them, but that's usually not a problem since that's /proc,
/dev/vcs, etc.
> +/* The user may define this function. Attempt to set the passive
> + translator record for FILE to ARGZ (of length ARGZLEN) for user
> + CRED. */
> +error_t
> +netfs_set_translator (struct iouser *cred, struct node *np,
> + char *argz, size_t argzlen)
> +{
> + return file_set_translator (netfs_node_netnode (np)->file,
> + FS_TRANS_EXCL|FS_TRANS_SET,
> + FS_TRANS_EXCL|FS_TRANS_SET, 0,
> + argz, argzlen,
> + MACH_PORT_NULL, MACH_MSG_TYPE_COPY_SEND);
> +}
Mmm, I don't think you want to set the active_flags parameter, see the
comment above: netfs_S_file_set_translator will have already set the
active translator thanks to its fshelp_set_active call, so only the
passive translator should be set here.
Samuel