From 353ac69a93322a8c97db2dad3dee47447de77032 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 17 Oct 2014 16:03:41 +0100 Subject: [PATCH] Fix a completely broken ln(1) --- ln.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/ln.c b/ln.c index 8869823..494a4a5 100644 --- a/ln.c +++ b/ln.c @@ -1,10 +1,11 @@ /* See LICENSE file for copyright and license details. */ #include +#include #include #include #include -#include #include +#include #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; }