[PATCH libXfont] support relative paths in catalogue:<dir> symlinks

Kristian Høgsberg krh at bitplanet.net
Mon Jul 30 11:36:48 PDT 2007


Thanks, applied.

On 7/10/07, Ademar de Souza Reis Jr <ademar at mandriva.com.br> wrote:
> Relative symlinks are common inside the catalogue directory and
> should be supported as well.
>
>   - Ademar
>
> ---
>  src/fontfile/catalogue.c |   12 ++++++++++++
>  1 files changed, 12 insertions(+), 0 deletions(-)
>
> diff --git a/src/fontfile/catalogue.c b/src/fontfile/catalogue.c
> index 812b050..2dc3d09 100644
> --- a/src/fontfile/catalogue.c
> +++ b/src/fontfile/catalogue.c
> @@ -136,6 +136,7 @@ CatalogueRescan (FontPathElementPtr fpe)
>      DIR                        *dir;
>      struct dirent      *entry;
>      int                        len;
> +    int                        pathlen;
>
>      path = fpe->name + strlen(CataloguePrefix);
>      if (stat(path, &statbuf) < 0 || !S_ISDIR(statbuf.st_mode))
> @@ -159,6 +160,17 @@ CatalogueRescan (FontPathElementPtr fpe)
>         if (len < 0)
>             continue;
>
> +       dest[len] = '\0';
> +
> +       if (dest[0] != '/')
> +       {
> +           pathlen = strlen(path);
> +           memmove(dest + pathlen + 1, dest, sizeof dest - pathlen - 1);
> +           memcpy(dest, path, pathlen);
> +           memcpy(dest + pathlen, "/", 1);
> +           len += pathlen + 1;
> +       }
> +
>         attrib = strchr(link, ':');
>         if (attrib && len + strlen(attrib) < sizeof dest)
>         {
> --
> 1.5.2.2
>
>



More information about the xorg mailing list