[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: [PATCH] readlink: Support --, -n always
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2023-04-16 16:02:17
Message-ID: CAK1hOcPM+BCz0S2K1eZBYqfxx5s_9s3D5iiL=6CE27qZ_0RYMA () mail ! gmail ! com
[Download RAW message or body]
Applied, thank you
On Mon, Apr 10, 2023 at 4:00 PM Eric Blake <eblake@redhat.com> wrote:
>
> Ping
>
> On Fri, Mar 24, 2023 at 09:58:14AM -0500, Eric Blake wrote:
> > POSIX will be standardizing readlink (just the -n option) and realpath
> > (just -E and -e options):
> > https://www.austingroupbugs.net/view.php?id=1457
> >
> > Change things for readlink so that the POSIX-mandated -n and -- work
> > even when disabling the non-standard (and partially non-working) -f
> > when FEATURE_READLINK_FOLLOW is clear.
> >
> > POSIX also wants readlink to be verbose by default (if the argument is
> > not a symlink, readlink must output a diagnostic); I did NOT address
> > that one, because I'm waiting to see what the GNU Coreutils folks do:
> > https://lists.gnu.org/archive/html/bug-coreutils/2023-03/msg00035.html
> >
> > Partial fix for https://bugs.busybox.net/show_bug.cgi?id=15466
> >
> > Signed-off-by: Eric Blake <eblake@redhat.com>
> > ---
> > coreutils/readlink.c | 29 ++++++++++++-----------------
> > 1 file changed, 12 insertions(+), 17 deletions(-)
> >
> > diff --git a/coreutils/readlink.c b/coreutils/readlink.c
> > index b2e867883..0a9aa957e 100644
> > --- a/coreutils/readlink.c
> > +++ b/coreutils/readlink.c
> > @@ -25,12 +25,14 @@
> > //kbuild:lib-$(CONFIG_READLINK) += readlink.o
> >
> > //usage:#define readlink_trivial_usage
> > -//usage: IF_FEATURE_READLINK_FOLLOW("[-fnv] ") "FILE"
> > +//usage: IF_FEATURE_READLINK_FOLLOW("[-fnv] ")
> > +//usage: IF_NOT_FEATURE_READLINK_FOLLOW("[-n] ")
> > +//usage: "FILE"
> > //usage:#define readlink_full_usage "\n\n"
> > -//usage: "Display the value of a symlink"
> > -//usage: IF_FEATURE_READLINK_FOLLOW( "\n"
> > -//usage: "\n -f Canonicalize by following all symlinks"
> > +//usage: "Display the value of a symlink" "\n"
> > //usage: "\n -n Don't add newline"
> > +//usage: IF_FEATURE_READLINK_FOLLOW(
> > +//usage: "\n -f Canonicalize by following all symlinks"
> > //usage: "\n -v Verbose"
> > //usage: )
> >
> > @@ -67,25 +69,18 @@ int readlink_main(int argc UNUSED_PARAM, char **argv)
> > {
> > char *buf;
> > char *fname;
> > + unsigned opt;
> >
> > - IF_FEATURE_READLINK_FOLLOW(
> > - unsigned opt;
> > - /* We need exactly one non-option argument. */
> > - opt = getopt32(argv, "^" "fnvsq" "\0" "=1");
> > - fname = argv[optind];
> > - )
> > - IF_NOT_FEATURE_READLINK_FOLLOW(
> > - const unsigned opt = 0;
> > - if (argc != 2) bb_show_usage();
> > - fname = argv[1];
> > - )
> > + opt = getopt32(argv, "^" "n" IF_FEATURE_READLINK_FOLLOW("fvsq")
> > + "\0" "=1");
> > + fname = argv[optind];
> >
> > /* compat: coreutils readlink reports errors silently via exit code */
> > if (!(opt & 4)) /* not -v */
> > logmode = LOGMODE_NONE;
> >
> > /* NOFORK: only one alloc is allowed; must free */
> > - if (opt & 1) { /* -f */
> > + if (opt & 2) { /* -f */
> > buf = xmalloc_realpath_coreutils(fname);
> > } else {
> > buf = xmalloc_readlink_or_warn(fname);
> > @@ -93,7 +88,7 @@ int readlink_main(int argc UNUSED_PARAM, char **argv)
> >
> > if (!buf)
> > return EXIT_FAILURE;
> > - printf((opt & 2) ? "%s" : "%s\n", buf);
> > + printf((opt & 1) ? "%s" : "%s\n", buf);
> > free(buf);
> >
> > fflush_stdout_and_exit_SUCCESS();
> > --
> > 2.39.2
> >
> > _______________________________________________
> > busybox mailing list
> > busybox@busybox.net
> > http://lists.busybox.net/mailman/listinfo/busybox
> >
>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc. +1-919-301-3266
> Virtualization: qemu.org | libvirt.org
>
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic