summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorSebastien Braun2010-10-06 00:04:49 +0200
committerSebastien Braun2010-10-06 00:04:49 +0200
commitf07fc3b426815e28fde23313242fbbb998a08d45 (patch)
treeba9eda1a83135a1727d2d35661d6facabee53b95 /src/util
parentFix recognition of letters in keyboard handler (diff)
parentMerge remote branch 'openslx/master' into mcastft (diff)
downloadpvs-f07fc3b426815e28fde23313242fbbb998a08d45.tar.gz
pvs-f07fc3b426815e28fde23313242fbbb998a08d45.tar.xz
pvs-f07fc3b426815e28fde23313242fbbb998a08d45.zip
Merge remote branch 'openslx/mcastft' into input
Conflicts: CMakeLists.txt i18n/pvs_ar_JO.ts i18n/pvs_de_DE.ts i18n/pvs_es_MX.ts i18n/pvs_fr_FR.ts i18n/pvs_pl_PL.ts i18n/pvsmgr_ar_JO.ts i18n/pvsmgr_de_DE.ts i18n/pvsmgr_es_MX.ts i18n/pvsmgr_fr_FR.ts i18n/pvsmgr_pl_PL.ts icons/README pvsmgr.qrc src/gui/mainWindow.cpp src/pvs.cpp src/pvs.h src/pvsDaemon.cpp src/util/clientGUIUtils.h
Diffstat (limited to 'src/util')
-rw-r--r--src/util/clientGUIUtils.cpp10
-rwxr-xr-x[-rw-r--r--]src/util/clientGUIUtils.h27
-rwxr-xr-xsrc/util/clientGUIUtils_Win32.cpp46
-rwxr-xr-xsrc/util/clientGUIUtils_X11.cpp179
-rwxr-xr-x[-rw-r--r--]src/util/consoleLogger.cpp10
-rw-r--r--src/util/consoleLogger.h2
-rw-r--r--src/util/pvsSettingsManager.cpp185
-rw-r--r--src/util/pvsSettingsManager.h50
-rwxr-xr-x[-rw-r--r--]src/util/util.cpp64
-rwxr-xr-x[-rw-r--r--]src/util/util.h6
10 files changed, 288 insertions, 291 deletions
diff --git a/src/util/clientGUIUtils.cpp b/src/util/clientGUIUtils.cpp
index a8a9487..ff002d3 100644
--- a/src/util/clientGUIUtils.cpp
+++ b/src/util/clientGUIUtils.cpp
@@ -143,13 +143,3 @@ bool BlankScreen::unlock()
return !(locked = false);
}
-static Display* _dpy = 0;
-
-Display* X11Info::display()
-{
- if(!_dpy)
- {
- _dpy = XOpenDisplay(0);
- }
- return _dpy;
-}
diff --git a/src/util/clientGUIUtils.h b/src/util/clientGUIUtils.h
index 4da0a99..7f7ea47 100644..100755
--- a/src/util/clientGUIUtils.h
+++ b/src/util/clientGUIUtils.h
@@ -1,21 +1,20 @@
+#ifndef _BLANKSCREEN_H_
+#define _BLANKSCREEN_H_
+
#include "src/util/consoleLogger.h"
-#include <X11/Xlib.h> // Every Xlib program must include this
-#include <X11/cursorfont.h>
#include <assert.h>
#include <unistd.h>
#include <stdio.h>
-
#define REFRESH_RATE 0.15
-
-#ifndef _BLANKSCREEN_H_
-#define _BLANKSCREEN_H_
+class BlankScreen_Sysdep;
class BlankScreen
{
public:
BlankScreen();
+ virtual ~BlankScreen();
void draw(bool force = false);
bool lock();
bool unlock();
@@ -23,23 +22,17 @@ public:
bool lock_inputs();
private:
- Display *dpy;
- Window win;
- XEvent ev;
- int scr;
-
- bool locked;
-
-
- QString lockMsg;
- int blackColor, whiteColor;
- int offX, offY;
+ BlankScreen_Sysdep* _sysdep;
};
+#ifndef __WIN32__
+# include <X11/Xlib.h>
+
class X11Info
{
public:
static Display* display();
};
+#endif /* !__WIN32__ */
#endif
diff --git a/src/util/clientGUIUtils_Win32.cpp b/src/util/clientGUIUtils_Win32.cpp
new file mode 100755
index 0000000..1b4d2ae
--- /dev/null
+++ b/src/util/clientGUIUtils_Win32.cpp
@@ -0,0 +1,46 @@
+
+#include "clientGUIUtils.h"
+#include <qwidget.h>
+
+struct BlankScreen_Sysdep {
+
+ bool locked;
+ QWidget* blankwin;
+
+ QString lockMsg;
+ int blackColor, whiteColor;
+ int offX, offY;
+};
+
+BlankScreen::BlankScreen()
+{
+ _sysdep = new BlankScreen_Sysdep;
+ _sysdep->blankwin = new QWidget(0, Qt::X11BypassWindowManagerHint | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
+ _sysdep->blankwin->setWindowState(Qt::WindowFullScreen);
+ _sysdep->blankwin->show();
+}
+
+BlankScreen::~BlankScreen()
+{
+ delete _sysdep;
+}
+
+void BlankScreen::draw(bool force)
+{
+
+}
+
+bool BlankScreen::lock()
+{
+ return true;
+}
+
+bool BlankScreen::lock_inputs()
+{
+ return true;
+}
+
+bool BlankScreen::unlock()
+{
+ return true;
+}
diff --git a/src/util/clientGUIUtils_X11.cpp b/src/util/clientGUIUtils_X11.cpp
new file mode 100755
index 0000000..4b5afe0
--- /dev/null
+++ b/src/util/clientGUIUtils_X11.cpp
@@ -0,0 +1,179 @@
+#include "clientGUIUtils.h"
+#include <X11/Xlib.h>
+#include <X11/cursorfont.h>
+
+
+struct BlankScreen_Sysdep {
+
+ Display *dpy;
+ Window win;
+ XEvent ev;
+ int scr;
+
+ bool locked;
+
+
+ QString lockMsg;
+ int blackColor, whiteColor;
+ int offX, offY;
+};
+
+BlankScreen::BlankScreen()
+{
+ _sysdep = new BlankScreen_Sysdep;
+ _sysdep->dpy = XOpenDisplay(NULL);
+ _sysdep->scr = DefaultScreen(_sysdep->dpy);
+ assert(_sysdep->dpy);
+ _sysdep->blackColor = BlackPixel(_sysdep->dpy, DefaultScreen(_sysdep->dpy));
+ _sysdep->whiteColor = WhitePixel(_sysdep->dpy, DefaultScreen(_sysdep->dpy));
+// win = XCreateSimpleWindow(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), 0, 0, 200, 100, 0, blackColor, whiteColor);
+ _sysdep->win = XCreateSimpleWindow(_sysdep->dpy, RootWindow(_sysdep->dpy, _sysdep->scr), 10, 10, 200, 200, 1, WhitePixel(_sysdep->dpy, _sysdep->scr), BlackPixel(_sysdep->dpy, _sysdep->scr));
+
+ XSelectInput(_sysdep->dpy, _sysdep->win, ExposureMask | KeyPressMask);
+ _sysdep->locked = false;
+ _sysdep->offX = _sysdep->offY = 0;
+}
+
+BlankScreen::~BlankScreen()
+{
+ delete _sysdep;
+}
+
+void BlankScreen::draw(bool force)
+{
+ if (_sysdep->locked)// no need to draw if we're not showing the window
+ {
+ XWindowAttributes xwa;
+ XGetWindowAttributes(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), &xwa);
+ int hx = (xwa.width)>>2, hy = (xwa.height)>>2;
+
+ if (XCheckTypedEvent(_sysdep->dpy, Expose, &_sysdep->ev) || force )
+ {
+ hx += _sysdep->offX;
+ hy += _sysdep->offY;
+
+ GC gcc = XCreateGC(_sysdep->dpy, _sysdep->win, 0, NULL);
+ XSetForeground(_sysdep->dpy, gcc, _sysdep->whiteColor);
+// XClearArea(_sysdep->dpy, _sysdep->win, 0, 0, xwa.width, xwa.height, false);
+ if (_sysdep->lockMsg.size() > 0)
+ {
+ char *msg = const_cast<char*>(_sysdep->lockMsg.toUtf8().data());
+ XDrawString(_sysdep->dpy, _sysdep->win, gcc/*DefaultGC(dpy, scr)*/, hx, hy, msg, strlen(msg));
+ }
+ else
+ {
+ }
+ }
+ }
+}
+
+bool BlankScreen::lock()
+{
+#define lock_test
+
+ if (_sysdep->locked)
+ return _sysdep->locked;
+
+ // We want to get MapNotify events
+ XSelectInput(_sysdep->dpy, _sysdep->win, StructureNotifyMask);
+
+ // "Map" the window (that is, make it appear on the screen)
+ XMapWindow(_sysdep->dpy, _sysdep->win);
+
+ // Create a "Graphics Context"
+ //GC gc = XCreateGC(dpy, win, 0, NULL);
+
+ XEvent xev;
+ Atom wm_state = XInternAtom(_sysdep->dpy, "_NET_WM_STATE", False);
+ Atom fullscreen = XInternAtom(_sysdep->dpy, "_NET_WM_STATE_FULLSCREEN", False);
+ memset(&xev, 0, sizeof(xev));
+ xev.type = ClientMessage;
+ xev.xclient.window = _sysdep->win;
+ xev.xclient.message_type = wm_state;
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = 1;
+ xev.xclient.data.l[1] = fullscreen;
+ xev.xclient.data.l[2] = 0;
+
+ XSendEvent(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), False,
+ SubstructureNotifyMask, &xev);
+
+
+
+
+ // Wait for the MapNotify event
+ for (;;)
+ {
+ XEvent e;
+ XNextEvent(_sysdep->dpy, &e);
+ if (e.type == MapNotify)
+ break;
+ }
+ //Flush it!
+ //XFlush(_sysdep->dpy);
+
+#ifndef lock_test
+ // load the locked cursor, so people dont think they can click anything
+ // TODO: Use some kind of invisible cursor instead of the wait-cursor
+ Cursor _sysdep->locked_cur = XCreateFontCursor(_sysdep->dpy, XC_watch);
+ XDefineCursor(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy),_sysdep->locked_cur);
+#endif
+
+ // grabbing of keyboard and mouse and hide the cursor
+ XGrabKeyboard(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), false, GrabModeAsync, GrabModeAsync, CurrentTime);
+ XGrabPointer(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), false, 0, GrabModeAsync, GrabModeAsync, None, NULL, CurrentTime);
+
+ if (!_sysdep->locked)
+ ConsoleLog writeLine(QString("Locked"));
+
+ // see header for more information on this switch
+ return _sysdep->locked = true;
+}
+
+bool BlankScreen::lock_inputs()
+{
+ // grabbing of keyboard and mouse and hide the cursor
+ XGrabKeyboard(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), false, GrabModeAsync, GrabModeAsync, CurrentTime);
+ XGrabPointer(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), false, 0, GrabModeAsync, GrabModeAsync, None, NULL, CurrentTime);
+ return true;
+}
+
+bool BlankScreen::unlock()
+{
+
+ if (_sysdep->dpy)
+ {
+
+ int retval = -1;
+
+ //reset cursor to arrow (no *real* default here...)
+ Cursor normal_cur = XCreateFontCursor(_sysdep->dpy, XC_arrow);
+ XDefineCursor(_sysdep->dpy, DefaultRootWindow(_sysdep->dpy), normal_cur);
+
+ // ungrabbing of keyboard and mouse
+ XUngrabPointer(_sysdep->dpy, CurrentTime);
+ XUngrabKeyboard(_sysdep->dpy, CurrentTime);
+
+
+ retval = XUnmapWindow(_sysdep->dpy,_sysdep->win);
+ if (retval == BadWindow)
+ ConsoleLog writeError(QString("Bad window while unmapping. Badwindow: ").append(int2String(retval)));
+ XFlush(_sysdep->dpy);
+ }
+ if (_sysdep->locked)
+ ConsoleLog writeLine(QString("Unlocked"));
+
+ _sysdep->lockMsg.clear();
+ return !(_sysdep->locked = false);
+}
+
+static Display* _dpy = 0;
+
+Display* X11Info::display()
+{
+ if(!_dpy)
+ {
+ _dpy = XOpenDisplay(0);
+ }
+ return _dpy;
+}
diff --git a/src/util/consoleLogger.cpp b/src/util/consoleLogger.cpp
index b523b40..9189543 100644..100755
--- a/src/util/consoleLogger.cpp
+++ b/src/util/consoleLogger.cpp
@@ -226,21 +226,17 @@ void ConsoleLogger::_prepareLog()
_logFileGood = false;
_readLog();
- mkdir(getPolicyFilePath(QString()).toUtf8().data(), 0777);
+ createPolicyDir();
QString fullpath;
fullpath.append(_logPath);
//TODO: handle wether path/ or path were entered?
fullpath.append(_logName);
_logFile.open(fullpath.toUtf8().data(), std::ofstream::out | std::ofstream::app);
if (_logFile.good())
- {
_logFileGood = true;
- writeTerminal(QString("LogPath/Name changed to: ").append(fullpath));
- }
else
- {
- printf("ERROR: Logfile ( %s ) not accessible/found. Logs will not be available.\n", _logPath.toUtf8().data());
- }
+ qDebug("ERROR: Logfile ( %s ) not accessible/found. Logs will not be available.", qPrintable(_logPath));
+
_logFile.close();
}
diff --git a/src/util/consoleLogger.h b/src/util/consoleLogger.h
index 3a0950d..e4cb291 100644
--- a/src/util/consoleLogger.h
+++ b/src/util/consoleLogger.h
@@ -116,7 +116,7 @@ public:
_line.push_back('\n'); // add an explicit newline char, so it looks better in the logfile
//#ifndef as_daemon
if (_level == LOG_TERMINAL) // may look strange here, but its quite central :-)
- printf("%s\n", _line.toUtf8().data());
+ qDebug("%s", qPrintable(_line));
//#endif
};
LOG_LEVEL getLevel()
diff --git a/src/util/pvsSettingsManager.cpp b/src/util/pvsSettingsManager.cpp
deleted file mode 100644
index a6a742b..0000000
--- a/src/util/pvsSettingsManager.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-#include "pvsSettingsManager.h"
-#include "TextFile.h"
-
-PVSSettingsManager* PVSSettingsManager::getManager()
-{
- if (myself)
- return myself;
- else
- return myself = new PVSSettingsManager;
-}
-
-void PVSSettingsManager::setConfigFile(QString path)
-{
- if (path.size() && fileExists(path))
- {
- _path = path;
- _parseFile(_path);
-
- }
- else
- ConsoleLog writeError(QString("Can't open config file \"").append(QString(path).append("\"")));
-}
-
-bool PVSSettingsManager::hasEntry(QString name)
-{
- for (SettingsIter it = settingsList.begin(); it != settingsList.end(); it++)
- {
- if ((*it).first.compare(name) == 0)
- {
- return true;
- }
- }
- return false;
-}
-
-QString PVSSettingsManager::getEntryString(QString name)
-{
- for (SettingsIter it = settingsList.begin(); it != settingsList.end(); it++)
- {
- if ((*it).first.compare(name) == 0)
- {
- return (*it).second;
- }
- }
- return QString();
-}
-
-void PVSSettingsManager::writeEntry(QString name, QString value)
-{
- if (name.size() && value.size())
- return;
- bool unique = true;
- for (SettingsIter it = settingsList.begin(); it != settingsList.end(); it++)
- {
- if ((*it).first.compare(name) == 0)
- {
- unique = false;
- (*it).second = value;
- break;
- }
- }
- if (unique)
- {
- SettingsEntry tmp(name, value);
- settingsList.push_back(tmp);
- }
-}
-
-
-PVSSettingsManager* PVSSettingsManager::myself = NULL;
-
-PVSSettingsManager::PVSSettingsManager()
-{
-
-}
-
-void PVSSettingsManager::setConfigs()
-{
- //default settings
- _configs.setValue("Chat/chatstate", "on");
- _configs.setValue("Chat/chatmode", "bossmode");
- _configs.setValue("Room/roomId", "0");
- _configs.setValue("VNC/permit", "off");
- _configs.setValue("VNC/quality", "high");
- _configs.sync();
-}
-void PVSSettingsManager::reWriteConfigs(QString set, QString val)
-{
- _configs.setValue(set, val);
- _configs.sync();
-}
-
-void PVSSettingsManager::readConfigs(QString sett, QString vall)
-{
- //TODO: read the config file..
- _configs.value("Chat/chatstate").toBool();
- _configs.value("Chat/chatmode").toString();
- _configs.value("Room/room").toInt();
- _configs.value("VNC/permit").toBool();
- _configs.value("VNC/quality").toString();
-}
-
-void PVSSettingsManager::_parseFile(QString path)
-{
- QString line;
- TextFile file(path);
-
- SettingsList tmpList;
-
- if (file.good())
- {
- while (!file.eof())
- {
- line = file.readLine();
- if (!(line.length() <=1)) // ignore blank
- {
- if (!(line[0] == '#' || line[0] == '/' || line[0] == '[')) // ignore comments and section headers
- {
- SettingsEntry tmp = _parseLine(line);
- if (tmp.first.size() && tmp.second.size())
- {
- bool unique = true;
- for (SettingsIter it = tmpList.begin(); it != tmpList.end(); it++)
- {
- if ((*it).first.compare(tmp.first) == 0)
- {
- unique = false;
- break;
- }
- }
- if (unique)
- tmpList.push_back(tmp);
- }
- }
- }
- }
- }
- else
- {
- ConsoleLog writeError(QString("No configfile \"").append(QString(path).append("\" found or file corrupt.")));
- }
-
- if (tmpList.size())
- settingsList = tmpList;
-}
-#ifdef verbose
-ConsoleLog writeLine(QString("Dumping Config Content of ").append(QString(path).append(" : ")));
-for (SettingsIter it = settingsList.begin(); it != settingsList.end(); it++)
-{
- ConsoleLog writeLine(QString("Option: ").append(QString((*it).first).append(QString(" | Value: ").append((*it).second))));
-}
-ConsoleLog writeLine(QString("End of ").append(QString(path).append(".")));
-#endif
-
-SettingsEntry PVSSettingsManager::_parseLine(QString line)
-{
- QString name;
- QString value;
-
- name = lineSplitter(line, "=\n\t", true);
- value = lineSplitter(line, "=\n\t", false);
-
- if (!(name.size() && value.size()))
- return SettingsEntry("","");
-
-
- // remove whitespaces in front of option name
- for (int i = 0; i < name.size(); i++)
- {
- if (name[i] == '\t' || name[i] == ' ')
- {
- name.remove(i, 1);
- i--;
- }
- else
- break;
- }
- // whitespaces after the value are trimmed by the lineSplitter
-
- SettingsEntry tmp(name, value);
- return tmp;
-}
-
-
-
diff --git a/src/util/pvsSettingsManager.h b/src/util/pvsSettingsManager.h
deleted file mode 100644
index 78607eb..0000000
--- a/src/util/pvsSettingsManager.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/// documentation test 1
-/// line 2
-/// line 3
-#ifndef _PVSSETTINGSMANGER_H_
-#define _PVSSETTINGSMANGER_H_
-
-#include <list>
-#include <map>
-#include <src/util/util.h>
-#include <src/util/consoleLogger.h>
-#include <QSettings>
-
-
-/// documentation test 1.1
-/// line 2.1
-/// line 3.1
-
-typedef std::pair<QString, QString> SettingsEntry; ///< first = option name, second = option value
-typedef std::list<SettingsEntry> SettingsList; ///< obvious
-typedef std::list<SettingsEntry>::iterator SettingsIter;
-
-
-class PVSSettingsManager;
-/// documentation test 1.2
-/// line 2.2
-/// line 3.2
-class PVSSettingsManager
-{
-public:
- static PVSSettingsManager* getManager();
- void setConfigFile(QString path);
- bool hasEntry(QString name);
- QString getEntryString(QString name);
- void writeEntry(QString name, QString value);
- void setConfigs();
- void reWriteConfigs(QString set, QString val);
- void readConfigs(QString sett, QString vall);
-private:
- static PVSSettingsManager* myself;
- PVSSettingsManager();
- void _parseFile(QString path);
- SettingsEntry _parseLine(QString line);
- QString _path;
- SettingsList settingsList;
- QSettings _configs;
-
-};
-
-
-#endif
diff --git a/src/util/util.cpp b/src/util/util.cpp
index 946168e..05a209f 100644..100755
--- a/src/util/util.cpp
+++ b/src/util/util.cpp
@@ -6,7 +6,11 @@
#include <cstdlib>
#include <QStringList>
#include <iostream>
-
+#include <QDir>
+#ifdef __WIN32__
+ #include <windows.h>
+ #include <Lmcons.h>
+#endif //__WIN32__
PVSServerEntry::PVSServerEntry(QString name)
{
@@ -45,7 +49,11 @@ int getRandom(int min, int max)
if (init)
{
init = false;
+ #ifndef __WIN32__
srand ( time(NULL) + getpid() );
+ #else
+ srand ( time(NULL) ); /*might be solved by another random factor*/
+ #endif
}
if (min >= max) return rand();
return rand() % (max-min+1) + min;
@@ -184,15 +192,28 @@ QString colonSplitter(QString line, bool first)
QString getUserName()
{
- struct passwd* passUser = getpwuid(getuid());
QString username;
- if (passUser)
- {
- username = QString(passUser->pw_name);
- }
+ #ifdef __WIN32__
+ WCHAR* lpszSystemInfo; // pointer to system information
+ DWORD cchBuff = 256; // size of user name
+ WCHAR tchBuffer[UNLEN + 1]; // buffer for expanded string
+
+ lpszSystemInfo = tchBuffer;
+
+ // Get and display the user name.
+ GetUserNameW(lpszSystemInfo, &cchBuff);
+
+ //Unicode string needs to be converted
+ username = QString::fromWCharArray(lpszSystemInfo);
+ #else
+ struct passwd* passUser = getpwuid(getuid());
+ if (passUser)
+ username = QString(passUser->pw_name);
+
+ #endif //#ifdef __WIN32__
if (username.isEmpty())
{
- printf("USERNAME COULDNT BE RETRIEVED!\n");
+ qDebug("USERNAME COULDNT BE RETRIEVED!");
username = QString("USERNAMEERROR");
}
return username;
@@ -202,19 +223,21 @@ QString getUserName()
QString getFullUsername()
{
QString fullname = getUserName();
- struct passwd *pd;
+ #ifndef __WIN32__
+ struct passwd *pd;
- if (NULL == (pd = getpwuid(getuid())))
- {ConsoleLog writeError("getpwuid() error.");}
- else
- {
- QString tmp = pd->pw_gecos;
- QStringList userData = tmp.split(",");
- if(userData[0].length() > 0 )
+ if (NULL == (pd = getpwuid(getuid())))
+ {ConsoleLog writeError("getpwuid() error.");}
+ else
{
- fullname = userData[0];
+ QString tmp = pd->pw_gecos;
+ QStringList userData = tmp.split(",");
+ if(userData[0].length() > 0 )
+ {
+ fullname = userData[0];
+ }
}
- }
+ #endif //__WIN32__ //might be completed some time to a full solution for WIN32
return fullname;
}
@@ -266,7 +289,8 @@ bool policyFileExists(QString fileName)
void createPolicyDir()
{
- mkdir(getPolicyDir().toUtf8().data(), 0777);
+ QDir(QDesktopServices::storageLocation(QDesktopServices::HomeLocation)).mkdir(".pvs");
+ //assuming PolicyDir is defined like in getPolicyDir()
}
void createPolicyFiles()
@@ -299,7 +323,7 @@ QString readPassFromPassFile()
}
bool getAllowed()
{
- printf("Checking %s\n", getPolicyFilePath(QString(".allow")).toUtf8().data());
+ qDebug("Checking %s", qPrintable(getPolicyFilePath(QString(".allow"))));
TextFile file(getPolicyFilePath(".allow"));
if (file.good()) // should have been checked via exists before, but better be safe
{
@@ -314,7 +338,7 @@ bool getAllowed()
(allowed.compare(QString("TRUE")) == 0) )
return true;
}
- printf("...negative\n");
+ qDebug("...negative");
return false;
}
diff --git a/src/util/util.h b/src/util/util.h
index 6ddefc6..4f2d0ee 100644..100755
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -4,7 +4,11 @@
#include <list>
#include <fstream>
#include <iostream>
-#include <pwd.h>
+#ifndef __WIN32__
+ #include <pwd.h>
+#else
+ /*#include "pwd_win32.h"*/
+#endif /*__WIN32*/
#include <sys/types.h>
#include <sys/stat.h>