#include <iostream> #include <string> #include <simgear/props/props.hxx> #include <simgear/props/props_io.hxx> #include <simgear/structure/exception.hxx> using namespace std; void usage() { cerr << "Usage: propmerge [-o <outfile>] <infiles>" << endl; } int main(int argc, char *argv[]) { if (argc < 2) { usage(); return 1; } sglog().setLogLevels(SG_ALL, SG_ALERT); int numfiles = 0; string outfile; SGPropertyNode root; for (int i = 1; i < argc; i++) { string s = argv[i]; if (s == "-h" || s == "--help") { usage(); return 0; } if (s == "-o" || s == "--output") { if (i + 1 == argc) break; outfile = argv[++i]; continue; } try { readProperties(s, &root); numfiles++; } catch (const sg_exception &e) { cerr << "Error: " << e.getFormattedMessage() << endl; return 2; } } if (!numfiles) { cerr << "Error: Nothing to merge." << endl; return 3; } try { if (outfile.empty()) writeProperties(cout, &root, true); else writeProperties(outfile, &root, true); } catch (const sg_exception &e) { cerr << "Error: " << e.getFormattedMessage() << endl; return 4; } return 0; }