diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2019-09-20 19:12:50 +0200 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2019-09-20 19:12:50 +0200 |
commit | 7bc63588efa1f59e7f8c21721af9557e9e59f44f (patch) | |
tree | c0aa39480d723166c9c4b0843026e373660dbcc5 /src/misc.c | |
parent | cccd5ac6d99fd7fb56f5940ffb0e901e015dacb8 (diff) | |
download | bbs-7bc63588efa1f59e7f8c21721af9557e9e59f44f.tar.gz |
moved telnet, modem to seperate files
Diffstat (limited to 'src/misc.c')
-rw-r--r-- | src/misc.c | 64 |
1 files changed, 64 insertions, 0 deletions
@@ -57,3 +57,67 @@ int try_write(int _fd, char *_buff, int _size, int _retry) } return 0; } + +struct prog_params parse_args(int argc, char* argv[]) +{ + struct prog_params ret; + memset(&ret, 0, sizeof(ret)); + + for (int i = 1; i < argc; i++) + { + int i_cpy = i; //i might be changed in loop + + if(argv[i_cpy][0] == '-') + { + for (int o = 1; o < strlen(argv[i_cpy]); o++) + { + switch (argv[i_cpy][o]) + { + case 'h': + ERROR_HELP(""); + break; + case 'p': + ret.telnet = 1; + ret.port = atoi(argv[i_cpy + 1]); + i++; + break; + case 'i': + ret.telnet = 1; + ret.ip = argv[i_cpy + 1]; + i++; + break; + case 's'://Serial modem + ret.serial = 1; + ret.serial_port = argv[i_cpy + 1]; + i++; + break; + case 'b': + ret.serial = 1; + ret.serial_baudrate = atoi(argv[i_cpy + 1]); + i++; + break; + case 'f'://PID file for spawned children + ret.fork = 1; + ret.pidfile = argv[i_cpy + 1]; + i++; + break; + default: + ERROR_HELP("Unrecognized Option: '%c'\n", argv[i_cpy][o]); + break; + };//switch + }//for + }//if + else + { + //Copy the rest as arguments for prog to exec + ret.run_argc = argc - i_cpy; + ret.run_argv = &(argv[i_cpy]); + break; + }//else + }//for + + if(ret.telnet == ret.serial)//run EITHER in telnet OR modem mode + ERROR_HELP("Select either modem OR telnet.\n"); + + return ret; +} |