From 1cc34ec7873567dcddd9054f1adc2d3721cecf19 Mon Sep 17 00:00:00 2001 From: Gabriele Contini <contini.mailing@gmail.com> Date: 周六, 16 11月 2019 21:39:10 +0800 Subject: [PATCH] issue #42 #38 \n review build system, \n issue #38 added clang format --- src/library/locate/EnvironmentVarData.cpp | 44 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/library/locate/EnvironmentVarData.cpp b/src/library/locate/EnvironmentVarData.cpp index 844470e..6a65d35 100644 --- a/src/library/locate/EnvironmentVarData.cpp +++ b/src/library/locate/EnvironmentVarData.cpp @@ -6,6 +6,18 @@ */ #include "EnvironmentVarData.hpp" + +#include <licensecc_properties.h> +#include <cstdlib> +#include <regex> +#include <string> +#include <vector> + +#include "../api/datatypes.h" +#include "../base/base64.h" +#include "../base/EventRegistry.h" +#include "../base/StringUtils.h" + namespace license { namespace locate { @@ -18,15 +30,37 @@ EnvironmentVarData::~EnvironmentVarData() { } -const vector<string> EnvironmentVarData::licenseLocations( - EventRegistry &eventRegistry) const { +const vector<string> EnvironmentVarData::license_locations( + EventRegistry &eventRegistry) { vector<string> diskFiles; - + char *env_var_value = getenv(LICENSE_DATA_ENV_VAR); + if (env_var_value != nullptr && env_var_value[0] != '\0') { + eventRegistry.addEvent(LICENSE_SPECIFIED, LICENSE_LOCATION_ENV_VAR); + FILE_FORMAT licenseFormat = identify_format(env_var_value); + if (licenseFormat == UNKNOWN) { + eventRegistry.addEvent(LICENSE_MALFORMED, LICENSE_LOCATION_ENV_VAR); + } else { + diskFiles.push_back(LICENSE_LOCATION_ENV_VAR); + isBase64 = (licenseFormat == BASE64); + } + } else { + eventRegistry.addEvent(ENVIRONMENT_VARIABLE_NOT_DEFINED, + LICENSE_LOCATION_ENV_VAR); + } return diskFiles; } -const std::string EnvironmentVarData::retrieveLicense(const std::string &licenseLocation) const{ - return ""; +const std::string EnvironmentVarData::retrieve_license_content( + const std::string &licenseLocation) const { + string tmpVal = getenv(LICENSE_LOCATION_ENV_VAR); + if (isBase64) { + int flen = 0; + unsigned char *raw = unbase64(tmpVal.c_str(), tmpVal.length(), &flen); + string str = string(reinterpret_cast<char*>(raw)); + free(raw); + return str; + } + return tmpVal; } } -- Gitblit v1.9.1