summaryrefslogtreecommitdiff
path: root/cpp/src/Yellow/Admin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Yellow/Admin.cpp')
-rw-r--r--cpp/src/Yellow/Admin.cpp256
1 files changed, 0 insertions, 256 deletions
diff --git a/cpp/src/Yellow/Admin.cpp b/cpp/src/Yellow/Admin.cpp
deleted file mode 100644
index 49839706b8f..00000000000
--- a/cpp/src/Yellow/Admin.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2002
-// ZeroC, Inc.
-// Billerica, MA, USA
-//
-// All Rights Reserved.
-//
-// Ice is free software; you can redistribute it and/or modify it under
-// the terms of the GNU General Public License version 2 as published by
-// the Free Software Foundation.
-//
-// **********************************************************************
-
-#include <Ice/Application.h>
-#include <Yellow/Parser.h>
-#include <fstream>
-
-using namespace std;
-using namespace Ice;
-using namespace Yellow;
-
-class Client : public Application
-{
-public:
-
- void usage();
- virtual int run(int, char*[]);
-};
-
-int
-main(int argc, char* argv[])
-{
- Client app;
- return app.main(argc, argv);
-}
-
-void
-Client::usage()
-{
- cerr << "Usage: " << appName() << " [options] [file...]\n";
- cerr <<
- "Options:\n"
- "-h, --help Show this message.\n"
- "-v, --version Display the Ice version.\n"
- "-DNAME Define NAME as 1.\n"
- "-DNAME=DEF Define NAME as DEF.\n"
- "-UNAME Remove any definition for NAME.\n"
- "-IDIR Put DIR in the include file search path.\n"
- "-e COMMANDS Execute COMMANDS.\n"
- "-d, --debug Print debug messages.\n"
- "-s, --service name the service name (defaults to Yellow).\n"
- ;
-}
-
-int
-Client::run(int argc, char* argv[])
-{
- string cpp("cpp");
- string commands;
- bool debug = false;
- string service("Yellow");
-
- PropertiesPtr properties = communicator()->getProperties();
-
- StringSeq args = argsToStringSeq(argc, argv);
- args = properties->parseCommandLineOptions("Yellow", args);
- stringSeqToArgs(args, argc, argv);
-
- int idx = 1;
- while(idx < argc)
- {
- if(strncmp(argv[idx], "-I", 2) == 0)
- {
- cpp += ' ';
- cpp += argv[idx];
-
- for(int i = idx ; i + 1 < argc ; ++i)
- {
- argv[i] = argv[i + 1];
- }
- --argc;
- }
- else if(strncmp(argv[idx], "-D", 2) == 0 || strncmp(argv[idx], "-U", 2) == 0)
- {
- cpp += ' ';
- cpp += argv[idx];
-
- for(int i = idx ; i + 1 < argc ; ++i)
- {
- argv[i] = argv[i + 1];
- }
- --argc;
- }
- else 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 << appName() << ": 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(strcmp(argv[idx], "-s") == 0 || strcmp(argv[idx], "--service") == 0)
- {
- if(idx + 1 >= argc)
- {
- cerr << appName() << ": argument expected for`" << argv[idx] << "'" << endl;
- usage();
- return EXIT_FAILURE;
- }
-
- service = argv[idx + 1];
-
- for(int i = idx ; i + 2 < argc ; ++i)
- {
- argv[i] = argv[i + 2];
- }
- argc -= 2;
- }
- else if(argv[idx][0] == '-')
- {
- cerr << appName() << ": unknown option `" << argv[idx] << "'" << endl;
- usage();
- return EXIT_FAILURE;
- }
- else
- {
- ++idx;
- }
- }
-
- if(argc >= 2 && !commands.empty())
- {
- cerr << appName() << ": `-e' option cannot be used if input files are given" << endl;
- usage();
- return EXIT_FAILURE;
- }
-
- string queryProxy = communicator()->getProperties()->getProperty(service + ".Query");
- string adminProxy = communicator()->getProperties()->getProperty(service + ".Admin");
-
- if(queryProxy.empty())
- {
- queryProxy = "Yellow/Query@YellowQueryAdapter";
- }
- if(adminProxy.empty())
- {
- adminProxy = "Yellow/Admin@YellowAdminAdapter";
- }
-
- AdminPrx admin = AdminPrx::checkedCast(communicator()->stringToProxy(adminProxy));
- if(!admin)
- {
- cerr << appName() << ": `" << "' are not valid administrative endpoints" << endl;
- return EXIT_FAILURE;
- }
-
- QueryPrx query = QueryPrx::checkedCast(communicator()->stringToProxy(queryProxy));
- if(!query)
- {
- cerr << appName() << ": `" << "' are not valid query endpoints" << endl;
- return EXIT_FAILURE;
- }
-
- ParserPtr parser = Parser::createParser(communicator(), admin, query);
- 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)
- {
- ifstream test(argv[idx]);
- if(!test)
- {
- cerr << appName() << ": can't open `" << argv[idx] << "' for reading: " << strerror(errno) << endl;
- return EXIT_FAILURE;
- }
- test.close();
-
- string cmd = cpp + " " + argv[idx];
-#ifdef _WIN32
- FILE* cppHandle = _popen(cmd.c_str(), "r");
-#else
- FILE* cppHandle = popen(cmd.c_str(), "r");
-#endif
- if(cppHandle == NULL)
- {
- cerr << appName() << ": can't run C++ preprocessor: " << strerror(errno) << endl;
- return EXIT_FAILURE;
- }
-
- int parseStatus = parser->parse(cppHandle, debug);
-
-#ifdef _WIN32
- _pclose(cppHandle);
-#else
- pclose(cppHandle);
-#endif
-
- if(parseStatus == EXIT_FAILURE)
- {
- status = EXIT_FAILURE;
- }
- }
- }
-
- return status;
-}