summaryrefslogtreecommitdiffstats
path: root/vmchooser/main.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vmchooser/main.cxx')
-rw-r--r--vmchooser/main.cxx233
1 files changed, 0 insertions, 233 deletions
diff --git a/vmchooser/main.cxx b/vmchooser/main.cxx
deleted file mode 100644
index cdcd6e1..0000000
--- a/vmchooser/main.cxx
+++ /dev/null
@@ -1,233 +0,0 @@
-
-#include <fltk/run.h>
-
-#include <iostream>
-#include <stdlib.h>
-#include "inc/SWindow.h"
-#include "inc/DataEntry.h"
-#include "inc/functions.h"
-#include "inc/anyoption.h"
-#include "inc/paths.h"
-
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include <libxml/xpath.h>
-
-#include <boost/filesystem.hpp>
-
-namespace bfs=boost::filesystem;
-
-using namespace std;
-using namespace fltk;
-
-// defined in readXmlDir.h
-extern DataEntry* get_entry(xmlDoc * doc);
-
-SWindow* mainwin;
-/**
- * MAIN
- *
- * ----------------------
- *
- * main function of vmchooser
- *
- *
- *
- */
-int main(int argc, char** argv) {
- string version = "0.0.13";
- AnyOption* opt = new AnyOption();
- char* xmlpath = NULL;
- char* lsesspath = NULL;
- char* dsession = NULL;
- int width=0, height=0;
-
- //opt->setVerbose();
- opt->autoUsagePrint(false);
-
- opt->addUsage("");
- opt->addUsage("SessionChooser Usage: vmchooser [OPTS|image.xml]");
- opt->addUsage("\t{-d |--default=} name of session to select (part of)");
- opt->addUsage("\t{-p |--path=} path to vmware (.xml) files");
- opt->addUsage("\t{-l |--lpath=} path to linux session (.desktop) files");
- opt->addUsage("\t{-s |--size=} [widthxheight]");
- opt->addUsage("\t{-v |--version} print out version");
- opt->addUsage("\t{-h |--help} prints help");
- opt->addUsage("");
- opt->addUsage("Run with xml-file as additional argument to start image at once.");
-
- opt->setFlag("help",'h');
- opt->setFlag("version",'v');
- opt->setOption("default", 'd');
- opt->setOption("path", 'p');
- opt->setOption("lpath", 'l');
- opt->setOption("size",'s');
-
- opt->processCommandArgs(argc, argv);
-
- /** HELP */
- if(opt->getFlag("help") || opt->getFlag('h')) {
- opt->printUsage();
- return 0;
- }
-
- /**
- * XML - PATH
- *
- * 1. read from stage3.conf
- * 2. option -p
- * 3. option --path
- * 4. default value "/var/lib/virt/vmware/"
- *
- **/
-
- ifstream ifs (
- string(VMCHOOSER_ETC_BASE_PATH).append("vmchooser.conf").c_str(),
- ifstream::in
- );
- if(ifs) {
- int n = 255;
- char buf[n];
- string s = "";
- while(!ifs.eof()) {
- ifs.getline(buf, n);
- s = buf;
- if(s.substr(0,17) == "vmchooser_xmlpath") {
- xmlpath = (char*)strdup(s.substr(19,s.length()-20).append("/").c_str());
- }
- }
-
- }
-
- if(opt->getValue('d')!=NULL) {
- dsession = opt->getValue('d');
- }
-
- if(opt->getValue("default")!= NULL) {
- dsession = opt->getValue("default");
- }
-
- if(opt->getValue('p')!=NULL) {
- xmlpath = opt->getValue('p');
- }
-
- if(opt->getValue("path")!= NULL) {
- xmlpath = opt->getValue("path");
- }
-
- if (xmlpath == NULL) {
- // Default Path comes here
- xmlpath = (char *) VMCHOOSER_VMPATH;
- }
-
- /* VERSION */
- if(opt->getFlag('v') || opt->getFlag("version")) {
- // just print out version information - helps testing
- cout << "virtual machine chooser " << version << endl;
- delete opt;
- return 0;
-
- }
-
- /** LINUX SESSION PATH */
- if(opt->getValue('l')!=NULL) {
- lsesspath = opt->getValue('l');
- }
- if(opt->getValue("lpath")!= NULL) {
- lsesspath = opt->getValue("lpath");
- }
- if (lsesspath == NULL) {
- lsesspath = (char *) "/usr/share/xsessions/";
- }
-
- /** Size of Window */
- string size;
- unsigned int i;
-
- if(opt->getValue('s')!=NULL) {
- size = opt->getValue('s');
- }
- if(opt->getValue("size")!= NULL) {
- size = opt->getValue("size");
- }
-
- if (size.empty()) {
- width = 500;
- height = 550;
- }
- else {
- i = size.find_first_of("x");
- if( i == string::npos) {
- cerr << "Please write <width>x<height> as argument for -s|--size." << endl;
- return 1;
- }
- height = atoi(size.substr(i+1).c_str());
- width = atoi(size.substr(0, size.size()-i).c_str());
- }
-
-
- // additional xml argument -> start image directly
- if(opt->getArgc() > 0) {
- string single_arg = opt->getArgv(0);
- if(bfs::is_directory(single_arg)) {
- fprintf(stderr, "Only argument is a folder, should be a valid xml file!\n");
- return 1;
- }
- // read xml image
- xmlDoc* doc = xmlReadFile(single_arg.c_str(), NULL, XML_PARSE_RECOVER);
- if (doc == NULL) {
- fprintf(stderr, "Error: could not parse file %s\n", single_arg.c_str());
- return 1;
- }
-
- DataEntry* result = get_entry(doc);
- if(result) {
- runImage(*result, single_arg );
- }
- else {
- fprintf(stderr, "Error: can not start image from xml\n\tcheck your <active> setting!\n");
- return 1;
- }
- }
-
- delete opt;
-
-
- /* read xml files */
- DataEntry** sessions = NULL;
- DataEntry** lsessions = NULL;
- sessions = readXmlDir(xmlpath);
- lsessions = readLinSess(lsesspath);
-
- SWindow& win = *SWindow::getInstance(width, height);
- mainwin = &win;
- bool lin_entries=false;
- bool vm_entries=false;
-
- if(lsessions != NULL) {
- win.set_lin_entries(lsessions);
- lin_entries = true;
- }
- if (sessions != NULL) {
- win.set_entries(sessions);
- vm_entries = true;
- }
-
- if(dsession) {
- win.unfold_entries(lin_entries, vm_entries, dsession);
- }
- else {
- win.unfold_entries(lin_entries, vm_entries);
- }
- win.show(); // argc,argv
- win.border(false);
-
-// free(xmlpath);
-
- bool retval = run();
-
- win.free_entries();
-
- return retval;
-}
-