X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fidentity.cpp;h=26520989e49f1fa0a45fc4b3c45a21d9991b51ea;hp=40b0b2b6000034c78f7ef9e09896f732e369a7e8;hb=35592161284b2196444936f6ecd3dcb8d47b1b54;hpb=9ffb7c204ea6d658dafdb626f50230d4b890008c diff --git a/src/common/identity.cpp b/src/common/identity.cpp index 40b0b2b6..26520989 100644 --- a/src/common/identity.cpp +++ b/src/common/identity.cpp @@ -28,6 +28,12 @@ # include "mac_utils.h" #endif +#ifdef Q_OS_UNIX +# include +# include +# include +#endif + #ifdef Q_OS_WIN32 # include # include @@ -75,10 +81,17 @@ void Identity::init() { QString Identity::defaultNick() { QString nick = QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks + #ifdef Q_OS_MAC QString shortUserName = CFStringToQString(CSCopyUserName(true)); if(!shortUserName.isEmpty()) nick = shortUserName; + +#elif defined(Q_OS_UNIX) + QString userName = getlogin(); + if(!userName.isEmpty()) + nick = userName; + #elif defined(Q_OS_WIN32) TCHAR infoBuf[128]; DWORD bufCharCount = 128; @@ -93,16 +106,29 @@ QString Identity::defaultNick() { nick = nickName; } #endif + // cleaning forbidden characters from nick - QRegExp rx(QString("(^[\\d-]+|[^A-Za-z\x5b-\x60\x7b-\x7d])")); + QRegExp rx(QString("(^[\\d-]+|[^A-Za-z0-9\x5b-\x60\x7b-\x7d])")); nick.remove(rx); return nick; } QString Identity::defaultRealName() { QString generalDefault = tr("Quassel IRC User"); + #ifdef Q_OS_MAC return CFStringToQString(CSCopyUserName(false)); + +#elif defined(Q_OS_UNIX) + QString realName; + struct passwd *pwd = getpwuid(getuid()); + if(pwd) + realName = pwd->pw_gecos; + if(!realName.isEmpty()) + return realName; + else + return generalDefault; + #elif defined(Q_OS_WIN32) TCHAR infoBuf[128]; DWORD bufCharCount = 128; @@ -118,8 +144,7 @@ QString Identity::defaultRealName() { void Identity::setToDefaults() { setIdentityName(tr("")); setRealName(defaultRealName()); - QStringList n; - n << defaultNick(); + QStringList n = QStringList() << defaultNick(); setNicks(n); setAwayNick(""); setAwayNickEnabled(false);