Index: kdebase/kcontrol/thememgr/theme.cpp
diff -u kdebase/kcontrol/thememgr/theme.cpp:1.65.2.1 kdebase/kcontrol/thememgr/theme.cpp:1.65.2.3
--- kdebase/kcontrol/thememgr/theme.cpp:1.65.2.1 Wed Oct 3 19:28:45 2001
+++ kdebase/kcontrol/thememgr/theme.cpp Fri Dec 6 23:52:50 2002
@@ -53,6 +53,8 @@
#include <kicontheme.h>
#include <kipc.h>
#include <kdebug.h>
+#include <kprocess.h>
+
#include "theme.h"
#include <kio/netaccess.h>
@@ -90,7 +92,7 @@
Theme::~Theme()
{
saveSettings();
- if (mMappings) delete mMappings;
+ delete mMappings;
}
@@ -186,9 +188,12 @@
int rc;
// cleanup work directory
- cmd = QString::fromLatin1( "rm -rf %1*" ).arg( workDir() );
- rc = system(cmd.local8Bit());
- if (rc) kdWarning() << "Error during cleanup of work directory: rc=" << rc << " " << cmd << endl;
+ if (!workDir().isEmpty()) {
+ KProcess p;
+ p << "/bin/rm" << "-rf" << workDir();
+ if(!p.start(KProcess::Block))
+ kdWarning() << "Error during cleanup of work directory: rc=" << rc << " " << cmd << endl;
+ }
}
void Theme::findThemerc(const QString &path, const QStringList &list)
@@ -238,11 +243,9 @@
if (i >= 0) str = workDir() + aPath.mid(i);
else str = workDir();
- cmd = QString("cp -r \"%1\" \"%2\"").arg(aPath).arg(str);
- kdDebug() << cmd << endl;
- rc = system(QFile::encodeName(cmd).data());
- if (rc)
- {
+ KProcess p;
+ p << "/bin/cp" << "-r" << aPath << str;
+ if(!p.start(KProcess::Block)) {
error = i18n("Theme contents could not be copied from\n%1\ninto\n%2")
.arg(aPath).arg(str);
return false;
@@ -251,8 +254,7 @@
else if (aPath.right(4) == ".zip")
{
// The theme given is a zip archive. Unpack the archive.
- cmd = QString("cd \"%1\"; unzip -qq \"%2\"")
- .arg(workDir()).arg(aPath);
+ cmd = QString::fromLatin1("cd ") + KShellProcess::quote(workDir()) + "; unzip -qq " + KShellProcess::quote(aPath);
kdDebug() << cmd << endl;
rc = system(QFile::encodeName(cmd).data());
if (rc)
@@ -265,9 +267,7 @@
else
{
// The theme given is a tar package. Unpack theme package.
- cmd = QString("cd \"%1\"; gzip -c -d \"%2\" | tar xf -")
- .arg(workDir()).arg(aPath);
- kdDebug() << cmd << endl;
+ cmd = QString::fromLatin1("cd ") + KShellProcess::quote(workDir()) + "; gzip -c -d " + KShellProcess::quote(aPath) + " | tar xf -";
rc = system(QFile::encodeName(cmd).data());
if (rc)
{
@@ -366,9 +366,7 @@
path += defaultExtension();
}
- QString cmd = QString("cd \"%1\";tar cf - *|gzip -c >\"%2\"").
- arg(workDir()).arg(path);
-
+ QString cmd = QString::fromLatin1("cd ") + KShellProcess::quote(workDir()) + ";tar cf - *|gzip -c >" + KShellProcess::quote(path);
kdDebug() << cmd << endl;
int rc = system(QFile::encodeName(cmd).data());
if (rc) kdDebug() << "Failed to save theme to " << aPath << " with command " << cmd << endl;
@@ -993,8 +991,8 @@
appName = cmd.mid(7).stripWhiteSpace();
str = i18n("Restart %1 to activate the new settings?").arg( appName );
if (KMessageBox::questionYesNo(0, str) == KMessageBox::Yes) {
- str.sprintf(mRestartCmd.local8Bit().data(), appName.local8Bit().data(),
- appName.local8Bit().data());
+ str.sprintf(mRestartCmd.local8Bit().data(), KShellProcess::quote(appName).local8Bit().data(),
+ KShellProcess::quote(appName).local8Bit().data());
system(str.local8Bit());
}
}
@@ -1014,11 +1012,7 @@
if (!fi.exists()) return false;
QFile::remove((fname + '~'));
- cmd.sprintf("mv \"%s\" \"%s~\"", fname.local8Bit().data(),
- fname.local8Bit().data());
- rc = system(cmd.local8Bit());
- if (rc) kdWarning() << "Cannot make backup copy of "
- << fname << ": mv returned " << rc << endl;
+ rc = ::rename(fname.local8Bit().data(), QString(fname + "~").local8Bit().data());
return (rc==0);
}
Index: kdebase/kcontrol/usbview/usbdevices.cpp
diff -u kdebase/kcontrol/usbview/usbdevices.cpp:1.3 kdebase/kcontrol/usbview/usbdevices.cpp:1.3.2.1
--- kdebase/kcontrol/usbview/usbdevices.cpp:1.3 Thu Jul 5 13:46:11 2001
+++ kdebase/kcontrol/usbview/usbdevices.cpp Fri Dec 6 12:30:40 2002
@@ -73,9 +73,9 @@
}
else if (line.left(2) == "D:")
{
- char buffer[10];
+ char buffer[11];
sscanf(line.local8Bit().data(),
- "D: Ver=%x.%x Cls=%x(%s) Sub=%x Prot=%x MxPS=%d #Cfgs=%d",
+ "D: Ver=%x.%x Cls=%x(%10s) Sub=%x Prot=%x MxPS=%d #Cfgs=%d",
&_verMajor, &_verMinor, &_class, buffer, &_sub, &_prot, &_maxPacketSize, &_configs);
_className = buffer;
}
Index: kdebase/kdm/backend/dm.c
diff -u kdebase/kdm/backend/dm.c:1.26.2.2 kdebase/kdm/backend/dm.c:1.26.2.4
--- kdebase/kdm/backend/dm.c:1.26.2.2 Wed Oct 3 12:47:11 2001
+++ kdebase/kdm/backend/dm.c Fri Dec 13 12:11:19 2002
@@ -363,6 +363,11 @@
#define UT_LINESIZE 32
#endif
+#define __stringify(x) #x
+#define stringify(x) __stringify(x)
+
+#define UT_LINESIZE_S stringify(UT_LINESIZE)
+
struct utmps {
struct utmps *next;
struct display *d;
@@ -436,7 +441,7 @@
#else
if (ut->ut_type == LOGIN_PROCESS)
{
- Debug ("utmp entry for %s marked waiting\n", utp->line);
+ Debug ("utmp entry for %." UT_LINESIZE_S "s marked waiting\n", utp->line);
utp->state = UtWait;
}
else if (ut->ut_type != USER_PROCESS)
@@ -445,7 +450,7 @@
#endif
{
utp->hadSess = 1;
- Debug ("utmp entry for %s marked active\n", utp->line);
+ Debug ("utmp entry for %." UT_LINESIZE_S "s marked active\n", utp->line);
utp->state = UtActive;
}
if (utp->time < ut->ut_time)
@@ -460,7 +465,7 @@
{
utp->state = UtWait;
utp->time = now;
- Debug ("utmp entry for %s marked waiting\n", utp->line);
+ Debug ("utmp entry for %." UT_LINESIZE_S "s marked waiting\n", utp->line);
}
#elif defined(sun)
endutxent();
@@ -479,8 +484,8 @@
if (remains <= 0)
{
struct display *d = utp->d;
- Debug ("console login for %s at %s timed out\n",
- utp->d->name, utp->line);
+ Debug ("console login for %s at %." UT_LINESIZE_S "s timed out\n",
+ d->name, utp->line);
*utpp = utp->next;
free (utp);
ExitDisplay (d, TRUE, TRUE, TRUE);
Index: kdebase/kioslave/finger/kio_finger.cpp
diff -u kdebase/kioslave/finger/kio_finger.cpp:1.15 kdebase/kioslave/finger/kio_finger.cpp:1.15.2.1
--- kdebase/kioslave/finger/kio_finger.cpp:1.15 Fri May 11 22:59:50 2001
+++ kdebase/kioslave/finger/kio_finger.cpp Fri Dec 6 03:35:07 2002
@@ -123,7 +123,7 @@
//kdDebug() << "Refresh rate: " << refreshRate << endl;
- myKProcess = new KShellProcess();
+ myKProcess = new KProcess();
*myKProcess << *myPerlPath << *myFingerPerlScript
<< *myFingerPath << *myFingerCSSFile
<< refreshRate << myURL->host() << myURL->user() ;
Index: kdebase/kioslave/finger/kio_finger.h
diff -u kdebase/kioslave/finger/kio_finger.h:1.6 kdebase/kioslave/finger/kio_finger.h:1.6.4.1
--- kdebase/kioslave/finger/kio_finger.h:1.6 Thu Nov 2 19:48:09 2000
+++ kdebase/kioslave/finger/kio_finger.h Fri Dec 6 03:35:07 2002
@@ -54,7 +54,7 @@
QString *myStdStream;
- KShellProcess *myKProcess;
+ KProcess *myKProcess;
void getProgramPath();
void parseCommandLine(const KURL& url);
Index: kdebase/kioslave/finger/kio_finger.pl
diff -u kdebase/kioslave/finger/kio_finger.pl:1.7 kdebase/kioslave/finger/kio_finger.pl:1.7.2.1
--- kdebase/kioslave/finger/kio_finger.pl:1.7 Sun Jul 29 18:58:28 2001
+++ kdebase/kioslave/finger/kio_finger.pl Fri Dec 6 03:35:07 2002
@@ -65,8 +65,9 @@
# Run finger command and save it into a buffer
-$buffer = `$FINGERCMD $USER\@$HOST`;
-@lines = split /^/m, $buffer;
+open(F, "-|") || exec $FINGERCMD, "$USER\@$HOST";
+@lines = <F>;
+close(F);
# Do highlighting using perl regular expressions on every line received.
# Order is important here.
Index: kdebase/kioslave/info/info.cc
diff -u kdebase/kioslave/info/info.cc:1.16 kdebase/kioslave/info/info.cc:1.16.4.1
--- kdebase/kioslave/info/info.cc:1.16 Sun Dec 3 22:01:55 2000
+++ kdebase/kioslave/info/info.cc Fri Dec 6 17:53:42 2002
@@ -63,11 +63,21 @@
if ( m_page.isEmpty() )
m_page = "dir";
- QString cmds("%1 %2 %3 %4 \"%5\" \"%6\"");
- QCString cmd = cmds.arg(m_perl).arg(m_infoScript).arg(locate("data", "kio_info/kde-info2html.conf")).arg(KGlobal::dirs()->findResourceDir("icon", "hicolor/22x22/actions/up.png")).arg(m_page).arg(m_node).latin1();
- //kdDebug( 7108 ) << "cmd: " << (const char *)cmd << endl;
+ QString cmd = KShellProcess::quote(m_perl);
+ cmd += " ";
+ cmd += KShellProcess::quote(m_infoScript);
+ cmd += " ";
+ cmd += KShellProcess::quote(locate("data", "kio_info/kde-info2html.conf"));
+ cmd += " ";
+ cmd += KShellProcess::quote(KGlobal::dirs()->findResourceDir("icon", "hicolor/22x22/actions/up.png"));
+ cmd += " ";
+ cmd += KShellProcess::quote(m_page);
+ cmd += " ";
+ cmd += KShellProcess::quote(m_node);
- FILE *fd = popen( cmd.data(), "r" );
+ kdDebug( 7108 ) << "cmd: " << cmd << endl;
+
+ FILE *fd = popen( QFile::encodeName(cmd), "r" );
char buffer[ 4090 ];
QByteArray array;
Index: kdebase/klipper/klipperrc
diff -u kdebase/klipper/klipperrc:1.26.2.1 kdebase/klipper/klipperrc:1.26.2.2
--- kdebase/klipper/klipperrc:1.26.2.1 Sat Aug 25 22:34:26 2001
+++ kdebase/klipper/klipperrc Sat Dec 7 03:07:40 2002
@@ -4,7 +4,7 @@
Regexp=^\\/.+\\.jpg$
[Action_0/Command_0]
-Commandline=kview "%s"
+Commandline=kview %s
Description=Launch K&View
Enabled=true
@@ -14,7 +14,7 @@
Regexp=^https?:\\/\\/
[Action_1/Command_0]
-Commandline=kfmclient exec '%s'
+Commandline=kfmclient exec %s
Description=Open with &Konqueror
Enabled=true
@@ -29,12 +29,12 @@
Enabled=true
[Action_1/Command_3]
-Commandline=kmail --body '%s'
+Commandline=kmail --body %s
Description=Send &URL
Enabled=true
[Action_1/Command_4]
-Commandline=kmail --attach '%s'
+Commandline=kmail --attach %s
Description=Send &Page
Enabled=true
@@ -49,7 +49,7 @@
Enabled=true
[Action_2/Command_1]
-Commandline=konsole -e mutt `echo "%s" | sed 's/mailto://g'`
+Commandline=konsole -e mutt `echo %s | sed 's/mailto://g'`
Description=Launch &mutt
Enabled=true
@@ -59,12 +59,12 @@
Regexp=^\\/.+\\.txt$
[Action_3/Command_0]
-Commandline=kedit "%s"
+Commandline=kedit %s
Description=Launch K&Edit
Enabled=true
[Action_3/Command_1]
-Commandline=kwrite "%s"
+Commandline=kwrite %s
Description=Launch K&Write
Enabled=true
@@ -74,12 +74,12 @@
Regexp=^file:.
[Action_4/Command_0]
-Commandline=kmail --body '%s'
+Commandline=kmail --body %s
Description=Send &URL
Enabled=true
[Action_4/Command_1]
-Commandline=kmail --attach '%s'
+Commandline=kmail --attach %s
Description=Send &File
Enabled=true
@@ -89,12 +89,12 @@
Regexp=^gopher:.
[Action_5/Command_0]
-Commandline=kmail --body '%s'
+Commandline=kmail --body %s
Description=Send &URL
Enabled=true
[Action_5/Command_1]
-Commandline=kmail --attach '%s'
+Commandline=kmail --attach %s
Description=Send &File
Enabled=true
@@ -104,7 +104,7 @@
Regexp=^ftp:\\/\\/
[Action_6/Command_0]
-Commandline=kfmclient exec '%s'
+Commandline=kfmclient exec %s
Description=Open with &Konqueror
Enabled=true
@@ -119,12 +119,12 @@
Enabled=true
[Action_6/Command_3]
-Commandline=kmail --body '%s'
+Commandline=kmail --body %s
Description=Send &URL
Enabled=true
[Action_6/Command_4]
-Commandline=kmail --attach '%s'
+Commandline=kmail --attach %s
Description=Send &File
Enabled=true
Index: kdebase/klipper/toplevel.cpp
diff -u kdebase/klipper/toplevel.cpp:1.59.2.2 kdebase/klipper/toplevel.cpp:1.59.2.3
--- kdebase/klipper/toplevel.cpp:1.59.2.2 Sat Oct 27 22:42:36 2001
+++ kdebase/klipper/toplevel.cpp Sun Nov 11 15:36:16 2001
@@ -39,7 +39,7 @@
#define CONFIG_ITEM 60
#define EMPTY_ITEM 80
-#define MENU_ITEMS 7
+#define MENU_ITEMS 8
// the <clipboard empty> item
#define EMPTY (pQPMmenu->count() - MENU_ITEMS)
Index: kdebase/klipper/urlgrabber.cpp
diff -u kdebase/klipper/urlgrabber.cpp:1.23.2.2 kdebase/klipper/urlgrabber.cpp:1.23.2.3
--- kdebase/klipper/urlgrabber.cpp:1.23.2.2 Tue Oct 30 16:28:23 2001
+++ kdebase/klipper/urlgrabber.cpp Sat Dec 7 03:07:40 2002
@@ -201,42 +201,39 @@
{
if ( command->isEnabled ) {
QString cmdLine = command->command;
+ QString escClipData = KShellProcess::quote(myClipData);
- // escape $ to avoid it being expanded by the shell
- QString escClipData = myClipData;
- escClipData.replace( QRegExp( "\\$" ), "\\$" );
-
- // replace "%s" with the clipboard contents
+ // replace "%s", '%s' and %s with the clipboard contents
+ // the quotes have to be replaced as well as they might
+ // be part of config files from older klipper versions
// replace \%s to %s
- int pos = 0;
-
+ int pos;
while ( (pos = cmdLine.find("%s", pos)) >= 0 ) {
- if ( pos > 0 && cmdLine.at( pos -1 ) == '\\' ) {
+ if ( pos > 0 && cmdLine.at( pos - 1 ) == '\\' ) {
cmdLine.remove( pos -1, 1 ); // \%s -> %s
pos++;
}
+ else if (pos > 0 && (cmdLine[pos - 1] == '\'' || cmdLine[pos - 1] == '"') &&
+ pos + 2 < cmdLine.length() && cmdLine[pos + 2] == cmdLine[pos - 1]) {
+ cmdLine.replace ( pos - 1, 4, escClipData );
+ pos += escClipData.length();
+ }
else {
cmdLine.replace( pos, 2, escClipData );
pos += escClipData.length();
}
}
- startProcess( cmdLine );
- }
-}
-
-
-void URLGrabber::startProcess( const QString& cmdLine ) const
-{
- kdDebug() << "now starting " << cmdLine << endl;
- if ( cmdLine.isEmpty() )
- return;
+ kdDebug() << "now starting " << cmdLine << endl;
+ if ( cmdLine.isEmpty() )
+ return;
- KShellProcess proc;
- proc << cmdLine.simplifyWhiteSpace().stripWhiteSpace();
+ KShellProcess proc;
+ proc << cmdLine.stripWhiteSpace();
- if ( !proc.start(KProcess::DontCare, KProcess::NoCommunication ))
- qWarning("Klipper: Couldn't start process!");
+ if ( !proc.start(KProcess::DontCare, KProcess::NoCommunication ))
+ qWarning("Klipper: Couldn't start process!");
+ }
}
Index: kdebase/klipper/urlgrabber.h
diff -u kdebase/klipper/urlgrabber.h:1.10 kdebase/klipper/urlgrabber.h:1.10.4.1
--- kdebase/klipper/urlgrabber.h:1.10 Tue Jan 30 22:46:15 2001
+++ kdebase/klipper/urlgrabber.h Sat Dec 7 03:07:40 2002
@@ -63,7 +63,6 @@
private:
const ActionList& matchingActions( const QString& );
void execute( const struct ClipCommand *command ) const;
- void startProcess( const QString& cmdLine ) const;
void editData();
bool isAvoidedWindow() const;
void actionMenu( bool wm_class_check );
Index: kdebase/konsole/src/TEWidget.C
diff -u kdebase/konsole/src/TEWidget.C:1.76.2.5 kdebase/konsole/src/TEWidget.C:1.76.2.8
--- kdebase/konsole/src/TEWidget.C:1.76.2.5 Mon Oct 1 23:11:44 2001
+++ kdebase/konsole/src/TEWidget.C Wed Feb 20 09:58:27 2002
@@ -1172,7 +1172,7 @@
dropText += " ";
bPopup = false; // more than one file, don't popup
}
- KURL url(p);
+ KURL url(QUriDrag::uriToUnicodeUri(p));
QString tmp;
if (url.isLocalFile()) {
tmp = url.path(); // local URL : remove protocol
@@ -1181,7 +1181,8 @@
tmp = url.url();
bPopup = false; // a non-local file, don't popup
}
- KRun::shellQuote(tmp);
+ if (strlist.count()>1)
+ KRun::shellQuote(tmp);
dropText += tmp;
}
@@ -1212,6 +1213,7 @@
switch (item)
{
case 0: // paste
+ KRun::shellQuote(dropText);
currentSession->getEmulation()->sendString(dropText.local8Bit());
// KWM::activate((Window)this->winId());
break;
@@ -1227,7 +1229,7 @@
dropText = url.directory( true, false ); // remove filename
}
}
- dropText.replace(QRegExp(" "), "\\ "); // escape spaces
+ KRun::shellQuote(dropText);
currentSession->getEmulation()->sendString(dropText.local8Bit());
currentSession->getEmulation()->sendString("\n");
// KWM::activate((Window)this->winId());
Index: kdebase/kscreensaver/kxsconfig/kxsconfig.cpp
diff -u kdebase/kscreensaver/kxsconfig/kxsconfig.cpp:1.8 kdebase/kscreensaver/kxsconfig/kxsconfig.cpp:1.8.6.1
--- kdebase/kscreensaver/kxsconfig/kxsconfig.cpp:1.8 Wed Aug 2 01:20:45 2000
+++ kdebase/kscreensaver/kxsconfig/kxsconfig.cpp Thu Feb 21 13:48:16 2002
@@ -256,7 +256,8 @@
KApplication app;
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
-
+ if(args->count()==0)
+ exit(1);
KXSConfigDialog *dialog = new KXSConfigDialog(args->arg(0));
dialog->show();
Index: kdebase/ksysguard/ksysguardd/Linux/diskstat.c
diff -u kdebase/ksysguard/ksysguardd/Linux/diskstat.c:1.7 kdebase/ksysguard/ksysguardd/Linux/diskstat.c:1.7.2.1
--- kdebase/ksysguard/ksysguardd/Linux/diskstat.c:1.7 Mon Jun 4 16:45:05 2001
+++ kdebase/ksysguard/ksysguardd/Linux/diskstat.c Fri Dec 6 11:44:57 2002
@@ -44,7 +44,7 @@
char *getMntPnt(const char *cmd)
{
- static char device[1024];
+ static char device[1025];
char *ptr;
memset(device, 0, sizeof(device));
Index: kdebase/ksysguard/ksysguardd/Linux/logfile.c
diff -u kdebase/ksysguard/ksysguardd/Linux/logfile.c:1.6 kdebase/ksysguard/ksysguardd/Linux/logfile.c:1.6.2.1
--- kdebase/ksysguard/ksysguardd/Linux/logfile.c:1.6 Thu Jul 26 23:32:28 2001
+++ kdebase/ksysguard/ksysguardd/Linux/logfile.c Fri Dec 6 11:50:04 2002
@@ -102,7 +102,7 @@
void registerLogFile(const char* cmd)
{
- char name[256];
+ char name[257];
FILE* file;
LogFileEntry *entry;
int i;
Index: kdebase/ksysguard/ksysguardd/Linux/stat.c
diff -u kdebase/ksysguard/ksysguardd/Linux/stat.c:1.18 kdebase/ksysguard/ksysguardd/Linux/stat.c:1.18.2.1
--- kdebase/ksysguard/ksysguardd/Linux/stat.c:1.18 Mon Jun 4 16:45:05 2001
+++ kdebase/ksysguard/ksysguardd/Linux/stat.c Fri Dec 6 11:57:40 2002
@@ -963,10 +963,10 @@
printDiskIO(const char* cmd)
{
int major, minor;
- char name[16];
+ char name[17];
DiskIOInfo* ptr;
- sscanf(cmd, "disk/%d:%d/%s", &major, &minor, name);
+ sscanf(cmd, "disk/%d:%d/%16s", &major, &minor, name);
if (Dirty)
processStat();
@@ -1009,10 +1009,10 @@
printDiskIOInfo(const char* cmd)
{
int major, minor;
- char name[16];
+ char name[17];
DiskIOInfo* ptr = DiskIO;
- sscanf(cmd, "disk/%d:%d/%s", &major, &minor, name);
+ sscanf(cmd, "disk/%d:%d/%16s", &major, &minor, name);
while (ptr && (ptr->major != major || ptr->minor != minor))
ptr = ptr->next;