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