int main(int argc, char **argv) { Options options(argc, argv, "sA: dA:"); int option; if (argc < 2) { usage(argv[0]); return 1; } while ((option = options.getOption()) != -1) { if (!options) { print_error(argv[0], options.error()); return 1; } switch (option) { case SOURCE_ADDRESS: sourceAddressRange = cidrToRange(options.getArgument()); break; case DESTINATION_ADDRESS: destinationAddressRange = cidrToRange(options.getArgument()); break; } } if (options.getIndex() == argc) { usage(argv[0]); return 1; } FlatFileReader<FlowStats> reader; FlowStats flowStats; for (int fileNumber = options.getIndex(); fileNumber < argc; ++fileNumber) { if (access(argv[fileNumber], R_OK) != 0) { print_error(argv[0], argv[fileNumber], strerror(errno)); if (fileNumber < (argc - 1)) { cout << endl; } } else { if (reader.open(argv[fileNumber]) != E_SUCCESS) { cerr << "Error opening file: " << argv[fileNumber] << endl; return 1; } while (reader.read(flowStats) == E_SUCCESS) { printFlow(flowStats); } if (reader.close() != E_SUCCESS) { cerr << "Error closing reader!" << endl; return 1; } } } return 0; }
int main(int argc, char *argv[]) { Options options(argc, argv, "cA: sA:"); int option; vector <string> files; bool error = false; if (argc < 2) { usage(argv[0]); return 1; } while ((option = options.getOption()) != -1) { if (!options) { cerr << argv[0] << ": " << options.error() << endl; return 1; } switch (option) { case CLIENT_ADDRESS: clientAddressRanges.push_back(cidrToRange(options.getArgument())); break; case SERVER_ADDRESS: serverAddressRanges.push_back(cidrToRange(options.getArgument())); break; } } if (options.getIndex() == argc) { usage(argv[0]); return 1; } for (int file = options.getIndex(); file < argc; ++file) { if (access(argv[file], R_OK) != 0) { cerr << argv[0] << ": " << argv[file] << ": " << strerror(errno) << endl; error = true; } else { files.push_back(argv[file]); } } if (files.empty()) { return 1; } if (error) { cout << endl; } FlatFileReader<HTTPResponse> reader; HTTPResponse http; ErrorStatus errorStatus; for (vector<string>::iterator file(files.begin()); file != files.end(); ++file) { if (reader.open(*file) != E_SUCCESS) { cerr << "Unable to open '" << *file << "'" << endl; return 1; } while ((errorStatus = reader.read(http)) == E_SUCCESS) { printHTTPResponseRecord(http); } if (errorStatus != E_EOF) { cerr << "Error reading from '" << *file << "'" << endl; return 1; } if (reader.close() != E_SUCCESS) { cerr << "Error closing '" << *file << "'" << endl; return 1; } } return 0; }