Date: Fri, 26 Oct 2001 09:20:27 +0400 (MSD) From: "Andrew L. Neporada" <andr@dgap.mipt.ru> To: freebsd-hackers@freebsd.org Subject: memmem(3) -- new libc function proposal Message-ID: <20011026090237.V1864-200000@nas.dgap.mipt.ru>
next in thread | raw e-mail | index | archive | help
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-2136107261-1004073627=:1864 Content-Type: TEXT/PLAIN; charset=US-ASCII memmem(3) is another one substring searching function. Unlike str(n)str it could be used for binary strings search. memmem is compatible with GNU libc memmem. Please comment/review. Andrew. --0-2136107261-1004073627=:1864 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="memmem.patch" Content-Transfer-Encoding: BASE64 Content-ID: <20011026092027.X1864@nas.dgap.mipt.ru> Content-Description: memmem.patch Content-Disposition: attachment; filename="memmem.patch" ZGlmZiAtcnVOIHNyYy5vcmlnL2luY2x1ZGUvc3RyaW5nLmggc3JjL2luY2x1 ZGUvc3RyaW5nLmgNCi0tLSBzcmMub3JpZy9pbmNsdWRlL3N0cmluZy5oCVRo dSBPY3QgMTggMDU6MzU6NDcgMjAwMQ0KKysrIHNyYy9pbmNsdWRlL3N0cmlu Zy5oCUZyaSBPY3QgMjYgMDg6MTM6NDQgMjAwMQ0KQEAgLTgxLDYgKzgxLDcg QEANCiBpbnQJIGZmcyBfX1AoKGludCkpOw0KIGNoYXIJKmluZGV4IF9fUCgo Y29uc3QgY2hhciAqLCBpbnQpKTsNCiB2b2lkCSptZW1jY3B5IF9fUCgodm9p ZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KSk7DQordm9pZAkqbWVt bWVtIF9fUCgoY29uc3Qgdm9pZCAqLCBzaXplX3QsIGNvbnN0IHZvaWQgKiwg c2l6ZV90KSk7DQogY2hhcgkqcmluZGV4IF9fUCgoY29uc3QgY2hhciAqLCBp bnQpKTsNCiBpbnQJIHN0cmNhc2VjbXAgX19QKChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKikpOw0KIGNoYXIJKnN0cmNhc2VzdHIgX19QKChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKikpOw0KZGlmZiAtcnVOIHNyYy5vcmlnL2xp Yi9saWJjL3N0cmluZy9NYWtlZmlsZS5pbmMgc3JjL2xpYi9saWJjL3N0cmlu Zy9NYWtlZmlsZS5pbmMNCi0tLSBzcmMub3JpZy9saWIvbGliYy9zdHJpbmcv TWFrZWZpbGUuaW5jCVdlZCBPY3QgMTAgMDY6MTc6MzUgMjAwMQ0KKysrIHNy Yy9saWIvbGliYy9zdHJpbmcvTWFrZWZpbGUuaW5jCVRodSBPY3QgMjUgMjI6 Mjk6NDAgMjAwMQ0KQEAgLTcsOCArNyw4IEBADQogDQogIyBtYWNoaW5lLWlu ZGVwZW5kZW50IHN0cmluZyBzb3VyY2VzDQogTUlTUkNTKz1iY21wLmMgYmNv cHkuYyBiemVyby5jIGZmcy5jIGluZGV4LmMgbWVtY2NweS5jIG1lbWNoci5j IG1lbWNtcC5jIFwNCi0JbWVtY3B5LmMgbWVtbW92ZS5jIG1lbXNldC5jIHJp bmRleC5jIHN0cmNhc2VjbXAuYyBzdHJjYXQuYyBzdHJjaHIuYyBcDQotCXN0 cmNtcC5jIHN0cmNvbGwuYyBzdHJjcHkuYyBzdHJjc3BuLmMgc3RyZHVwLmMg c3RyZXJyb3IuYyBcDQorCW1lbWNweS5jIG1lbW1lbS5jIG1lbW1vdmUuYyBt ZW1zZXQuYyByaW5kZXguYyBzdHJjYXNlY21wLmMgc3RyY2F0LmMgXA0KKwlz dHJjaHIuYyBzdHJjbXAuYyBzdHJjb2xsLmMgc3RyY3B5LmMgc3RyY3Nwbi5j IHN0cmR1cC5jIHN0cmVycm9yLmMgXA0KIAlzdHJsY2F0LmMgc3RybGNweS5j IHN0cmxlbi5jIHN0cm1vZGUuYyBzdHJuY2F0LmMgc3RybmNtcC5jIHN0cm5j cHkuYyBcDQogCXN0cmNhc2VzdHIuYyBzdHJuc3RyLmMgXA0KIAlzdHJwYnJr LmMgc3RycmNoci5jIHN0cnNlcC5jIHN0cnNpZ25hbC5jIHN0cnNwbi5jIHN0 cnN0ci5jIHN0cnRvay5jIFwNCkBAIC0yNSwxMCArMjUsMTAgQEANCiANCiAu aWYgJHtMSUJ9ID09ICJjIg0KIE1BTis9CWJjbXAuMyBiY29weS4zIGJzdHJp bmcuMyBiemVyby4zIGZmcy4zIGluZGV4LjMgbWVtY2NweS4zIG1lbWNoci4z IFwNCi0JbWVtY21wLjMgbWVtY3B5LjMgbWVtbW92ZS4zIG1lbXNldC4zIHJp bmRleC4zIHN0cmNhc2VjbXAuMyBzdHJjYXQuMyBcDQotCXN0cmNoci4zIHN0 cmNtcC4zIHN0cmNvbGwuMyBzdHJjcHkuMyBzdHJjc3BuLjMgc3RyZHVwLjMg c3RyZXJyb3IuMyBcDQotCXN0cmluZy4zIHN0cmxjcHkuMyBzdHJsZW4uMyBz dHJtb2RlLjMgc3RycGJyay4zIHN0cnJjaHIuMyBzdHJzZXAuMyBcDQotCXN0 cnNwbi4zIHN0cnN0ci4zIHN0cnRvay4zIHN0cnhmcm0uMyBzd2FiLjMgd21l bWNoci4zDQorCW1lbWNtcC4zIG1lbWNweS4zIG1lbWVtLjMgbWVtbW92ZS4z IG1lbXNldC4zIHJpbmRleC4zIHN0cmNhc2VjbXAuMyBcDQorCXN0cmNhdC4z IHN0cmNoci4zIHN0cmNtcC4zIHN0cmNvbGwuMyBzdHJjcHkuMyBzdHJjc3Bu LjMgc3RyZHVwLjMgXA0KKwlzdHJlcnJvci4zIHN0cmluZy4zIHN0cmxjcHku MyBzdHJsZW4uMyBzdHJtb2RlLjMgc3RycGJyay4zIHN0cnJjaHIuMyBcDQor CXN0cnNlcC4zIHN0cnNwbi4zIHN0cnN0ci4zIHN0cnRvay4zIHN0cnhmcm0u MyBzd2FiLjMgd21lbWNoci4zDQogDQogTUxJTktTKz1zdHJjYXNlY21wLjMg c3RybmNhc2VjbXAuMw0KIE1MSU5LUys9c3RyY2F0LjMgc3RybmNhdC4zDQpk aWZmIC1ydU4gc3JjLm9yaWcvbGliL2xpYmMvc3RyaW5nL2JzdHJpbmcuMyBz cmMvbGliL2xpYmMvc3RyaW5nL2JzdHJpbmcuMw0KLS0tIHNyYy5vcmlnL2xp Yi9saWJjL3N0cmluZy9ic3RyaW5nLjMJTW9uIE9jdCAgMSAyMDowOTowMCAy MDAxDQorKysgc3JjL2xpYi9saWJjL3N0cmluZy9ic3RyaW5nLjMJVGh1IE9j dCAyNSAyMjo1NTowMyAyMDAxDQpAQCAtNDUsNiArNDUsNyBAQA0KIC5ObSBt ZW1jaHIgLA0KIC5ObSBtZW1jbXAgLA0KIC5ObSBtZW1jcHkgLA0KKy5ObSBt ZW1tZW0gLA0KIC5ObSBtZW1tb3ZlICwNCiAuTm0gbWVtc2V0DQogLk5kIGJ5 dGUgc3RyaW5nIG9wZXJhdGlvbnMNCkBAIC02Nyw2ICs2OCw4IEBADQogLkZ0 IHZvaWQgKg0KIC5GbiBtZW1jcHkgInZvaWQgKmRzdCIgImNvbnN0IHZvaWQg KnNyYyIgInNpemVfdCBsZW4iDQogLkZ0IHZvaWQgKg0KKy5GbiBtZW1tZW0g ImNvbnN0IHZvaWQgKnN0ciIgInNpemVfdCBzdHJsZW4iICJjb25zdCB2b2lk ICpzdWJzdHIiICJzaXplX3Qgc3VibGVuIg0KKy5GdCB2b2lkICoNCiAuRm4g bWVtbW92ZSAidm9pZCAqZHN0IiAiY29uc3Qgdm9pZCAqc3JjIiAic2l6ZV90 IGxlbiINCiAuRnQgdm9pZCAqDQogLkZuIG1lbXNldCAidm9pZCAqYiIgImlu dCBjIiAic2l6ZV90IGxlbiINCkBAIC04Niw2ICs4OSw3IEBADQogLlhyIG1l bWNociAzICwNCiAuWHIgbWVtY21wIDMgLA0KIC5YciBtZW1jcHkgMyAsDQor LlhyIG1lbW1lbSAzICwNCiAuWHIgbWVtbW92ZSAzICwNCiAuWHIgbWVtc2V0 IDMNCiAuU2ggU1RBTkRBUkRTDQpkaWZmIC1ydU4gc3JjLm9yaWcvbGliL2xp YmMvc3RyaW5nL21lbW1lbS4zIHNyYy9saWIvbGliYy9zdHJpbmcvbWVtbWVt LjMNCi0tLSBzcmMub3JpZy9saWIvbGliYy9zdHJpbmcvbWVtbWVtLjMJVGh1 IEphbiAgMSAwMzowMDowMCAxOTcwDQorKysgc3JjL2xpYi9saWJjL3N0cmlu Zy9tZW1tZW0uMwlGcmkgT2N0IDI2IDA3OjIxOjAyIDIwMDENCkBAIC0wLDAg KzEsODQgQEANCisuXCIgQ29weXJpZ2h0IChjKSAyMDAxIEFuZHJldyBMLiBO ZXBvcmFkYSA8YW5kckBkZ2FwLm1pcHQucnU+DQorLlwiIENvcHlyaWdodCAo YykgMTk5MCwgMTk5MSwgMTk5Mw0KKy5cIglUaGUgUmVnZW50cyBvZiB0aGUg VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCisuXCINCisuXCIgVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0 d2FyZSBjb250cmlidXRlZCB0byBCZXJrZWxleSBieQ0KKy5cIiBDaHJpcyBU b3JlayBhbmQgdGhlIEFtZXJpY2FuIE5hdGlvbmFsIFN0YW5kYXJkcyBDb21t aXR0ZWUgWDMsDQorLlwiIG9uIEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgU3lz dGVtcy4NCisuXCINCisuXCIgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorLlwi IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKy5cIiBhcmUgbWV0Og0KKy5cIiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodA0KKy5cIiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu DQorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorLlwiICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbiB0aGUNCisuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1 dGlvbi4NCisuXCIgMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50 aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlDQorLlwi ICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVu dDoNCisuXCIJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgVW5pdmVyc2l0eSBvZg0KKy5cIglDYWxpZm9ybmlhLCBC ZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4NCisuXCIgNC4gTmVpdGhl ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9m IGl0cyBjb250cmlidXRvcnMNCisuXCIgICAgbWF5IGJlIHVzZWQgdG8gZW5k b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlDQorLlwiICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLg0KKy5cIg0KKy5cIiBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ UycnIEFORA0KKy5cIiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisuXCIg SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCisuXCIgQVJFIERJU0NM QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05U UklCVVRPUlMgQkUgTElBQkxFDQorLlwiIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMDQorLlwiIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQor LlwiIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KKy5cIiBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVA0KKy5cIiBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZDQorLlwiIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCisu XCIgU1VDSCBEQU1BR0UuDQorLlwiDQorLlwiICRGcmVlQlNEJA0KKy5cIg0K Ky5EZCBPY3RvYmVyIDI2LCAyMDAxDQorLkR0IE1FTU1FTSAzDQorLk9zDQor LlNoIE5BTUUNCisuTm0gbWVtbWVtDQorLk5kIGxvY2F0ZSBhIGJpbmFyeSBz dWJzdHJpbmcgaW4gYSBiaW5hcnkgc3RyaW5nDQorLlNoIExJQlJBUlkNCisu TGIgbGliYw0KKy5TaCBTWU5PUFNJUw0KKy5JbiBzdHJpbmcuaA0KKy5GdCB2 b2lkICoNCisuRm4gbWVtbWVtICJjb25zdCB2b2lkICpzdHIiICJzaXplX3Qg c3RybGVuIiAiY29uc3Qgdm9pZCAqc3Vic3RyIiAic2l6ZV90IHN1YmxlbiIN CisuU2ggREVTQ1JJUFRJT04NCitUaGUNCisuRm4gbWVtbWVtDQorZnVuY3Rp b24NCitsb2NhdGVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBiaW5h cnkgc3RyaW5nDQorLkZhIHN1YnN0cg0KK2luIHRoZSBiaW5hcnkgc3RyaW5n DQorLkZhIHN0ciAuDQorU2luY2UgdGhlDQorLkZuIG1lbW1lbQ0KK2Z1bmN0 aW9uIGlzIGENCisuRngNCitzcGVjaWZpYyBBUEksIGl0IHNob3VsZCBvbmx5 IGJlIHVzZWQgd2hlbiBwb3J0YWJpbGl0eSBpcyBub3QgYSBjb25jZXJuLg0K Ky5TaCBSRVRVUk4gVkFMVUVTDQorSWYNCisuRmEgc3VibGVuDQoraXMgemVy bywNCisuRmEgc3RyDQoraXMgcmV0dXJuZWQ7DQoraWYNCisuRmEgc3Vic3Ry DQorb2NjdXJzIG5vd2hlcmUgaW4NCisuRmEgc3RyICwNCitOVUxMIGlzIHJl dHVybmVkOw0KK290aGVyd2lzZSBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGJ5 dGUgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YNCisuRmEgc3Vic3RyDQor aXMgcmV0dXJuZWQuDQorLlNoIFNFRSBBTFNPDQorLlhyIG1lbWNociAzICwN CisuWHIgc3RyY2FzZXN0ciAzICwNCisuWHIgc3RyY2hyIDMgLA0KKy5YciBz dHJuc3RyIDMgLA0KKy5YciBzdHJzdHIgMyAsDQorLlhyIHN0cnJjaHIgMw0K ZGlmZiAtcnVOIHNyYy5vcmlnL2xpYi9saWJjL3N0cmluZy9tZW1tZW0uYyBz cmMvbGliL2xpYmMvc3RyaW5nL21lbW1lbS5jDQotLS0gc3JjLm9yaWcvbGli L2xpYmMvc3RyaW5nL21lbW1lbS5jCVRodSBKYW4gIDEgMDM6MDA6MDAgMTk3 MA0KKysrIHNyYy9saWIvbGliYy9zdHJpbmcvbWVtbWVtLmMJRnJpIE9jdCAy NiAwODoyNzo1NiAyMDAxDQpAQCAtMCwwICsxLDgyIEBADQorLyotDQorICog Q29weXJpZ2h0IChjKSAyMDAxIEFuZHJldyBMLiBOZXBvcmFkYSA8YW5kckBk Z2FwLm1pcHQucnU+DQorICogQ29weXJpZ2h0IChjKSAxOTkwLCAxOTkzDQor ICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBh cmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQor ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZSBkaXN0cmlidXRpb24uDQorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3 YXJlDQorICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93 bGVkZ2VtZW50Og0KKyAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2Fy ZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YNCisgKglDYWxpZm9y bmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4NCisgKiA0LiBO ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFt ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycw0KKyAqICAgIG1heSBiZSB1c2VkIHRv IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZQ0KKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp dHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMg SVMnJyBBTkQNCisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyAqIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJ QlVUT1JTIEJFIExJQUJMRQ0KKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMDQorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMNCisgKiBP UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsIFNUUklDVA0KKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX QVkNCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQorICogU1VDSCBE QU1BR0UuDQorICovDQorDQorI2luY2x1ZGUgPHN5cy9jZGVmcy5oPg0KK19f RkJTRElEKCIkRnJlZUJTRCQiKTsNCisNCisjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+DQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KKyNpbmNsdWRlIDxzdHJpbmcu aD4NCisNCisvKg0KKyAqIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2Yg Ynl0ZSBzdHJpbmcgcCBpbiBieXRlIHN0cmluZyBzLg0KKyAqDQorICogVGhp cyBpbXBsZW1lbnRhdGlvbiB1c2VzIHNpbXBsaWZpZWQgQm95ZXItTW9vcmUg YWxnb3JpdGhtIChvbmx5DQorICogYmFkLWNoYXJhY3RlciBzaGlmdCB0YWJs ZSBpcyB1c2VkKS4NCisgKiBTZWU6DQorICogQm95ZXIgUi5TLiwgTW9vcmUg Si5TLiAxOTc3LCAiQSBmYXN0IHN0cmluZyBzZWFyY2hpbmcgYWxnb3JpdGht IiwNCisgKiBDb21tdW5pY2F0aW9ucyBvZiBBQ00uIDIwOjc2Mi03NzIuDQor ICovDQordm9pZCAqDQorbWVtbWVtKHMsIHNsZW4sIHAsIHBsZW4pDQorCXJl Z2lzdGVyIGNvbnN0IHZvaWQJKnMsICpwOw0KKwlzaXplX3QJCQlzbGVuLCBw bGVuOw0KK3sNCisJcmVnaXN0ZXIgY29uc3QgdV9jaGFyIAkqc3RyLCAqc3Vi c3RyOw0KKwlyZWdpc3RlciBzaXplX3QJCWksIG1heF9zaGlmdCwgY3Vycl9z aGlmdDsNCisNCisJc2l6ZV90CQkJc2hpZnRbVUNIQVJfTUFYICsgMV07DQor DQorCWlmICghcGxlbikNCisJCXJldHVybiAoKHZvaWQgKilzKTsNCisJaWYg KHBsZW4gPiBzbGVuKQ0KKwkJcmV0dW5yIChOVUxMKTsNCisNCisJc3RyID0g KGNvbnN0IHVfY2hhciAqKXM7DQorCXN1YnN0ciA9IChjb25zdCB1X2NoYXIg KilwOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDw9IFVDSEFSX01BWDsgaSsrKSBz aGlmdFtpXSA9IHBsZW4gKyAxOw0KKwlmb3IgKGkgPSAwOyBpIDwgcGxlbjsg aSsrKSBzaGlmdFtzdWJzdHJbaV1dID0gcGxlbiAtIGk7DQorDQorCWkgPSAw Ow0KKwltYXhfc2hpZnQgPSBzbGVuIC0gcGxlbjsNCisJd2hpbGUgKGkgPD0g bWF4X3NoaWZ0KSB7DQorCQlpZiAoKnN0ciA9PSAqc3Vic3RyICYmICFtZW1j bXAoc3RyICsgMSwgc3Vic3RyICsgMSwgcGxlbiAtIDEpKQ0KKwkJCXJldHVy biAoKHZvaWQgKilzdHIpOw0KKwkJY3Vycl9zaGlmdCA9IHNoaWZ0W3N0cltw bGVuXV07DQorCQlzdHIgKz0gY3Vycl9zaGlmdDsNCisJCWkgKz0gY3Vycl9z aGlmdDsNCisJfQ0KKwlyZXR1cm4gKE5VTEwpOw0KK30NCg== --0-2136107261-1004073627=:1864-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011026090237.V1864-200000>