memstat-0.9 hurd patch (PATH_MAX)
Tanguy LE CARROUR <[email protected]> Fri, 20 Jan 2012 22:32:56 +0100
| Newsgroups | gmane.os.hurd.devel.readers |
|---|---|
| Message-ID | <CAJbrmLAifthdD2fjChZbaC5k5WktPXOfw0ZJW4SQwuafNJnCnA@mail.gmail.com> |
--f46d0443066492242204b6fc6ca8 Content-Type: multipart/alternative; boundary=f46d0443066492241d04b6fc6ca6 --f46d0443066492241d04b6fc6ca6 Content-Type: text/plain; charset=ISO-8859-1 Dear Hurd developers, Here is my first attempt to fix a PATH_MAX related FTBFS. So please, be indulgent! 1) Why memstat? Because of PATH_MAX, I though would be easy to fix. Also because the source code was relatively small. This package maybe useless but I needed something to start with... 2) Parts to fix a) use of PATH_MAX to create a char[] to store a path b) use of PATH_MAX to read line from a file (that contains 1 file path on each line) in a char[] buffer c) use of readlink(str1, str2, PATH_MAX) 3) Fix... a) "piece of cake" (TM), but include <math.h> (for log10() function) to get an accurate length for the buffer... which may be an overhead! b) read file lines in a dynamically re-sized buffer c) use lstat as described in readlink man page 4) Results The code build on Hurd. dpkg-buildpackage successful. 5) But... - memstat uses /proc/XYZ/exe and /proc/XYZ/maps... and the output of memstat on Hurd is different than the one on Linux - implement (copy/paste mostly) a get_line function. Might have been better to use the GNU get_line()... or not?! Feel free to make comments on everything (code, decisions, style), I know that I still have a lot to learn! Hope to be more helpful in the future, Tanguy --f46d0443066492241d04b6fc6ca6 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Dear Hurd developers,<div><br></div><div>Here is my first attempt to fix a = PATH_MAX related FTBFS. So please, be indulgent!</div><div><br></div><div>1= ) Why memstat?</div><div>Because of PATH_MAX, I though would be easy to fix= . Also because the source code was relatively small.</div> <div>This package maybe useless but I needed something to start with...</di= v><div><br></div><div>2) Parts to fix</div><div>=A0a) use of PATH_MAX to cr= eate a char[] to store a path=A0</div><div>=A0b) use of PATH_MAX to read li= ne from a file (that contains 1 file path on each line) in a=A0char[]=A0buf= fer=A0</div> <div>=A0c) use of readlink(str1, str2, PATH_MAX)</div><div><br></div><div>3= ) Fix...</div><div>=A0a) "piece of cake" (TM), but include <ma= th.h> (for log10() function) to get an accurate length for the buffer...= which may be an overhead!</div> <div>=A0b) read file lines in a dynamically re-sized buffer</div><div>=A0c)= use lstat as described in readlink man page</div><div><br></div><div>4) Re= sults</div><div>The code build on Hurd. dpkg-buildpackage=A0successful.</di= v> <div><br></div><div>5) But...</div><div>=A0- memstat uses /proc/XYZ/exe and= /proc/XYZ/maps... and the output of memstat on Hurd is different than the = one on Linux</div><div>=A0- implement (copy/paste mostly) a get_line functi= on. Might have been better to use the GNU get_line()... or not?!</div> <div><br></div><div>Feel free to make comments on everything (code, decisio= ns, style), I know that I still have a lot to learn!=A0</div><div><br></div= ><div>Hope to be more helpful in the future,</div><div>Tanguy</div> --f46d0443066492241d04b6fc6ca6-- --f46d0443066492242204b6fc6ca8 Content-Type: text/x-patch; charset=US-ASCII; name="memstat-0.9.hurd.patch" Content-Disposition: attachment; filename="memstat-0.9.hurd.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxnq3lsz0 ZGlmZiAtTmF1ciBvbGQvbWVtc3RhdC0wLjkvTWFrZWZpbGUgbWVtc3RhdC0wLjkvTWFrZWZpbGUK LS0tIG9sZC9tZW1zdGF0LTAuOS9NYWtlZmlsZQkyMDEyLTAxLTIwIDEzOjIyOjU1LjAwMDAwMDAw MCArMDAwMAorKysgbWVtc3RhdC0wLjkvTWFrZWZpbGUJMjAxMi0wMS0yMCAxMzoyMzowMy4wMDAw MDAwMDAgKzAwMDAKQEAgLTQsNiArNCw3IEBACiAjIFRoaXMgZmlsZSBpcyB1bmRlciB0aGUgR1BM LgogIwogQ0ZMQUdTID0gLWcgLVdhbGwgLU8yCitMRExJQlMgPSAtbG0KIHByZWZpeCA9ICQoREVT VERJUikvCiBleGVjX3ByZWZpeCA9ICQocHJlZml4KS91c3IKIApkaWZmIC1OYXVyIG9sZC9tZW1z dGF0LTAuOS9tZW1zdGF0LmMgbWVtc3RhdC0wLjkvbWVtc3RhdC5jCi0tLSBvbGQvbWVtc3RhdC0w LjkvbWVtc3RhdC5jCTIwMTItMDEtMjAgMTM6MjI6NTUuMDAwMDAwMDAwICswMDAwCisrKyBtZW1z dGF0LTAuOS9tZW1zdGF0LmMJMjAxMi0wMS0yMCAxMzoyMzowOS4wMDAwMDAwMDAgKzAwMDAKQEAg LTE5LDYgKzE5LDExIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8Z2V0b3B0Lmg+ CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisKKyNpZm5kZWYgQlVGU0la CisjZGVmaW5lIEJVRlNJWiAxMDI0CisjZW5kaWYKIAogLyogYmxhY2tsaXN0IGRldmljZXMgdGhh dCBqdXN0IG1hcCBwaHlzaWNhbCBtZW1vcnkgKi8KIGNoYXIgKmJsYWNrbGlzdFtdID0geyAiL2Rl di9tZW0iLApAQCAtNTgsMTEgKzYzLDQ3IEBACiAgICAgbWFwdGFiX3NpemUgPSBtYXB0YWJfc2l6 ZSAqIDIgKyAxMDA7CiB9CiAKK3N0YXRpYyBpbnQgCitpbnRsZW4oaW50IHZhbHVlKQoreworICAg IGlmICh2YWx1ZSA9PSAwKSB7IHJldHVybiAxOyB9CisgICAgcmV0dXJuIGxvZzEwKHZhbHVlKSAr IDE7Cit9CisKK3N0YXRpYyBjaGFyICogCitnZXRfbGluZShGSUxFICogZikKK3sKKyAgICBzaXpl X3Qgc2l6ZSA9IDA7CisgICAgc2l6ZV90IGxlbiAgPSAwOworICAgIHNpemVfdCBsYXN0ID0gMDsK KyAgICBjaGFyICogYnVmICA9IE5VTEw7CisKKyAgICB3aGlsZSAoIWZlb2YoZikpCisgICAgewor ICAgICAgICBzaXplICs9IEJVRlNJWjsKKyAgICAgICAgYnVmID0gcmVhbGxvYyhidWYsIHNpemUp OworICAgICAgICBpZiAoZmdldHMoYnVmK2xhc3Qsc2l6ZSxmKSA9PSBOVUxMKSAKKyAgICAgICAg eworICAgICAgICAgICAgZnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg ICAgIH0KKworICAgICAgICBsZW4gPSBzdHJsZW4oYnVmKTsKKyAgICAgICAgbGFzdCA9IGxlbiAt IDE7CisgICAgICAgIAorICAgICAgICBpZiAoYnVmW2xhc3QrMV0gIT0gJ1xuJykgeyByZXR1cm4g YnVmOyB9CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKK30KKwogc3RhdGljIHZvaWQgcmVhZF9w cm9jKHZvaWQpCiB7CiAgICAgdW5zaWduZWQgaW50IG5yZWFkLCBwaWQ7CiAgICAgdW5zaWduZWQg bG9uZyBpbm9kZSwgbG8sIGhpLCBvZmZzOwotICAgIGNoYXIgKnAsIG1ham9yWzhdLCBtaW5vcls4 XSwgYnVmZltQQVRIX01BWCArIDMwMF0sICpwYXRoLCBwZXJtWzRdOworICAgIGNoYXIgKnAsIG1h am9yWzhdLCBtaW5vcls4XSwgKnBhdGgsIHBlcm1bNF07CisgICAgY2hhciAqYnVmZiA9IE5VTEw7 CisgICAgaW50IGJ1ZmZfc2l6ZSA9IDA7CiAgICAgRElSICpkOwogICAgIHN0cnVjdCBkaXJlbnQg KmVudDsKICAgICBGSUxFICpmOwpAQCAtODUsMTEgKzEyNiwyMiBAQAogCX0KIAlpZiAocGlkID09 IDAgfHwgKG9ubHlfcGlkICE9IDAgJiYgcGlkICE9IG9ubHlfcGlkKSkKIAkgICAgY29udGludWU7 CisJCisJYnVmZl9zaXplID0gMTE7IC8qIHNpemUgb2YgdGhlIGZvcm1hdCBzdHJpbmcgd2l0aG91 dCAiJXgiIGV4cHJlc3Npb25zICovCisJYnVmZl9zaXplICs9IGludGxlbihwaWQpOworCWJ1ZmYg PSAoY2hhciAqKW1hbGxvYygoYnVmZl9zaXplICsgMSkgKiBzaXplb2YoY2hhcikpOwogCXNwcmlu dGYoYnVmZiwgIi9wcm9jLyVkL21hcHMiLCBwaWQpOwogCWYgPSBmb3BlbihidWZmLCAiciIpOwor CWZyZWUoYnVmZik7CiAJaWYgKGYgPT0gTlVMTCkKIAkgICAgY29udGludWU7Ci0Jd2hpbGUgKGZn ZXRzKGJ1ZmYsIHNpemVvZihidWZmKSwgZikpIHsKKwkKKwkvKiBSZWFkIHRoZSBmaWxlIGxpbmUg YnkgbGluZS4gKi8KKwl3aGlsZSAoIWZlb2YoZikpIAorCXsKKyAgICAgICAgYnVmZiA9IGdldF9s aW5lKGYpOworICAgICAgICBpZiAoYnVmZiA9PSBOVUxMKSB7IGJyZWFrOyB9CisgICAgICAgIAog CSAgICBwID0gc3RyY2hyKGJ1ZmYsICctJyk7CiAJICAgIGlmIChwKQogCQkqcCA9ICcgJzsKQEAg LTk3LDExICsxNDksMTYgQEAKIAkgICAgaWYgKHApCiAJCSpwID0gJyAnOwogCSAgICBwYXRoID0g TlVMTDsKLQkgICAgaWYgKChzdHJsZW4oYnVmZikgPT0gMTApICYmIChzdHJjbXAoYnVmZiwgIiAo ZGVsZXRlZCkiKSA9PSAwKSkKKwkgICAgaWYgKChzdHJsZW4oYnVmZikgPT0gMTApICYmIChzdHJj bXAoYnVmZiwgIiAoZGVsZXRlZCkiKSA9PSAwKSkgeworCSAgICBmcmVlKGJ1ZmYpOwogCQljb250 aW51ZTsKKwkJfQogCSAgICBucmVhZCA9IHNzY2FuZihidWZmLCAiJWx4ICVseCAlNHMgJWx4ICVz ICVzICVsdSAlYXMiLCAmbG8sICZoaSwgcGVybSwgJm9mZnMsIG1ham9yLCBtaW5vciwgJmlub2Rl LCAmcGF0aCk7CisJICAgIGZyZWUoYnVmZik7CiAJICAgIGlmIChucmVhZCA8IDcpIHsKIAkJZnBy aW50ZihzdGRlcnIsICJJIGRvbid0IHJlY29nbml6ZSBmb3JtYXQgb2YgL3Byb2MvJWQvbWFwcy4g KG5yZWFkPSVkKVxuIiwgcGlkLCBucmVhZCk7CisJCWZjbG9zZShmKTsKKwkJY2xvc2VkaXIoZCk7 CiAJCWV4aXQoMSk7CiAJICAgIH0KIAkgICAgaWYgKG1hcHRhYl9maWxsID09IG1hcHRhYl9zaXpl KQpAQCAtMTIxLDEzICsxNzgsMTcgQEAKIAkgICAgbS0+dmFsaWQgPSAxOwogCSAgICBpZiAoKG5y ZWFkID09IDgpICYmIHBhdGggJiYgcGF0aFswXSkgewogCQlpbnQgaTsKLQogCQltLT5wYXRoID0g cGF0aDsKIAkJZm9yIChpID0gMDsgaSA8IHNpemVvZihibGFja2xpc3QpIC8gc2l6ZW9mKGJsYWNr bGlzdFswXSk7IGkrKykgewogCQkgICAgaWYgKCFzdHJuY21wKHBhdGgsIGJsYWNrbGlzdFtpXSwg c3RybGVuKGJsYWNrbGlzdFtpXSkpKQogCQkJbS0+dmFsaWQgPSAwOwogCQl9CiAJICAgIH0gZWxz ZSB7CisgICAgICAgIGJ1ZmZfc2l6ZSA9IDQ7IC8qIHNpemUgb2YgdGhlIGZvcm1hdCBzdHJpbmcg d2l0aG91dCAiJXgiIGV4cHJlc3Npb25zICovCisgICAgCWJ1ZmZfc2l6ZSArPSBzdHJsZW4obWFq b3IpOworICAgIAlidWZmX3NpemUgKz0gc3RybGVuKG1pbm9yKTsKKyAgICAJYnVmZl9zaXplICs9 IGludGxlbihpbm9kZSk7CisJICAgIGJ1ZmYgPSAoY2hhciAqKW1hbGxvYygoYnVmZl9zaXplICsg MSkgKiBzaXplb2YoY2hhcikpOwogCQlzcHJpbnRmKGJ1ZmYsICJbJXM6JXNdOiVsdSIsIG1ham9y LCBtaW5vciwgaW5vZGUpOwogCQltLT5wYXRoID0gc3RyZHVwKGJ1ZmYpOwogCQluZWVkaW5vZGUg PSAxOwpAQCAtMjUxLDE3ICszMTIsNDIgQEAKICAgICBncmFuZCA9IHNoYXJlZGdyYW5kID0gMDsK ICAgICBxc29ydChtYXB0YWJfZGF0YSwgbWFwdGFiX2ZpbGwsIHNpemVvZihzdHJ1Y3QgbWFwcGlu ZyksIChxY21wKSBzb3J0X2J5X3BpZCk7CiAgICAgZm9yIChvZmZzID0gMDsgb2ZmcyA8IG1hcHRh Yl9maWxsOyBvZmZzID0gc2NhbikgewotCWNoYXIgbGlua25hbWVbUEFUSF9NQVhdLCBmaWxlbmFt ZVtQQVRIX01BWF07CisJY2hhciAqbGlua25hbWUgPSBOVUxMOworCWNoYXIgKmZpbGVuYW1lID0g TlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgZmlsZW5hbWVfc2l6ZSA9IDA7CisgICAgc3RydWN0IHN0 YXQgc2I7CiAJc3NpemVfdCBsZW47CiAJaW50IGRlbGV0ZWQgPSAwOwogCiAJcGlkID0gbWFwdGFi X2RhdGFbb2Zmc10ucGlkOworCWZpbGVuYW1lX3NpemUgPSAxMDsgLyogc2l6ZSBvZiB0aGUgZm9y bWF0IHN0cmluZyB3aXRob3V0ICIleCIgZXhwcmVzc2lvbnMgKi8KKwlmaWxlbmFtZV9zaXplICs9 IGludGxlbihwaWQpOworCWZpbGVuYW1lID0gKGNoYXIgKiltYWxsb2MoKGZpbGVuYW1lX3NpemUg KyAxKSAqIHNpemVvZihjaGFyKSk7CiAJc3ByaW50ZihmaWxlbmFtZSwgIi9wcm9jLyVkL2V4ZSIs IHBpZCk7Ci0JaWYgKChsZW4gPSByZWFkbGluayhmaWxlbmFtZSwgbGlua25hbWUsIFBBVEhfTUFY KSkgPT0gLTEpIHsKKwkKKwlpZiAobHN0YXQoZmlsZW5hbWUsICZzYikgPT0gLTEpIHsKKyAgICAg ICAgcGVycm9yKCJsc3RhdCIpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQor ICAgIGxpbmtuYW1lID0gbWFsbG9jKHNiLnN0X3NpemUgKyAxKTsKKyAgICBpZiAobGlua25hbWUg PT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImluc3VmZmljaWVudCBtZW1vcnlc biIpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorICAgIAorCWxlbiA9IHJl YWRsaW5rKGZpbGVuYW1lLCBsaW5rbmFtZSwgc2Iuc3Rfc2l6ZSArIDEpOworCWZyZWUoZmlsZW5h bWUpOworCQorCWlmIChsZW4gPCAwKSB7CisgICAgCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IHJl YWQgbGluayBpbmZvcm1hdGlvbiBmb3IgJXNcbiIsIGZpbGVuYW1lKTsKKwkgICAgZGVsZXRlZCA9 IDE7CisJfQkKKwlpZiAobGVuID4gc2Iuc3Rfc2l6ZSkgewogCSAgICBmcHJpbnRmKHN0ZGVyciwg IkNhbm5vdCByZWFkIGxpbmsgaW5mb3JtYXRpb24gZm9yICVzXG4iLCBmaWxlbmFtZSk7CiAJICAg IGRlbGV0ZWQgPSAxOwotCX0KLQlsaW5rbmFtZVtsZW5dID0gJ1wwJzsKKwl9CQorCWxpbmtuYW1l W3NiLnN0X3NpemVdID0gJ1wwJzsKKwkKIAl0b3RhbCA9IDA7CiAJZm9yIChzY2FuID0gb2Zmczsg c2NhbiA8IG1hcHRhYl9maWxsOyBzY2FuKyspIHsKIAkgICAgbSA9IG1hcHRhYl9kYXRhICsgc2Nh bjsKQEAgLTI3Nyw2ICszNjMsNyBAQAogCQlwcmludGxpbmUoYnVmZmVyKTsKIAkJZ3JhbmQgKz0g dG90YWw7CiAJfQorICAgIGZyZWUobGlua25hbWUpOwogICAgIH0KIAogICAgIHFzb3J0KG1hcHRh Yl9kYXRhLCBtYXB0YWJfZmlsbCwgc2l6ZW9mKHN0cnVjdCBtYXBwaW5nKSwgKHFjbXApIHNvcnRf YnlfaW5vZGUpOwo= --f46d0443066492242204b6fc6ca8--