30 #include <QtCore/QString> 31 #include <QtCore/QLibrary> 32 #include <QtCore/QFile> 34 #if defined(Q_WS_WIN) || defined(Q_WS_MAC) 35 #define USE_KPROCESS_FOR_KIOSLAVES 38 #ifdef USE_KPROCESS_FOR_KIOSLAVES 39 #include <QtCore/QDir> 40 #include <QtCore/QProcess> 41 #include <QtCore/QStringList> 51 #include <kio/authinfo.h> 52 extern "C" KIO::AuthInfo* _kioslave_init_kio() {
return new KIO::AuthInfo(); }
59 fprintf(stderr,
"Usage: kioslave <slave-lib> <protocol> <klauncher-socket> <app-socket>\n\nThis program is part of KDE.\n");
63 setlocale(LC_ALL,
"");
65 QString libpath = QFile::decodeName(
argv[1]);
67 if (libpath.isEmpty())
69 fprintf(stderr,
"library path is empty.\n");
74 #ifdef USE_KPROCESS_FOR_KIOSLAVES 75 qDebug(
"trying to load '%s'", qPrintable(libpath));
77 if ( !lib.load() || !lib.isLoaded() )
79 #ifdef USE_KPROCESS_FOR_KIOSLAVES 81 lib.setFileName( libpath );
82 if(!lib.load() || !lib.isLoaded())
84 QByteArray kdedirs = qgetenv(
"KDEDIRS");
85 if (!kdedirs.size()) {
86 qDebug(
"not able to find '%s' because KDEDIRS environment variable is not set.\n" 87 "Set KDEDIRS to the KDE installation root dir and restart klauncher to fix this problem.",
91 QString paths = QString::fromLocal8Bit(kdedirs);
92 QStringList pathlist = paths.split(
';');
93 Q_FOREACH(
const QString &path, pathlist) {
94 QString slave_path = path + QLatin1String(
"/lib/kde4/") + QFileInfo(libpath).fileName();
95 qDebug(
"trying to load '%s'",slave_path.toLatin1().data());
96 lib.setFileName(slave_path);
97 if (lib.load() && lib.isLoaded() )
102 qWarning(
"could not open %s: %s", libpath.data(), qPrintable (lib.errorString()) );
107 fprintf(stderr,
"could not open %s: %s", qPrintable(libpath),
108 qPrintable (lib.errorString()) );
113 void* sym = lib.resolve(
"kdemain");
116 fprintf(stderr,
"Could not find kdemain: %s\n", qPrintable(lib.errorString() ));
122 QString slaveDebugWait( QString::fromLocal8Bit( qgetenv(
"KDE_SLAVE_DEBUG_WAIT") ) );
123 if (slaveDebugWait == QLatin1String(
"all") || slaveDebugWait ==
argv[2])
131 GetModuleFileName(NULL,buf, 1024);
133 params << QString::fromUtf16((
const unsigned short*)buf);
134 params << QString::number(GetCurrentProcessId());
135 QProcess::startDetached(
"gdb",params);
139 # if defined(Q_CC_MSVC) && !defined(_WIN32_WCE) 141 QString slaveDebugPopup( QString::fromLocal8Bit( qgetenv(
"KDE_SLAVE_DEBUG_POPUP") ) );
142 if (slaveDebugPopup == QLatin1String(
"all") || slaveDebugPopup ==
argv[2]) {
146 QString(
"Please attach the debugger to process #%1 (%2)").arg(getpid()).arg(
argv[0]).toLatin1(),
147 QString(
"\"%1\" KIO Slave Debugging").arg(
argv[2]).toLatin1(), MB_OK|MB_ICONINFORMATION|MB_TASKMODAL);
153 int (*
func)(int,
char *[]) = (
int (*)(int,
char *[])) sym;
int(* func)(int, char *[])
int main(int argc, char **argv)
static QString installPath(const char *type)