On Thu, May 11, 2017 at 11:11:00AM +0200, Sascha Hauer wrote:
> So far links can only point to files. Implement links to
> directories. With this all kinds of links are supported:
> 
> - relative links
> - absolute links
> - links including ".."
> - link loops (are detected, return -EMLINK)
> 
> Signed-off-by: Sascha Hauer <[email protected]>
> ---
>  commands/readlink.c |   2 +-
>  fs/fs.c             | 272 
> +++++++++++++++++++++++++++++-----------------------
>  include/fs.h        |   3 +-
>  3 files changed, 157 insertions(+), 120 deletions(-)
> 
> diff --git a/commands/readlink.c b/commands/readlink.c
> index 4ac576f16f..a19c8e0041 100644
> --- a/commands/readlink.c
> +++ b/commands/readlink.c

[...]

  
>  int stat(const char *filename, struct stat *s)
>  {
> -     char *f;
> +     char *path = canonicalize_path(filename);
> +     int ret;
>  
> -     f = realfile(filename, s);
> -     if (IS_ERR(f))
> -             return PTR_ERR(f);
> +     if (IS_ERR(path))
> +             return PTR_ERR(path);
>  
> -     free(f);
> -     return 0;
> +     ret = lstat(path, s);
> +
> +     free(path);
> +
> +     return ret;
>  }

The following is missing in this patch, it slipped into a debug
patch I removed from this series:

int lstat(const char *filename, struct stat *s)
{
        char *f = canonicalize_dir(filename);
        int ret;

        if (IS_ERR(f))
                return PTR_ERR(f);

        ret = __lstat(f, s);

        free(f);

        return ret;
}

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to