whois: implement -i

function                                             old     new   delta
whois_main                                           654     675     +21
packed_usage                                       30355   30356      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2016-07-06 17:16:27 +02:00
parent 1035c92e2d
commit 0844b5afe2

View File

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