Index: extractor_plugins.c =================================================================== --- extractor_plugins.c (revision 21634) +++ extractor_plugins.c (working copy) @@ -71,14 +71,14 @@ const char *(*opt_fun)(void); if (NULL != options) *options = NULL; - sym_name = strstr (prefix, "_"); + sym_name = strrchr (prefix, '_'); if (sym_name == NULL) return NULL; sym_name++; sym = strdup (sym_name); if (sym == NULL) return NULL; - dot = strstr (sym, "."); + dot = strchr (sym, '.'); if (dot != NULL) *dot = '\0'; name = malloc(strlen(sym) + strlen(template) + 1); Index: extractor_plugpath.c =================================================================== --- extractor_plugpath.c (revision 21634) +++ extractor_plugpath.c (working copy) @@ -407,7 +407,7 @@ if ( (NULL != (la = strstr (ent->d_name, ".la"))) && (la[3] == '\0') ) continue; /* only load '.so' and '.dll' */ - sym_name = strstr (ent->d_name, "_"); + sym_name = strrchr (ent->d_name, '_'); if (sym_name == NULL) continue; sym_name++; @@ -417,7 +417,7 @@ CLOSEDIR (dir); return; } - dot = strstr (sym, "."); + dot = strchr (sym, '.'); if (dot != NULL) *dot = '\0'; if (0 == strcmp (sym, sc->short_name)) @@ -491,7 +491,7 @@ (la[2] == '\0')) ) continue; /* only load '.so' and '.dll' */ - sym_name = strstr (ent->d_name, "_"); + sym_name = strrchr (ent->d_name, '_'); if (sym_name == NULL) continue; sym_name++; @@ -501,7 +501,7 @@ closedir (dir); return; } - dot = strstr (sym, "."); + dot = strchr (sym, '.'); if (dot != NULL) *dot = '\0'; #if DEBUG > 1