// Purpose: kqueue-based wxFileSystemWatcher implementation
// Author: Bartosz Bekier
// Created: 2009-05-26
-// RCS-ID: $Id$
// Copyright: (c) 2009 Bartosz Bekier <bartosz.bekier@gmail.com>
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
wxLogSysError(_("Error closing kqueue instance"));
}
- delete m_source;
- m_source = NULL;
+ wxDELETE(m_source);
}
virtual bool DoAdd(wxSharedPtr<wxFSWatchEntryKq> watch)
// TODO more error conditions according to man
// XXX closing file descriptor removes the watch. The logic resides in
// the watch which is not nice, but effective and simple
- bool ret = watch->Close();
- if (ret == -1)
+ if ( !watch->Close() )
{
wxLogSysError(_("Unable to remove kqueue watch"));
return false;
while ( nflags )
{
// when monitoring dir, this means create/delete
- if ( nflags & NOTE_WRITE && wxDirExists(w.GetPath()) )
+ const wxString basepath = w.GetPath();
+ if ( nflags & NOTE_WRITE && wxDirExists(basepath) )
{
// NOTE_LINK is set when the dir was created, but we
// don't care - we look for new names in directory
wxArrayString changedFiles;
wxArrayInt changedFlags;
FindChanges(w, changedFiles, changedFlags);
+
wxArrayString::iterator it = changedFiles.begin();
wxArrayInt::iterator changeType = changedFlags.begin();
for ( ; it != changedFiles.end(); ++it, ++changeType )
{
- wxFileName path;
- if ( wxDirExists(*it) )
- {
- path = wxFileName::DirName(w.GetPath() + *it);
- }
- else
- {
- path = wxFileName::FileName(w.GetPath() + *it);
- }
+ const wxString fullpath = w.GetPath() +
+ wxFileName::GetPathSeparator() +
+ *it;
+ const wxFileName path(wxDirExists(fullpath)
+ ? wxFileName::DirName(fullpath)
+ : wxFileName::FileName(fullpath));
wxFileSystemWatcherEvent event(*changeType, path, path);
SendEvent(event);
// still we couldn't be sure we have the right name...
nflags &= ~NOTE_RENAME;
wxFileSystemWatcherEvent event(wxFSW_EVENT_RENAME,
- w.GetPath(), wxFileName());
+ basepath, wxFileName());
SendEvent(event);
}
else if ( nflags & NOTE_WRITE || nflags & NOTE_EXTEND )
{
nflags &= ~(NOTE_WRITE | NOTE_EXTEND);
wxFileSystemWatcherEvent event(wxFSW_EVENT_MODIFY,
- w.GetPath(), w.GetPath());
+ basepath, basepath);
SendEvent(event);
}
else if ( nflags & NOTE_DELETE )
{
nflags &= ~(NOTE_DELETE);
wxFileSystemWatcherEvent event(wxFSW_EVENT_DELETE,
- w.GetPath(), w.GetPath());
+ basepath, basepath);
SendEvent(event);
}
else if ( nflags & NOTE_ATTRIB )
{
nflags &= ~(NOTE_ATTRIB);
wxFileSystemWatcherEvent event(wxFSW_EVENT_ACCESS,
- w.GetPath(), w.GetPath());
+ basepath, basepath);
SendEvent(event);
}
{
if (!Init())
{
- if (m_service)
- {
- delete m_service;
- m_service = NULL;
- }
+ wxDELETE(m_service);
return;
}