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