libbb: new option FEATURE_ETC_SERVICES: if off, /etc/services reads often avoided

In practice, "wget http://host.com/" always uses port 80.
People explicitly set non-standard ports via options or parameters
("telnet 1.2.3.4 567" or "telnet 1.2.3.4 ftp") instead of modifying
/etc/services.

function                                             old     new   delta
telnet_main                                         1466    1464      -2
rdate_main                                           215     198     -17
fakeidentd_main                                      269     252     -17
parse_url                                            459     392     -67
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-103)           Total: -103 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2018-04-17 12:43:54 +02:00
parent 816d8d7a66
commit 2aeb201c97
6 changed files with 25 additions and 7 deletions

View File

@@ -159,7 +159,7 @@ int fakeidentd_main(int argc UNUSED_PARAM, char **argv)
fd = 0;
if (!(opt & OPT_inetdwait)) {
fd = create_and_bind_stream_or_die(bind_address,
bb_lookup_port("identd", "tcp", 113));
bb_lookup_std_port("identd", "tcp", 113));
xlisten(fd, 5);
}

View File

@@ -643,7 +643,8 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
if (!*argv)
bb_show_usage();
host = *argv++;
port = bb_lookup_port(*argv ? *argv++ : "telnet", "tcp", 23);
port = *argv ? bb_lookup_port(*argv++, "tcp", 23)
: bb_lookup_std_port("telnet", "tcp", 23);
if (*argv) /* extra params?? */
bb_show_usage();

View File

@@ -505,23 +505,23 @@ static void parse_url(const char *src_url, struct host_info *h)
*p = '\0';
h->host = p + 3;
if (strcmp(url, P_FTP) == 0) {
h->port = bb_lookup_port(P_FTP, "tcp", 21);
h->port = bb_lookup_std_port(P_FTP, "tcp", 21);
} else
#if SSL_SUPPORTED
# if ENABLE_FEATURE_WGET_HTTPS
if (strcmp(url, P_FTPS) == 0) {
h->port = bb_lookup_port(P_FTPS, "tcp", 990);
h->port = bb_lookup_std_port(P_FTPS, "tcp", 990);
h->protocol = P_FTPS;
} else
# endif
if (strcmp(url, P_HTTPS) == 0) {
h->port = bb_lookup_port(P_HTTPS, "tcp", 443);
h->port = bb_lookup_std_port(P_HTTPS, "tcp", 443);
h->protocol = P_HTTPS;
} else
#endif
if (strcmp(url, P_HTTP) == 0) {
http:
h->port = bb_lookup_port(P_HTTP, "tcp", 80);
h->port = bb_lookup_std_port(P_HTTP, "tcp", 80);
h->protocol = P_HTTP;
} else {
*p = ':';