diff options
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 29 |
1 files changed, 4 insertions, 25 deletions
@@ -49,22 +49,6 @@ bool cUdevMonitor::AddFilter(const char *Subsystem, cUdevFilter *Filter) return true; } -bool cUdevMonitor::DelFilter(const char *Subsystem, cUdevFilter *Filter) -{ - if (Filter == NULL) - return false; - cUdevMonitor *m = Get(Subsystem); - if (m == NULL) { - delete Filter; - return false; - } - if (!m->DelFilter(Filter)) { - delete Filter; - return false; - } - return true; -} - void cUdevMonitor::ShutdownAllMonitors(void) { cMutexLock lock(&mutexMonitors); @@ -257,11 +241,10 @@ void cUdevUsbRemoveFilter::Process(cUdevDevice &Device) const char *action = Device.GetAction(); const char *syspath = Device.GetSyspath(); if (action && syspath && (strcmp(action, "remove") == 0)) { - isyslog("dynamite: usb remove monitor: action = %s", action); - isyslog("dynamite: usb remove monitor: syspath = %s", syspath); cMutexLock lock(&mutexItems); for (cItem *i = items.First(); i; i = items.Next(i)) { - if (strcmp(**(i->item), syspath) == 0) { + if (strncmp(**(i->item), syspath, strlen(**(i->item))) == 0) { + isyslog("dynamite: usb remove monitor: syspath is %s", syspath); isyslog("dynamite: usb remove monitor: force detach of %s", **(i->devpath)); cDynamicDeviceProbe::QueueDynamicDeviceCommand(ddpcService, *cString::sprintf("dynamite-ForceDetachDevice-v0.1 %s", **(i->devpath))); } @@ -276,13 +259,13 @@ void cUdevUsbRemoveFilter::AddItem(const char *item, const char *devpath) cMutexLock lock(&mutexFilter); if (filter == NULL) { filter = new cUdevUsbRemoveFilter(); - if (!cUdevMonitor::AddFilter( "usb", filter)) { + if (!cUdevMonitor::AddFilter( NULL, filter)) { delete filter; filter = NULL; return; } } - isyslog("dynamite: usb remove monitor: add syspath = %s", item); + isyslog("dynamite: usb remove monitor: add syspath %s", item); cMutexLock lock2(&filter->mutexItems); filter->items.Add(new cItem(item, devpath)); } @@ -298,10 +281,6 @@ void cUdevUsbRemoveFilter::RemoveItem(const char *item, const char *devpath) for (cItem *i = filter->items.First(); i; i = filter->items.Next(i)) { if ((strcmp(**(i->item), item) == 0) && (strcmp(**(i->devpath), devpath) == 0)) { filter->items.Del(i); - if (filter->items.Count() == 0) { - cUdevMonitor::DelFilter("usb", filter); - filter = NULL; - } return; } } |