From 81bb8422a534456d9afe0aa61bb09c94c62f9398 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Thu, 10 Jul 2014 21:00:02 +0000 Subject: [PATCH] ln: allow with one argument Signed-off-by: Hiltjo Posthuma --- ln.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/ln.c b/ln.c index 029bce5..ef0ff79 100644 --- a/ln.c +++ b/ln.c @@ -4,19 +4,20 @@ #include #include #include +#include #include "util.h" static void usage(void) { - eprintf("usage: %s [-fs] target linkname\n", argv0); + eprintf("usage: %s [-fs] target [linkname]\n", argv0); } int main(int argc, char *argv[]) { int (*flink)(const char *, const char *); - char *fname; + char *fname, *to; bool sflag = false; bool fflag = false; @@ -31,12 +32,24 @@ main(int argc, char *argv[]) usage(); } ARGEND; - flink = sflag ? symlink : link; - fname = sflag ? "symlink" : "link"; + if(sflag) { + flink = symlink; + fname = "symlink"; + } else { + flink = link; + fname = "link"; + } + + if(argc < 2) { + if((to = strrchr(argv[0], '/'))) + to++; + } else { + to = argv[1]; + } if (fflag == true) remove(argv[1]); - if (flink(argv[0], argv[1]) < 0) + if (flink(argv[0], to) < 0) eprintf("%s:", fname); return EXIT_SUCCESS;