summaryrefslogtreecommitdiff
path: root/networking/ipcalc.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-07-03 10:28:07 +0000
committerEric Andersen <andersen@codepoet.org>2003-07-03 10:28:07 +0000
commite968ee3f70ac1f5ee269be67ee075595d86f61b8 (patch)
tree079d105b247ab9ed673b70db7a0546c20d5172fd /networking/ipcalc.c
parent8a93179c142a730adff294fbc68112e54de9e6d9 (diff)
downloadbusybox-w32-e968ee3f70ac1f5ee269be67ee075595d86f61b8.tar.gz
busybox-w32-e968ee3f70ac1f5ee269be67ee075595d86f61b8.tar.bz2
busybox-w32-e968ee3f70ac1f5ee269be67ee075595d86f61b8.zip
Patch from Vladimir N. Oleynik (vodz):
Last patch have changed for "ipcalc" applet with usage new get_ulflags() function.
Diffstat (limited to 'networking/ipcalc.c')
-rw-r--r--networking/ipcalc.c49
1 files changed, 14 insertions, 35 deletions
diff --git a/networking/ipcalc.c b/networking/ipcalc.c
index 2c23d17f6..af4eed4a4 100644
--- a/networking/ipcalc.c
+++ b/networking/ipcalc.c
@@ -37,20 +37,18 @@ static unsigned long get_netmask(unsigned long ipaddr)
37#define BROADCAST 0x02 37#define BROADCAST 0x02
38#define NETWORK 0x04 38#define NETWORK 0x04
39#define HOSTNAME 0x08 39#define HOSTNAME 0x08
40#define SILENT 0x80 40#define SILENT 0x10
41 41
42int ipcalc_main(int argc, char **argv) 42int ipcalc_main(int argc, char **argv)
43{ 43{
44 unsigned char mode = 0; 44 unsigned long mode;
45 45
46 unsigned long netmask = 0; 46 unsigned long netmask = 0;
47 unsigned long broadcast = 0; 47 unsigned long broadcast;
48 unsigned long network = 0; 48 unsigned long network;
49 unsigned long ipaddr = 0; 49 unsigned long ipaddr;
50 50
51 int opt = 0; 51 static const struct option long_options[] = {
52
53 struct option long_options[] = {
54 {"netmask", no_argument, NULL, 'n'}, 52 {"netmask", no_argument, NULL, 'n'},
55 {"broadcast", no_argument, NULL, 'b'}, 53 {"broadcast", no_argument, NULL, 'b'},
56 {"network", no_argument, NULL, 'w'}, 54 {"network", no_argument, NULL, 'w'},
@@ -61,31 +59,13 @@ int ipcalc_main(int argc, char **argv)
61 {NULL, 0, NULL, 0} 59 {NULL, 0, NULL, 0}
62 }; 60 };
63 61
64 62 bb_applet_long_options = long_options;
65 while ((opt = getopt_long(argc, argv, 63 mode = bb_getopt_ulflags(argc, argv,
66#ifdef CONFIG_FEATURE_IPCALC_FANCY 64#ifdef CONFIG_FEATURE_IPCALC_FANCY
67 "nbwhs", 65 "nbwhs");
68#else 66#else
69 "nbw", 67 "nbw");
70#endif
71 long_options, NULL)) != EOF) {
72 if (opt == 'n')
73 mode |= NETMASK;
74 else if (opt == 'b')
75 mode |= BROADCAST;
76 else if (opt == 'w')
77 mode |= NETWORK;
78#ifdef CONFIG_FEATURE_IPCALC_FANCY
79 else if (opt == 'h')
80 mode |= HOSTNAME;
81 else if (opt == 's')
82 mode |= SILENT;
83#endif 68#endif
84 else {
85 bb_show_usage();
86 }
87 }
88
89 if (mode & (BROADCAST | NETWORK)) { 69 if (mode & (BROADCAST | NETWORK)) {
90 if (argc - optind > 2) { 70 if (argc - optind > 2) {
91 bb_show_usage(); 71 bb_show_usage();
@@ -99,7 +79,7 @@ int ipcalc_main(int argc, char **argv)
99 ipaddr = inet_addr(argv[optind]); 79 ipaddr = inet_addr(argv[optind]);
100 80
101 if (ipaddr == INADDR_NONE) { 81 if (ipaddr == INADDR_NONE) {
102 IPCALC_MSG(bb_error_msg_and_die("bad IP address: %s\n", argv[optind]), 82 IPCALC_MSG(bb_error_msg_and_die("bad IP address: %s", argv[optind]),
103 exit(EXIT_FAILURE)); 83 exit(EXIT_FAILURE));
104 } 84 }
105 85
@@ -109,7 +89,7 @@ int ipcalc_main(int argc, char **argv)
109 } 89 }
110 90
111 if (ipaddr == INADDR_NONE) { 91 if (ipaddr == INADDR_NONE) {
112 IPCALC_MSG(bb_error_msg_and_die("bad netmask: %s\n", argv[optind + 1]), 92 IPCALC_MSG(bb_error_msg_and_die("bad netmask: %s", argv[optind + 1]),
113 exit(EXIT_FAILURE)); 93 exit(EXIT_FAILURE));
114 } 94 }
115 95
@@ -138,9 +118,8 @@ int ipcalc_main(int argc, char **argv)
138 118
139 hostinfo = gethostbyaddr((char *) &ipaddr, sizeof(ipaddr), AF_INET); 119 hostinfo = gethostbyaddr((char *) &ipaddr, sizeof(ipaddr), AF_INET);
140 if (!hostinfo) { 120 if (!hostinfo) {
141 IPCALC_MSG(bb_error_msg("cannot find hostname for %s", argv[optind]); 121 IPCALC_MSG(bb_herror_msg_and_die(
142 herror(NULL); 122 "cannot find hostname for %s", argv[optind]),);
143 putc('\n', stderr);,);
144 exit(EXIT_FAILURE); 123 exit(EXIT_FAILURE);
145 } 124 }
146 for (x = 0; hostinfo->h_name[x]; x++) { 125 for (x = 0; hostinfo->h_name[x]; x++) {