Apply parts of patch #1908868
Use QApplication::applicationDirPath() on unix and win32 git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@173 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
		
							parent
							
								
									5db29eafed
								
							
						
					
					
						commit
						97bac939dd
					
				
							
								
								
									
										13
									
								
								src/main.cpp
								
								
								
								
							
							
						
						
									
										13
									
								
								src/main.cpp
								
								
								
								
							| 
						 | 
				
			
			@ -58,7 +58,7 @@ QPixmap* EntryIcons;
 | 
			
		|||
inline void loadImages();
 | 
			
		||||
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang,bool& ArgMin,bool& ArgLock);
 | 
			
		||||
bool loadTranslation(QTranslator* tr,const QString& prefix,const QString& LocaleCode,const QStringList& SearchPaths);
 | 
			
		||||
void initAppPaths(int argc, char **argv);
 | 
			
		||||
void initAppPaths();
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ int main(int argc, char **argv)
 | 
			
		|||
#else
 | 
			
		||||
	app = new QApplication(argc,argv);
 | 
			
		||||
#endif
 | 
			
		||||
	initAppPaths(argc,argv);
 | 
			
		||||
	initAppPaths();
 | 
			
		||||
	CmdLineArgs args;
 | 
			
		||||
	args.parse(QApplication::arguments());
 | 
			
		||||
	qDebug(CSTR(AppDir));
 | 
			
		||||
| 
						 | 
				
			
			@ -288,10 +288,6 @@ void CmdLineArgs::printHelp(){
 | 
			
		|||
	cout << "                              pt_BR  Portuguese(Brazil)"<<endl;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//TODO Plugins
 | 
			
		||||
/*
 | 
			
		||||
QString findPlugin(const QString& filename){
 | 
			
		||||
| 
						 | 
				
			
			@ -304,8 +300,3 @@ QString findPlugin(const QString& filename){
 | 
			
		|||
	return QString();
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,8 @@
 | 
			
		|||
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <QVarLengthArray>
 | 
			
		||||
#include <QDir>
 | 
			
		||||
#include <Carbon/Carbon.h>
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,56 +19,14 @@
 | 
			
		|||
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <QtCore>
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
#include <QByteArray>
 | 
			
		||||
#include <QDir>
 | 
			
		||||
#include <QFileInfo>
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
void initAppPaths(int argc,char** argv) {
 | 
			
		||||
	// Try looking for a /proc/<pid>/exe symlink first which points to
 | 
			
		||||
	// the absolute path of the executable
 | 
			
		||||
	QFileInfo pfi(QString::fromLatin1("/proc/%1/exe").arg(getpid()));
 | 
			
		||||
	if (pfi.exists() && pfi.isSymLink()) {
 | 
			
		||||
		AppDir = pfi.canonicalFilePath();
 | 
			
		||||
	}
 | 
			
		||||
	else {	
 | 
			
		||||
		QString argv0 = QFile::decodeName(QByteArray(argv[0]));
 | 
			
		||||
		QString absPath;
 | 
			
		||||
		
 | 
			
		||||
		if (!argv0.isEmpty() && argv0.at(0) == QLatin1Char('/')) {
 | 
			
		||||
				/*
 | 
			
		||||
				If argv0 starts with a slash, it is already an absolute
 | 
			
		||||
				file path.
 | 
			
		||||
				*/
 | 
			
		||||
			absPath = argv0;
 | 
			
		||||
		} else if (argv0.contains(QLatin1Char('/'))) {
 | 
			
		||||
				/*
 | 
			
		||||
				If argv0 contains one or more slashes, it is a file path
 | 
			
		||||
				relative to the current directory.
 | 
			
		||||
				*/
 | 
			
		||||
			absPath = QDir::current().absoluteFilePath(argv0);
 | 
			
		||||
		} else {
 | 
			
		||||
				/*
 | 
			
		||||
				Otherwise, the file path has to be determined using the
 | 
			
		||||
				PATH environment variable.
 | 
			
		||||
				*/
 | 
			
		||||
			QByteArray pEnv = qgetenv("PATH");
 | 
			
		||||
			QDir currentDir = QDir::current();
 | 
			
		||||
			QStringList paths = QString::fromLocal8Bit(pEnv.constData()).split(QLatin1String(":"));
 | 
			
		||||
			for (QStringList::const_iterator p = paths.constBegin(); p != paths.constEnd(); ++p) {
 | 
			
		||||
				if ((*p).isEmpty())
 | 
			
		||||
					continue;
 | 
			
		||||
				QString candidate = currentDir.absoluteFilePath(*p + QLatin1Char('/') + argv0);
 | 
			
		||||
				QFileInfo candidate_fi(candidate);
 | 
			
		||||
				if (candidate_fi.exists() && !candidate_fi.isDir()) {
 | 
			
		||||
					absPath = candidate;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}		
 | 
			
		||||
		absPath = QDir::cleanPath(absPath);		
 | 
			
		||||
		QFileInfo fi(absPath);
 | 
			
		||||
		AppDir = fi.exists() ? fi.canonicalFilePath() : QString();
 | 
			
		||||
	}
 | 
			
		||||
	AppDir.truncate(AppDir.lastIndexOf("/"));
 | 
			
		||||
	DataDir=AppDir+"/../share/keepassx";
 | 
			
		||||
void initAppPaths() {
 | 
			
		||||
	AppDir = QApplication::applicationDirPath();
 | 
			
		||||
	DataDir = QDir(AppDir+"/../share/keepassx").canonicalPath();
 | 
			
		||||
	HomeDir = QDir::homePath()+"/.keepassx";
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,22 +19,13 @@
 | 
			
		|||
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
#include <QDir>
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
void initAppPaths(int argc,char** argv){
 | 
			
		||||
	QFileInfo filePath;
 | 
			
		||||
	QT_WA({
 | 
			
		||||
		wchar_t module_name[256];
 | 
			
		||||
		GetModuleFileNameW(0, module_name, sizeof(module_name) / sizeof(wchar_t));
 | 
			
		||||
		filePath = QString::fromUtf16((ushort *)module_name);
 | 
			
		||||
	}, {
 | 
			
		||||
		char module_name[256];
 | 
			
		||||
		GetModuleFileNameA(0, module_name, sizeof(module_name));
 | 
			
		||||
		filePath = QString::fromLocal8Bit(module_name);
 | 
			
		||||
	});	
 | 
			
		||||
	AppDir = filePath.filePath();
 | 
			
		||||
	AppDir.truncate(AppDir.lastIndexOf("/"));
 | 
			
		||||
void initAppPaths(){
 | 
			
		||||
	AppDir = QApplication::applicationDirPath();
 | 
			
		||||
	
 | 
			
		||||
	HomeDir = QString::fromLocal8Bit(qgetenv("APPDATA").constData());
 | 
			
		||||
	if(!HomeDir.isEmpty() && QFile::exists(HomeDir))
 | 
			
		||||
| 
						 | 
				
			
			@ -43,4 +34,4 @@ void initAppPaths(int argc,char** argv){
 | 
			
		|||
		HomeDir = QDir::homePath()+"/KeePassX";
 | 
			
		||||
	
 | 
			
		||||
	DataDir=AppDir+"/share";
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ unix : !macx : !isEqual(QMAKE_WIN32,1) {
 | 
			
		|||
    }
 | 
			
		||||
    TARGET = ../bin/keepassx
 | 
			
		||||
    target.path = $${PREFIX}/bin
 | 
			
		||||
    data.files += ../share/keepassx
 | 
			
		||||
    data.files = ../share/keepassx
 | 
			
		||||
    data.path = $${PREFIX}/share
 | 
			
		||||
    pixmaps.files = ../share/pixmaps/*
 | 
			
		||||
    pixmaps.path = $${PREFIX}/share/pixmaps
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ macx {
 | 
			
		|||
    isEmpty(PREFIX):PREFIX = /Applications
 | 
			
		||||
    TARGET = ../bin/KeePassX
 | 
			
		||||
    target.path = $${PREFIX}
 | 
			
		||||
    data.files += ../share/keepassx
 | 
			
		||||
    data.files = ../share/keepassx
 | 
			
		||||
    data.path = Contents/Resources
 | 
			
		||||
    LIBS += -framework CoreFoundation
 | 
			
		||||
    isEqual(LINK,DYNAMIC) {
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +90,7 @@ isEqual(QMAKE_WIN32,1) {
 | 
			
		|||
    isEmpty(PREFIX):PREFIX = "C:/Program files/KeePassX"
 | 
			
		||||
    TARGET = ../bin/KeePassX
 | 
			
		||||
    target.path = $${PREFIX}
 | 
			
		||||
    data.files += ../share/keepassx/*
 | 
			
		||||
    data.files = ../share/keepassx/*
 | 
			
		||||
    data.path = $${PREFIX}/share
 | 
			
		||||
    !isEqual(INSTALL_QTLIB,0) {
 | 
			
		||||
        qt_libs.files = $${QMAKE_LIBDIR_QT}/QtCore4.dll $${QMAKE_LIBDIR_QT}/QtGui4.dll $${QMAKE_LIBDIR_QT}/QtXml4.dll
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue