util/misc: Change shortening format and add unittests

Ticket: #5583
pull/14359/head
Jhonny Sousa 12 months ago committed by Victor Julien
parent 626027a456
commit 05a4aaf2c0

@ -248,7 +248,7 @@ static int LiveSafeDeviceName(const char *devname, char *newdevname, size_t dest
return 1;
}
ShortenString(devname, newdevname, destlen, '.');
ShortenString(devname, newdevname, destlen, '~');
SCLogInfo("%s: shortening device name to %s", devname, newdevname);
} else {

@ -222,20 +222,17 @@ void ShortenString(const char *input,
if (half == 0 || half > output_size)
return;
size_t spaces = (output_size - 1) - (half * 2);
/* Add the first half to the new string */
snprintf(output, half+1, "%s", input);
/* Add the amount of spaces wanted */
size_t length = half;
for (size_t i = half; i < half + spaces; i++) {
char s[2] = "";
snprintf(s, sizeof(s), "%c", c);
length = strlcat(output, s, output_size);
}
const size_t second_half_len = (output_size - 1) - half - 1;
/* Add space and the separator character */
const char *second_half_start = input + (str_len - second_half_len);
snprintf(output + length, half + 1, "%s", input + (str_len - half));
size_t remaining_size = output_size - half;
snprintf(output + half, remaining_size, "%c%s", c, second_half_start);
}
/*********************************Unittests********************************/
@ -813,10 +810,56 @@ static int UtilMiscParseSizeStringTest02(void)
PASS;
}
static int UtilMiscShortenStringTest01(void)
{
char buffer[100];
const char *original = "abcdefghijklmnopqrstuvwxyz";
const char sep = '~';
const char *expected = NULL;
memset(buffer, 0, sizeof(buffer));
expected = "abc~wxyz";
ShortenString(original, buffer, 9, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
memset(buffer, 0, sizeof(buffer));
expected = "abcd~wxyz";
ShortenString(original, buffer, 10, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
memset(buffer, 0, sizeof(buffer));
expected = "a~z";
ShortenString(original, buffer, 4, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
memset(buffer, 0, sizeof(buffer));
expected = "";
ShortenString(original, buffer, 3, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
memset(buffer, 0, sizeof(buffer));
expected = "";
ShortenString(original, buffer, 2, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
memset(buffer, 0, sizeof(buffer));
expected = "";
ShortenString(original, buffer, 1, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
memset(buffer, 0, sizeof(buffer));
expected = "";
ShortenString(original, buffer, 0, sep);
FAIL_IF_NOT(strcmp(buffer, expected) == 0);
PASS;
}
void UtilMiscRegisterTests(void)
{
UtRegisterTest("UtilMiscParseSizeStringTest01",
UtilMiscParseSizeStringTest01);
UtRegisterTest("UtilMiscParseSizeStringTest02", UtilMiscParseSizeStringTest02);
UtRegisterTest("UtilMiscShortenStringTest01", UtilMiscShortenStringTest01);
}
#endif /* UNITTESTS */

Loading…
Cancel
Save