- code format update

v1.6
Michael Zillgith 4 weeks ago
parent 24f70ae220
commit 1ff6224d1e

@ -1,7 +1,7 @@
/* /*
* string_utilities.c * string_utilities.c
* *
* Copyright 2013-2023 Michael Zillgith * Copyright 2013-2025 Michael Zillgith
* *
* This file is part of libIEC61850. * This file is part of libIEC61850.
* *
@ -30,7 +30,8 @@ StringUtils_copySubString(char* startPos, char* endPos)
char* newString = (char*)GLOBAL_MALLOC(newStringLength + 1); char* newString = (char*)GLOBAL_MALLOC(newStringLength + 1);
if (newString) { if (newString)
{
memcpy(newString, startPos, newStringLength); memcpy(newString, startPos, newStringLength);
newString[newStringLength] = 0; newString[newStringLength] = 0;
@ -86,13 +87,13 @@ StringUtils_copyStringToBufferAndReplace(const char* str, char* buffer, char old
return buffer; return buffer;
} }
char* char*
StringUtils_createStringFromBuffer(const uint8_t* buf, int size) StringUtils_createStringFromBuffer(const uint8_t* buf, int size)
{ {
char* newStr = (char*)GLOBAL_MALLOC(size + 1); char* newStr = (char*)GLOBAL_MALLOC(size + 1);
if (newStr) { if (newStr)
{
memcpy(newStr, buf, size); memcpy(newStr, buf, size);
newStr[size] = 0; newStr[size] = 0;
} }
@ -126,12 +127,14 @@ StringUtils_createStringInBuffer(char* newStr, int bufSize, int count, ...)
{ {
va_list ap; va_list ap;
if (bufSize > 0) { if (bufSize > 0)
{
newStr[0] = 0; newStr[0] = 0;
int i; int i;
va_start(ap, count); va_start(ap, count);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++)
{
char* str = va_arg(ap, char*); char* str = va_arg(ap, char*);
StringUtils_appendString(newStr, bufSize, str); StringUtils_appendString(newStr, bufSize, str);
} }
@ -151,7 +154,8 @@ StringUtils_createString(int count, ...)
/* Calculate new string length */ /* Calculate new string length */
va_start(ap, count); va_start(ap, count);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++)
{
char* str = va_arg(ap, char*); char* str = va_arg(ap, char*);
newStringLength += strlen(str); newStringLength += strlen(str);
@ -160,11 +164,13 @@ StringUtils_createString(int count, ...)
newStr = (char*)GLOBAL_MALLOC(newStringLength + 1); newStr = (char*)GLOBAL_MALLOC(newStringLength + 1);
if (newStr) { if (newStr)
{
char* currentPos = newStr; char* currentPos = newStr;
va_start(ap, count); va_start(ap, count);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++)
{
char* str = va_arg(ap, char*); char* str = va_arg(ap, char*);
strcpy(currentPos, str); strcpy(currentPos, str);
currentPos += strlen(str); currentPos += strlen(str);
@ -190,13 +196,15 @@ StringUtils_concatString(char* dest, int maxBufferSize, const char* str1, const
int destPos = 0; int destPos = 0;
int i = 0; int i = 0;
while (str1[i] != 0) { while (str1[i] != 0)
{
if (destPos < maxStringSize) { if (destPos < maxStringSize)
{
res[destPos] = str1[i]; res[destPos] = str1[i];
destPos++; destPos++;
} }
else { else
{
res[destPos] = 0; res[destPos] = 0;
return res; return res;
} }
@ -205,13 +213,15 @@ StringUtils_concatString(char* dest, int maxBufferSize, const char* str1, const
} }
i = 0; i = 0;
while (str2[i] != 0) { while (str2[i] != 0)
{
if (destPos < maxStringSize) { if (destPos < maxStringSize)
{
res[destPos] = str2[i]; res[destPos] = str2[i];
destPos++; destPos++;
} }
else { else
{
res[destPos] = 0; res[destPos] = 0;
return res; return res;
} }
@ -243,13 +253,15 @@ StringUtils_copyStringMax(char* dest, int maxBufferSize, const char* str1)
int destPos = 0; int destPos = 0;
int i = 0; int i = 0;
while (str1[i] != 0) { while (str1[i] != 0)
{
if (destPos < maxStringSize) { if (destPos < maxStringSize)
{
res[destPos] = str1[i]; res[destPos] = str1[i];
destPos++; destPos++;
} }
else { else
{
res[destPos] = 0; res[destPos] = 0;
return res; return res;
} }
@ -269,17 +281,21 @@ StringUtils_appendString(char* dest, int maxBufferSize, const char* str)
/* find end of existing string */ /* find end of existing string */
int i = 0; int i = 0;
while (i < maxBufferSize) { while (i < maxBufferSize)
if (dest[i] == 0) { {
if (dest[i] == 0)
{
break; break;
} }
i++; i++;
} }
if (i == maxBufferSize) { if (i == maxBufferSize)
{
/* append string terminator and return */ /* append string terminator and return */
if (maxBufferSize > 0) { if (maxBufferSize > 0)
{
dest[maxBufferSize - 1] = 0; dest[maxBufferSize - 1] = 0;
} }
@ -288,9 +304,10 @@ StringUtils_appendString(char* dest, int maxBufferSize, const char* str)
int srcPos = 0; int srcPos = 0;
while (i < maxBufferSize) { while (i < maxBufferSize)
{
if (str[srcPos] == 0) { if (str[srcPos] == 0)
{
break; break;
} }
@ -300,13 +317,16 @@ StringUtils_appendString(char* dest, int maxBufferSize, const char* str)
srcPos++; srcPos++;
} }
if (i == maxBufferSize) { if (i == maxBufferSize)
{
/* append string terminator and return */ /* append string terminator and return */
if (maxBufferSize > 0) { if (maxBufferSize > 0)
{
dest[maxBufferSize - 1] = 0; dest[maxBufferSize - 1] = 0;
} }
} }
else { else
{
dest[i] = 0; dest[i] = 0;
} }
@ -319,7 +339,8 @@ StringUtils_replace(char* string, char oldChar, char newChar)
int len = strlen(string); int len = strlen(string);
int i; int i;
for (i = 0; i < len; i++){ for (i = 0; i < len; i++)
{
if (string[i] == oldChar) if (string[i] == oldChar)
string[i] = newChar; string[i] = newChar;
} }
@ -337,7 +358,8 @@ StringUtils_isDigit(char character)
int int
StringUtils_digitToInt(char digit) StringUtils_digitToInt(char digit)
{ {
if (StringUtils_isDigit(digit)) { if (StringUtils_isDigit(digit))
{
return (digit - 48); return (digit - 48);
} }
else else
@ -350,7 +372,8 @@ StringUtils_digitsToInt(const char* digits, int count)
int i = 0; int i = 0;
int value = 0; int value = 0;
while (i < count) { while (i < count)
{
value = value * 10; value = value * 10;
int digitValue = StringUtils_digitToInt(*(digits + i)); int digitValue = StringUtils_digitToInt(*(digits + i));
@ -369,9 +392,12 @@ StringUtils_digitsToInt(const char* digits, int count)
static int static int
toInt(char c) toInt(char c)
{ {
if (c >= '0' && c <= '9') return c - '0'; if (c >= '0' && c <= '9')
if (c >= 'A' && c <= 'F') return 10 + c - 'A'; return c - '0';
if (c >= 'a' && c <= 'f') return 10 + c - 'a'; if (c >= 'A' && c <= 'F')
return 10 + c - 'A';
if (c >= 'a' && c <= 'f')
return 10 + c - 'a';
return -1; return -1;
} }
@ -385,12 +411,15 @@ StringUtils_createBufferFromHexString(char* hexString, uint8_t* buffer)
if (hexStringLen % 2 != 0) if (hexStringLen % 2 != 0)
return -1; return -1;
for (i = 0; i < (hexStringLen/2); i++) { for (i = 0; i < (hexStringLen / 2); i++)
{
int high = toInt(hexString[i * 2]); int high = toInt(hexString[i * 2]);
if (high == -1) return -1; if (high == -1)
return -1;
int low = toInt(hexString[(i * 2) + 1]); int low = toInt(hexString[(i * 2) + 1]);
if (low == -1) return -1; if (low == -1)
return -1;
buffer[i] = (uint8_t)(high * 16 + low); buffer[i] = (uint8_t)(high * 16 + low);
bytesCount += 1; bytesCount += 1;
@ -404,7 +433,8 @@ StringUtils_startsWith(const char* string, const char* prefix)
{ {
int index = 0; int index = 0;
while ((string[index] != 0) && (prefix[index] != 0)) { while ((string[index] != 0) && (prefix[index] != 0))
{
if (string[index] != prefix[index]) if (string[index] != prefix[index])
return false; return false;
@ -423,12 +453,10 @@ StringUtils_endsWith(const char* str, const char* suffix)
int stringLength = strlen(str); int stringLength = strlen(str);
int suffixLength = strlen(suffix); int suffixLength = strlen(suffix);
if (stringLength >= suffixLength)
if (stringLength >= suffixLength) { {
if (!strcmp(str + (stringLength - suffixLength), suffix)) if (!strcmp(str + (stringLength - suffixLength), suffix))
return true; return true;
} }
return false; return false;
@ -443,19 +471,23 @@ getCharWeight(int c)
static char lookupTable[LT_MAX_CHARS + 1]; static char lookupTable[LT_MAX_CHARS + 1];
static const char* charOrder = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz$_0123456789"; static const char* charOrder = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz$_0123456789";
if (!initialized) { if (!initialized)
{
int ltIndex; int ltIndex;
int weight = 1; int weight = 1;
for (ltIndex = 1; ltIndex < LT_MAX_CHARS; ltIndex++) { for (ltIndex = 1; ltIndex < LT_MAX_CHARS; ltIndex++)
if (strchr(charOrder, ltIndex)) continue; {
if (strchr(charOrder, ltIndex))
continue;
lookupTable[ltIndex] = weight; lookupTable[ltIndex] = weight;
weight++; weight++;
} }
int charIndex; int charIndex;
for (charIndex = 0; charOrder[charIndex]; charIndex++) { for (charIndex = 0; charOrder[charIndex]; charIndex++)
{
lookupTable[(int)charOrder[charIndex]] = weight; lookupTable[(int)charOrder[charIndex]] = weight;
weight++; weight++;
} }
@ -480,8 +512,10 @@ StringUtils_compareStrings(const char* a, const char* b)
{ {
int diff = StringUtils_compareChars(*a, *b); int diff = StringUtils_compareChars(*a, *b);
while (diff == 0) { while (diff == 0)
if ((*a == 0) || (*b == 0)) { {
if ((*a == 0) || (*b == 0))
{
return b - a; return b - a;
} }
@ -510,8 +544,8 @@ StringUtils_sortList(LinkedList list)
selectedElement = list->next; selectedElement = list->next;
while (selectedElement != NULL) { while (selectedElement != NULL)
{
list->next = selectedElement->next; list->next = selectedElement->next;
selectedElement->next = NULL; selectedElement->next = NULL;
@ -519,23 +553,26 @@ StringUtils_sortList(LinkedList list)
LinkedList prevElement = sortedList; LinkedList prevElement = sortedList;
while (true) { while (true)
{
if (prevElement->next == NULL) { if (prevElement->next == NULL)
{
prevElement->next = selectedElement; prevElement->next = selectedElement;
break; break;
} }
char* str2 = (char*)LinkedList_getData(prevElement->next); char* str2 = (char*)LinkedList_getData(prevElement->next);
if (StringUtils_compareStrings(str1, str2) < 0) { if (StringUtils_compareStrings(str1, str2) < 0)
{
/* insert "nextElement" before */ /* insert "nextElement" before */
if (sortedList == prevElement) { if (sortedList == prevElement)
{
selectedElement->next = sortedList->next; selectedElement->next = sortedList->next;
sortedList->next = selectedElement; sortedList->next = selectedElement;
} }
else { else
{
selectedElement->next = prevElement->next; selectedElement->next = prevElement->next;
prevElement->next = selectedElement; prevElement->next = selectedElement;
} }
@ -567,19 +604,24 @@ convertHexStrToUint16(char* hexStr, uint16_t* result)
int i; int i;
int nibble; int nibble;
for (i = 0; i < strSize; i++) { for (i = 0; i < strSize; i++)
{
char nibbleChar = hexStr[i]; char nibbleChar = hexStr[i];
if ((nibbleChar > 47) && (nibbleChar < 58)) { if ((nibbleChar > 47) && (nibbleChar < 58))
{
nibble = nibbleChar - 48; nibble = nibbleChar - 48;
} }
else if ((nibbleChar > 96) && (nibbleChar < 103)) { else if ((nibbleChar > 96) && (nibbleChar < 103))
{
nibble = nibbleChar - 87; nibble = nibbleChar - 87;
} }
else if ((nibbleChar > 64) && (nibbleChar < 71)) { else if ((nibbleChar > 64) && (nibbleChar < 71))
{
nibble = nibbleChar - 55; nibble = nibbleChar - 55;
} }
else { else
{
return false; return false;
} }
@ -607,22 +649,24 @@ StringUtils_convertIPv6AdddressStringToByteArray(const char* addressString, uint
char* savePtr = (char*)addressString; char* savePtr = (char*)addressString;
char* sepPos = strchr(savePtr, ':'); char* sepPos = strchr(savePtr, ':');
while (sepPos) { while (sepPos)
{
memcpy(tokenBuf, savePtr, sepPos - savePtr); memcpy(tokenBuf, savePtr, sepPos - savePtr);
tokenBuf[sepPos - savePtr] = 0; tokenBuf[sepPos - savePtr] = 0;
savePtr = sepPos + 1; savePtr = sepPos + 1;
if (strlen(tokenBuf) == 0) { if (strlen(tokenBuf) == 0)
{
if (hasEmptyBlock) { if (hasEmptyBlock)
{
return false; return false;
} }
hasEmptyBlock = true; hasEmptyBlock = true;
emptyBlockIndex = blockCount; emptyBlockIndex = blockCount;
} }
else { else
{
uint16_t blockVal; uint16_t blockVal;
if (convertHexStrToUint16(tokenBuf, &blockVal) == false) if (convertHexStrToUint16(tokenBuf, &blockVal) == false)
@ -641,14 +685,16 @@ StringUtils_convertIPv6AdddressStringToByteArray(const char* addressString, uint
sepPos = strchr(savePtr, ':'); sepPos = strchr(savePtr, ':');
if (sepPos == NULL) { if (sepPos == NULL)
{
if (*savePtr != 0) if (*savePtr != 0)
sepPos = strchr(savePtr, 0); sepPos = strchr(savePtr, 0);
end = true; end = true;
} }
} }
if (hasEmptyBlock) { if (hasEmptyBlock)
{
/* shift blocks */ /* shift blocks */
int shiftBlocks = blockCount - emptyBlockIndex; int shiftBlocks = blockCount - emptyBlockIndex;
int shift = 8 - blockCount; int shift = 8 - blockCount;
@ -656,12 +702,14 @@ StringUtils_convertIPv6AdddressStringToByteArray(const char* addressString, uint
int s; int s;
/* fill empty blocks with zero */ /* fill empty blocks with zero */
for (s = blockCount; s < 8; s++) { for (s = blockCount; s < 8; s++)
{
addrBlocks[s] = 0; addrBlocks[s] = 0;
blockCount++; blockCount++;
} }
for (s = 0; s < shiftBlocks; s++) { for (s = 0; s < shiftBlocks; s++)
{
addrBlocks[s + emptyBlockIndex + shift] = addrBlocks[s + emptyBlockIndex]; addrBlocks[s + emptyBlockIndex + shift] = addrBlocks[s + emptyBlockIndex];
addrBlocks[s + emptyBlockIndex] = 0; addrBlocks[s + emptyBlockIndex] = 0;
} }
@ -672,7 +720,8 @@ StringUtils_convertIPv6AdddressStringToByteArray(const char* addressString, uint
int i = 0; int i = 0;
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++)
{
ipV6Addr[(i * 2)] = addrBlocks[i] / 0x100; ipV6Addr[(i * 2)] = addrBlocks[i] / 0x100;
ipV6Addr[(i * 2) + 1] = addrBlocks[i] & 0xff; ipV6Addr[(i * 2) + 1] = addrBlocks[i] & 0xff;
} }

Loading…
Cancel
Save