From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Guo, Min" Date: Tue, 12 Aug 2003 07:17:06 +0000 Subject: RE: [ANNOUNCE] udev 0.2 release MIME-Version: 1 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C360A1.BC4157F8" Message-Id: List-Id: References: In-Reply-To: To: linux-hotplug@vger.kernel.org This is a multi-part message in MIME format. ------_=_NextPart_001_01C360A1.BC4157F8 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Thanks!The revised path! -------------------------------------------------------------------------= --------------------------------- diff -Nuar /udev/libsysfs/libsysfs.h /root/udev-0.2/libsysfs/libsysfs.h --- /udev/libsysfs/libsysfs.h 2003-07-19 03:06:48.000000000 +0800 +++ /root/udev-0.2/libsysfs/libsysfs.h 2003-08-12 16:05:36.483706096 = +0800 @@ -124,6 +124,9 @@ extern int sysfs_read_attribute(struct sysfs_attribute *sysattr); extern int sysfs_read_attribute_value(const char *attrpath, char = *value,=20 size_t vsize); +extern int sysfs_write_attribute(struct sysfs_attribute *sysattr); +extern int sysfs_write_attribute_value(const char *attrpath, char = *value); + extern char *sysfs_get_value_from_attributes(struct sysfs_attribute = *attr,=20 const char * name); extern void sysfs_close_directory(struct sysfs_directory *sysdir); diff -Nuar /udev/libsysfs/sysfs_dir.c = /root/udev-0.2/libsysfs/sysfs_dir.c --- /udev/libsysfs/sysfs_dir.c 2003-07-19 03:06:34.000000000 +0800 +++ /root/udev-0.2/libsysfs/sysfs_dir.c 2003-08-12 16:07:45.000168624 = +0800 @@ -78,6 +78,43 @@ =20 return sysattr; } +/** + * sysfs_write_attribute: write value to the attribute + * @sysattr: attribute to write + * returns 0 with success and -1 with error. + */ +int sysfs_write_attribute(struct sysfs_attribute *sysattr) +{ + int fd; + int length; +=09 + if (sysattr =3D=3D NULL) { + errno =3D EINVAL; + return -1; + } +=09 + if (!(sysattr->method & SYSFS_METHOD_STORE)) { + dprintf (stderr, "Store method not supported for attribute %s\n", + sysattr->path); + return -1; + } + =09 + if ((fd =3D open(sysattr->path, O_RDWR)) < 0) { + dprintf (stderr, "Error reading attribute %s\n", sysattr->path); + return -1; + } + + length =3D write(fd,sysattr->value,sizeof(sysattr->value)); + if (length < 0) { + dprintf (stderr, "Error write to the attribute %s\n", + sysattr->path); + close(fd); + return -1; + } + close(fd);=09 + return 0; +} + =20 /** * sysfs_read_attribute: reads value from attribute @@ -134,6 +171,41 @@ } =20 /** + * sysfs_write_attribute_value: given path to attribute,=20 + * value will be saved to the attribute. + * @attrpath: sysfs path to attribute + * @value: value to give to attribute + * returns 0 with success and -1 with error. + */ +int sysfs_write_attribute_value(const char *attrpath, char *value) +{ + struct sysfs_attribute *attr =3D NULL; +=09 + if (attrpath =3D=3D NULL || value =3D=3D NULL) { + errno =3D EINVAL; + return -1; + } + + attr =3D sysfs_open_attribute(attrpath); + if (attr =3D=3D NULL) { + dprintf(stderr, "Invalid attribute path %s\n", attrpath); + errno =3D EINVAL; + return -1; + } + strncpy(attr->value,value,sizeof(value)); + if((sysfs_write_attribute(attr) !=3D 0 )){ + dprintf(stderr, "Error write to attribute %s\n", attrpath); + sysfs_close_attribute(attr); + return -1; + } + + sysfs_close_attribute(attr); + + return 0; +} + + +/** * sysfs_read_attribute_value: given path to attribute, return its = value. * values can be up to a pagesize, if buffer is smaller the value will=20 * be truncated.=20 -----Original Message----- From: Daniel Stekloff [mailto:dsteklof@us.ibm.com] Sent: Tuesday, August 05, 2003 6:09 PM To: Guo, Min Cc: linux-hotplug-devel@lists.sourceforge.net; Greg KH Subject: RE: [ANNOUNCE] udev 0.2 release=20 Hi Guo Min, Thank you very much for the patch. It's a good start. Some ideas: - sysfs_write_attribute needs to actually write the value out to the=20 file/attribute. Use the path in sysfs_attribute. - sysfs_write_attribute should probably only need the sysfs_attribute=20 *sysattr as an argument, the value being already assigned to the=20 sysfs_attribute. - sysfs_write_attribute_value could assign the value to the included=20 sysfs_attribute and then call sysfs_write_attribute like you have it = now. - Please look at sysfs_read_attribute as a guide. Thanks, Dan ------_=_NextPart_001_01C360A1.BC4157F8 Content-Type: application/octet-stream; name="libsysfs.diff" Content-Transfer-Encoding: base64 Content-Description: libsysfs.diff Content-Disposition: attachment; filename="libsysfs.diff" ZGlmZiAtTnVhciAvdWRldi9saWJzeXNmcy9saWJzeXNmcy5oIC9yb290L3VkZXYtMC4yL2xpYnN5 c2ZzL2xpYnN5c2ZzLmgKLS0tIC91ZGV2L2xpYnN5c2ZzL2xpYnN5c2ZzLmgJMjAwMy0wNy0xOSAw MzowNjo0OC4wMDAwMDAwMDAgKzA4MDAKKysrIC9yb290L3VkZXYtMC4yL2xpYnN5c2ZzL2xpYnN5 c2ZzLmgJMjAwMy0wOC0xMiAxNjowNTozNi40ODM3MDYwOTYgKzA4MDAKQEAgLTEyNCw2ICsxMjQs OSBAQAogZXh0ZXJuIGludCBzeXNmc19yZWFkX2F0dHJpYnV0ZShzdHJ1Y3Qgc3lzZnNfYXR0cmli dXRlICpzeXNhdHRyKTsKIGV4dGVybiBpbnQgc3lzZnNfcmVhZF9hdHRyaWJ1dGVfdmFsdWUoY29u c3QgY2hhciAqYXR0cnBhdGgsIGNoYXIgKnZhbHVlLCAKIAkJCQkJCQkJc2l6ZV90IHZzaXplKTsK K2V4dGVybiBpbnQgc3lzZnNfd3JpdGVfYXR0cmlidXRlKHN0cnVjdCBzeXNmc19hdHRyaWJ1dGUg KnN5c2F0dHIpOworZXh0ZXJuIGludCBzeXNmc193cml0ZV9hdHRyaWJ1dGVfdmFsdWUoY29uc3Qg Y2hhciAqYXR0cnBhdGgsIGNoYXIgKnZhbHVlKTsKKwogZXh0ZXJuIGNoYXIgKnN5c2ZzX2dldF92 YWx1ZV9mcm9tX2F0dHJpYnV0ZXMoc3RydWN0IHN5c2ZzX2F0dHJpYnV0ZSAqYXR0ciwgCiAJCQkJ CQkJY29uc3QgY2hhciAqIG5hbWUpOwogZXh0ZXJuIHZvaWQgc3lzZnNfY2xvc2VfZGlyZWN0b3J5 KHN0cnVjdCBzeXNmc19kaXJlY3RvcnkgKnN5c2Rpcik7CmRpZmYgLU51YXIgL3VkZXYvbGlic3lz ZnMvc3lzZnNfZGlyLmMgL3Jvb3QvdWRldi0wLjIvbGlic3lzZnMvc3lzZnNfZGlyLmMKLS0tIC91 ZGV2L2xpYnN5c2ZzL3N5c2ZzX2Rpci5jCTIwMDMtMDctMTkgMDM6MDY6MzQuMDAwMDAwMDAwICsw ODAwCisrKyAvcm9vdC91ZGV2LTAuMi9saWJzeXNmcy9zeXNmc19kaXIuYwkyMDAzLTA4LTEyIDE2 OjA3OjQ1LjAwMDE2ODYyNCArMDgwMApAQCAtNzgsNiArNzgsNDMgQEAKIAogCXJldHVybiBzeXNh dHRyOwogfQorLyoqCisgKiBzeXNmc193cml0ZV9hdHRyaWJ1dGU6IHdyaXRlIHZhbHVlIHRvIHRo ZSBhdHRyaWJ1dGUKKyAqIEBzeXNhdHRyOiBhdHRyaWJ1dGUgdG8gd3JpdGUKKyAqIHJldHVybnMg MCB3aXRoIHN1Y2Nlc3MgYW5kIC0xIHdpdGggZXJyb3IuCisgKi8KK2ludCBzeXNmc193cml0ZV9h dHRyaWJ1dGUoc3RydWN0IHN5c2ZzX2F0dHJpYnV0ZSAqc3lzYXR0cikKK3sKKwlpbnQgZmQ7CisJ aW50IGxlbmd0aDsKKwkKKwlpZiAoc3lzYXR0ciA9PSBOVUxMKSB7CisJCWVycm5vID0gRUlOVkFM OworCQlyZXR1cm4gLTE7CisJfQorCQorCWlmICghKHN5c2F0dHItPm1ldGhvZCAmIFNZU0ZTX01F VEhPRF9TVE9SRSkpIHsKKwkJZHByaW50ZiAoc3RkZXJyLCAiU3RvcmUgbWV0aG9kIG5vdCBzdXBw b3J0ZWQgZm9yIGF0dHJpYnV0ZSAlc1xuIiwKKwkJCXN5c2F0dHItPnBhdGgpOworCQlyZXR1cm4g LTE7CisJfQorCQkKKwlpZiAoKGZkID0gb3BlbihzeXNhdHRyLT5wYXRoLCBPX1JEV1IpKSA8IDAp IHsKKwkJZHByaW50ZiAoc3RkZXJyLCAiRXJyb3IgcmVhZGluZyBhdHRyaWJ1dGUgJXNcbiIsIHN5 c2F0dHItPnBhdGgpOworCQlyZXR1cm4gLTE7CisJfQorCisJbGVuZ3RoID0gd3JpdGUoZmQsc3lz YXR0ci0+dmFsdWUsc2l6ZW9mKHN5c2F0dHItPnZhbHVlKSk7CisJaWYgKGxlbmd0aCA8IDApIHsK KwkJZHByaW50ZiAoc3RkZXJyLCAiRXJyb3Igd3JpdGUgdG8gdGhlIGF0dHJpYnV0ZSAlc1xuIiwK KwkJCXN5c2F0dHItPnBhdGgpOworCQljbG9zZShmZCk7CisJCXJldHVybiAtMTsKKwl9CisJY2xv c2UoZmQpOwkKKwlyZXR1cm4gMDsKK30KKwogCiAvKioKICAqIHN5c2ZzX3JlYWRfYXR0cmlidXRl OiByZWFkcyB2YWx1ZSBmcm9tIGF0dHJpYnV0ZQpAQCAtMTM0LDYgKzE3MSw0MSBAQAogfQogCiAv KioKKyAqIHN5c2ZzX3dyaXRlX2F0dHJpYnV0ZV92YWx1ZTogZ2l2ZW4gcGF0aCB0byBhdHRyaWJ1 dGUsIAorICogdmFsdWUgd2lsbCBiZSBzYXZlZCB0byB0aGUgYXR0cmlidXRlLgorICogQGF0dHJw YXRoOiBzeXNmcyBwYXRoIHRvIGF0dHJpYnV0ZQorICogQHZhbHVlOiB2YWx1ZSB0byBnaXZlIHRv IGF0dHJpYnV0ZQorICogcmV0dXJucyAwIHdpdGggc3VjY2VzcyBhbmQgLTEgd2l0aCBlcnJvci4K KyAqLworaW50IHN5c2ZzX3dyaXRlX2F0dHJpYnV0ZV92YWx1ZShjb25zdCBjaGFyICphdHRycGF0 aCwgY2hhciAqdmFsdWUpCit7CisJc3RydWN0IHN5c2ZzX2F0dHJpYnV0ZSAqYXR0ciA9IE5VTEw7 CisJCisJaWYgKGF0dHJwYXRoID09IE5VTEwgfHwgdmFsdWUgPT0gTlVMTCkgeworCQllcnJubyA9 IEVJTlZBTDsKKwkJcmV0dXJuIC0xOworCX0KKworCWF0dHIgPSBzeXNmc19vcGVuX2F0dHJpYnV0 ZShhdHRycGF0aCk7CisJaWYgKGF0dHIgPT0gTlVMTCkgeworCQlkcHJpbnRmKHN0ZGVyciwgIklu dmFsaWQgYXR0cmlidXRlIHBhdGggJXNcbiIsIGF0dHJwYXRoKTsKKwkJZXJybm8gPSBFSU5WQUw7 CisJCXJldHVybiAtMTsKKwl9CisJc3RybmNweShhdHRyLT52YWx1ZSx2YWx1ZSxzaXplb2YodmFs dWUpKTsKKwlpZigoc3lzZnNfd3JpdGVfYXR0cmlidXRlKGF0dHIpICE9IDAgKSl7CisJCWRwcmlu dGYoc3RkZXJyLCAiRXJyb3Igd3JpdGUgdG8gYXR0cmlidXRlICVzXG4iLCBhdHRycGF0aCk7CisJ CXN5c2ZzX2Nsb3NlX2F0dHJpYnV0ZShhdHRyKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXN5c2Zz X2Nsb3NlX2F0dHJpYnV0ZShhdHRyKTsKKworCXJldHVybiAwOworfQorCisKKy8qKgogICogc3lz ZnNfcmVhZF9hdHRyaWJ1dGVfdmFsdWU6IGdpdmVuIHBhdGggdG8gYXR0cmlidXRlLCByZXR1cm4g aXRzIHZhbHVlLgogICoJdmFsdWVzIGNhbiBiZSB1cCB0byBhIHBhZ2VzaXplLCBpZiBidWZmZXIg aXMgc21hbGxlciB0aGUgdmFsdWUgd2lsbCAKICAqCWJlIHRydW5jYXRlZC4gCg== ------_=_NextPart_001_01C360A1.BC4157F8-- ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel