Improva the ini file parsing.

This commit is contained in:
Jonathan Naylor 2020-09-06 14:20:00 +01:00
parent 3347a42118
commit 471f5475d2

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018 by Jonathan Naylor G4KLX
* Copyright (C) 2018,2020 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -87,11 +87,31 @@ bool CConf::read()
continue;
}
char* key = ::strtok(buffer, " \t=\r\n");
char* key = ::strtok(buffer, " \t=\r\n");
if (key == NULL)
continue;
continue;
char* value = ::strtok(NULL, "\r\n");
if (value == NULL)
continue;
// Remove quotes from the value
size_t len = ::strlen(value);
if (len > 1U && *value == '"' && value[len - 1U] == '"') {
value[len - 1U] = '\0';
value++;
} else {
char *p;
// if value is not quoted, remove after # (to make comment)
if ((p = strchr(value, '#')) != NULL)
*p = '\0';
// remove trailing tab/space
for (p = value + strlen(value) - 1U; p >= value && (*p == '\t' || *p == ' '); p--)
*p = '\0';
}
if (section == SECTION_GENERAL) {
if (::strcmp(key, "Callsign") == 0) {
for (unsigned int i = 0U; value[i] != '\0'; i++) {