sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit 353ac69a93322a8c97db2dad3dee47447de77032
parent 0cc3beb739fba5c4b27ff28e8886055ee375000d
Author: sin <sin@2f30.org>
Date:   Fri Oct 17 16:03:41 +0100

Fix a completely broken ln(1)

Diffstat:
ln.c | 19+++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/ln.c b/ln.c @@ -1,10 +1,11 @@ /* See LICENSE file for copyright and license details. */ #include <errno.h> +#include <libgen.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> +#include <unistd.h> #include "util.h" static void @@ -32,7 +33,10 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if(sflag) { + if (argc == 0 || argc > 2) + usage(); + + if (sflag) { flink = symlink; fname = "symlink"; } else { @@ -40,17 +44,12 @@ main(int argc, char *argv[]) fname = "link"; } - if(argc < 2) { - if((to = strrchr(argv[0], '/'))) - to++; - } else { - to = argv[1]; - } + to = argc < 2 ? basename(argv[0]) : argv[1]; if (fflag == true) - remove(argv[1]); + remove(to); if (flink(argv[0], to) < 0) - eprintf("%s:", fname); + eprintf("%s %s <- %s:", fname, argv[0], to); return 0; }