From 3ba1ee60337c5e74027acb6f89a16e5ff3aa345c Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周一, 14 4月 2014 15:47:14 +0800 Subject: [PATCH] test with date --- src/license-generator/license-generator.cpp | 31 +++++-------------------------- 1 files changed, 5 insertions(+), 26 deletions(-) diff --git a/src/license-generator/license-generator.cpp b/src/license-generator/license-generator.cpp index a967e6f..f6e3e80 100644 --- a/src/license-generator/license-generator.cpp +++ b/src/license-generator/license-generator.cpp @@ -1,6 +1,7 @@ #include <build_properties.h> #include "LicenseSigner.h" #include "license-generator.h" +#include "../library/base/StringUtils.h" #include <stdlib.h> #include <stdio.h> #include <iostream> @@ -75,7 +76,7 @@ if (vm.count("end_date")) { const std::string dt_end = vm["end_date"].as<string>(); try { - end_date = seconds_from_epoch(dt_end); + end_date = seconds_from_epoch(dt_end.c_str()); begin_date = time(NULL); } catch (invalid_argument &e) { cerr << endl << "End date not recognized: " << dt_end @@ -86,7 +87,7 @@ if (vm.count("begin_date")) { const std::string begin_date_str = vm["begin_date"].as<string>(); try { - begin_date = seconds_from_epoch(begin_date_str); + begin_date = seconds_from_epoch(begin_date_str.c_str()); } catch (invalid_argument &e) { cerr << endl << "Begin date not recognized: " << begin_date_str << " Please enter a valid date in format YYYYMMDD" << endl; @@ -110,9 +111,9 @@ if (vm.count("extra_data")) { extra_data = vm["extra_data"].as<string>(); } - unsigned int from_sw_version = end_date = vm["start_version"].as< + unsigned int from_sw_version = vm["start_version"].as< unsigned int>(); - unsigned int to_sw_version = end_date = + unsigned int to_sw_version = vm["end_version"].as<unsigned int>(); if (vm.count("product") == 0) { cerr << endl << "Parameter [product] not found. " << endl; @@ -183,28 +184,6 @@ return 0; } -const std::locale formats[] = { std::locale(std::locale::classic(), - new bt::time_input_facet("%Y-%m-%d")), // -std::locale(std::locale::classic(), new bt::time_input_facet("%Y/%m/%d")), // -std::locale(std::locale::classic(), new bt::time_input_facet("%Y%m%d")) }; -const size_t formats_n = sizeof(formats) / sizeof(formats[0]); -time_t LicenseGenerator::seconds_from_epoch(const std::string& s) { - bt::ptime pt; - for (size_t i = 0; i < formats_n; ++i) { - std::istringstream is(s); - is.imbue(formats[i]); - is >> pt; - if (pt != bt::ptime()) { - break; - } - } - if (pt == bt::ptime()) { - throw invalid_argument(string("Date not regognized") + s); - } - bt::ptime timet_start(boost::gregorian::date(1970, 1, 1)); - bt::time_duration diff = pt - timet_start; - return diff.ticks() / bt::time_duration::rep_type::ticks_per_second; -} } -- Gitblit v1.9.1