From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Guo, Min" Date: Tue, 05 Aug 2003 02:22:00 +0000 Subject: RE: [ANNOUNCE] udev 0.2 release MIME-Version: 1 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C35AF8.59E8669B" 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_01C35AF8.59E8669B Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Here are two function patch for libsys which metioned in TODO list, = could you please take a look at it and see whether it can meet the TODO req. Thanks Guo Min=20 The content of this email message solely contains my own personal views, and not those of my employer. -------------------------------------------------------------------------= ---------------------------------------------------------------- diff -Nuar /udev/libsysfs/libsysfs.h libsysfs/libsysfs.h --- /udev/libsysfs/libsysfs.h 2003-07-19 03:06:48.000000000 +0800 +++ libsysfs/libsysfs.h 2003-08-05 11:01:29.183292832 +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,char = *value); +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 libsysfs/sysfs_dir.c --- /udev/libsysfs/sysfs_dir.c 2003-07-19 03:06:34.000000000 +0800 +++ libsysfs/sysfs_dir.c 2003-08-05 11:18:44.580888472 +0800 @@ -78,6 +78,34 @@ =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,char *value) +{ + 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 (!value) + sysattr->value=3Dvalue; + else + { + dprintf (stderr, "The value is NULL\n"); + return -1; + } + return 0; +} + =20 /** * sysfs_read_attribute: reads value from attribute @@ -134,6 +162,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; + } +=09 + if((sysfs_write_attribute(attr,value)) !=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 ------_=_NextPart_001_01C35AF8.59E8669B Content-Type: application/octet-stream; name="libsysfs.diff" Content-Transfer-Encoding: base64 Content-Description: libsysfs.diff Content-Disposition: attachment; filename="libsysfs.diff" ZGlmZiAtTnVhciAvdWRldi9saWJzeXNmcy9saWJzeXNmcy5oIGxpYnN5c2ZzL2xpYnN5c2ZzLmgK LS0tIC91ZGV2L2xpYnN5c2ZzL2xpYnN5c2ZzLmgJMjAwMy0wNy0xOSAwMzowNjo0OC4wMDAwMDAw MDAgKzA4MDAKKysrIGxpYnN5c2ZzL2xpYnN5c2ZzLmgJMjAwMy0wOC0wNSAxMTowMToyOS4xODMy OTI4MzIgKzA4MDAKQEAgLTEyNCw2ICsxMjQsOSBAQAogZXh0ZXJuIGludCBzeXNmc19yZWFkX2F0 dHJpYnV0ZShzdHJ1Y3Qgc3lzZnNfYXR0cmlidXRlICpzeXNhdHRyKTsKIGV4dGVybiBpbnQgc3lz ZnNfcmVhZF9hdHRyaWJ1dGVfdmFsdWUoY29uc3QgY2hhciAqYXR0cnBhdGgsIGNoYXIgKnZhbHVl LCAKIAkJCQkJCQkJc2l6ZV90IHZzaXplKTsKK2V4dGVybiBpbnQgc3lzZnNfd3JpdGVfYXR0cmli dXRlKHN0cnVjdCBzeXNmc19hdHRyaWJ1dGUgKnN5c2F0dHIsY2hhciAqdmFsdWUpOworZXh0ZXJu IGludCBzeXNmc193cml0ZV9hdHRyaWJ1dGVfdmFsdWUoY29uc3QgY2hhciAqYXR0cnBhdGgsIGNo YXIgKnZhbHVlKTsKKwogZXh0ZXJuIGNoYXIgKnN5c2ZzX2dldF92YWx1ZV9mcm9tX2F0dHJpYnV0 ZXMoc3RydWN0IHN5c2ZzX2F0dHJpYnV0ZSAqYXR0ciwgCiAJCQkJCQkJY29uc3QgY2hhciAqIG5h bWUpOwogZXh0ZXJuIHZvaWQgc3lzZnNfY2xvc2VfZGlyZWN0b3J5KHN0cnVjdCBzeXNmc19kaXJl Y3RvcnkgKnN5c2Rpcik7CmRpZmYgLU51YXIgL3VkZXYvbGlic3lzZnMvc3lzZnNfZGlyLmMgbGli c3lzZnMvc3lzZnNfZGlyLmMKLS0tIC91ZGV2L2xpYnN5c2ZzL3N5c2ZzX2Rpci5jCTIwMDMtMDct MTkgMDM6MDY6MzQuMDAwMDAwMDAwICswODAwCisrKyBsaWJzeXNmcy9zeXNmc19kaXIuYwkyMDAz LTA4LTA1IDExOjE4OjQ0LjU4MDg4ODQ3MiArMDgwMApAQCAtNzgsNiArNzgsMzQgQEAKIAogCXJl dHVybiBzeXNhdHRyOwogfQorLyoqCisgKiBzeXNmc193cml0ZV9hdHRyaWJ1dGU6IHdyaXRlIHZh bHVlIHRvIHRoZSBhdHRyaWJ1dGUKKyAqIEBzeXNhdHRyOiBhdHRyaWJ1dGUgdG8gd3JpdGUKKyAq IHJldHVybnMgMCB3aXRoIHN1Y2Nlc3MgYW5kIC0xIHdpdGggZXJyb3IuCisgKi8KK2ludCBzeXNm c193cml0ZV9hdHRyaWJ1dGUoc3RydWN0IHN5c2ZzX2F0dHJpYnV0ZSAqc3lzYXR0cixjaGFyICAq dmFsdWUpCit7CisJaWYgKHN5c2F0dHIgPT0gTlVMTCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJ cmV0dXJuIC0xOworCX0KKwkKKwlpZiAoIShzeXNhdHRyLT5tZXRob2QgJiBTWVNGU19NRVRIT0Rf U1RPUkUpKSB7CisJCWRwcmludGYgKHN0ZGVyciwgIlN0b3JlIG1ldGhvZCBub3Qgc3VwcG9ydGVk IGZvciBhdHRyaWJ1dGUgJXNcbiIsCisJCQlzeXNhdHRyLT5wYXRoKTsKKwkJcmV0dXJuIC0xOwor CX0KKwkKKwlpZiAoIXZhbHVlKQorCQlzeXNhdHRyLT52YWx1ZT12YWx1ZTsKKwllbHNlCisJewor CQlkcHJpbnRmIChzdGRlcnIsICJUaGUgdmFsdWUgaXMgTlVMTFxuIik7CisJCXJldHVybiAtMTsK Kwl9CisJcmV0dXJuIDA7Cit9CisKIAogLyoqCiAgKiBzeXNmc19yZWFkX2F0dHJpYnV0ZTogcmVh ZHMgdmFsdWUgZnJvbSBhdHRyaWJ1dGUKQEAgLTEzNCw2ICsxNjIsNDEgQEAKIH0KIAogLyoqCisg KiBzeXNmc193cml0ZV9hdHRyaWJ1dGVfdmFsdWU6IGdpdmVuIHBhdGggdG8gYXR0cmlidXRlLCAK KyAqIHZhbHVlIHdpbGwgYmUgc2F2ZWQgdG8gdGhlIGF0dHJpYnV0ZS4KKyAqIEBhdHRycGF0aDog c3lzZnMgcGF0aCB0byBhdHRyaWJ1dGUKKyAqIEB2YWx1ZTogdmFsdWUgdG8gZ2l2ZSB0byBhdHRy aWJ1dGUKKyAqIHJldHVybnMgMCB3aXRoIHN1Y2Nlc3MgYW5kIC0xIHdpdGggZXJyb3IuCisgKi8K K2ludCBzeXNmc193cml0ZV9hdHRyaWJ1dGVfdmFsdWUoY29uc3QgY2hhciAqYXR0cnBhdGgsIGNo YXIgKnZhbHVlKQoreworCXN0cnVjdCBzeXNmc19hdHRyaWJ1dGUgKmF0dHIgPSBOVUxMOworCQor CWlmIChhdHRycGF0aCA9PSBOVUxMIHx8IHZhbHVlID09IE5VTEwpIHsKKwkJZXJybm8gPSBFSU5W QUw7CisJCXJldHVybiAtMTsKKwl9CisKKwlhdHRyID0gc3lzZnNfb3Blbl9hdHRyaWJ1dGUoYXR0 cnBhdGgpOworCWlmIChhdHRyID09IE5VTEwpIHsKKwkJZHByaW50ZihzdGRlcnIsICJJbnZhbGlk IGF0dHJpYnV0ZSBwYXRoICVzXG4iLCBhdHRycGF0aCk7CisJCWVycm5vID0gRUlOVkFMOworCQly ZXR1cm4gLTE7CisJfQorCQorCWlmKChzeXNmc193cml0ZV9hdHRyaWJ1dGUoYXR0cix2YWx1ZSkp ICE9IDAgKSB7CisJCWRwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGUgdG8gYXR0cmlidXRlICVz XG4iLCBhdHRycGF0aCk7CisJCXN5c2ZzX2Nsb3NlX2F0dHJpYnV0ZShhdHRyKTsKKwkJcmV0dXJu IC0xOworCX0KKworCXN5c2ZzX2Nsb3NlX2F0dHJpYnV0ZShhdHRyKTsKKworCXJldHVybiAwOwor fQorCisKKy8qKgogICogc3lzZnNfcmVhZF9hdHRyaWJ1dGVfdmFsdWU6IGdpdmVuIHBhdGggdG8g YXR0cmlidXRlLCByZXR1cm4gaXRzIHZhbHVlLgogICoJdmFsdWVzIGNhbiBiZSB1cCB0byBhIHBh Z2VzaXplLCBpZiBidWZmZXIgaXMgc21hbGxlciB0aGUgdmFsdWUgd2lsbCAKICAqCWJlIHRydW5j YXRlZC4gCg== ------_=_NextPart_001_01C35AF8.59E8669B-- ------------------------------------------------------- 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