summaryrefslogtreecommitdiff
path: root/cppe/src
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-06-14 16:00:59 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-06-14 16:00:59 +0000
commit1f01cdb052af4e7b7192f39bd6e8eb4e39ca0381 (patch)
treeff018c6defd3faa67d1599bfca5c12e9eded1fb9 /cppe/src
parent- IceSSL assembly is now build into the bin directory. (diff)
downloadice-1f01cdb052af4e7b7192f39bd6e8eb4e39ca0381.tar.bz2
ice-1f01cdb052af4e7b7192f39bd6e8eb4e39ca0381.tar.xz
ice-1f01cdb052af4e7b7192f39bd6e8eb4e39ca0381.zip
bug 923 - run string converter on properties red frmo file
Diffstat (limited to 'cppe/src')
-rw-r--r--cppe/src/IceE/Initialize.cpp12
-rw-r--r--cppe/src/IceE/Properties.cpp29
2 files changed, 28 insertions, 13 deletions
diff --git a/cppe/src/IceE/Initialize.cpp b/cppe/src/IceE/Initialize.cpp
index 0948d00a2b9..6bf6fe9e678 100644
--- a/cppe/src/IceE/Initialize.cpp
+++ b/cppe/src/IceE/Initialize.cpp
@@ -61,22 +61,22 @@ Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[])
}
PropertiesPtr
-Ice::createProperties()
+Ice::createProperties(const StringConverterPtr& converter)
{
- return new Properties();
+ return new Properties(converter);
}
PropertiesPtr
-Ice::createProperties(StringSeq& args, const PropertiesPtr& defaults)
+Ice::createProperties(StringSeq& args, const PropertiesPtr& defaults, const StringConverterPtr& converter)
{
- return new Properties(args, defaults);
+ return new Properties(args, defaults, converter);
}
PropertiesPtr
-Ice::createProperties(int& argc, char* argv[], const PropertiesPtr& defaults)
+Ice::createProperties(int& argc, char* argv[], const PropertiesPtr& defaults, const StringConverterPtr& converter)
{
StringSeq args = argsToStringSeq(argc, argv);
- PropertiesPtr properties = createProperties(args, defaults);
+ PropertiesPtr properties = createProperties(args, defaults, converter);
stringSeqToArgs(args, argc, argv);
return properties;
}
diff --git a/cppe/src/IceE/Properties.cpp b/cppe/src/IceE/Properties.cpp
index fad542e583a..69d98ec3dad 100644
--- a/cppe/src/IceE/Properties.cpp
+++ b/cppe/src/IceE/Properties.cpp
@@ -159,7 +159,7 @@ Ice::Properties::parseCommandLineOptions(const string& prefix, const StringSeq&
opt += "=1";
}
- parseLine(opt.substr(2));
+ parseLine(opt.substr(2), 0);
}
else
{
@@ -190,7 +190,7 @@ Ice::Properties::load(const std::string& file)
char line[1024];
while(fgets(line, 1024, in) != NULL)
{
- parseLine(line);
+ parseLine(line, _converter);
}
fclose(in);
}
@@ -203,15 +203,18 @@ Ice::Properties::clone()
}
Ice::Properties::Properties(const Properties* p) :
- _properties(p->_properties)
+ _properties(p->_properties),
+ _converter(p->_converter)
{
}
-Ice::Properties::Properties()
+Ice::Properties::Properties(const StringConverterPtr& converter) :
+ _converter(converter)
{
}
-Ice::Properties::Properties(StringSeq& args, const PropertiesPtr& defaults)
+Ice::Properties::Properties(StringSeq& args, const PropertiesPtr& defaults, const StringConverterPtr& converter) :
+ _converter(converter)
{
if(defaults != 0)
{
@@ -242,7 +245,7 @@ Ice::Properties::Properties(StringSeq& args, const PropertiesPtr& defaults)
{
s += "=1";
}
- parseLine(s.substr(2));
+ parseLine(s.substr(2), 0);
loadConfigFiles = true;
}
else
@@ -270,7 +273,7 @@ Ice::Properties::Properties(StringSeq& args, const PropertiesPtr& defaults)
}
void
-Ice::Properties::parseLine(const string& line)
+Ice::Properties::parseLine(const string& line, const StringConverterPtr& converter)
{
const string delim = " \t\r\n";
string s = line;
@@ -315,6 +318,18 @@ Ice::Properties::parseLine(const string& line)
end = s.length();
value = s.substr(beg, end - beg);
}
+
+ if(converter)
+ {
+ string tmp;
+ converter->fromUTF8(reinterpret_cast<const Byte*>(key.data()),
+ reinterpret_cast<const Byte*>(key.data() + key.size()), tmp);
+ key.swap(tmp);
+
+ converter->fromUTF8(reinterpret_cast<const Byte*>(value.data()),
+ reinterpret_cast<const Byte*>(value.data() + value.size()), tmp);
+ value.swap(tmp);
+ }
setProperty(key, value);
}