KDECore
kshell.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "kshell.h"
00023 #include "kuser.h"
00024
00025 #include <QtCore/QDir>
00026
00027 namespace KShell {
00028
00029 QString homeDir( const QString &user )
00030 {
00031 if (user.isEmpty())
00032 return QDir::homePath();
00033 return KUser(user).homeDir();
00034 }
00035
00036 }
00037
00038 QString KShell::joinArgs( const QStringList &args )
00039 {
00040 QString ret;
00041 for (QStringList::ConstIterator it = args.begin(); it != args.end(); ++it) {
00042 if (!ret.isEmpty())
00043 ret.append(QLatin1Char(' '));
00044 ret.append(quoteArg(*it));
00045 }
00046 return ret;
00047 }
00048
00049 #ifdef Q_OS_WIN
00050 # define ESCAPE '^'
00051 #else
00052 # define ESCAPE '\\'
00053 #endif
00054
00055 QString KShell::tildeExpand( const QString &fname )
00056 {
00057 if (fname.length() && fname[0] == QLatin1Char('~')) {
00058 int pos = fname.indexOf( QLatin1Char('/') );
00059 if (pos < 0)
00060 return homeDir( fname.mid(1) );
00061 QString ret = homeDir( fname.mid(1, pos-1) );
00062 if (!ret.isNull())
00063 ret += fname.mid(pos);
00064 return ret;
00065 } else if (fname.length() > 1 && fname[0] == QLatin1Char(ESCAPE) && fname[1] == QLatin1Char('~')) {
00066 return fname.mid(1);
00067 }
00068 return fname;
00069 }