diff options
Diffstat (limited to 'cpp/demo/Freeze/phonebook/Client.cpp')
-rw-r--r-- | cpp/demo/Freeze/phonebook/Client.cpp | 140 |
1 files changed, 2 insertions, 138 deletions
diff --git a/cpp/demo/Freeze/phonebook/Client.cpp b/cpp/demo/Freeze/phonebook/Client.cpp index ba16356e766..b46fa0b7367 100644 --- a/cpp/demo/Freeze/phonebook/Client.cpp +++ b/cpp/demo/Freeze/phonebook/Client.cpp @@ -16,150 +16,14 @@ using namespace Ice; class PhoneBookClient : public Application { - void usage(); int run(int argc, char* argv[]); }; -void -PhoneBookClient::usage() -{ - cerr << "Usage: " << appName() << " [options] [file...]\n"; - cerr << - "Options:\n" - "-h, --help Show this message.\n" - "-v, --version Display the Ice version.\n" - "-e COMMANDS Execute COMMANDS.\n" - "-d, --debug Print debug messages.\n" - ; -} - int PhoneBookClient::run(int argc, char* argv[]) { - string commands; - bool debug = false; - - int idx = 1; - while (idx < argc) - { - if (strcmp(argv[idx], "-h") == 0 || strcmp(argv[idx], "--help") == 0) - { - usage(); - return EXIT_SUCCESS; - } - else if (strcmp(argv[idx], "-v") == 0 || strcmp(argv[idx], "--version") == 0) - { - cout << ICE_STRING_VERSION << endl; - return EXIT_SUCCESS; - } - else if (strcmp(argv[idx], "-e") == 0) - { - if (idx + 1 >= argc) - { - cerr << argv[0] << ": argument expected for`" << argv[idx] << "'" << endl; - usage(); - return EXIT_FAILURE; - } - - commands += argv[idx + 1]; - commands += ';'; - - for (int i = idx ; i + 2 < argc ; ++i) - { - argv[i] = argv[i + 2]; - } - argc -= 2; - } - else if (strcmp(argv[idx], "-d") == 0 || strcmp(argv[idx], "--debug") == 0) - { - debug = true; - for (int i = idx ; i + 1 < argc ; ++i) - { - argv[i] = argv[i + 1]; - } - --argc; - } - else if (argv[idx][0] == '-') - { - cerr << argv[0] << ": unknown option `" << argv[idx] << "'" << endl; - usage(); - return EXIT_FAILURE; - } - else - { - ++idx; - } - } - - if (argc >= 2 && !commands.empty()) - { - cerr << argv[0] << ": `-e' option cannot be used if input files are given" << endl; - usage(); - return EXIT_FAILURE; - } - - PropertiesPtr properties = communicator()->getProperties(); - const char* refProperty = "PhoneBook.PhoneBook"; - string ref = properties->getProperty(refProperty); - if (ref.empty()) - { - cerr << argv[0] << ": property `" << refProperty << "' not set" << endl; - return EXIT_FAILURE; - } - - ObjectPrx base = communicator()->stringToProxy(ref); - PhoneBookPrx phoneBook = PhoneBookPrx::checkedCast(base); - if (!phoneBook) - { - cerr << argv[0] << ": invalid object reference" << endl; - return EXIT_FAILURE; - } - - ParserPtr parser = Parser::createParser(communicator(), phoneBook); - int status = EXIT_SUCCESS; - - if (argc < 2) // No files given - { - if (!commands.empty()) // Commands were given - { - int parseStatus = parser->parse(commands, debug); - if (parseStatus == EXIT_FAILURE) - { - status = EXIT_FAILURE; - } - } - else // No commands, let's use standard input - { - int parseStatus = parser->parse(stdin, debug); - if (parseStatus == EXIT_FAILURE) - { - status = EXIT_FAILURE; - } - } - } - else // Process files given on the command line - { - for (idx = 1 ; idx < argc ; ++idx) - { - FILE* file = fopen(argv[idx], "r"); - if (file == NULL) - { - cerr << argv[0] << ": can't open file `" << argv[idx] << "': " << strerror(errno) << endl; - return EXIT_FAILURE; - } - - int parseStatus = parser->parse(file, debug); - - fclose(file); - - if (parseStatus == EXIT_FAILURE) - { - status = EXIT_FAILURE; - } - } - } - - return status; + int runParser(int, char*[], const CommunicatorPtr&); + return runParser(argc, argv, communicator()); } int |