mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
added alias MYSQLD for API
added choice of : or = in config file set case insensitive section names
This commit is contained in:
@ -24,13 +24,13 @@ ExecuteOnComputer: 2
|
||||
[MGM]
|
||||
PortNumber: CHOOSE_PORT_MGM
|
||||
|
||||
[API]
|
||||
[MYSQLD]
|
||||
|
||||
[API]
|
||||
[MYSQLD]
|
||||
|
||||
[API]
|
||||
[MYSQLD]
|
||||
|
||||
[API]
|
||||
[MYSQLD]
|
||||
|
||||
[TCP DEFAULT]
|
||||
PortNumber: CHOOSE_PORT_TRANSPORTER
|
||||
|
@ -25,6 +25,13 @@
|
||||
/****************************************************************************
|
||||
* Section names
|
||||
****************************************************************************/
|
||||
|
||||
const ConfigInfo::AliasPair
|
||||
ConfigInfo::m_sectionNameAliases[]={
|
||||
{"API", "MYSQLD"},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
const char*
|
||||
ConfigInfo::m_sectionNames[]={
|
||||
"SYSTEM",
|
||||
@ -2063,6 +2070,14 @@ ConfigInfo::isSection(const char * section) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
const char*
|
||||
ConfigInfo::getAlias(const char * section) const {
|
||||
for (int i = 0; m_sectionNameAliases[i].name != 0; i++)
|
||||
if(!strcmp(section, m_sectionNameAliases[i].alias))
|
||||
return m_sectionNameAliases[i].name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool
|
||||
ConfigInfo::verify(const Properties * section, const char* fname,
|
||||
Uint64 value) const {
|
||||
|
@ -61,6 +61,11 @@ public:
|
||||
Uint64 _max;
|
||||
};
|
||||
|
||||
struct AliasPair{
|
||||
const char * name;
|
||||
const char * alias;
|
||||
};
|
||||
|
||||
/**
|
||||
* Entry for one section rule
|
||||
*/
|
||||
@ -100,6 +105,7 @@ public:
|
||||
* @note Result is not defined if section/name are wrong!
|
||||
*/
|
||||
bool verify(const Properties* secti, const char* fname, Uint64 value) const;
|
||||
const char* getAlias(const char*) const;
|
||||
bool isSection(const char*) const;
|
||||
|
||||
const char* getDescription(const Properties * sec, const char* fname) const;
|
||||
@ -123,6 +129,7 @@ private:
|
||||
static const ParamInfo m_ParamInfo[];
|
||||
static const int m_NoOfParams;
|
||||
|
||||
static const AliasPair m_sectionNameAliases[];
|
||||
static const char* m_sectionNames[];
|
||||
static const int m_noOfSectionNames;
|
||||
|
||||
|
@ -222,6 +222,8 @@ bool InitConfigFileParser::parseNameValuePair(Context& ctx, const char* line) {
|
||||
char tmpLine[MAX_LINE_LENGTH];
|
||||
char fname[MAX_LINE_LENGTH], rest[MAX_LINE_LENGTH];
|
||||
char* t;
|
||||
const char separator_list[]= {':', '='};
|
||||
char separator= 0;
|
||||
|
||||
if (ctx.m_currentSection == NULL){
|
||||
ctx.reportError("Value specified outside section");
|
||||
@ -233,7 +235,14 @@ bool InitConfigFileParser::parseNameValuePair(Context& ctx, const char* line) {
|
||||
// *************************************
|
||||
// Check if a separator exists in line
|
||||
// *************************************
|
||||
if (!strchr(tmpLine, ':')) {
|
||||
for(int i= 0; i < sizeof(separator_list); i++) {
|
||||
if(strchr(tmpLine, separator_list[i])) {
|
||||
separator= separator_list[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (separator == 0) {
|
||||
ctx.reportError("Parse error");
|
||||
return false;
|
||||
}
|
||||
@ -247,7 +256,7 @@ bool InitConfigFileParser::parseNameValuePair(Context& ctx, const char* line) {
|
||||
// Count number of tokens before separator
|
||||
// *****************************************
|
||||
if (sscanf(t, "%120s%120s", fname, rest) != 1) {
|
||||
ctx.reportError("Multiple names before \':\'");
|
||||
ctx.reportError("Multiple names before \'%c\'", separator);
|
||||
return false;
|
||||
}
|
||||
if (!ctx.m_currentInfo->contains(fname)) {
|
||||
@ -475,8 +484,24 @@ InitConfigFileParser::parseSectionHeader(const char* line) const {
|
||||
tmp[0] = ' ';
|
||||
trim(tmp);
|
||||
|
||||
// Convert section header to upper
|
||||
for(int i= strlen(tmp)-1; i >= 0; i--)
|
||||
tmp[i]= toupper(tmp[i]);
|
||||
|
||||
// Get the correct header name if an alias
|
||||
{
|
||||
const char *tmp_alias= m_info->getAlias(tmp);
|
||||
if (tmp_alias) {
|
||||
free(tmp);
|
||||
tmp= strdup(tmp_alias);
|
||||
}
|
||||
}
|
||||
|
||||
// Lookup token among sections
|
||||
if(!m_info->isSection(tmp)) return NULL;
|
||||
if(!m_info->isSection(tmp)) {
|
||||
free(tmp);
|
||||
return NULL;
|
||||
}
|
||||
if(m_info->getInfo(tmp)) return tmp;
|
||||
|
||||
free(tmp);
|
||||
|
Reference in New Issue
Block a user