followup to nifty function

Jonathan Walther djw@reactor-core.org
Mon, 11 Sep 2000 20:09:51 -0700 (PDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-2022591370-968728191=:8486
Content-Type: TEXT/PLAIN; charset=US-ASCII

Fixed a memory leak in the usage of realloc().

Does anyone else see this as useful, or do you have better ways of parsing
non seekable streams such as stdin, sockets, pipes, fifos, and many
denizens of /dev ?

Jonathan

--0-2022591370-968728191=:8486
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="function-pointer.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSO.4.21.0009112009510.8486@reactor-core.org>
Content-Description: read_until.c
Content-Disposition: attachment; filename="function-pointer.c"

I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQoNCnR5
cGVkZWYgc3RydWN0IHsNCgljaGFyICAgICAgICAgICAqZGF0YTsNCglpbnQg
ICAgICAgICAgICAgbGVuOw0KfSAgICAgICAgICAgICAgIHJlYWRfdW50aWxf
dDsNCg0KZW51bSB7DQoJQ09OVElOVUUsIEVSUk9SLCBET05FDQp9Ow0KDQpy
ZWFkX3VudGlsX3QgICAqcmVhZF91bnRpbChpbnQsIGNoYXIgKiwgc2l6ZV90
LCBpbnQgKCopIChjaGFyICosIGludCkpOw0KDQovKg0KICogVGhlIHZhcmlh
YmxlICJzdGFjayIgYW5kIGluZm9ybWF0aW9uIGFib3V0IGl0cyBzaXplIHNv
bHZlIHRoZSBsb29rYWhlYWQNCiAqIHByb2JsZW0uICBJZiB5b3VyIGNvbmRp
dGlvbigpIGZ1bmN0aW9uIHJlcXVpcmVzIGNoYXJhY3RlcnMgdG8ga25vdyB3
aGVuIHRvDQogKiB0ZXJtaW5hdGUgdGhhdCB5b3UgY2FuJ3QgcHJvY2VzcyBu
b3csIGJ1dCB3YW50IHRvIHByb2Nlc3MgYXQgYSBsYXRlciBkYXRlLA0KICog
c3RhY2sgYWxsb3dzIGl0IHRvIGVhdCBhbGwgaXQgd2FudHMuICBBdCB0aGUg
ZW5kIG9mIHRoaXMgZnVuY3Rpb24sIHBhc3MgaW4NCiAqIHRoZSBwb2ludGVy
IHRvIHRoZSByZXR1cm5lZCBzdHJpbmcgYXQgdGhlIHBvaW50IHdoZXJlIHlv
dSB3YW50IHRoZQ0KICogcHVzaGJhY2sgdG8gc3RhcnQsIGFuZCBpdHMgc2l6
ZS4NCiAqDQogKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6IGlu
IFJGQyA4MjIgZm9ybWF0IGhlYWRlcnMsIGEgaGVhZGVyIG1heSBiZQ0KICog
c3BsaXQgYWNyb3NzIGxpbmVzLCBpZiBhZnRlciBlYWNoIGxpbmUgYnJlYWsg
aXQgc3RhcnRzIHRoZSBuZXh0IGxpbmUgd2l0aA0KICogc29tZSB3aGl0ZXNw
YWNlLiBUbyByZWFkIGluIGEgZnVsbCBoZWFkZXIgbGluZSByZXF1aXJlcyBu
b3Qgb25seSBkZXRlY3RpbmcNCiAqIHRoZSBuZXcgbGluZSwgYnV0IG1ha2lu
ZyBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIG5leHQgbGluZSBp
c24ndCBhDQogKiBzcGFjZS4NCiAqDQogKiBJZiB0aGUgZmlyc3QgY2hhcmFj
dGVyIG9mIHRoZSBuZXh0IGxpbmUgaXMgTk9UIGEgc3BhY2UsIHlvdSBuZWVk
IHRvIHB1c2ggaXQNCiAqIGJhY2sgdG8gYmUgcmVhZCBhZ2Fpbi4gIHdpdGgg
cmVhZCgpIHlvdSBjYW5ub3QgZG8gdGhpcy4gIFdpdGggcmVhZF91bnRpbCgp
DQogKiB5b3UgbWlnaHQgc2VlIHRoZSBmb2xsb3dpbmcgY29kZToNCiAqDQog
KiB3aGlsZSAoKHIgPSByZWFkX3VudGlsKHN0ZGluLCBOVUxMLCAwLCBlbmRf
b2ZfcmZjODIyX2hlYWRlcikpICE9IE5VTEwpDQogKiAuLi4uLmRvIHN0dWZm
IHdpdGggcjsgaWYgciA9PSAiXG5cbiIsIHRoYXRzIHRoZSBlbmQgb2YgdGhl
IGhlYWRlcnMuLi4uLg0KICovDQpyZWFkX3VudGlsX3QgICAqDQpyZWFkX3Vu
dGlsKGludCBmZCwgY2hhciAqc3RhY2ssIHNpemVfdCBzdGFja19zaXplLCBp
bnQgKCpjb25kaXRpb24pIChjaGFyICosIGludCkpDQp7DQoJc3RhdGljIGNo
YXIgICAgKmFjY3VtdWxhdG9yLCAqYTsJLyogYWNjdW11bGF0b3IgKi8NCglz
dGF0aWMgaW50ICAgICAgc2l6ZSwgaSwgYywgcjsNCglyZWFkX3VudGlsX3Qg
ICAqcmVzdWx0ID0gKHJlYWRfdW50aWxfdCAqKSBtYWxsb2Moc2l6ZW9mKHJl
YWRfdW50aWxfdCkpOw0KDQoJaWYgKChhY2N1bXVsYXRvciA9IHJlYWxsb2Mo
TlVMTCwgMTI4ID4gc3RhY2tfc2l6ZSA/IDEyOCA6IHN0YWNrX3NpemUgKyAx
MjgpKSA9PSBOVUxMKQ0KCQlyZXR1cm4gTlVMTDsNCg0KCXNpemUgPSAxMjgg
PiBzdGFja19zaXplID8gMTI4IDogc3RhY2tfc2l6ZSArIDEyODsNCg0KCWZv
ciAoaSA9IDA7IChjID0gY29uZGl0aW9uKGFjY3VtdWxhdG9yLCBpKSkgPT0g
Q09OVElOVUU7IGkrKykgew0KCQlpZiAoaSA9PSBzaXplICYmIChhID0gcmVh
bGxvYyhhY2N1bXVsYXRvciwgc2l6ZSArPSAxMjgpKSA9PSBOVUxMKSB7DQoJ
CQlmcmVlKGFjY3VtdWxhdG9yKTsNCgkJCXJldHVybiBOVUxMOw0KCQl9DQoJ
CWFjY3VtdWxhdG9yID0gYTsNCgkJaWYgKChyID0gcmVhZChmZCwgYWNjdW11
bGF0b3IgKyBpLCAxKSkgPT0gLTEpIHsNCgkJCWZyZWUoYWNjdW11bGF0b3Ip
Ow0KCQkJcmV0dXJuIE5VTEw7DQoJCX0gZWxzZSBpZiAociA9PSAwKQ0KCQkJ
aS0tOw0KCX0NCg0KCWlmIChjID09IEVSUk9SKSB7DQoJCWZyZWUoYWNjdW11
bGF0b3IpOw0KCQlyZXR1cm4gTlVMTDsNCgl9DQoJcmVzdWx0LT5kYXRhID0g
YWNjdW11bGF0b3I7DQoJcmVzdWx0LT5sZW4gPSBpOw0KCXJldHVybiByZXN1
bHQ7DQp9DQoNCi8qDQppbnQgICAgICAgICAgICAgZChpbnQpOw0KaW50ICAg
ICAgICAgICAgIGYoaW50ICgqKSAoaW50KSk7DQoNCmludA0KbWFpbih2b2lk
KQ0Kew0KCWYoZCk7DQp9DQoNCmludA0KZChpbnQgeCkNCnsNCglyZXR1cm4g
MiAqIHg7DQp9DQoNCmludA0KZihpbnQgKCp4KSAoaW50KSkNCnsNCglpbnQg
ICAgICAgICAgICAgaTsNCglmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykNCgkJ
cHJpbnRmKCIlZFxuIiwgeChpKSk7DQoJcmV0dXJuIDA7DQp9DQoqLw0K
--0-2022591370-968728191=:8486--