From: Mukund Sivaraman Date: Mon, 3 Dec 2012 22:43:57 +0000 (+0530) Subject: [2497] Return whether the string is quoted in characterstr::getNextCharacterString() X-Git-Tag: bind10-1.0.0-beta-release~39^2~3^2~1^2~2^2~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ee8c9cdab87054662af5a67993c9a3ced593256;p=thirdparty%2Fkea.git [2497] Return whether the string is quoted in characterstr::getNextCharacterString() --- diff --git a/src/lib/dns/character_string.cc b/src/lib/dns/character_string.cc index 3a289acd49..8b319483dc 100644 --- a/src/lib/dns/character_string.cc +++ b/src/lib/dns/character_string.cc @@ -29,7 +29,8 @@ bool isDigit(char c) { std::string characterstr::getNextCharacterString(const std::string& input_str, - std::string::const_iterator& input_iterator) + std::string::const_iterator& input_iterator, + bool* quoted) { string result; @@ -119,6 +120,10 @@ characterstr::getNextCharacterString(const std::string& input_str, isc_throw(InvalidRdataText, "The quotes are not paired"); } + if (quoted != NULL) { + *quoted = quotes_separated; + } + return (result); } diff --git a/src/lib/dns/character_string.h b/src/lib/dns/character_string.h index 2a68778c7b..0bfa38b8d5 100644 --- a/src/lib/dns/character_string.h +++ b/src/lib/dns/character_string.h @@ -39,9 +39,12 @@ namespace characterstr { /// \param input_iterator The iterator from which to start extracting, /// the iterator will be updated to new position after the function /// is returned + /// \param quoted If not \c NULL, returns \c true at this address if + /// the string is quoted, \cfalse otherwise /// \return A std::string that contains the extracted std::string getNextCharacterString(const std::string& input_str, - std::string::const_iterator& input_iterator); + std::string::const_iterator& input_iterator, + bool* quoted = NULL); /// Get a from a input buffer /// diff --git a/src/lib/dns/tests/character_string_unittest.cc b/src/lib/dns/tests/character_string_unittest.cc index 5fed9eb0a3..e8f58844a0 100644 --- a/src/lib/dns/tests/character_string_unittest.cc +++ b/src/lib/dns/tests/character_string_unittest.cc @@ -33,11 +33,13 @@ class CharacterString { public: CharacterString(const string& str){ string::const_iterator it = str.begin(); - characterStr_ = getNextCharacterString(str, it); + characterStr_ = getNextCharacterString(str, it, &is_quoted_); } const string& str() const { return characterStr_; } + bool quoted() const { return (is_quoted_); } private: string characterStr_; + bool is_quoted_; }; TEST(CharacterStringTest, testNormalCase) { @@ -47,14 +49,17 @@ TEST(CharacterStringTest, testNormalCase) { // Test that separated by space CharacterString cstr2("foo bar"); EXPECT_EQ(string("foo"), cstr2.str()); + EXPECT_FALSE(cstr2.quoted()); // Test that separated by quotes CharacterString cstr3("\"foo bar\""); EXPECT_EQ(string("foo bar"), cstr3.str()); + EXPECT_TRUE(cstr3.quoted()); // Test that not separate by quotes but ended with quotes CharacterString cstr4("foo\""); EXPECT_EQ(string("foo\""), cstr4.str()); + EXPECT_FALSE(cstr4.quoted()); } TEST(CharacterStringTest, testBadCase) {