X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/57680908c5cfa6837c7ca111dbc19299170d14d8..8f1d13e63e83c5f590d59f6d09f2d1dae69ba526:/stglibs/srvconf.lib/parser_auth_by.cpp?ds=sidebyside diff --git a/stglibs/srvconf.lib/parser_auth_by.cpp b/stglibs/srvconf.lib/parser_auth_by.cpp new file mode 100644 index 00000000..63c23a09 --- /dev/null +++ b/stglibs/srvconf.lib/parser_auth_by.cpp @@ -0,0 +1,46 @@ +#include "stg/parser_auth_by.h" + +#include // strcasecmp + +PARSER_AUTH_BY::PARSER_AUTH_BY() + : callback(NULL), + data(NULL), + depth(0) +{ +} +//----------------------------------------------------------------------------- +int PARSER_AUTH_BY::ParseStart(const char *el, const char **attr) +{ +depth++; +if (depth == 1) + { + if (strcasecmp(el, "AuthorizedBy") != 0) + info.clear(); + } +else + { + if (depth == 2) + { + if (strcasecmp(el, "Auth") == 0) + { + if (attr && attr[0] && attr[1] && strcasecmp(attr[0], "name") == 0) + info.push_back(attr[1]); + return 0; + } + } + } +return 0; +} +//----------------------------------------------------------------------------- +void PARSER_AUTH_BY::ParseEnd(const char * /*el*/) +{ +depth--; +if (depth == 0) + callback(info, data); +} +//----------------------------------------------------------------------------- +void PARSER_AUTH_BY::SetCallback(CALLBACK f, void * data) +{ +callback = f; +data = data; +}