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
{
return NULL;
}
- sanitize(create);
+ translate(create, "-", "_");
constructor = dlsym(RTLD_DEFAULT, create);
if (constructor == NULL)
{
{
return NULL;
}
- sanitize(create);
+ translate(create, "-", "_");
if (lib->integrity)
{
if (!lib->integrity->check_file(lib->integrity, name, file))
/**
* 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.
+ */
bool mkdir_p(const char *path, mode_t mode)
{
int len;
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.
*
* @param path path to the new directory