ether-wake: save a few more bytes of code

This commit is contained in:
Denis Vlasenko 2007-04-16 23:23:33 +00:00
parent 198714c0dd
commit 517d1aac7f

View File

@ -182,11 +182,10 @@ int ether_wake_main(int argc, char **argv);
int ether_wake_main(int argc, char **argv) int ether_wake_main(int argc, char **argv)
{ {
const char *ifname = "eth0"; const char *ifname = "eth0";
char *pass = NULL; char *pass;
unsigned flags; unsigned flags;
unsigned char wol_passwd[6]; unsigned char wol_passwd[6];
int wol_passwd_sz = 0; int wol_passwd_sz = 0;
int s; /* Raw socket */ int s; /* Raw socket */
int pktsize; int pktsize;
unsigned char outpack[1000]; unsigned char outpack[1000];
@ -195,23 +194,23 @@ int ether_wake_main(int argc, char **argv)
struct whereto_t whereto; /* who to wake up */ struct whereto_t whereto; /* who to wake up */
/* handle misc user options */ /* handle misc user options */
opt_complementary = "=1";
flags = getopt32(argc, argv, "bi:p:", &ifname, &pass); flags = getopt32(argc, argv, "bi:p:", &ifname, &pass);
if (optind == argc) if (flags & 4) /* -p */
bb_show_usage();
if (pass)
wol_passwd_sz = get_wol_pw(pass, wol_passwd); wol_passwd_sz = get_wol_pw(pass, wol_passwd);
flags &= 1; /* we further interested only in -b [bcast] flag */
/* create the raw socket */ /* create the raw socket */
s = make_socket(); s = make_socket();
/* now that we have a raw socket we can drop root */ /* now that we have a raw socket we can drop root */
xsetuid(getuid()); /* xsetuid(getuid()); - but save on code size... */
/* look up the dest mac address */ /* look up the dest mac address */
get_dest_addr(argv[optind], &eaddr); get_dest_addr(argv[optind], &eaddr);
/* fill out the header of the packet */ /* fill out the header of the packet */
pktsize = get_fill(outpack, &eaddr, flags & 1 /* OPT_BROADCAST */); pktsize = get_fill(outpack, &eaddr, flags /* & 1 OPT_BROADCAST */);
bb_debug_dump_packet(outpack, pktsize); bb_debug_dump_packet(outpack, pktsize);
@ -249,7 +248,7 @@ int ether_wake_main(int argc, char **argv)
bb_debug_dump_packet(outpack, pktsize); bb_debug_dump_packet(outpack, pktsize);
/* This is necessary for broadcasts to work */ /* This is necessary for broadcasts to work */
if (flags & 1 /* OPT_BROADCAST */) { if (flags /* & 1 OPT_BROADCAST */) {
if (setsockopt_broadcast(s) != 0) if (setsockopt_broadcast(s) != 0)
bb_perror_msg("SO_BROADCAST"); bb_perror_msg("SO_BROADCAST");
} }