[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] remap translator: remap prefixes instead of complete file na
From: |
Samuel Thibault |
Subject: |
Re: [PATCH] remap translator: remap prefixes instead of complete file names |
Date: |
Sun, 22 Dec 2019 20:33:41 +0100 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Hello,
Joan Lledó via Bug reports for the GNU Hurd, le ven. 20 déc. 2019 19:59:29
+0100, a ecrit:
> From: Joan Lledó <jlledom@member.fsf.org>
>
> * trans/remap.c:
> * trivfs_S_dir_lookup():
> * Match and replace prefixes instead of complete
> file names. This is needed to remap entire file
> systems, not only trivial ones.
This looks good, applied, thanks!
> ---
> trans/remap.c | 25 +++++++++++++++++--------
> 1 file changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/trans/remap.c b/trans/remap.c
> index 5afbaa02..fcd276d6 100644
> --- a/trans/remap.c
> +++ b/trans/remap.c
> @@ -65,21 +65,30 @@ trivfs_S_dir_lookup (struct trivfs_protid *diruser,
> mach_msg_type_name_t *retry_port_type)
> {
> struct remap *remap;
> + string_t dest = { };
> + size_t prefix_size;
>
> if (!diruser)
> return EOPNOTSUPP;
>
> for (remap = remaps; remap; remap = remap->next)
> - /* FIXME: should match just prefix of filename too */
> - if (!strcmp (remap->from, filename))
> - {
> + {
> + prefix_size = strlen (remap->from);
> + if (!strncmp (remap->from, filename, prefix_size)
> + && (filename[prefix_size] == '\0' || filename[prefix_size] == '/'))
> + {
> + snprintf (dest, sizeof (dest), "%s%s", remap->to,
> + filename + prefix_size);
> +
> #ifdef DEBUG
> - fprintf (stderr,"replacing %s with %s\n", remap->from, remap->to);
> - fflush (stderr);
> + fprintf (stderr, "replacing %s with %s\n", filename, dest);
> + fflush (stderr);
> #endif
> - filename = remap->to;
> - break;
> - }
> +
> + filename = dest;
> + break;
> + }
> + }
>
> *do_retry = FS_RETRY_REAUTH;
> *retry_port = getcrdir ();
> --
> 2.20.1
>
>
--
Samuel
<y> muhahaha...
<y> ya un train qui part de Perrache à 14h57
<y> qui passe à Part-Dieu à 15h10
<y> si je le prends à Perrache, je suis en zone bleue
<y> si je le prends à Part-Dieu, je suis en zone blanche
<y> donc je vais le prendre à Perrache *mais* à Part-Dieu ;-)
-+- #ens-mim - vive la SNCF -+-