162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci#include <sys/types.h> 362306a36Sopenharmony_ci#include <sys/stat.h> 462306a36Sopenharmony_ci#include <fcntl.h> 562306a36Sopenharmony_ci#include <errno.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "sysfs_utils.h" 862306a36Sopenharmony_ci#include "usbip_common.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciint write_sysfs_attribute(const char *attr_path, const char *new_value, 1162306a36Sopenharmony_ci size_t len) 1262306a36Sopenharmony_ci{ 1362306a36Sopenharmony_ci int fd; 1462306a36Sopenharmony_ci int length; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci fd = open(attr_path, O_WRONLY); 1762306a36Sopenharmony_ci if (fd < 0) { 1862306a36Sopenharmony_ci dbg("error opening attribute %s", attr_path); 1962306a36Sopenharmony_ci return -1; 2062306a36Sopenharmony_ci } 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci length = write(fd, new_value, len); 2362306a36Sopenharmony_ci if (length < 0) { 2462306a36Sopenharmony_ci dbg("error writing to attribute %s", attr_path); 2562306a36Sopenharmony_ci close(fd); 2662306a36Sopenharmony_ci return -1; 2762306a36Sopenharmony_ci } 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci close(fd); 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci return 0; 3262306a36Sopenharmony_ci} 33