From 19c31914cf3bc7be054f759ff3a30baf4b71e064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= <davispuh@gmail.com> Date: Thu, 14 Jul 2016 05:17:00 +0300 Subject: [PATCH] SystemTools: Abstract environment storage character type Change-Id: If7753c828c211998b76a1706ca7fd35fbb4c1f71 --- SystemTools.cxx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/SystemTools.cxx b/SystemTools.cxx index 8e1c96c..7fea79e 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -388,10 +388,13 @@ class SystemToolsTranslationMap : { }; +/* Type of character storing the environment. */ +typedef char envchar; + /* Order by environment key only (VAR from VAR=VALUE). */ struct kwsysEnvCompare { - bool operator() (const char* l, const char* r) const + bool operator() (const envchar* l, const envchar* r) const { const char* leq = strchr(l, '='); const char* req = strchr(r, '='); @@ -408,20 +411,20 @@ struct kwsysEnvCompare } }; -class kwsysEnvSet: public std::set<const char*, kwsysEnvCompare> +class kwsysEnvSet: public std::set<const envchar*, kwsysEnvCompare> { public: class Free { - const char* Env; + const envchar* Env; public: - Free(const char* env): Env(env) {} - ~Free() { free(const_cast<char*>(this->Env)); } + Free(const envchar* env): Env(env) {} + ~Free() { free(const_cast<envchar*>(this->Env)); } }; - const char* Release(const char* env) + const envchar* Release(const envchar* env) { - const char* old = 0; + const envchar* old = 0; iterator i = this->find(env); if(i != this->end()) { @@ -680,7 +683,7 @@ public: for(iterator i = this->begin(); i != this->end(); ++i) { kwsysUnPutEnv(*i); - free(const_cast<char*>(*i)); + free(const_cast<envchar*>(*i)); } } bool Put(const char* env) -- GitLab