diff options
| -rw-r--r-- | src/plugger.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/plugger.h b/src/plugger.h index 88628a9..59fa1ac 100644 --- a/src/plugger.h +++ b/src/plugger.h | |||
| @@ -114,7 +114,8 @@ namespace Bu | |||
| 114 | hPlugin.insert( pInfo->sID, pReg ); | 114 | hPlugin.insert( pInfo->sID, pReg ); |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | void registerExternalPlugin( const char *sFName, const char *sPluginName ) | 117 | void registerExternalPlugin( const Bu::FString &sFName, |
| 118 | const Bu::FString &sPluginName ) | ||
| 118 | { | 119 | { |
| 119 | PluginReg *pReg; | 120 | PluginReg *pReg; |
| 120 | try { | 121 | try { |
| @@ -130,20 +131,23 @@ namespace Bu | |||
| 130 | pReg = new PluginReg; | 131 | pReg = new PluginReg; |
| 131 | 132 | ||
| 132 | pReg->bBuiltin = false; | 133 | pReg->bBuiltin = false; |
| 133 | pReg->dlHandle = dlopen( sFName, RTLD_NOW ); | 134 | pReg->dlHandle = dlopen( sFName.getStr(), RTLD_NOW ); |
| 134 | if( pReg->dlHandle == NULL ) | 135 | if( pReg->dlHandle == NULL ) |
| 135 | { | 136 | { |
| 136 | throw PluginException( 1, "Error on %s: %s", sFName, dlerror() ); | 137 | throw PluginException( 1, "Error on %s: %s", sFName.getStr(), |
| 138 | dlerror() ); | ||
| 137 | } | 139 | } |
| 138 | pReg->pInfo = (PluginInfo *)dlsym( pReg->dlHandle, sPluginName ); | 140 | pReg->pInfo = (PluginInfo *)dlsym( pReg->dlHandle, |
| 141 | sPluginName.getStr() ); | ||
| 139 | if( pReg->pInfo == NULL ) | 142 | if( pReg->pInfo == NULL ) |
| 140 | { | 143 | { |
| 141 | throw PluginException( 2, "Error on %s: %s", sFName, dlerror() ); | 144 | throw PluginException( 2, "Error on %s: %s", sFName.getStr(), |
| 145 | dlerror() ); | ||
| 142 | } | 146 | } |
| 143 | hPlugin.insert( pReg->pInfo->sID, pReg ); | 147 | hPlugin.insert( pReg->pInfo->sID, pReg ); |
| 144 | } | 148 | } |
| 145 | 149 | ||
| 146 | T *instantiate( const char *lpName ) | 150 | T *instantiate( const Bu::FString &lpName ) |
| 147 | { | 151 | { |
| 148 | PluginReg *pReg = (PluginReg *)hPlugin[lpName]; | 152 | PluginReg *pReg = (PluginReg *)hPlugin[lpName]; |
| 149 | if( pReg == NULL ) | 153 | if( pReg == NULL ) |
| @@ -156,7 +160,7 @@ namespace Bu | |||
| 156 | return p; | 160 | return p; |
| 157 | } | 161 | } |
| 158 | 162 | ||
| 159 | bool hasPlugin( const char *lpName ) | 163 | bool hasPlugin( const Bu::FString &lpName ) |
| 160 | { | 164 | { |
| 161 | return hPlugin.has( lpName ); | 165 | return hPlugin.has( lpName ); |
| 162 | } | 166 | } |
