Fix very obscure bug that corrupted the input of non-ascii characters.
This is caused by calling QFileInfo::canonicalFilePath() before creating the QApplication object. So now the first thing we do is creating the QApplication object. This breaks the kde plugin, which we are not using anyway. git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@275 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
parent
d569b51e6c
commit
e531a8a7ff
|
@ -131,13 +131,13 @@ set(keepassx_TRANSLATIONS
|
||||||
translations/keepassx-tr_TR.ts
|
translations/keepassx-tr_TR.ts
|
||||||
)
|
)
|
||||||
|
|
||||||
IF( MINGW )
|
#IF( MINGW )
|
||||||
SET(keepassx_SOURCES ${keepassx_SOURCES} main_win32.cpp)
|
# SET(keepassx_SOURCES ${keepassx_SOURCES} main_win32.cpp)
|
||||||
ELSEIF( APPLE )
|
#ELSEIF( APPLE )
|
||||||
SET(keepassx_SOURCES ${keepassx_SOURCES} main_macx.cpp)
|
# SET(keepassx_SOURCES ${keepassx_SOURCES} main_macx.cpp)
|
||||||
ELSE( MINGW )
|
#ELSE( MINGW )
|
||||||
SET(keepassx_SOURCES ${keepassx_SOURCES} main_unix.cpp)
|
# SET(keepassx_SOURCES ${keepassx_SOURCES} main_unix.cpp)
|
||||||
ENDIF( MINGW )
|
#ENDIF( MINGW )
|
||||||
|
|
||||||
IF( AUTOTYPE )
|
IF( AUTOTYPE )
|
||||||
SET(keepassx_HEADERS ${keepassx_HEADERS}
|
SET(keepassx_HEADERS ${keepassx_HEADERS}
|
||||||
|
|
81
src/main.cpp
81
src/main.cpp
|
@ -48,14 +48,42 @@ IIconTheme* IconLoader=NULL;
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
QApplication* app=NULL;
|
#if defined(Q_WS_X11) && defined(GLOBAL_AUTOTYPE)
|
||||||
initAppPaths(argc,argv);
|
QApplication* app = new KeepassApplication(argc,argv);
|
||||||
|
#else
|
||||||
|
QApplication* app = new QApplication(argc,argv);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
AppDir = QApplication::applicationFilePath();
|
||||||
|
AppDir.truncate(AppDir.lastIndexOf("/"));
|
||||||
|
#if defined(Q_WS_X11)
|
||||||
|
DataDir=AppDir+"/../share/keepassx";
|
||||||
|
if (!QFile::exists(DataDir) && QFile::exists(AppDir+"/share"))
|
||||||
|
DataDir=AppDir+"/share";
|
||||||
|
HomeDir = QDir::homePath()+"/.keepassx";
|
||||||
|
#elif defined(Q_WS_MAC)
|
||||||
|
HomeDir = QDir::homePath()+"/.keepassx";
|
||||||
|
DataDir=AppDir+"/../Resources/keepassx";
|
||||||
|
#else //Q_WS_WIN
|
||||||
|
HomeDir = QString::fromLocal8Bit(qgetenv("APPDATA").constData());
|
||||||
|
if(!HomeDir.isEmpty() && QFile::exists(HomeDir))
|
||||||
|
HomeDir = QDir::fromNativeSeparators(HomeDir)+"/KeePassX";
|
||||||
|
else
|
||||||
|
HomeDir = QDir::homePath()+"/KeePassX";
|
||||||
|
|
||||||
|
DataDir=AppDir+"/share";
|
||||||
|
#endif
|
||||||
|
|
||||||
CmdLineArgs args;
|
CmdLineArgs args;
|
||||||
if(!args.preparse(argc,argv)){ // searches only for the -cfg parameter
|
if ( !args.parse(QApplication::arguments()) ){
|
||||||
qCritical("%s\n", CSTR( args.error() ));
|
qCritical("%s\n", CSTR( args.error() ));
|
||||||
args.printHelp();
|
args.printHelp();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
if (args.help()){
|
||||||
|
args.printHelp();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//Load Config
|
//Load Config
|
||||||
QString IniFilename;
|
QString IniFilename;
|
||||||
|
@ -120,22 +148,6 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
if(!app){
|
|
||||||
#if defined(Q_WS_X11) && defined(GLOBAL_AUTOTYPE)
|
|
||||||
app = new KeepassApplication(argc,argv);
|
|
||||||
#else
|
|
||||||
app = new QApplication(argc,argv);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if ( !args.parse(QApplication::arguments()) ){
|
|
||||||
qCritical("%s\n", CSTR( args.error() ));
|
|
||||||
args.printHelp();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (args.help()){
|
|
||||||
args.printHelp();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
DetailViewTemplate=config->detailViewTemplate();
|
DetailViewTemplate=config->detailViewTemplate();
|
||||||
|
|
||||||
|
@ -190,7 +202,16 @@ bool CmdLineArgs::parse(const QStringList& argv){
|
||||||
break; // break, because other arguments will be ignored anyway
|
break; // break, because other arguments will be ignored anyway
|
||||||
}
|
}
|
||||||
if(argv[i]=="-cfg"){
|
if(argv[i]=="-cfg"){
|
||||||
//already done in preparse() -> skip
|
if(argv.size() == i+1){
|
||||||
|
Error="Missing argument for '-cfg'.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(argv[i+1].left(1)=="-"){
|
||||||
|
Error=QString("Expected a path as argument for '-cfg' but got '%1.'").arg(argv[i+1]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QFileInfo file(argv[i+1]);
|
||||||
|
ConfigLocation=file.absoluteFilePath();
|
||||||
i++;
|
i++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -212,26 +233,6 @@ bool CmdLineArgs::parse(const QStringList& argv){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CmdLineArgs::preparse(int argc,char** argv){
|
|
||||||
for(int i=1;i<argc;i++){
|
|
||||||
if(QString(argv[i])=="-cfg"){
|
|
||||||
if(argc==i+1){
|
|
||||||
Error="Missing argument for '-cfg'.";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(QString(argv[i+1]).left(1)=="-"){
|
|
||||||
Error=QString("Expected a path as argument for '-cfg' but got '%1.'").arg(argv[i+1]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
QFileInfo file(argv[i+1]);
|
|
||||||
ConfigLocation=file.absoluteFilePath();
|
|
||||||
i++;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CmdLineArgs::printHelp(){
|
void CmdLineArgs::printHelp(){
|
||||||
cerr << "KeePassX " << APP_VERSION << endl;
|
cerr << "KeePassX " << APP_VERSION << endl;
|
||||||
cerr << "Usage: keepassx [filename] [options]" << endl;
|
cerr << "Usage: keepassx [filename] [options]" << endl;
|
||||||
|
|
|
@ -56,7 +56,7 @@ unix : !macx : !isEqual(QMAKE_WIN32,1){
|
||||||
SOURCES += Application_X11.cpp lib/AutoTypeGlobalX11.cpp
|
SOURCES += Application_X11.cpp lib/AutoTypeGlobalX11.cpp
|
||||||
HEADERS += Application_X11.h lib/AutoTypeGlobalX11.h
|
HEADERS += Application_X11.h lib/AutoTypeGlobalX11.h
|
||||||
}
|
}
|
||||||
SOURCES += main_unix.cpp
|
# SOURCES += main_unix.cpp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ macx {
|
||||||
}
|
}
|
||||||
isEqual(ARCH,INTEL): CONFIG += x86
|
isEqual(ARCH,INTEL): CONFIG += x86
|
||||||
isEqual(ARCH,PPC): CONFIG += ppc
|
isEqual(ARCH,PPC): CONFIG += ppc
|
||||||
SOURCES += main_macx.cpp
|
# SOURCES += main_macx.cpp
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
@ -110,7 +110,7 @@ isEqual(QMAKE_WIN32,1){
|
||||||
}
|
}
|
||||||
RC_FILE = ../share/win_ico/keepassx.rc
|
RC_FILE = ../share/win_ico/keepassx.rc
|
||||||
QMAKE_LINK_OBJECT_SCRIPT = $${OBJECTS_DIR}/$${QMAKE_LINK_OBJECT_SCRIPT}
|
QMAKE_LINK_OBJECT_SCRIPT = $${OBJECTS_DIR}/$${QMAKE_LINK_OBJECT_SCRIPT}
|
||||||
SOURCES += main_win32.cpp
|
# SOURCES += main_win32.cpp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue