diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2017-04-21 09:13:00 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2017-04-21 09:13:00 +0000 |
commit | cb49cb30fe65d4ee317572f232f7017a8c1fe6a2 (patch) | |
tree | e6b55eb3a44ee3e9c4a9c22961f46572725a5c13 /src/skaembutils/s6-ln.c | |
parent | 5ba9d6993063e2398e5763736ba50e0f037abe3e (diff) | |
download | s6-portable-utils-cb49cb30fe65d4ee317572f232f7017a8c1fe6a2.tar.xz |
Add -n to s6-ln; document its nonposixness
Diffstat (limited to 'src/skaembutils/s6-ln.c')
-rw-r--r-- | src/skaembutils/s6-ln.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/skaembutils/s6-ln.c b/src/skaembutils/s6-ln.c index 59b85a4..65a650f 100644 --- a/src/skaembutils/s6-ln.c +++ b/src/skaembutils/s6-ln.c @@ -19,7 +19,7 @@ #include <skalibs/random.h> #include <skalibs/skamisc.h> -#define USAGE "s6-ln [ -s ] [ -f ] [ -L ] [ -P ] src... dest" +#define USAGE "s6-ln [ -n ] [ -s ] [ -f ] [ -L ] [ -P ] src... dest" typedef int linkfunc_t (char const *, char const *) ; typedef linkfunc_t *linkfunc_t_ref ; @@ -78,15 +78,17 @@ int main (int argc, char const *const *argv) { linkfunc_t_ref mylink = &link ; /* default to system behaviour */ ln_t_ref f = &noforce ; + int nodir = 0 ; PROG = "s6-ln" ; { subgetopt_t l = SUBGETOPT_ZERO ; for (;;) { - int opt = subgetopt_r(argc, argv, "sfLP", &l) ; + int opt = subgetopt_r(argc, argv, "nsfLP", &l) ; if (opt == -1) break ; switch (opt) { + case 'n' : nodir = 1 ; break ; case 's': mylink = &symlink ; break ; case 'f': f = &force ; break ; case 'L': if (mylink != &symlink) mylink = &linkderef ; break ; @@ -120,7 +122,7 @@ int main (int argc, char const *const *argv) { struct stat st ; - if (stat(argv[1], &st) < 0) + if (nodir ? lstat(argv[1], &st) : stat(argv[1], &st) < 0) { if (errno != ENOENT) strerr_diefu2sys(111, "stat ", argv[1]) ; (*f)(argv[0], argv[1], mylink) ; |