summaryrefslogtreecommitdiff
path: root/library/global.cpp
authorsandman <sandman>2002-11-24 18:21:41 (UTC)
committer sandman <sandman>2002-11-24 18:21:41 (UTC)
commit89bf0723eefc1e66a104fe8135f1a5389f021442 (patch) (side-by-side diff)
treea7db1ba8fa34d8226fe9baa9e7c488c86ad95445 /library/global.cpp
parentee62e73ddc29a5015c4a3e569be90dbfce4652c6 (diff)
downloadopie-89bf0723eefc1e66a104fe8135f1a5389f021442.zip
opie-89bf0723eefc1e66a104fe8135f1a5389f021442.tar.gz
opie-89bf0723eefc1e66a104fe8135f1a5389f021442.tar.bz2
- LD_PRELOADing of libpreload.so in case the user selected [x] Force style
settings in appearance - Some code to NOT style some applications, based on the binary name (also selectable in appearance)
Diffstat (limited to 'library/global.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/library/global.cpp b/library/global.cpp
index 9b3c51e..42c2729 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -601,21 +601,37 @@ void Global::invoke(const QString &c)
if ( QFile::exists( libexe ) ) {
qDebug("calling quickexec %s", libexe.latin1() );
quickexecv( libexe.utf8().data(), (const char **)args );
} else
#endif
{
+ char *oldpre = ::getenv ( "LD_PRELOAD" );
+
+ extern bool opie_block_style;
+
+ QString newpre = QPEApplication::qpeDir ( ) + "/lib/libpreload.so";
+ if ( opie_block_style && QFile::exists ( newpre )) {
+ if ( oldpre && oldpre [0] )
+ newpre = newpre + ":" + oldpre;
+ ::setenv ( "LD_PRELOAD", newpre. latin1( ), 1 );
+ qDebug ( "\nPRELOADING\n" );
+ }
+
if ( !::vfork() ) {
for ( int fd = 3; fd < 100; fd++ )
::close( fd );
::setpgid( ::getpid(), ::getppid() );
// Try bindir first, so that foo/bar works too
::execv( qpeDir()+"/bin/"+args[0], (char * const *)args );
::execvp( args[0], (char * const *)args );
_exit( -1 );
}
+ if ( oldpre )
+ ::setenv ( "LD_PRELOAD", oldpre, 1 );
+ else
+ ::unsetenv ( "LD_PRELOAD" );
}
StartingAppList::add( list[0] );
#endif //QT_NO_QWS_MULTIPROCESS
}