[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: Regarding QCoreApplication::applicationDirPath() and stripping
From:       David Faure <faure () kde ! org>
Date:       2009-10-15 11:57:58
Message-ID: 200910151357.58666.faure () kde ! org
[Download RAW message or body]

On Thursday 15 October 2009, George Kiagiadakis wrote:
> The problem:
> 
> The real problem here is that QCoreApplication::applicationDirPath()
> relies on argv[0] for finding the path and falls back to looking in
> $PATH if argv[0] does not contain a path. However, KCmdLineArgs for
> some strange reason strips the path from argv[0], discarding this
> valuable information. This happens in kcmdlineargs.cpp line 466:
> 
> ------------
>    // Strip path from argv[0]
>    if (s->argc) {
>      char *p = strrchr( s->argv[0], '/');
>      if (p)
>        s->argv[0] = p+1;
>    }
> -----------
> 
> And my question is, why is the path stripped there? Is there a good
> reason? Could I just get rid of this code?

Let me tell you about svn annotate ;-)
$ svn ann kcmdlineargs.cpp | grep Strip
 38560       waba    // Strip path from argv[0]
$ svn log -r38560 kcmdlineargs.cpp
WABA:
* Display argv[0] instead of appname.

Indeed,
$ konqueror --help
Usage: konqueror [Qt-options] [KDE-options] [...]
shows "konqueror", not the internal appname (from kcomponentdata, could be 
different in some cases I guess), nor the full path to konqueror.

> Maybe we could have a
> separate variable with the stripped argv[0] if it is needed for some
> purpose and pass the original one to QApplication?

Yep, sounds like a solution. For "some purpose", see KCmdLineArgs::appName,
KCmdLineArgs::usageError, KCmdLineArgs::usage. Basically all uses of argv[0] 
except when passing it to Qt.

KCmdLineArgs::init() is strange, it seems to do the opposite of what Waldo's 
commit was about, it uses the KAboutData appName as argv[0], this needs 
investigation.

-- 
David Faure, faure@kde.org, sponsored by Nokia to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic