[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tyndur-devel] [PATCH] Shell: readlink() und symlink() benutzen



On Sun, May 30, 2010 at 02:03:20PM +0200, Antoine Kaufmann wrote:
> * Shell: readlink() und symlink() benutzen, statt selbst mit fopen()
>          rumzufrickeln.
> 
> Signed-off-by: Antoine Kaufmann <toni@xxxxxxxxxx>
> ---
>  src/modules/c/shell/cmds/readlink.c |    8 ++------
>  src/modules/c/shell/cmds/symlink.c  |    8 +-------
>  2 files changed, 3 insertions(+), 13 deletions(-)
> 
> diff --git a/src/modules/c/shell/cmds/readlink.c b/src/modules/c/shell/cmds/readlink.c
> index 2c31bd3..e0015ab 100644
> --- a/src/modules/c/shell/cmds/readlink.c
> +++ b/src/modules/c/shell/cmds/readlink.c
> @@ -49,22 +49,18 @@ void readlink_display_usage(void);
>  #endif
>  {
>      char buffer[4096];
> -    size_t len;
> +    ssize_t len;
>  
>      if (argc != 2) {
>          readlink_display_usage();
>          return -1;
>      }
>  
> -    FILE* file = fopen(argv[1], "lr");
> -    if (file == NULL) {
> +    if ((len = readlink(argv[1], buffer, sizeof(buffer) - 1)) < 0) {
>          puts("Fehler: Symlink konnte nicht gelesen werden.");
>          return -1;
>      }
> -
> -    len = fread(buffer, 1, 4095, file);
>      buffer[len] = 0;
> -    fclose(file);
>  
>      puts(buffer);
>  
> diff --git a/src/modules/c/shell/cmds/symlink.c b/src/modules/c/shell/cmds/symlink.c
> index c1dcc43..1379f2b 100644
> --- a/src/modules/c/shell/cmds/symlink.c
> +++ b/src/modules/c/shell/cmds/symlink.c
> @@ -54,16 +54,10 @@ void symlink_display_usage(void);
>          return -1;
>      }
>  
> -    FILE* file = fopen(argv[1], "lw");
> -    
> -    if (file == NULL) {
> +    if (symlink(argv[2], argv[1])) {

Ist das wirklich gleichbedeutend? Bei einem schon existierenden Symlink
würde ich von der fopen-Variante erwarten, dass sie das Ziel ändert,
während symlink mit EEXIST scheitern muss.