aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar TheXception2007-04-13 22:49:15 +0000
committerGravatar TheXception2007-04-13 22:49:15 +0000
commitf4154c3e60bf7f14705258fca6174fa15933f9c8 (patch)
tree65174c59de5a7925e1aac47c1ae015c7aa2463f9 /src/modules
parentupdate win qt4 project (diff)
downloadKVIrc-f4154c3e60bf7f14705258fca6174fa15933f9c8.tar.gz
KVIrc-f4154c3e60bf7f14705258fca6174fa15933f9c8.tar.bz2
KVIrc-f4154c3e60bf7f14705258fca6174fa15933f9c8.zip
some small fixes and changes for $system.call
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@488 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/system/libkvisystem.cpp6
-rw-r--r--src/modules/system/plugin.cpp82
-rw-r--r--src/modules/system/plugin.h22
3 files changed, 52 insertions, 58 deletions
diff --git a/src/modules/system/libkvisystem.cpp b/src/modules/system/libkvisystem.cpp
index 7c18e4064..512d2c42e 100644
--- a/src/modules/system/libkvisystem.cpp
+++ b/src/modules/system/libkvisystem.cpp
@@ -671,7 +671,7 @@ static bool system_kvs_cmd_setenv(KviKvsModuleCommandCall * c)
static bool system_kvs_fnc_plugin_call(KviKvsModuleFunctionCall *c)
{
- return g_pPluginManager->PluginCall(c);
+ return g_pPluginManager->pluginCall(c);
}
static bool system_module_init(KviModule * m)
@@ -701,14 +701,14 @@ static bool system_module_init(KviModule * m)
static bool system_module_cleanup(KviModule *m)
{
- g_pPluginManager->UnloadAll(true);
+ g_pPluginManager->unloadAll(true);
delete g_pPluginManager;
return true;
}
static bool system_module_can_unload(KviModule *m)
{
- if(!g_pPluginManager->CheckUnload()) return false;
+ if(!g_pPluginManager->checkUnload()) return false;
return true;
}
diff --git a/src/modules/system/plugin.cpp b/src/modules/system/plugin.cpp
index 1314c6127..300da5aba 100644
--- a/src/modules/system/plugin.cpp
+++ b/src/modules/system/plugin.cpp
@@ -30,6 +30,7 @@
#include "kvi_thread.h"
#include "kvi_locale.h"
#include "kvi_app.h"
+#include "kvi_fileutils.h"
#include <qdir.h>
#include <qfileinfo.h>
@@ -42,9 +43,9 @@ KviPlugin::~KviPlugin()
{
}
-bool KviPlugin::load(QString * pszPluginName)
+bool KviPlugin::load(QString& pszPluginName)
{
- m_Plugin = kvi_library_open(pszPluginName->ascii());
+ m_Plugin = kvi_library_open(pszPluginName.local8Bit());
if (!m_Plugin)
{
return false;
@@ -55,7 +56,7 @@ bool KviPlugin::load(QString * pszPluginName)
function_load = (plugin_unload)kvi_library_symbol(m_Plugin,"_load");
if (function_load)
{
- // ADD: THREAD
+ //TODO: THREAD
function_load();
}
return true;
@@ -68,7 +69,7 @@ bool KviPlugin::unload(bool forced)
function_unload = (plugin_unload)kvi_library_symbol(m_Plugin,"_unload");
if (function_unload)
{
- // ADD: THREAD
+ //TODO: THREAD
if(!function_unload())
{
if(!forced) return false;
@@ -83,16 +84,16 @@ bool KviPlugin::unload(bool forced)
return true;
}
-int KviPlugin::call(QString * pszFunctionName, int argc, char * argv[], char ** pBuffer)
+int KviPlugin::call(QString& pszFunctionName, int argc, char * argv[], char ** pBuffer)
{
int r;
plugin_function function_call;
- function_call = (plugin_function)kvi_library_symbol(m_Plugin,pszFunctionName->ascii());
+ function_call = (plugin_function)kvi_library_symbol(m_Plugin,pszFunctionName.local8Bit());
if (!function_call)
{
return -1;
} else {
- // ADD: THREAD
+ //TODO: THREAD
r = function_call(argc,argv,pBuffer);
}
if (r < 0) r = 0; // negative numbers are for error handling.
@@ -104,9 +105,9 @@ KviStr KviPlugin::name()
return m_szName;
}
-void KviPlugin::setName(QString * Name)
+void KviPlugin::setName(QString& Name)
{
- m_szName = Name->ascii();
+ m_szName = Name;
}
@@ -123,7 +124,7 @@ KviPluginManager::~KviPluginManager()
delete m_pPluginDict;
}
-bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
+bool KviPluginManager::pluginCall(KviKvsModuleFunctionCall *c)
{
QString szPluginName; //contains full path and plugin name like "c:/plugin.dll"
QString szSinglePluginName; // contains only the name of the plugin like "plugin.dll"
@@ -135,25 +136,22 @@ bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
KVSM_PARAMETERS_END(c)
//Check if there is such a plugin
- if(!FindPlugin(&szPluginName, &szSinglePluginName))
+ if(!findPlugin(szPluginName, szSinglePluginName))
{
c->error(__tr2qs("Plugin not found. Please check the plugin-name and path."));
return true;
}
// Check if plugin is already loaded
- if(!PluginIsLoaded(&szSinglePluginName))
+ if(!pluginIsLoaded(szSinglePluginName))
{
- c->warning("Plugin not loaded yet"); //REMOVE
//If not loaded try to load now
- if(!LoadPlugin(&szPluginName,&szSinglePluginName))
+ if(!loadPlugin(szPluginName,szSinglePluginName))
{
c->error(__tr2qs("Error while loading plugin."));
return true;
}
- } else c->warning("Plugin already loaded"); //REMOVE
-
- c->warning(szPluginName); //REMOVE
+ }
//Parsing more Parameters
int iArgc = 0;
@@ -178,7 +176,6 @@ bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
while (i < (iArgc + 2) )
{
c->params()->at(i)->asString(tmp);
- c->warning(tmp);
iSize += tmp.length()+1; //+1 for the \0 characters
i++;
}
@@ -194,7 +191,7 @@ bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
{
ppArgv[i-2] = x;
c->params()->at(i)->asString(tmp);
- strcpy(x,tmp.ascii());
+ strcpy(x,tmp.local8Bit());
x += tmp.length();
*x = 0;
@@ -204,8 +201,8 @@ bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
} else {
//Avoid using unfilled variables
- ppArgv = (char**)malloc(0);
- pArgvBuffer = (char*)malloc(0);
+ ppArgv = 0;
+ iArgc = 0;
}
//Preparing return buffer
@@ -213,8 +210,8 @@ bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
KviPlugin * plugin;
- plugin = GetPlugin(&szSinglePluginName);
- int r = plugin->call(&szFunctionName,iArgc,ppArgv,&returnBuffer);
+ plugin = getPlugin(szSinglePluginName);
+ int r = plugin->call(szFunctionName,iArgc,ppArgv,&returnBuffer);
if(r == -1)
{
@@ -233,7 +230,7 @@ bool KviPluginManager::PluginCall(KviKvsModuleFunctionCall *c)
return true;
}
-bool KviPluginManager::CheckUnload()
+bool KviPluginManager::checkUnload()
{
/*
Always called when system module should be unloaded
@@ -256,7 +253,7 @@ bool KviPluginManager::CheckUnload()
return m_bCanUnload;
}
-void KviPluginManager::UnloadAll(bool forced)
+void KviPluginManager::unloadAll(bool forced)
{
KviAsciiDictIterator<KviPlugin> it(*m_pPluginDict);
@@ -267,65 +264,62 @@ void KviPluginManager::UnloadAll(bool forced)
}
}
-bool KviPluginManager::FindPlugin(QString * pName, QString * pSingleName)
+bool KviPluginManager::findPlugin(QString& pName, QString& pSingleName)
{
QDir d;
- QFileInfo fi;
QString szPath;
//Trying to find the plugin directly
- d.setPath(*pName);
+ d.setPath(pName);
d.convertToAbs(); // To be sure that path is completly absolute!
- fi.setFile(d.path());
- if(!fi.exists())
+ if(!KviFileUtils::fileExists(d.path()))
{
//Plugin not found in direct way. Looking in kvirc local dir
- g_pApp->getGlobalKvircDirectory(szPath,KviApp::None,"easyplugins/"+*pName);
+ g_pApp->getGlobalKvircDirectory(szPath,KviApp::None,"easyplugins/"+pName);
d.setPath(szPath);
d.convertToAbs(); // To be sure that path is completly absolute!
- fi.setFile(d.path());
- if(!fi.exists())
+ if(!KviFileUtils::fileExists(d.path()))
{
//Plugin not found in kvirc local dir. Looking in kvirc global dir
- g_pApp->getLocalKvircDirectory(szPath,KviApp::None,"easyplugins/"+*pName);
+ g_pApp->getLocalKvircDirectory(szPath,KviApp::None,"easyplugins/"+pName);
d.setPath(szPath);
d.convertToAbs(); // To be sure that path is completly absolute!
- fi.setFile(d.path());
- if(!fi.exists())
+ if(!KviFileUtils::fileExists(d.path()))
{
return false;
}
}
}
- *pName = d.path();
- *pSingleName = fi.fileName();
+ pName = d.path();
+ pSingleName = KviFileUtils::extractFileName(pName); //TODO
+
return true;
}
-bool KviPluginManager::PluginIsLoaded(QString * pSingleName)
+bool KviPluginManager::pluginIsLoaded(QString& pSingleName)
{
- KviPlugin * p = m_pPluginDict->find(pSingleName->ascii());
+ KviPlugin * p = m_pPluginDict->find(pSingleName.local8Bit());
if (!p) return false; else return true;
}
-bool KviPluginManager::LoadPlugin(QString * pName, QString * pSingleName)
+bool KviPluginManager::loadPlugin(QString& pName, QString& pSingleName)
{
KviPlugin * plugin = new KviPlugin();
if(!plugin->load(pName)) return false;
plugin->setName(pSingleName);
- m_pPluginDict->insert(pSingleName->ascii(),plugin);
+ m_pPluginDict->insert(pSingleName.local8Bit(),plugin);
return true;
}
-KviPlugin * KviPluginManager::GetPlugin(QString * pSingleName)
+KviPlugin * KviPluginManager::getPlugin(QString& pSingleName)
{
- KviPlugin * p = m_pPluginDict->find(pSingleName->ascii());
+ KviPlugin * p = m_pPluginDict->find(pSingleName.local8Bit());
return p;
} \ No newline at end of file
diff --git a/src/modules/system/plugin.h b/src/modules/system/plugin.h
index c64a0f2d0..f2b532313 100644
--- a/src/modules/system/plugin.h
+++ b/src/modules/system/plugin.h
@@ -41,14 +41,14 @@ class KviPlugin
private:
// shared
// internal
- KviStr m_szName;
+ QString m_szName;
kvi_library_t m_Plugin;
public:
- bool load(QString * pszPluginName);
+ bool load(QString& pszPluginName);
bool unload(bool forced);
- int call(QString * pszFunctionName, int argc, char * argv[], char ** pBuffer);
+ int call(QString& pszFunctionName, int argc, char * argv[], char ** pBuffer);
KviStr name();
- void setName(QString * Name);
+ void setName(QString& Name);
protected:
};
@@ -63,14 +63,14 @@ class KviPluginManager
// internal
KviAsciiDict<KviPlugin> * m_pPluginDict;
public:
- bool PluginCall(KviKvsModuleFunctionCall *c);
- bool CheckUnload();
- void UnloadAll(bool forced);
+ bool pluginCall(KviKvsModuleFunctionCall *c);
+ bool checkUnload();
+ void unloadAll(bool forced);
protected:
- bool FindPlugin(QString * pName, QString * pSingleName);
- bool PluginIsLoaded(QString * pSingleName);
- bool LoadPlugin(QString * pName, QString * pSingleName);
- KviPlugin * GetPlugin(QString * pSingleName);
+ bool findPlugin(QString& pName, QString& pSingleName);
+ bool pluginIsLoaded(QString& pSingleName);
+ bool loadPlugin(QString& pName, QString& pSingleName);
+ KviPlugin * getPlugin(QString& pSingleName);
};
#endif //_PLUGIN_H_ \ No newline at end of file