git.stg.codes
/
stg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added "done" signature for parsers.
[stg.git]
/
stglibs
/
srvconf.lib
/
parsers
/
get_admin.cpp
diff --git
a/stglibs/srvconf.lib/parsers/get_admin.cpp
b/stglibs/srvconf.lib/parsers/get_admin.cpp
index 41217dfb4408c69be298a204f5bab0129cf66019..29e35ba7e4f3c891ac9f455cde70ea3dd8385842 100644
(file)
--- a/
stglibs/srvconf.lib/parsers/get_admin.cpp
+++ b/
stglibs/srvconf.lib/parsers/get_admin.cpp
@@
-34,10
+34,10
@@
namespace STG
template <>
inline
template <>
inline
-bool GetValue<PRIV>(const char ** attr, PRIV & value)
+bool GetValue<PRIV>(const char ** attr, PRIV & value
, const std::string & attrName
)
{
uint32_t priv;
{
uint32_t priv;
-if (!GetValue(attr, priv))
+if (!GetValue(attr, priv
, attrName
))
return false;
value = priv;
return true;
return false;
value = priv;
return true;
@@
-45,9
+45,10
@@
return true;
} // namespace STG
} // namespace STG
-GET_ADMIN::PARSER::PARSER(CALLBACK f, void * d)
+GET_ADMIN::PARSER::PARSER(CALLBACK f, void * d
, const std::string & e
)
: callback(f),
data(d),
: callback(f),
data(d),
+ encoding(e),
depth(0),
parsingAnswer(false)
{
depth(0),
parsingAnswer(false)
{
@@
-69,8
+70,8
@@
depth++;
if (depth == 1)
ParseAdmin(el, attr);
if (depth == 1)
ParseAdmin(el, attr);
-if (depth == 2 && parsingAnswer)
- ParseAdminParams(el, attr);
+
/*
if (depth == 2 && parsingAnswer)
+ ParseAdminParams(el, attr);
*/
return 0;
}
return 0;
}
@@
-101,15
+102,23
@@
if (strcasecmp(el, "admin") == 0)
error = "Admin not found.";
}
else
error = "Admin not found.";
}
else
+ {
parsingAnswer = true;
parsingAnswer = true;
+ for (const char ** pos = attr; *pos != NULL; pos = pos + 2)
+ if (!TryParse(propertyParsers, ToLower(*pos), pos, encoding, *pos))
+ {
+ error = std::string("Invalid parameter '") + *pos + "'.";
+ break;
+ }
+ }
}
else
parsingAnswer = true;
}
}
//-----------------------------------------------------------------------------
}
else
parsingAnswer = true;
}
}
//-----------------------------------------------------------------------------
-void GET_ADMIN::PARSER::ParseAdminParams(const char * el, const char ** attr)
+
/*
void GET_ADMIN::PARSER::ParseAdminParams(const char * el, const char ** attr)
{
if (!TryParse(propertyParsers, ToLower(el), attr))
error = "Invalid parameter.";
{
if (!TryParse(propertyParsers, ToLower(el), attr))
error = "Invalid parameter.";
-}
+}
*/