Refine tabs; Add utils functions; Update document
This commit is contained in:
70
pine-ini.c
70
pine-ini.c
@@ -48,7 +48,7 @@ static void PineIni_Parser_Destory(PineIniParser* parser) {
|
||||
static int PineIni_Parser_Gets(PineIniParser* parser, char* buf) {
|
||||
char *pBuf = buf;
|
||||
|
||||
parser->lineNumber++;
|
||||
parser->lineNumber++;
|
||||
|
||||
while (*parser->currentPointer != '\n' && *parser->currentPointer != '\0') {
|
||||
*(pBuf++) = *(parser->currentPointer++);
|
||||
@@ -60,8 +60,8 @@ static int PineIni_Parser_Gets(PineIniParser* parser, char* buf) {
|
||||
return PARSER_ACTION_END;
|
||||
}
|
||||
else {
|
||||
// Skip LF
|
||||
parser->currentPointer++;
|
||||
// Skip LF
|
||||
parser->currentPointer++;
|
||||
return PARSER_ACTION_CONTINUE;
|
||||
}
|
||||
}
|
||||
@@ -114,7 +114,7 @@ static PINE_BOOL PineIni_Line_IsParameter(const char* line, const int length) {
|
||||
PineIniFile* PineIni_Parse(const char* iniText, PineIniError* errorRet) {
|
||||
char lineBuffer[PINE_INI_LINE_MAX_LEN];
|
||||
int lineLength;
|
||||
int getsRetCode;
|
||||
int getsRetCode;
|
||||
PineIniParser* parser;
|
||||
PineIniFile* iniResult;
|
||||
PineIniSection* currentSection;
|
||||
@@ -136,8 +136,8 @@ PineIniFile* PineIni_Parse(const char* iniText, PineIniError* errorRet) {
|
||||
strcpy(errorRet->lineContent, "");
|
||||
|
||||
do {
|
||||
// Get line from parser
|
||||
getsRetCode = PineIni_Parser_Gets(parser, lineBuffer);
|
||||
// Get line from parser
|
||||
getsRetCode = PineIni_Parser_Gets(parser, lineBuffer);
|
||||
|
||||
// Trim white spaces
|
||||
PineIni_StringTrim(lineBuffer);
|
||||
@@ -158,7 +158,7 @@ PineIniFile* PineIni_Parse(const char* iniText, PineIniError* errorRet) {
|
||||
char sectionName[PINE_INI_LINE_MAX_LEN];
|
||||
PineIniSection* section;
|
||||
|
||||
PineIni_Substring(sectionName, lineBuffer, 1, lineLength - 2);
|
||||
PineIni_Substring(sectionName, lineBuffer, 1, lineLength - 2);
|
||||
|
||||
section = PineIni_Find(iniResult, sectionName);
|
||||
|
||||
@@ -224,10 +224,10 @@ PineIniFile* PineIni_Parse(const char* iniText, PineIniError* errorRet) {
|
||||
|
||||
PineIni_Parser_Destory(parser);
|
||||
|
||||
return iniResult;
|
||||
return iniResult;
|
||||
}
|
||||
|
||||
PineIniSection* PineIni_Find(PineIniFile* file, const char* sectionName) {
|
||||
PineIniSection* PineIni_Find(const PineIniFile* file, const char* sectionName) {
|
||||
if (file) {
|
||||
int i;
|
||||
for (i = 0; i < file->numSection; ++i) {
|
||||
@@ -272,7 +272,7 @@ PineIniSection* PineIni_Section_New(const char* sectionName) {
|
||||
return section;
|
||||
}
|
||||
|
||||
PineIniParameter* PineIni_Section_Find(PineIniSection* section, const char* key) {
|
||||
PineIniParameter* PineIni_Section_Find(const PineIniSection* section, const char* key) {
|
||||
if (section) {
|
||||
int i;
|
||||
for (i = 0; i < section->numParam; ++i) {
|
||||
@@ -345,6 +345,50 @@ void PineIni_Parameter_Destory(PineIniParameter* param) {
|
||||
|
||||
// Utils functions
|
||||
|
||||
const char* PineIni_Section_GetString(const PineIniSection* section, const char* key, const char* defaultValue) {
|
||||
const PineIniParameter* param = PineIni_Section_Find(section, key);
|
||||
|
||||
// key not found or value is null
|
||||
if (!param || !param->value) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
return param->value;
|
||||
}
|
||||
|
||||
const char* PineIni_GetString(const PineIniFile* file, const char* sectionName, const char* key, const char* defaultValue) {
|
||||
const PineIniSection* section = PineIni_Find(file, sectionName);
|
||||
|
||||
// sectionName not found
|
||||
if (!section) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
return PineIni_Section_GetString(section, key, defaultValue);
|
||||
}
|
||||
|
||||
int PineIni_Section_GetInt(const PineIniSection* section, const char* key, int defaultValue) {
|
||||
const char* szIntVal = PineIni_Section_GetString(section, key, NULL);
|
||||
|
||||
if (szIntVal == NULL) {
|
||||
return defaultValue;
|
||||
} else {
|
||||
return atol(szIntVal);
|
||||
}
|
||||
}
|
||||
|
||||
int PineIni_GetInt(const PineIniFile* file, const char* sectionName, const char* key, int defaultValue) {
|
||||
const char* szIntVal = PineIni_GetString(file, sectionName, key, NULL);
|
||||
|
||||
if (szIntVal == NULL) {
|
||||
return defaultValue;
|
||||
} else {
|
||||
return atol(szIntVal);
|
||||
}
|
||||
}
|
||||
|
||||
// String functions
|
||||
|
||||
int PineIni_FindChar(const char* src, const char find) {
|
||||
int i;
|
||||
for (i = 0; src[i]; ++i) {
|
||||
@@ -370,9 +414,9 @@ char* PineIni_Substring(char* dest, const char* src, int left, int right) {
|
||||
}
|
||||
|
||||
char* PineIni_ToSubstring (char* src, int left, int right) {
|
||||
int length = strlen(src);
|
||||
char* buf = (char *)malloc(length + 1);
|
||||
int newLength = 0;
|
||||
int length = strlen(src);
|
||||
char* buf = (char *)malloc(length + 1);
|
||||
int newLength = 0;
|
||||
int i;
|
||||
|
||||
for (i = left; i <= right; ++i) {
|
||||
|
||||
Reference in New Issue
Block a user