// Copyright (c) 2013 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include #include #include #include #include using base::StringPrintf; namespace brillo { UdevEnumerate::UdevEnumerate() : enumerate_(nullptr) {} UdevEnumerate::UdevEnumerate(udev_enumerate* enumerate) : enumerate_(enumerate) { CHECK(enumerate_); udev_enumerate_ref(enumerate_); } UdevEnumerate::~UdevEnumerate() { if (enumerate_) { udev_enumerate_unref(enumerate_); enumerate_ = nullptr; } } bool UdevEnumerate::AddMatchSubsystem(const char* subsystem) { int result = udev_enumerate_add_match_subsystem(enumerate_, subsystem); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_match_subsystem (%p, \"%s\") returned %d.", enumerate_, subsystem, result); return false; } bool UdevEnumerate::AddNoMatchSubsystem(const char* subsystem) { int result = udev_enumerate_add_nomatch_subsystem(enumerate_, subsystem); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_nomatch_subsystem (%p, \"%s\") returned %d.", enumerate_, subsystem, result); return false; } bool UdevEnumerate::AddMatchSysAttribute(const char* attribute, const char* value) { int result = udev_enumerate_add_match_sysattr(enumerate_, attribute, value); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_match_sysattr (%p, \"%s\", \"%s\") returned %d.", enumerate_, attribute, value, result); return false; } bool UdevEnumerate::AddNoMatchSysAttribute(const char* attribute, const char* value) { int result = udev_enumerate_add_nomatch_sysattr(enumerate_, attribute, value); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_nomatch_sysattr (%p, \"%s\", \"%s\") returned %d.", enumerate_, attribute, value, result); return false; } bool UdevEnumerate::AddMatchProperty(const char* property, const char* value) { int result = udev_enumerate_add_match_property(enumerate_, property, value); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_match_property (%p, \"%s\", \"%s\") returned %d.", enumerate_, property, value, result); return false; } bool UdevEnumerate::AddMatchSysName(const char* sys_name) { int result = udev_enumerate_add_match_sysname(enumerate_, sys_name); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_match_sysname (%p, \"%s\") returned %d.", enumerate_, sys_name, result); return false; } bool UdevEnumerate::AddMatchTag(const char* tag) { int result = udev_enumerate_add_match_tag(enumerate_, tag); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_match_tag (%p, \"%s\") returned %d.", enumerate_, tag, result); return false; } bool UdevEnumerate::AddMatchIsInitialized() { int result = udev_enumerate_add_match_is_initialized(enumerate_); if (result == 0) return true; VLOG(2) << StringPrintf( "udev_enumerate_add_match_is_initialized (%p) returned %d.", enumerate_, result); return false; } bool UdevEnumerate::AddSysPath(const char* sys_path) { int result = udev_enumerate_add_syspath(enumerate_, sys_path); if (result == 0) return true; VLOG(2) << StringPrintf("udev_enumerate_add_syspath(%p, \"%s\") returned %d.", enumerate_, sys_path, result); return false; } bool UdevEnumerate::ScanDevices() { int result = udev_enumerate_scan_devices(enumerate_); if (result == 0) return true; VLOG(2) << StringPrintf("udev_enumerate_scan_devices(%p) returned %d.", enumerate_, result); return false; } bool UdevEnumerate::ScanSubsystems() { int result = udev_enumerate_scan_subsystems(enumerate_); if (result == 0) return true; VLOG(2) << StringPrintf("udev_enumerate_scan_subsystems(%p) returned %d.", enumerate_, result); return false; } std::unique_ptr UdevEnumerate::GetListEntry() const { udev_list_entry* list_entry = udev_enumerate_get_list_entry(enumerate_); return list_entry ? std::make_unique(list_entry) : nullptr; } } // namespace brillo