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) &quot;piece of cake&quot; (TM), but include &lt;ma=
th.h&gt; (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--