0.0.2d: Added BGA support, graphics!
This commit is contained in:
75
lib/string.c
75
lib/string.c
@ -492,3 +492,78 @@ void strlnstripip(char* s)
|
||||
s[len-1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
char** split(const char* str, char delim)
|
||||
{
|
||||
if (!str)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t count = 1;
|
||||
for (const char* p = str; *p; p++)
|
||||
{
|
||||
if (*p == delim)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
char** result = malloc((count + 1) * sizeof(char*));
|
||||
if (!result)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t idx = 0;
|
||||
const char* start = str;
|
||||
|
||||
for (const char* p = str; ; p++)
|
||||
{
|
||||
if (*p == delim || *p == '\0')
|
||||
{
|
||||
size_t len = p - start;
|
||||
|
||||
char* token = malloc(len + 1);
|
||||
if (!token)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
token[i] = start[i];
|
||||
}
|
||||
|
||||
token[len] = '\0';
|
||||
|
||||
result[idx++] = token;
|
||||
|
||||
start = p + 1;
|
||||
|
||||
if (*p == '\0')
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result[idx] = NULL; /* null-terminate the array */
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void free_split(char** parts)
|
||||
{
|
||||
if (!parts)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; parts[i] != NULL; i++)
|
||||
{
|
||||
free(parts[i]);
|
||||
}
|
||||
|
||||
free(parts);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user