whois: implement -i
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 6 Jul 2016 15:16:27 +0000 (17:16 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 6 Jul 2016 15:16:27 +0000 (17:16 +0200)
function                                             old     new   delta
whois_main                                           654     675     +21
packed_usage                                       30355   30356      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/whois.c

index 5ef83672da7c99e32229b263af00e36b54ae826b..6ba8dfd2009892dc3244065a9f27cfe9b4a8a3db 100644 (file)
 //kbuild:lib-$(CONFIG_WHOIS) += whois.o
 
 //usage:#define whois_trivial_usage
-//usage:       "[-h SERVER] [-p PORT] NAME..."
+//usage:       "[-i] [-h SERVER] [-p PORT] NAME..."
 //usage:#define whois_full_usage "\n\n"
 //usage:       "Query WHOIS info about NAME\n"
+//usage:     "\n       -i      Show redirect results too"
 //usage:     "\n       -h,-p   Server to query"
 
 #include "libbb.h"
 
+enum {
+       OPT_i = (1 << 0),
+};
+
 static char *query(const char *host, int port, const char *domain)
 {
        int fd;
@@ -53,6 +58,7 @@ static char *query(const char *host, int port, const char *domain)
                buf = xrealloc(buf, bufpos + len + 1);
                memcpy(buf + bufpos, linebuf, len);
                bufpos += len;
+               buf[bufpos] = '\0';
 
                if (!redir || !success) {
                        trim(linebuf);
@@ -73,7 +79,7 @@ static char *query(const char *host, int port, const char *domain)
        fclose(fp); /* closes fd too */
        if (!success && !pfx[0]) {
                /*
-                * Looking at jwhois.conf, some whois servers use
+                * Looking at /etc/jwhois.conf, some whois servers use
                 * "domain = DOMAIN", "DOMAIN ID <DOMAIN>"
                 * and "domain=DOMAIN_WITHOUT_LAST_COMPONENT"
                 * formats, but those are rare.
@@ -91,11 +97,9 @@ static char *query(const char *host, int port, const char *domain)
                free(redir);
                redir = NULL;
        }
-       if (!redir) {
+       if (!redir || (option_mask32 & OPT_i)) {
                /* Output saved text */
-               printf("[%s]\n", host);
-               buf[bufpos] = '\0';
-               fputs(buf, stdout);
+               printf("[%s]\n%s", host, buf ? buf : "");
        }
        free(buf);
        return redir;
@@ -164,7 +168,7 @@ int whois_main(int argc UNUSED_PARAM, char **argv)
        const char *host = "whois.iana.org";
 
        opt_complementary = "-1:p+";
-       getopt32(argv, "h:p:", &host, &port);
+       getopt32(argv, "ih:p:", &host, &port);
        argv += optind;
 
        do {