diff options
Diffstat (limited to 'src/addScanners.cpp')
-rw-r--r-- | src/addScanners.cpp | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/src/addScanners.cpp b/src/addScanners.cpp deleted file mode 100644 index 2b070a4..0000000 --- a/src/addScanners.cpp +++ /dev/null @@ -1,135 +0,0 @@ - - -#include "functions.h" - -#include <iostream> -#include <string> -#include <vector> -#include <queue> - -#include <boost/filesystem.hpp> - -namespace bfs=boost::filesystem; - -/** - * function addScanners(xmlNode* node, char* script) - * ---------------------------------------------------------- - * runs content of script (absolute path of a script-file) - * -> this expects the script to print out scanner information - * in the following format - * - * scanserver\tscanner\tscanner description - * - * all other output has to be directed to /dev/null - * - * then this function add some scanner-nodes to the xml-file - * in "settings/eintrag/scanners" - * (which will be created also if needed.) - * in the following form: <br/> - * - * <scanner name="scanner" path="//scanserver/scanner" > - * Scannerdescription - * </scanner> - */ -bool addScanners(xmlNode* node, char* script) { - - if(node == NULL) { - return false; - } - - bool scanner = false; - vector<string> info_scanner; - - const int MAX_LENGTH = 300; - char line[MAX_LENGTH]; - char delims[] = "\t"; - string strline; - FILE* inp = 0; - - unsigned int tindex = 0; - xmlNodePtr cur = node->children; - xmlNodePtr scannernode = NULL; - - // Get <scanners> node - while(cur != NULL) { - if (!xmlStrcmp(cur->name, (const xmlChar *)"scanners")){ - scanner = true; - scannernode = cur; - break; - } - cur = cur->next; - } - if(! scanner) { - scannernode = xmlNewNode(NULL, (const xmlChar*) "scanners"); - if(scannernode != NULL ) { - xmlAddChild(node, scannernode); - } - else { - cerr << "No <scanners> node created" << endl; - } - } - - // Parse input of scanner-Skript (called by "char* script") - // and write into <scanner> nodes - if( bfs::is_regular(bfs::path(script)) ) - if( (inp = popen(script, "r" )) ) { - while(fgets(line, MAX_LENGTH, inp ) != NULL) { - strline = string(line); - if(strline.length() > 3) { - - queue<unsigned int> temp; - temp.push( strline.find_first_of( delims , 0) ); - - while( temp.back() != string::npos ) { - temp.push( strline.find_first_of( delims, temp.back()+1 ) ); - } - - unsigned int t_front; - string tstr = string(""); - while( tindex != string::npos ) { - - // build scanner-info element - t_front = temp.front(); - - if(tindex == 0) { - tstr = strline.substr(0, t_front); - } - else if(t_front != string::npos) { - tstr = strline.substr(tindex+1, t_front-tindex-1) ; - } - else { - tstr = strline.substr( tindex+1, strline.length() - tindex-2 ); - } - if(tstr.length() > 2) { - info_scanner.push_back( tstr ); - // DEBUG - cout << info_scanner.back() << endl; - } - tindex = t_front; - temp.pop(); - } - - // Construct <scanner> nodes - xmlNodePtr pNode = xmlNewNode(NULL, (const xmlChar*) "scanner"); - xmlNewProp(pNode, (const xmlChar*) "name", (const xmlChar*) info_scanner.at(1).c_str()); - xmlNewProp ( pNode, (const xmlChar*) "path", (const xmlChar*) - string( string( "\\\\" ) + info_scanner.at(0) + string( "\\" ) + info_scanner.at(1) ).c_str() ); - - if(info_scanner.size() > 2) { - xmlAddChild( pNode, xmlNewText( (const xmlChar*) info_scanner.at(2).c_str() ) ); - } - - if(pNode != NULL) { - xmlAddChild( scannernode, pNode); - } - - info_scanner.clear(); - tindex = 0; - } - } - pclose(inp); - } - - return true; -} - |