X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=networking%2Fipcalc.c;h=d8fa5f3f2fa224998ecd76fd2d3609c821002c09;hb=39b0135c59555203a568bd9fb4fc4126dbdde992;hp=909373cbb234b6bc018529e356ff8cc45905b9f2;hpb=1385899416a4396385ad421ae1f532be7103738a;p=oweals%2Fbusybox.git diff --git a/networking/ipcalc.c b/networking/ipcalc.c index 909373cbb..d8fa5f3f2 100644 --- a/networking/ipcalc.c +++ b/networking/ipcalc.c @@ -12,12 +12,11 @@ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ -#include "busybox.h" -#include -#include #include #include +#include "libbb.h" + #define CLASS_A_NETMASK ntohl(0xFF000000) #define CLASS_B_NETMASK ntohl(0xFFFF0000) #define CLASS_C_NETMASK ntohl(0xFFFFFF00) @@ -36,14 +35,14 @@ static unsigned long get_netmask(unsigned long ipaddr) return 0; } -#ifdef CONFIG_FEATURE_IPCALC_FANCY +#if ENABLE_FEATURE_IPCALC_FANCY static int get_prefix(unsigned long netmask) { unsigned long msk = 0x80000000; int ret = 0; netmask = htonl(netmask); - while(msk) { + while (msk) { if (netmask & msk) ret++; msk >>= 1; @@ -63,20 +62,19 @@ int get_prefix(unsigned long netmask); #define SILENT 0x20 #if ENABLE_FEATURE_IPCALC_LONG_OPTIONS - static const struct option long_options[] = { - {"netmask", no_argument, NULL, 'm'}, - {"broadcast", no_argument, NULL, 'b'}, - {"network", no_argument, NULL, 'n'}, -#ifdef CONFIG_FEATURE_IPCALC_FANCY - {"prefix", no_argument, NULL, 'p'}, - {"hostname", no_argument, NULL, 'h'}, - {"silent", no_argument, NULL, 's'}, -#endif - {NULL, 0, NULL, 0} - }; -#else -#define long_options 0 + static const char ipcalc_longopts[] ALIGN1 = + "netmask\0" No_argument "m" + "broadcast\0" No_argument "b" + "network\0" No_argument "n" +# if ENABLE_FEATURE_IPCALC_FANCY + "prefix\0" No_argument "p" + "hostname\0" No_argument "h" + "silent\0" No_argument "s" +# endif + ; #endif + +int ipcalc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int ipcalc_main(int argc, char **argv) { unsigned opt; @@ -85,10 +83,10 @@ int ipcalc_main(int argc, char **argv) struct in_addr a; char *ipstr; - if (ENABLE_FEATURE_IPCALC_LONG_OPTIONS) - applet_long_options = long_options; - - opt = getopt32(argc, argv, "mbn" USE_FEATURE_IPCALC_FANCY("phs")); +#if ENABLE_FEATURE_IPCALC_LONG_OPTIONS + applet_long_options = ipcalc_longopts; +#endif + opt = getopt32(argv, "mbn" USE_FEATURE_IPCALC_FANCY("phs")); argc -= optind; argv += optind; if (opt & (BROADCAST | NETWORK | NETPREFIX)) { @@ -177,15 +175,12 @@ int ipcalc_main(int argc, char **argv) if (opt & HOSTNAME) { struct hostent *hostinfo; - int x; hostinfo = gethostbyaddr((char *) &ipaddr, sizeof(ipaddr), AF_INET); if (!hostinfo) { bb_herror_msg_and_die("cannot find hostname for %s", argv[0]); } - for (x = 0; hostinfo->h_name[x]; x++) { - hostinfo->h_name[x] = tolower(hostinfo->h_name[x]); - } + str_tolower(hostinfo->h_name); printf("HOSTNAME=%s\n", hostinfo->h_name); }