1*588b48caSValentina Manea #include <sys/types.h> 2*588b48caSValentina Manea #include <sys/stat.h> 3*588b48caSValentina Manea #include <fcntl.h> 4*588b48caSValentina Manea #include <errno.h> 5*588b48caSValentina Manea 6*588b48caSValentina Manea #include "sysfs_utils.h" 7*588b48caSValentina Manea #include "usbip_common.h" 8*588b48caSValentina Manea 9*588b48caSValentina Manea int write_sysfs_attribute(const char *attr_path, const char *new_value, 10*588b48caSValentina Manea size_t len) 11*588b48caSValentina Manea { 12*588b48caSValentina Manea int fd; 13*588b48caSValentina Manea int length; 14*588b48caSValentina Manea 15*588b48caSValentina Manea fd = open(attr_path, O_WRONLY); 16*588b48caSValentina Manea if (fd < 0) { 17*588b48caSValentina Manea dbg("error opening attribute %s", attr_path); 18*588b48caSValentina Manea return -1; 19*588b48caSValentina Manea } 20*588b48caSValentina Manea 21*588b48caSValentina Manea length = write(fd, new_value, len); 22*588b48caSValentina Manea if (length < 0) { 23*588b48caSValentina Manea dbg("error writing to attribute %s", attr_path); 24*588b48caSValentina Manea close(fd); 25*588b48caSValentina Manea return -1; 26*588b48caSValentina Manea } 27*588b48caSValentina Manea 28*588b48caSValentina Manea close(fd); 29*588b48caSValentina Manea 30*588b48caSValentina Manea return 0; 31*588b48caSValentina Manea } 32