michael@1: // michael@1: // OSSP asgui - Accounting system graphical user interface michael@3: // Copyright (c) 2002-2008 The OSSP Project (http://www.ossp.org/) michael@3: // Copyright (c) 2002-2008 Ralf S. Engelschall michael@3: // Copyright (c) 2002-2008 Michael Schloh von Bennewitz michael@3: // Copyright (c) 2002-2008 Cable & Wireless Telecommunications Services GmbH michael@1: // michael@1: // This file is part of OSSP asgui, an accounting system graphical user michael@3: // interface which can be found at http://asgui.europalab.com/. michael@1: // michael@1: // Permission to use, copy, modify, and distribute this software for michael@1: // any purpose with or without fee is hereby granted, provided that michael@1: // the above copyright notice and this permission notice appear in all michael@1: // copies. michael@1: // michael@1: // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED michael@1: // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@1: // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. michael@1: // IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR michael@1: // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@1: // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT michael@1: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF michael@1: // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND michael@1: // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@1: // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@1: // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@1: // SUCH DAMAGE. michael@1: // michael@1: // as_user.cpp: ISO C++ implementation michael@1: // michael@1: michael@1: // For username research michael@1: #if defined(Q_OS_WIN32) michael@1: #include michael@1: #else michael@1: #include michael@1: #include michael@1: #endif // #if defined(Q_OS_WIN32) michael@1: michael@1: // Local class definitions michael@1: #include "as_user.h" michael@1: #include "as_const.h" michael@1: michael@1: michael@1: // Constructor michael@1: User::User(void) michael@1: { michael@1: // Start the show by getting the username michael@1: #if defined(Q_OS_WIN32) michael@1: { michael@1: DWORD dwWinusernamesize = sizeof(dwWinusernamesize); michael@1: #if defined(UNICODE) michael@1: TCHAR szWinusername[UNLEN + 1]; // UNLEN is defined in lmcons.h michael@1: GetUserName(szWinusername, &dwWinusernamesize); michael@1: m_Name = qt_winQString(szWinusername); michael@1: #else // Not unicode michael@1: char szWinusername[UNLEN + 1]; // UNLEN is defined in lmcons.h michael@1: GetUserNameA(szWinusername, &dwWinusernamesize); michael@1: this->setName(szWinusername); michael@1: } michael@1: #endif // #if defined(UNICODE) michael@1: #else // Not windows michael@1: { michael@1: //#include michael@1: // char *szUser = NULL; michael@1: // szUser = cuserid(); michael@1: // m_Name = QString::fromLocal8Bit(szUser); michael@1: michael@1: // Get the user name from the environment michael@1: char *szLogin = getenv(TITRAQ_ENVUSERNAME); michael@1: if (szLogin == NULL) // Is the user name in the environment? michael@1: szLogin = getlogin(); // No, so fetch it from the system michael@1: michael@1: // Get the home directory from the environment michael@1: char *szHomedir = getenv(TITRAQ_ENVHOMEDIR); michael@1: if (szHomedir == NULL) { // Is the home directory in the environment? michael@1: passwd *pUserpwd = getpwnam(szLogin); // No, so fetch it from the system michael@1: szHomedir = pUserpwd->pw_dir; // Drill into the password struct michael@1: } michael@1: michael@1: this->setName(szLogin); michael@1: this->setHomedir(szHomedir); michael@1: } michael@1: #endif // #if defined(Q_OS_WIN32) michael@1: }