Adding a helper function that translates single characters in a string.
This commit is contained in:
@@ -50,23 +50,6 @@ struct private_plugin_loader_t {
|
|||||||
linked_list_t *names;
|
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
|
#ifdef MONOLITHIC
|
||||||
/**
|
/**
|
||||||
* load a single plugin in monolithic mode
|
* load a single plugin in monolithic mode
|
||||||
@@ -83,7 +66,7 @@ static plugin_t* load_plugin(private_plugin_loader_t *this,
|
|||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
sanitize(create);
|
translate(create, "-", "_");
|
||||||
constructor = dlsym(RTLD_DEFAULT, create);
|
constructor = dlsym(RTLD_DEFAULT, create);
|
||||||
if (constructor == NULL)
|
if (constructor == NULL)
|
||||||
{
|
{
|
||||||
@@ -120,7 +103,7 @@ static plugin_t* load_plugin(private_plugin_loader_t *this,
|
|||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
sanitize(create);
|
translate(create, "-", "_");
|
||||||
if (lib->integrity)
|
if (lib->integrity)
|
||||||
{
|
{
|
||||||
if (!lib->integrity->check_file(lib->integrity, name, file))
|
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;
|
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.
|
* 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);
|
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.
|
* Creates a directory and all required parent directories.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user