From 1922d8c2cf7dcaacafd17394849577794b1f10eb Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周六, 13 9月 2014 06:24:55 +0800 Subject: [PATCH] signature windows --- src/license-generator/license-generator.cpp | 33 ++++++++++++++------------------- 1 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/license-generator/license-generator.cpp b/src/license-generator/license-generator.cpp index 466d5d7..846d5d9 100644 --- a/src/license-generator/license-generator.cpp +++ b/src/license-generator/license-generator.cpp @@ -81,7 +81,7 @@ time_t curtime = time(NULL); strftime(curdate, 20, "%Y-%m-%d", localtime(&curtime)); begin_date.assign(curdate); - } catch (invalid_argument &e) { + } catch (const invalid_argument &e) { cerr << endl << "End date not recognized: " << dt_end << " Please enter a valid date in format YYYYMMDD" << endl; exit(2); @@ -189,29 +189,24 @@ } -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]); +const std::string formats[] = { "%4u-%2u-%2u","%4u/%2u/%2u","%4u%2u%2u" }; +const size_t formats_n = 3; -string LicenseGenerator::normalize_date(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; +string LicenseGenerator::normalize_date(const char * s) { + unsigned int year, month, day; + int chread; + bool found = false; + for (size_t i = 0; i < formats_n &&!found; ++i) { + chread = sscanf(s, formats[i].c_str(),&year, &month, &day); + if (chread == 3){ + found = true; } } - if (pt == bt::ptime()) { - throw invalid_argument(string("Date not regognized") + s); + if (!found){ + throw invalid_argument("Date not recognized."); } ostringstream oss; - bt::time_facet *facet = new bt::time_facet("%Y-%m-%d"); - oss.imbue(locale(cout.getloc(), facet)); - oss << pt; + oss << year << "-"<<setfill('0') << std::setw(2)<< month<<"-"<<day; //delete (facet); return oss.str(); } -- Gitblit v1.9.1