diff options
author | toni <toni@pdp7.tq-net.de> | 2017-11-16 15:07:12 +0100 |
---|---|---|
committer | Toni Uhlig <Toni.Uhlig@tq-group.com> | 2017-11-27 15:36:43 +0100 |
commit | ef0f08a3d4d8eeb118592bc96480109d7b78e37b (patch) | |
tree | 8e57959487f08dd743b2728ab6fc0269b17cf4bd /src/UpdateTool.cpp | |
parent | 91f979252aa3ce910b2a7a577f807a941b24a555 (diff) |
initial commit
Diffstat (limited to 'src/UpdateTool.cpp')
-rw-r--r-- | src/UpdateTool.cpp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/UpdateTool.cpp b/src/UpdateTool.cpp new file mode 100644 index 0000000..55da6d4 --- /dev/null +++ b/src/UpdateTool.cpp @@ -0,0 +1,89 @@ +#include <cstdio> +#include <iostream> + +#include "UpdateFactory.hpp" + +#ifdef USE_GUI +#include "UpdateGUI.hpp" + +wxIMPLEMENT_APP(UpdateGUI); + +#if defined(_UNICODE) && defined(WIN32) +int wmain(int argc, wchar_t* wargv[]) +{ + wxEntryStart(argc, wargv); + wxTheApp->CallOnInit(); + wxTheApp->OnRun(); + return 0; +} +#endif + +#else + +int main(int argc, char **argv) +{ + int rv; + std::vector<UpdateFactory*> uf; + std::string errstr; + + if (argc == 0) + return 1; + if (argc == 3) { + uf.clear(); + rv = loadUpdateFactoriesFromCSV(argv[1], argv[2], uf); + if (rv != UPDATE_OK) { + std::cerr << "CSV file read \"" << argv[1] << "\" failed with: " << rv << std::endl; + return 1; + } + } else + if (argc == 4) { + uf.push_back(new UpdateFactory()); + uf[0]->setDest(argv[1], 80); + uf[0]->setPass(argv[2]); + uf[0]->setUpdateFile(argv[3]); + } else { + std::cerr << "Missing CLI arguments, using defaults .." << std::endl + << "usage: " << argv[0] + << " [update-csv-file]|[[hostname] [password]] [update-file]" + << std::endl << std::endl; + return 1; + } + + for (auto *u : uf) { + rv = u->doAuth(); + mapEmcError(rv, errstr); + std::cerr << "doAuth returned " << rv << ": " << errstr << std::endl; + if (rv == UPDATE_OK) { + std::cerr << "uploading file " << u->getUpdateFile() << std::endl; + rv = u->loadUpdateFile(); + mapEmcError(rv, errstr); + std::cerr << "load file returned " << rv << ": " << errstr << std::endl; + rv = u->doUpdate(); + mapEmcError(rv, errstr); + std::cerr << "doUpdate returned " << rv << ": " << errstr << std::endl; + } + } + + for (auto *u : uf) { + delete u; + } + return 0; +} + +#if defined(_UNICODE) && defined(WIN32) +int wmain(int argc, wchar_t* wargv[]) +{ + size_t len; + static char **argv = new char*[argc]; + + /* convert wide character argvector to ASCII */ + for (int i = 0; i < argc; ++i) { + len = wcslen(wargv[i]) * sizeof(wchar_t); + argv[i] = (char *) calloc(len+1, sizeof(char)); + wcstombs(argv[i], wargv[i], len); + fprintf(stderr, "arg[%d]: %s\n", i, argv[i]); + } + return main(argc, argv); +} +#endif +#endif |