-rw-r--r-- | libopie2/opiecore/ofilenotify.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libopie2/opiecore/ofilenotify.cpp b/libopie2/opiecore/ofilenotify.cpp index 5f2a1cc..b576c4f 100644 --- a/libopie2/opiecore/ofilenotify.cpp +++ b/libopie2/opiecore/ofilenotify.cpp @@ -98,49 +98,49 @@ int OFileNotification::start( const QString& path, bool sshot, OFileNotification } } else /* isDirectory */ { qWarning( "FIXME FIXME FIXME = Directory Notification Not Yet Implemented!" ); _path = path; dirpath = path; assert( 0 ); } int fd = ::open( (const char*) dirpath, O_RDONLY ); if ( fd != -1 ) { if ( notification_list.isEmpty() ) { OFileNotification::registerSignalHandler(); } result = ::fcntl( fd, F_SETSIG, SIGRTMIN ); if ( result == -1 ) { qWarning( "OFileNotification::start(): Can't subscribe to '%s': %s.", (const char*) dirpath, strerror( errno ) ); return -1; } - if ( !sshot ) (int) type |= (int) Multi; + if ( !sshot ) type = static_cast<OFileNotificationType>( (int) type | (int) Multi ); result = ::fcntl( fd, F_NOTIFY, type ); if ( result == -1 ) { qWarning( "OFileNotification::start(): Can't subscribe to '%s': %s.", (const char*) dirpath, strerror( errno ) ); return -1; } qDebug( "OFileNotification::start(): Subscribed for changes to %s (fd = %d, mask = 0x%0x)", (const char*) dirpath, fd, type ); notification_list.insert( fd, this ); _type = type; _fd = fd; _active = true; ::memset( &_stat, 0, sizeof _stat ); ::stat( _path, &_stat ); return fd; } else { qWarning( "OFileNotification::start(): Error with path '%s': %s.", (const char*) dirpath, strerror( errno ) ); return -1; } } void OFileNotification::stop() @@ -278,42 +278,43 @@ void OFileNotification::__signalHandler( int sig, siginfo_t *si, void *data ) OFileNotification::unregisterSignalHandler(); } } #endif } else { qWarning( "OFileNotification::__signalHandler(): D'oh! Called without fd in notification_list. Race condition?" ); } } bool OFileNotification::registerSignalHandler() { struct sigaction act; act.sa_sigaction = OFileNotification::__signalHandler; ::sigemptyset( &act.sa_mask ); act.sa_flags = SA_SIGINFO; if ( ::sigaction( SIGRTMIN, &act, NULL ) == -1 ) { qWarning( "OFileNotification::registerSignalHandler(): couldn't register signal handler: %s", strerror( errno ) ); return false; } qDebug( "OFileNotification::registerSignalHandler(): done" ); + return true; } void OFileNotification::unregisterSignalHandler() { struct sigaction act; act.sa_sigaction = ( void (*)(int, siginfo_t*, void*) ) SIG_DFL; ::sigemptyset( &act.sa_mask ); if ( ::sigaction( SIGRTMIN, &act, NULL ) == -1 ) { qWarning( "OFileNotification::unregisterSignalHandler(): couldn't deregister signal handler: %s", strerror( errno ) ); } qDebug( "OFileNotification::unregisterSignalHandler(): done" ); } } } |