Adding a helper function that translates single characters in a string.
This commit is contained in:
parent
d14203b009
commit
d543d9cadf
|
@ -50,23 +50,6 @@ struct private_plugin_loader_t {
|
|||
linked_list_t *names;
|
||||
};
|
||||
|
||||
/**
|
||||
* Replace '-' with '_' to use str as identifier.
|
||||
*/
|
||||
static char* sanitize(char *str)
|
||||
{
|
||||
char *pos = str;
|
||||
while (pos && *pos)
|
||||
{
|
||||
if (*pos == '-')
|
||||
{
|
||||
*pos = '_';
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
#ifdef MONOLITHIC
|
||||
/**
|
||||
* load a single plugin in monolithic mode
|
||||
|
@ -83,7 +66,7 @@ static plugin_t* load_plugin(private_plugin_loader_t *this,
|
|||
{
|
||||
return NULL;
|
||||
}
|
||||
sanitize(create);
|
||||
translate(create, "-", "_");
|
||||
constructor = dlsym(RTLD_DEFAULT, create);
|
||||
if (constructor == NULL)
|
||||
{
|
||||
|
@ -120,7 +103,7 @@ static plugin_t* load_plugin(private_plugin_loader_t *this,
|
|||
{
|
||||
return NULL;
|
||||
}
|
||||
sanitize(create);
|
||||
translate(create, "-", "_");
|
||||
if (lib->integrity)
|
||||
{
|
||||
if (!lib->integrity->check_file(lib->integrity, name, file))
|
||||
|
|
|
@ -116,6 +116,28 @@ void *memstr(const void *haystack, const char *needle, size_t n)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Described in header.
|
||||
*/
|
||||
char* translate(char *str, const char *from, const char *to)
|
||||
{
|
||||
char *pos = str;
|
||||
if (strlen(from) != strlen(to))
|
||||
{
|
||||
return str;
|
||||
}
|
||||
while (pos && *pos)
|
||||
{
|
||||
char *match;
|
||||
if ((match = strchr(from, *pos)) != NULL)
|
||||
{
|
||||
*pos = to[match - from];
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Described in header.
|
||||
*/
|
||||
|
|
|
@ -310,6 +310,14 @@ void memxor(u_int8_t dest[], u_int8_t src[], size_t n);
|
|||
*/
|
||||
void *memstr(const void *haystack, const char *needle, size_t n);
|
||||
|
||||
/**
|
||||
* Translates the characters in the given string, searching for characters
|
||||
* in 'from' and mapping them to characters in 'to'.
|
||||
* The two characters sets 'from' and 'to' must contain the same number of
|
||||
* characters.
|
||||
*/
|
||||
char *translate(char *str, const char *from, const char *to);
|
||||
|
||||
/**
|
||||
* Creates a directory and all required parent directories.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue