xref: /linux/tools/usb/usbip/libsrc/sysfs_utils.c (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2588b48caSValentina Manea #include <sys/types.h>
3588b48caSValentina Manea #include <sys/stat.h>
4588b48caSValentina Manea #include <fcntl.h>
5588b48caSValentina Manea #include <errno.h>
6588b48caSValentina Manea 
7588b48caSValentina Manea #include "sysfs_utils.h"
8588b48caSValentina Manea #include "usbip_common.h"
9588b48caSValentina Manea 
write_sysfs_attribute(const char * attr_path,const char * new_value,size_t len)10588b48caSValentina Manea int write_sysfs_attribute(const char *attr_path, const char *new_value,
11588b48caSValentina Manea 			  size_t len)
12588b48caSValentina Manea {
13588b48caSValentina Manea 	int fd;
14588b48caSValentina Manea 	int length;
15588b48caSValentina Manea 
16588b48caSValentina Manea 	fd = open(attr_path, O_WRONLY);
17588b48caSValentina Manea 	if (fd < 0) {
18588b48caSValentina Manea 		dbg("error opening attribute %s", attr_path);
19588b48caSValentina Manea 		return -1;
20588b48caSValentina Manea 	}
21588b48caSValentina Manea 
22588b48caSValentina Manea 	length = write(fd, new_value, len);
23588b48caSValentina Manea 	if (length < 0) {
24588b48caSValentina Manea 		dbg("error writing to attribute %s", attr_path);
25588b48caSValentina Manea 		close(fd);
26588b48caSValentina Manea 		return -1;
27588b48caSValentina Manea 	}
28588b48caSValentina Manea 
29588b48caSValentina Manea 	close(fd);
30588b48caSValentina Manea 
31588b48caSValentina Manea 	return 0;
32588b48caSValentina Manea }
33