index: work around recent? gamin strangeness
This commit is contained in:
parent
e93a313c4a
commit
22788b8900
@ -70,7 +70,7 @@ public:
|
|||||||
processone(const string &fn, const struct stat *st,
|
processone(const string &fn, const struct stat *st,
|
||||||
FsTreeWalker::CbFlag flg)
|
FsTreeWalker::CbFlag flg)
|
||||||
{
|
{
|
||||||
LOGDEB2(("rclMonRcvRun: processone %s m_mon %p m_mon->ok %d\n",
|
MONDEB(("rclMonRcvRun: processone %s m_mon %p m_mon->ok %d\n",
|
||||||
fn.c_str(), m_mon, m_mon?m_mon->ok():0));
|
fn.c_str(), m_mon, m_mon?m_mon->ok():0));
|
||||||
|
|
||||||
if (flg == FsTreeWalker::FtwDirEnter ||
|
if (flg == FsTreeWalker::FtwDirEnter ||
|
||||||
@ -301,7 +301,7 @@ bool RclFAM::getEvent(RclMonEvent& ev, int secs)
|
|||||||
FD_ZERO(&readfds);
|
FD_ZERO(&readfds);
|
||||||
FD_SET(fam_fd, &readfds);
|
FD_SET(fam_fd, &readfds);
|
||||||
|
|
||||||
MONDEB(("RclFAM::getEvent: select\n"));
|
MONDEB(("RclFAM::getEvent: select. fam_fd is %d\n", fam_fd));
|
||||||
struct timeval timeout;
|
struct timeval timeout;
|
||||||
if (secs >= 0) {
|
if (secs >= 0) {
|
||||||
memset(&timeout, 0, sizeof(timeout));
|
memset(&timeout, 0, sizeof(timeout));
|
||||||
@ -318,11 +318,21 @@ bool RclFAM::getEvent(RclMonEvent& ev, int secs)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MONDEB(("RclFAM::getEvent: select return\n"));
|
MONDEB(("RclFAM::getEvent: select returned %d\n", ret));
|
||||||
|
|
||||||
if (!FD_ISSET(fam_fd, &readfds))
|
if (!FD_ISSET(fam_fd, &readfds))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// ?? 2011/03/15 gamin v0.1.10. There is initially a single null
|
||||||
|
// byte on the connection so the first select always succeeds. If
|
||||||
|
// we then call FAMNextEvent we stall. Using FAMPending works
|
||||||
|
// around the issue, but we did not need this in the past and this
|
||||||
|
// is most weird.
|
||||||
|
if (FAMPending(&m_conn) <= 0) {
|
||||||
|
MONDEB(("RclFAM::getEvent: FAMPending says no events\n"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
MONDEB(("RclFAM::getEvent: call FAMNextEvent\n"));
|
MONDEB(("RclFAM::getEvent: call FAMNextEvent\n"));
|
||||||
FAMEvent fe;
|
FAMEvent fe;
|
||||||
if (FAMNextEvent(&m_conn, &fe) < 0) {
|
if (FAMNextEvent(&m_conn, &fe) < 0) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user