Commit bd23a79e authored by Wolfram Sang's avatar Wolfram Sang Committed by Chris Ball
Browse files

fix GCC7 build by refactoring trimming routines



I got a compile error with GCC7. When trimming white spaces from strings
lsmmc uses strncpy with overlapping memory areas. This is not allowed.
In addition, the implementation was not efficient with calling strlen
and strncpy once per iteration. Refactor the code to be valid and more
effective.
Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: default avatarChris Ball <chris@printf.net>
parent b4fe0c8c
......@@ -316,8 +316,9 @@ int parse_ids(struct config *config)
/* MMC/SD file parsing functions */
char *read_file(char *name)
{
char *preparsed;
char line[4096];
char *preparsed, *start = line;
int len;
FILE *f;
f = fopen(name, "r");
......@@ -348,12 +349,17 @@ char *read_file(char *name)
}
line[sizeof(line) - 1] = '\0';
len = strlen(line);
while (isspace(line[strlen(line) - 1]))
line[strlen(line) - 1] = '\0';
while (len > 0 && isspace(line[len - 1]))
len--;
while (isspace(line[0]))
strncpy(&line[0], &line[1], sizeof(line));
while (len > 0 && isspace(*start)) {
start++;
len--;
}
memmove(line, start, len);
line[len] = '\0';
return strdup(line);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment