void LaunchDaemon::_HandleUnregisterLaunchEvent(BMessage* message) { uid_t user = _GetUserID(message); if (user < 0) return; if (user == 0 || fUserMode) { status_t status = B_OK; const char* name = message->GetString("name"); const char* ownerName = message->GetString("owner"); BMessenger source; if (name != NULL && ownerName != NULL && message->FindMessenger("source", &source) == B_OK) { // Unregister short and fully qualified event name ownerName = get_leaf(ownerName); BString eventName = name; fEvents.erase(eventName); eventName.Prepend("/"); eventName.Prepend(ownerName); fEvents.erase(eventName); } else status = B_BAD_VALUE; BMessage reply((uint32)status); message->SendReply(&reply); } _ForwardEventMessage(user, message); }