diff --git a/nethogs.cpp b/nethogs.cpp index 8071e48..aafb482 100644 --- a/nethogs.cpp +++ b/nethogs.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -268,50 +269,48 @@ int main (int argc, char** argv) //dp_link_type linktype = dp_link_ethernet; int promisc = 0; - for (argv++; *argv; argv++) - { - if (**argv=='-') - { - (*argv)++; - switch(**argv) - { - case 'V': versiondisplay(); - exit(0); - case 'h': help(); - exit(0); - case 'b': bughuntmode = true; - tracemode = true; - break; - case 't': tracemode = true; - break; - case 'p': promisc = 1; - break; - case 'd': if (argv[1]) - { - argv++; - refreshdelay=atoi(*argv); - } - break; - /*case 'f': if (argv[1]) - { - argv++; - if (strcmp (*argv, "ppp") == 0) - linktype = dp_link_ppp; - else if (strcmp (*argv, "eth") == 0) - linktype = dp_link_ethernet; - } - break; - */ - default : help(); - exit(0); - } - } - else - { - devices = new device (strdup(*argv), devices); + int opt; + while ((opt = getopt(argc, argv, "Vhbtpd:")) != -1) { + switch(opt) { + case 'V': + versiondisplay(); + exit(0); + case 'h': + help(); + exit(0); + case 'b': + bughuntmode = true; + tracemode = true; + break; + case 't': + tracemode = true; + break; + case 'p': + promisc = 1; + break; + case 'd': + refreshdelay=atoi(optarg); + break; + /* + case 'f': + argv++; + if (strcmp (optarg, "ppp") == 0) + linktype = dp_link_ppp; + else if (strcmp (optarg, "eth") == 0) + linktype = dp_link_ethernet; + } + break; + */ + default: + help(); + exit(EXIT_FAILURE); } } + while (optind < argc) { + devices = new device (strdup(argv[optind++]), devices); + } + if (devices == NULL) { devices = new device (strdup("eth0"));