int main(int argc, char *argv[])
{
int c, ret = 0;
- const char *read_file = NULL;
+ const unsigned int MAX_READ_FILE = 20;
+ const char *read_file[MAX_READ_FILE];
+ unsigned int rf, num_read_file = 0;
const char *read_wired_file = NULL;
const char *ifname = NULL;
const char *ifname_wired = NULL;
wpa_debug_level++;
break;
case 'r':
- read_file = optarg;
+ if (num_read_file == MAX_READ_FILE) {
+ wpa_printf(MSG_INFO,
+ "Too many read files (-r) - ignored %s",
+ optarg);
+ break;
+ }
+ read_file[num_read_file++] = optarg;
break;
case 'R':
read_wired_file = optarg;
}
if (ifname == NULL && ifname_wired == NULL &&
- read_file == NULL && read_wired_file == NULL) {
+ num_read_file == 0 && read_wired_file == NULL) {
usage();
ret = 0;
goto deinit;
if ((wt.write_file && write_pcap_init(&wt, wt.write_file) < 0) ||
(wt.pcapng_file && write_pcapng_init(&wt, wt.pcapng_file) < 0) ||
(read_wired_file &&
- read_wired_cap_file(&wt, read_wired_file) < 0) ||
- (read_file && read_cap_file(&wt, read_file) < 0) ||
- (ifname && monitor_init(&wt, ifname) < 0) ||
+ read_wired_cap_file(&wt, read_wired_file) < 0))
+ {
+ ret = -1;
+ goto deinit;
+ }
+
+ for (rf = 0; rf < num_read_file; rf++) {
+ if (read_cap_file(&wt, read_file[rf]) < 0) {
+ ret = -1;
+ goto deinit;
+ }
+ }
+
+ if ((ifname && monitor_init(&wt, ifname) < 0) ||
(ifname_wired && monitor_init_wired(&wt, ifname_wired) < 0) ||
(ctrl_iface && ctrl_init(&wt) < 0)) {
ret = -1;