[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