Hi
I have a pogram that reads the network address and netmask from the command line! But when i run the program. it fails! It calls the usage() function! But, when i use gdb to trace over the code, it runs properly except that it gives the whole line after "-i" as an argument....Here is the code
When i run the programCode:int main(int argc,char *argv[]) { // Use default values? // All the defaults are defined in "program.h" int useDefaults=0; if (argc > 3) usage(argv[0],0); else if (argc==1) useDefaults=1; // Variables int n_opt; int i_flag=0; int n_flag=0; int p_flag=0; string netaddr(getNetworkAddress(getLocalIP(),DEFNETMASK)); string netmask(DEFNETMASK); string portRange(DEFMINPORT "-" DEFMAXPORT); string s_option("hi:n:p:v"); const option l_option[]={ { "help", 0, NULL, 'h'}, { "ip", 1, NULL, 'i'}, { "nm", 1, NULL, 'n'}, { "port", 1, NULL, 'p'}, { "version", 0, NULL, 'v'}, }; // Now, looking for the supplied arguments and options if (!useDefaults ) { do { n_opt=getopt_long(argc,argv,s_option.c_str(),l_option,NULL); switch(n_opt){ case 'h': usage(argv[0],0); break; case 'i': netaddr=optarg; i_flag=1; break; case 'n': netmask=optarg; n_flag=1; break; case 'p': portRange=optarg; p_flag=1; break; case 'v': cout << " " << argv[0] << " version " << VERSION_INFO << "." << endl; cout << " Written by fnoyan." << endl; exit(0); case -1: break; default: usage(argv[0],1); } // switch } while (n_opt!=-1); } // if (!useDefaults) else { cout << " No extra options are given! The default values will be used..." << endl; cout << " \"program -h\" for a short list of available options." << endl; } cout << " program will use the values below..." << endl; cout << " Network IPv4 Address : " << netaddr << endl; cout << " Netmask for the Network : " << netmask << endl; cout << " Ports that will be scanned : " << portRange << endl; // Main try block try { // just trying the Socket class.... Socket s; s.connect("127.0.0.1",22); } catch (SocketException e) { cout << e.description() << endl; exit(1); } // End of Main try block return 0; }
i fails and calls usage() funstion. The interesting thing here is that, i cannot get the sane result inside GDB! While running the code with GDB, (r "-i 82.122.156.32 -n 255.255.0.0"), it just gets the "82.122.156.32 -n 255.255.0.0" part as the argument of "-i".Code:$ program -i 82.122.156.32 -n 255.255.0.0
Thanks in advice....



LinkBack URL
About LinkBacks


