summaryrefslogtreecommitdiffstats
path: root/kscreensaver/kxsconfig/kxsrun.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kscreensaver/kxsconfig/kxsrun.cpp')
-rw-r--r--kscreensaver/kxsconfig/kxsrun.cpp195
1 files changed, 0 insertions, 195 deletions
diff --git a/kscreensaver/kxsconfig/kxsrun.cpp b/kscreensaver/kxsconfig/kxsrun.cpp
deleted file mode 100644
index 6ffa1b15..00000000
--- a/kscreensaver/kxsconfig/kxsrun.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// KDE xscreensaver launcher
-//
-// Copyright (c) Martin R. Jones <mjones@kde.org> 1999
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public
-// License as published by the Free Software Foundation;
-// version 2 of the License.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; see the file COPYING. If not, write to
-// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-// Boston, MA 02110-1301, USA.
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-
-#include <tqptrlist.h>
-#include <tqfile.h>
-#include <tqfileinfo.h>
-
-#include <kdebug.h>
-#include <kapplication.h>
-#include <kconfig.h>
-#include <kstandarddirs.h>
-#include <klocale.h>
-#include <kcmdlineargs.h>
-
-#include "kxsitem.h"
-#include "kxsxml.h"
-
-#define MAX_ARGS 30
-
-template class TQPtrList<KXSConfigItem>;
-
-//===========================================================================
-static const char appName[] = "kxsrun";
-
-static const char description[] = I18N_NOOP("TDE X Screen Saver Launcher");
-
-static const char version[] = "3.0.0";
-
-static const KCmdLineOptions options[] =
-{
- {"+screensaver", I18N_NOOP("Filename of the screen saver to start"), 0},
- {"+-- [options]", I18N_NOOP("Extra options to pass to the screen saver"), 0},
- KCmdLineLastOption
-};
-
-int main(int argc, char *argv[])
-{
- KLocale::setMainCatalogue("kxsconfig");
- TDECmdLineArgs::init(argc, argv, appName, I18N_NOOP("KXSRun"), description, version);
-
- TDECmdLineArgs::addCmdLineOptions(options);
-
- TDEApplication app( false, false );
-
- TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
-
- if ( !args->count() )
- exit( 1 );
-
- TQString filename = args->arg(0);
- TQString configFile(filename);
-
- // Get the config filename
- int slash = filename.findRev('/');
- if (slash >= 0)
- configFile = filename.mid(slash+1);
-
- TQString exeName = configFile;
- configFile += "rc";
-
- // read configuration args
- TDEConfig config(configFile);
-
- TQPtrList<KXSConfigItem> configItemList;
-
- TQString xmlFile = "/doesntexist";
-#ifdef XSCREENSAVER_CONFIG_DIR
- xmlFile = XSCREENSAVER_CONFIG_DIR;
-#endif
- xmlFile += "/" + exeName + ".xml";
- if ( TQFile::exists( xmlFile ) ) {
- // We can use the xscreensaver xml config files.
- KXSXml xmlParser(0);
- xmlParser.parse(xmlFile);
- configItemList = *xmlParser.items();
- TQPtrListIterator<KXSConfigItem> it( configItemList );
- KXSConfigItem *item;
- while ( (item = it.current()) != 0 ) {
- ++it;
- item->read( config );
- }
- } else {
- // fall back to KDE's old config files.
- int idx = 0;
- while (true)
- {
- TQString group = TQString("Arg%1").arg(idx);
- if (config.hasGroup(group)) {
- config.setGroup(group);
- TQString type = config.readEntry("Type");
- if (type == "Range") {
- KXSRangeItem *rc = new KXSRangeItem(group, config);
- configItemList.append(rc);
- } else if (type == "DoubleRange") {
- KXSDoubleRangeItem *rc = new KXSDoubleRangeItem(group, config);
- configItemList.append(rc);
- } else if (type == "Check") {
- KXSBoolItem *cc = new KXSBoolItem(group, config);
- configItemList.append(cc);
- } else if (type == "DropList") {
- KXSSelectItem *si = new KXSSelectItem(group, config);
- configItemList.append(si);
- }
- } else {
- break;
- }
- idx++;
- }
- }
-
- // find the xscreensaver executable
- //work around a KStandarDirs::findExe() "feature" where it looks in $TDEDIR/bin first no matter what and sometimes finds the wrong executable
- TQFileInfo checkExe;
- TQString saverdir = TQString("%1/%2").arg(XSCREENSAVER_HACKS_DIR).arg(filename);
- kdDebug() << "saverdir is" << saverdir << endl;
- TQString exeFile;
- checkExe.setFile(saverdir);
- if (checkExe.exists() && checkExe.isExecutable() && checkExe.isFile())
- {
- exeFile = saverdir;
- }
-
-
- if (!exeFile.isEmpty()) {
- char *sargs[MAX_ARGS];
- sargs[0] = new char [strlen(filename.ascii())+1];
- strcpy(sargs[0], filename.ascii());
-
- // add the command line options
- TQString cmd;
- unsigned int i;
- for (i = 1; i < (unsigned)args->count(); i++)
- cmd += " " + TQString(args->arg(i));
-
- // add the config options
- KXSConfigItem *item;
- for (item = configItemList.first(); item != 0; item = configItemList.next()) {
- cmd += " " + item->command();
- }
-
- // put into char * array for execv
- TQString word;
- int si = 1;
- i = 0;
- bool inQuotes = false;
- while (i < cmd.length() && si < MAX_ARGS-1) {
- word = "";
- while ( cmd[i].isSpace() && i < cmd.length() ) i++;
- while ( (!cmd[i].isSpace() || inQuotes) && i < cmd.length() ) {
- if ( cmd[i] == '\"' ) {
- inQuotes = !inQuotes;
- } else {
- word += cmd[i];
- }
- i++;
- }
- if (!word.isEmpty()) {
- sargs[si] = new char [strlen(word.ascii())+1];
- strcpy(sargs[si], word.ascii());
- si++;
- }
- }
-
- sargs[si] = 0;
-
- // here goes...
- execv(exeFile.ascii(), sargs);
- }
-}
-
-