Date: Sun, 5 Jul 1998 22:52:09 +0200 (CEST) From: Andrzej Bialecki <abial@nask.pl> To: freebsd-small@FreeBSD.ORG Subject: Custom init Message-ID: <Pine.NEB.3.95.980705224839.27775A-200000@korin.warman.org.pl>
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-1146471947-899671929=:27775 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, This is my first stab at custom init combined with simple user shell. The thing is very small (17kB dynamic), and I'm sure it can be substantially improved... :-) It runs quite well on picobsd floppies (modulo some nits, which I'm yet unsure of what causes them - most probably wrong signals at wron time). Let me know what you think! Andrzej Bialecki --------------------+--------------------------------------------------------- abial@nask.pl | if(halt_per_mth > 0) { fetch("http://www.freebsd.org") } Research & Academic | "Be open-minded, but don't let your brains to fall out." Network in Poland | All of the above (and more) is just my personal opinion. --------------------+--------------------------------------------------------- --0-1146471947-899671929=:27775 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="oinit.c" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.NEB.3.95.980705225209.27775B@korin.warman.org.pl> Content-Description: LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTggQW5kcnplaiBCaWFsZWNraQ0K ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1dGlv biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJlIG1l dDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuDQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1 dGlvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQogKiBB TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQ0K ICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFHRVMg KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBMSUFC SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKgkkSWQ6JA0KICov DQoNCi8qDQogKiBBIHByaW1pdGl2ZSB2ZXJzaW9uIG9mIGluaXQoOCkgd2l0 aCBzaW1wbGlzdGljIHVzZXIgaW50ZXJmYWNlDQogKi8NCg0KI2luY2x1ZGUg PHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1 ZGUgPHN5cy9tb3VudC5oPg0KI2luY2x1ZGUgPHN5cy9yZWJvb3QuaD4NCiNp bmNsdWRlIDxzeXMvdGltZS5oPg0KI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5o Pg0KI2luY2x1ZGUgPHN5cy93YWl0Lmg+DQojaW5jbHVkZSA8ZXJyLmg+DQoj aW5jbHVkZSA8ZXJybm8uaD4NCiNpbmNsdWRlIDxmY250bC5oPg0KI2luY2x1 ZGUgPGxpYnV0aWwuaD4NCiNpbmNsdWRlIDxwYXRocy5oPg0KI2luY2x1ZGUg PHNpZ25hbC5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3Ry aW5nLmg+DQojaW5jbHVkZSA8c3lzbG9nLmg+DQojaW5jbHVkZSA8dW5pc3Rk Lmg+DQojaW5jbHVkZSA8dmFyYXJncy5oPg0KDQojZGVmaW5lIEJVRlNJWkUg MTAyNA0KI2RlZmluZSBNQVhfQ09OUyAxMg0KDQojZGVmaW5lCVNJTkdMRQkx DQojZGVmaW5lCU1VTFRJCTINCiNkZWZpbmUJREVBVEgJMw0KDQojZGVmaW5l CUZBTFNFCTANCiNkZWZpbmUgVFJVRQkxDQoNCmNoYXIgY3dkW0JVRlNJWkVd Ow0KY2hhciB2dHlbXT0iMDEyMzQ1Njc4OWFiY2RlZiI7DQpjaGFyICpwcm9n bmFtZTsNCmludCBSZWJvb3Q9RkFMU0U7DQp2b2xhdGlsZSBpbnQgdHJhbnNp dGlvbj1NVUxUSTsNCnZvbGF0aWxlIGludCBwcmV2dHJhbnM9U0lOR0xFOw0K DQpjaGFyICp0cmFuc1tdPXsgIj8/PyEiLCAiU0lOR0xFIiwgIk1VTFRJIiwg IkRFQVRIIiB9Ow0KDQpleHRlcm4gY2hhciAqKmVudmlyb247DQoNCi8qIFN0 cnVjdCBmb3IgaG9sZGluZyBzZXNzaW9uIHN0YXRlICovDQpzdHJ1Y3Qgc2Vz cyB7DQoJY2hhciB0dHlbMTFdOwkvKiB2dHkgZGV2aWNlIHBhdGggKi8NCglw aWRfdCBwaWQ7CS8qIHBpZCBvZiBwcm9jZXNzIHJ1bm5pbmcgb24gaXQgKi8N CglpbnQgKCpmdW5jKShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KCQkJLyog aW50ZXJuYWwgZnVuY3Rpb24gdG8gcnVuIG9uIGl0IChhZnRlciBmb3JraW5n KSAqLw0KfSB0dHlzW01BWF9DT05TXTsNCg0KLyogU3RydWN0IGZvciBidWls dC1pbiBjb21tYW5kICovDQpzdHJ1Y3QgY29tbWFuZCB7DQoJY2hhciAqY21k OwkJLyogY29tbWFuZCBuYW1lICovDQoJY2hhciAqZGVzY3I7CQkvKiBjb21t YW5kIGRlc2NyaXB0aW9uICovDQoJY2hhciAqdXNhZ2U7CQkvKiB1c2FnZSAq Lw0KCWNoYXIgKmV4YW1wbGU7CQkvKiBleGFtcGxlIG9mIHVzYWdlICovDQoJ aW50ICgqZnVuYykoY2hhciAqKTsJLyogY2FsbGJhY2sgZnVuY3Rpb24gKi8N Cn07DQoNCi8qIFByb3RvdHlwZXMgKi8NCmludCBjZCBfX1AoKGNoYXIgKikp Ow0KaW50IHB3ZCBfX1AoKGNoYXIgKikpOw0KaW50IHhpdCBfX1AoKGNoYXIg KikpOw0KaW50IHNldCBfX1AoKGNoYXIgKikpOw0KaW50IHVuc2V0IF9fUCgo Y2hhciAqKSk7DQppbnQgZW52IF9fUCgoY2hhciAqKSk7DQppbnQgaGVscCBf X1AoKGNoYXIgKikpOw0Kdm9pZCB0cmFuc2l0aW9uX2hhbmRsZXIgX19QKChp bnQpKTsNCg0KLyogVGFibGUgb2YgYnVpbHQtaW4gZnVuY3Rpb25zICovDQpz dHJ1Y3QgY29tbWFuZCBibHRpbnNbXT17DQoJeyJjZCIsIkNoYW5nZSB3b3Jr aW5nIGRpcmVjdG9yeSIsImNkIFtkaXJdIiwiY2QgL2V0YyIsY2R9LA0KCXsi cHdkIiwiUHJpbnQgY3VycmVudCBkaXJlY3RvcnkiLCJwd2QiLCJwd2QiLHB3 ZH0sDQoJeyJleGl0IiwiRXhpdCBmcm9tIHNoZWxsKCkiLCJleGl0IiwiZXhp dCIseGl0fSwNCgl7InNldCIsIlNldCBlbnZpcm9ubWVudCB2YXJpYWJsZSIs InNldCBbVkFSPXZhbHVlXSIsInNldCBURVJNPWNvbnMyNSIsc2V0fSwNCgl7 InVuc2V0IiwiVW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGUiLCJ1bnNldCBW QVIiLCJ1bnNldCBFRElUT1IiLHVuc2V0fSwNCgl7ImVudiIsIlByaW50IGFs bCBlbnZpcm9ubWVudCB2YXJpYWJsZXMiLCJlbnYiLCJlbnYiLGVudn0sDQoJ eyI/IiwiUHJpbnQgdGhpcyBoZWxwIDotKSIsIj8gW2NvbW1hbmRdIiwiPyBz ZXQiLGhlbHB9LA0KCXtOVUxMLE5VTEwsTlVMTCxOVUxMLE5VTEx9DQp9Ow0K DQovKg0KICogQnVpbHQtaW4gJ2NkIDxwYXRoPicgaGFuZGxlcg0KICovDQoN CmludA0KY2QoY2hhciAqcGF0aCkNCnsNCglpZihjaGRpcihwYXRoKSkgcmV0 dXJuKC0xKTsNCglnZXRjd2QoY3dkLEJVRlNJWkUpOw0KCXJldHVybigwKTsN Cn0NCg0KLyoNCiAqIEJ1aWx0LWluICdwd2QnIGhhbmRsZXINCiAqLw0KDQpp bnQNCnB3ZChjaGFyICpkdW1teSkNCnsNCg0KCWlmKGdldGN3ZChjd2QsQlVG U0laRSk9PU5VTEwpIHJldHVybigtMSk7DQoJcHJpbnRmKCIlc1xuIixjd2Qp Ow0KCXJldHVybigwKTsNCn0NCg0KLyoNCiAqIEJ1aWx0LWluICdleGl0JyBo YW5kbGVyDQogKi8NCg0KaW50DQp4aXQoY2hhciAqZHVtbXkpDQp7DQoJX2V4 aXQoMCk7DQp9DQoNCi8qDQogKiBCdWlsdC1pbiAnc2V0IFZBUj12YWx1ZScg aGFuZGxlcg0KICovDQoNCmludA0Kc2V0KGNoYXIgKnZhcikNCnsNCglpbnQg cmVzOw0KDQoJaWYodmFyPT1OVUxMKSByZXR1cm4oZW52KE5VTEwpKTsNCgly ZXM9cHV0ZW52KHZhcik7DQoJaWYocmVzKSBwcmludGYoInNldDogJXNcbiIs c3RyZXJyb3IoZXJybm8pKTsNCglyZXR1cm4ocmVzKTsNCn0NCg0KLyoNCiAq IEJ1aWx0LWluICdlbnYnIGhhbmRsZXINCiAqLw0KDQppbnQNCmVudihjaGFy ICpkdW1teSkNCnsNCgljaGFyICoqZTsNCg0KCWU9ZW52aXJvbjsNCgl3aGls ZSgqZSE9TlVMTCkgew0KCQlwcmludGYoIiVzXG4iLCplKyspOw0KCX0NCgly ZXR1cm4oMCk7DQp9DQoNCi8qDQogKiBCdWlsdC1pbiAndW5zZXQgVkFSJyBo YW5kbGVyDQogKi8NCg0KaW50DQp1bnNldChjaGFyICp2YXIpDQp7DQoJaWYo dmFyPT1OVUxMKSB7DQoJCXByaW50ZigiJXM6IHBhcmFtZXRlciByZXF1aXJl ZC5cbiIscHJvZ25hbWUpOw0KCQlyZXR1cm4oLTEpOw0KCX0NCglyZXR1cm4o dW5zZXRlbnYodmFyKSk7DQp9DQoNCi8qDQogKiBCdWlsdC1pbiAnPycgaGFu ZGxlcg0KICovDQoNCmludA0KaGVscChjaGFyICpjbWQpDQp7DQoJc3RydWN0 IGNvbW1hbmQgKng7DQoJaW50IGZvdW5kPTA7DQoNCglpZihjbWQ9PU5VTEwp IHsNCgkJcHJpbnRmKCJcbkJ1aWx0LWluIGNvbW1hbmRzOlxuIik7DQoJCXBy aW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7DQoJCXg9Ymx0aW5zOw0K CQl3aGlsZSh4LT5jbWQhPU5VTEwpIHsNCgkJCXByaW50ZigiJXNcdCVzXG4i LHgtPmNtZCx4LT5kZXNjcik7DQoJCQl4Kys7DQoJCX0NCgkJcHJpbnRmKCJc bkVudGVyICc/IDxjbWQ+JyBmb3IgZGV0YWlscy5cblxuIik7DQoJCXJldHVy bigwKTsNCgl9IGVsc2Ugew0KCQl4PWJsdGluczsNCgkJd2hpbGUoeC0+Y21k IT1OVUxMKSB7DQoJCQlpZihzdHJjbXAoeC0+Y21kLGNtZCk9PTApIHsNCgkJ CQlmb3VuZCsrOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJeCsrOw0KCQl9DQoJ CWlmKGZvdW5kKSB7DQoJCQlwcmludGYoIlxuJXNcdCVzOlxuIix4LT5jbWQs eC0+ZGVzY3IpOw0KCQkJcHJpbnRmKCJcdFVzYWdlOlxuXHRcdCVzXG4iLHgt PnVzYWdlKTsNCgkJCXByaW50ZigiXHRlLmc6XG5cdFx0JXNcblxuIix4LT5l eGFtcGxlKTsNCgkJCXJldHVybigwKTsNCgkJfSBlbHNlIHsNCgkJCXByaW50 ZigiXG4lczogbm8gc3VjaCBjb21tYW5kLlxuXG4iLGNtZCk7DQoJCQlyZXR1 cm4oLTEpOw0KCQl9DQoJfQ0KfQ0KDQovKg0KICogVGhpcyBpcyB0aGUgdXNl ciBpbnRlcmZhY2UuIFRoaXMgcm91dGluZSBnZXRzIGV4ZWN1dGVkIG9uIGVh Y2gNCiAqIHZpcnR1YWwgY29uc29sZSBzZXJ2aWNlZCBieSBpbml0Lg0KICoN CiAqIEl0IHdvcmtzIGFzIG5vcm1hbCBzaGVsbCBkb2VzIC0gZm9yIGVhY2gg ZXh0ZXJuYWwgY29tbWFuZCBpdCBmb3Jrcw0KICogYW5kIGV4ZWNzLCBmb3Ig ZWFjaCBpbnRlcm5hbCBjb21tYW5kIGp1c3QgZXhlY3V0ZXMgYSBmdW5jdGlv bi4NCiAqLw0KDQppbnQNCnNoZWxsKGludCBhcmdjLCBjaGFyICoqYXJndikN CnsNCgljaGFyIGJ1ZltCVUZTSVpFXTsNCgljaGFyICpwcm9tcHQ9IiAjICI7 DQoJY2hhciAqdG9rLCpjLCpzZXA9IiAiOw0KCWNoYXIgKiphdjsNCglzdHJ1 Y3QgY29tbWFuZCAqeDsNCglpbnQgZm91bmQsbGVuOw0KCWludCBhYyxpLHJl czsNCglwaWRfdCBwaWQsbXlwaWQ7DQoNCglnZXRjd2QoY3dkLEJVRlNJWkUp Ow0KCW15cGlkPWdldHBpZCgpOw0KDQoJcHJpbnRmKCJcbkJ1aWx0LWluIHNo ZWxsKCkgKGVudGVyICc/JyBmb3Igc2hvcnQgaGVscCBvbiBjb21tYW5kcylc blxuIik7DQoJd2hpbGUoIWZlb2Yoc3RkaW4pKSB7DQoJCW1lbXNldChidWYs MCxCVUZTSVpFKTsNCgkJcHJpbnRmKCIoJWQpJXMlcyIsbXlwaWQsY3dkLHBy b21wdCk7DQoJCWZmbHVzaChzdGRvdXQpOw0KCQlpZihmZ2V0cyhidWYsQlVG U0laRS0xLHN0ZGluKT09TlVMTCkgY29udGludWU7DQoJCWxlbj1zdHJsZW4o YnVmKS0xOw0KCQlidWZbbGVuXT0nXDAnOw0KCQlpZihsZW49PTApIGNvbnRp bnVlOw0KCQl0b2s9c3RydG9rKGJ1ZixzZXApOw0KCQl4PWJsdGluczsNCgkJ Zm91bmQ9MDsNCgkJd2hpbGUoeC0+Y21kIT1OVUxMKSB7DQoJCQlpZihzdHJj bXAoeC0+Y21kLHRvayk9PTApIHsNCgkJCQlmb3VuZCsrOw0KCQkJCWJyZWFr Ow0KCQkJfQ0KCQkJeCsrOw0KCQl9DQoJCWlmKGZvdW5kKSB7DQoJCQl0b2s9 c3RydG9rKE5VTEwsc2VwKTsNCgkJCXgtPmZ1bmModG9rKTsNCgkJCWNvbnRp bnVlOw0KCQl9DQoJCWFjPTA7DQoJCWF2PShjaGFyICoqKWNhbGxvYygoKGxl bisxKS8yKzEpLHNpemVvZihjaGFyICopKTsNCgkJYXZbYWMrK109dG9rOw0K CQl3aGlsZSgoYXZbYWMrK109c3RydG9rKE5VTEwsc2VwKSkhPU5VTEwpDQoJ CQljb250aW51ZTsNCgkJc3dpdGNoKChwaWQ9Zm9yaygpKSkgew0KCQljYXNl IDA6DQoJCQlleGVjdnAoYXZbMF0sYXYpOw0KCQkJLyogU29tZXRoaW5nIHdl bnQgd3JvbmcuLi4gKi8NCgkJCXByaW50Zigic2hlbGwoKTogJXNcbiIsc3Ry ZXJyb3IoZXJybm8pKTsNCgkJCV9leGl0KDEwMCk7DQoJCQlicmVhazsNCgkJ Y2FzZSAtMToNCgkJCXByaW50Zigic2hlbGwoKTogJXNcbiIsc3RyZXJyb3Io ZXJybm8pKTsNCgkJCWJyZWFrOw0KCQlkZWZhdWx0Og0KCQkJd2hpbGUod2Fp dHBpZChwaWQsJnJlcywwKSE9cGlkKSBjb250aW51ZTsNCgkJCWlmKFdFWElU U1RBVFVTKHJlcykpIHsNCgkJCQkvKiBTb21lIGVycm9yIG1lc3NhZ2U/ICov DQoJCQl9DQoJCQlicmVhazsNCgkJfQ0KCQlmcmVlKGF2KTsNCgl9DQoJcmV0 dXJuKDApOw0KfQ0KDQovKg0KICogU3R1YiBmb3IgZXhlY3V0aW5nIHNvbWUg ZXh0ZXJuYWwgcHJvZ3JhbSBvbiBhIGNvbnNvbGUuIFRoaXMgaXMgY2FsbGVk DQogKiBmcm9tIHByZXZpb3VzbHkgZm9ya2VkIGNvcHkgb2Ygb3VyIHByb2Nl c3MsIHNvIHRoYXQgZXhlYyBpcyBvay4NCiAqLw0KaW50DQpleHRlcm5hbF9j bWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0Kew0KCWV4ZWN2cChhcmd2WzBd LGFyZ3YpOw0KfQ0KDQovKg0KICogQWNxdWlyZSB2dHkgYW5kIHByb3Blcmx5 IGF0dGFjaCBvdXJzZWx2ZXMgdG8gaXQuDQogKiBBbHNvLCBidWlsZCBiYXNp YyBlbnZpcm9ubWVudCBmb3IgcnVubmluZyB1c2VyIGludGVyZmFjZS4NCiAq Lw0KDQppbnQNCnN0YXJ0X3Nlc3Npb24oaW50IHZ0eSwgaW50IGFyZ2MsIGNo YXIgKiphcmd2KQ0Kew0KCWludCBmZDsNCgljaGFyICp0Ow0KDQoJY2xvc2Uo MCk7DQoJY2xvc2UoMSk7DQoJY2xvc2UoMik7DQoJcmV2b2tlKHR0eXNbdnR5 XS50dHkpOw0KCWZkPW9wZW4odHR5c1t2dHldLnR0eSxPX1JEV1IpOw0KCWR1 cDIoZmQsMCk7DQoJZHVwMihmZCwxKTsNCglkdXAyKGZkLDIpOw0KCWlmKGZk PjIpIGNsb3NlKGZkKTsNCglsb2dpbl90dHkoZmQpOw0KCXB1dGVudigiVEVS TT1jb25zMjUiKTsNCglwdXRlbnYoIkhPTUU9LyIpOw0KCXB1dGVudigiUEFU SD0vc3RhbmQ6L2JpbjovdXNyL2Jpbjovc2JpbjouIik7DQoJc2lnbmFsKFNJ R0hVUCxTSUdfREZMKTsNCglzaWduYWwoU0lHSU5ULFNJR19ERkwpOw0KCXNp Z25hbChTSUdRVUlULFNJR19ERkwpOw0KCXNpZ25hbChTSUdURVJNLFNJR19E RkwpOw0KCWNoZGlyKCIvIik7DQoJdD0oY2hhciAqKShyaW5kZXgodHR5c1t2 dHldLnR0eSwnLycpKzEpOw0KCXByaW50ZigiXG5cblxuU3RhcnRpbmcgc2Vz c2lvbiBvbiAlcy5cbiIsdCk7DQoJdHR5c1t2dHldLmZ1bmMoYXJnYyxhcmd2 KTsNCglfZXhpdCgwKTsNCn0NCg0KLyoNCiAqIEV4ZWN1dGUgc3lzdGVtIHN0 YXJ0dXAgc2NyaXB0IC9ldGMvcmMNCiAqDQogKiAoT2YgY291cnNlIGlmIHlv dSBkb24ndCBsaWtlIGl0IC0gSSBkb24ndCAtIHlvdSBjYW4gcnVuIGFueXRo aW5nIHlvdQ0KICogd2FudCBoZXJlLiBQZXJoYXBzIGl0IHdvdWxkIGJlIHVz ZWZ1bCBqdXN0IHRvIHJlYWQgc29tZSBjb25maWcgREIgYW5kDQogKiBkbyB0 aGVzZSB0aGluZ3Mgb3Vyc2VsdmVzLCBhdm9pZGluZyBmb3JraW5nIGxvdHMg b2Ygc2hlbGxzIGFuZCBzY3JpcHRzLikNCiAqLw0KDQp2b2lkDQpydW5jb20o KQ0Kew0KCWNoYXIgKmFyZ3ZbM107DQoJcGlkX3QgcGlkOw0KCWludCBzdDsN CglpbnQgZmQ7DQoNCglpZigocGlkPWZvcmsoKSk9PTApIHsNCgkJLyogY2hp bGQgKi8NCgkJY2xvc2UoMCk7DQoJCWNsb3NlKDEpOw0KCQljbG9zZSgyKTsN CgkJZmQ9b3BlbihfUEFUSF9DT05TT0xFLE9fUkRXUik7DQoJCWR1cDIoZmQs MCk7DQoJCWR1cDIoZmQsMSk7DQoJCWR1cDIoZmQsMik7DQoJCWlmKGZkPjIp IGNsb3NlKGZkKTsNCgkJYXJndlswXT0iLXNoIjsNCgkJYXJndlsxXT0iL2V0 Yy9yYyI7DQoJCWFyZ3ZbMl09MDsNCgkJZXhlY3ZwKCIvYmluL3NoIixhcmd2 KTsNCgkJcHJpbnRmKCJydW5jb20oKTogJXNcbiIsc3RyZXJyb3IoZXJybm8p KTsNCgkJX2V4aXQoMSk7DQoJfQ0KCS8qIFdhaXQgZm9yIGNoaWxkIHRvIGV4 aXQgKi8NCgl3aGlsZShwaWQhPXdhaXRwaWQocGlkLChpbnQgKikwLDApKSBj b250aW51ZTsNCglyZXR1cm47DQp9DQoNCmludA0KcnVuX211bHRpKCkNCnsN CglpbnQgaSxqOw0KCWludCBuY29ucz1NQVhfQ09OUzsJLyogWFhYIHNob3Vs ZCBiZSBjb25maWd1cmFibGUgKi8NCglwaWRfdCBwaWQ7DQoJaW50IGZvdW5k Ow0KDQoJc3lzbG9nKExPR19FTUVSRywiXG5cblxuU3RhcnRpbmcgbXVsdGkt dXNlciBtb2RlLlxuXG4iKTsNCgkvKiBSdW4gL2V0Yy9yYyBpZiBub3QgaW4g c2luZ2xlIHVzZXIgKi8NCglpZihwcmV2dHJhbnM9PVNJTkdMRSkgcnVuY29t KCk7DQoJaWYodHJhbnNpdGlvbiE9TVVMVEkpIHJldHVybigtMSk7DQoNCgkv KiBGb3JrIHNoZWxsIGludGVyZmFjZSBmb3IgZWFjaCBjb25zb2xlICovDQoJ Zm9yKGk9MDtpPG5jb25zO2krKykgew0KCQlpZih0dHlzW2ldLnBpZD09MCkg ew0KCQkJc3dpdGNoKHBpZD1mb3JrKCkpIHsNCgkJCWNhc2UgMDoNCgkJCQlz dGFydF9zZXNzaW9uKGksMCxOVUxMKTsNCgkJCQlicmVhazsNCgkJCWNhc2Ug LTE6DQoJCQkJcHJpbnRmKCIlczogJXNcbiIscHJvZ25hbWUsc3RyZXJyb3Io ZXJybm8pKTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQoJCQkJdHR5c1tp XS5waWQ9cGlkOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KCS8qIEVt dWxhdGUgbXVsdGktdXNlciAqLw0KCWZvcig7Oykgew0KCQkvKiBXYWl0IGZv ciBhbnkgcHJvY2VzcyB0byBleGl0ICovDQoJCXBpZD13YWl0cGlkKC0xLChp bnQgKikwLFdVTlRSQUNFRCk7DQoJCWlmKHRyYW5zaXRpb24hPU1VTFRJKSBy ZXR1cm4oMCk7DQoJCWZvdW5kPTA7DQoJCWo9LTE7DQoJCWZvcihpPTA7aTxu Y29ucztpKyspIHsNCgkJCWlmKHR0eXNbaV0ucGlkPT1waWQpIHsNCgkJCQlm b3VuZCsrOw0KCQkJCWo9aTsNCgkJCQl0dHlzW2pdLnBpZD0wOw0KCQkJCWJy ZWFrOw0KCQkJfQ0KCQl9DQoJCWlmKCFmb3VuZCkgew0KCQkJLyogSnVzdCBj b2xsZWN0IHRoZSBwcm9jZXNzJ3Mgc3RhdHVzICovDQoJCQljb250aW51ZTsN CgkJfSBlbHNlIHsNCgkJCS8qIHJlc3RhcnQgc2hlbGwoKSBvbiBhIGNvbnNv bGUsIGlmIGl0IGRpZWQgKi8NCgkJCWlmKHRyYW5zaXRpb24hPU1VTFRJKSBy ZXR1cm4oMCk7DQoJCQlzd2l0Y2gocGlkPWZvcmsoKSkgew0KCQkJY2FzZSAw Og0KCQkJCXNsZWVwKDEpOw0KCQkJCXN0YXJ0X3Nlc3Npb24oaiwwLE5VTEwp Ow0KCQkJCWJyZWFrOw0KCQkJY2FzZSAtMToNCgkJCQlwcmludGYoIiVzOiAl c1xuIixwcm9nbmFtZSxzdHJlcnJvcihlcnJubykpOw0KCQkJCWJyZWFrOw0K CQkJZGVmYXVsdDoNCgkJCQl0dHlzW2pdLnBpZD1waWQ7DQoJCQkJYnJlYWs7 DQoJCQl9DQoJCX0NCgl9DQp9DQoNCi8qDQogKiBTdGFydCBhIHNoZWxsIG9u IHR0eXYwIChpLmUuIHRoZSBjb25zb2xlKSwgYWZ0ZXIga2lsbGluZyBhbnkg b3RoZXINCiAqIHByb2Nlc3MNCiAqLw0KDQppbnQNCnJ1bl9zaW5nbGUoKQ0K ew0KCWludCBpOw0KCXBpZF90IHBpZDsNCg0KCXN5c2xvZyhMT0dfRU1FUkcs IlxuXG5cblN0YXJ0aW5nIHNpbmdsZS11c2VyIG1vZGUuXG5cbiIpOw0KCS8q IEtpbGwgYWxsIGV4aXN0aW5nIHNlc3Npb25zICovDQoJa2lsbCgtMSxTSUdL SUxMKTsNCglmb3IoaT0wO2k8TUFYX0NPTlM7aSsrKQ0KCQl0dHlzW2ldLnBp ZD0wOw0KCS8qIFdhaXQgb24gdGhlbSAqLw0KCXdoaWxlKHdhaXRwaWQoLTEs KGludCAqKTAsV05PSEFOR3xXVU5UUkFDRUQpIT0tMSkgY29udGludWU7DQoN CgkvKiBTaW5nbGUtdXNlciAqLw0KCXN3aXRjaChwaWQ9Zm9yaygpKSB7DQoJ Y2FzZSAwOg0KCQlzdGFydF9zZXNzaW9uKDAsMCxOVUxMKTsNCgkJYnJlYWs7 DQoJY2FzZSAtMToNCgkJcHJpbnRmKCIlczogJXNcbiIscHJvZ25hbWUsc3Ry ZXJyb3IoZXJybm8pKTsNCgkJcHJpbnRmKCJUaGUgc3lzdGVtIGlzIHNlcmlv dXNseSBob3NlZC4gSSdtIGR5aW5nLi4uXG4iKTsNCgkJdHJhbnNpdGlvbj1E RUFUSDsNCgkJcmV0dXJuKC0xKTsNCgkJYnJlYWs7DQoJZGVmYXVsdDoNCgkJ d2hpbGUod2FpdHBpZChwaWQsKGludCAqKTAsMCkhPXBpZCkgY29udGludWU7 DQoJCWlmKHRyYW5zaXRpb24hPURFQVRIKSB7DQoJCQlwcmV2dHJhbnM9dHJh bnNpdGlvbjsNCgkJCXRyYW5zaXRpb249TVVMVEk7DQoJCX0NCgkJYnJlYWs7 DQoJfQ0KCXJldHVybigwKTsNCn0NCg0KLyoNCiAqIFRyYW5zaXRpb24gaGFu ZGxlciAtIGluc3RhbGxlZCBhcyBzaWduYWwgaGFuZGxlci4NCiAqLw0KDQp2 b2lkDQp0cmFuc2l0aW9uX2hhbmRsZXIoaW50IHNpZykNCnsNCg0KCXN5c2xv ZyhMT0dfRU1FUkcsIlxucGlkPSVkIHNpZz0lc1xuIixnZXRwaWQoKSxzeXNf c2lnbGlzdFtzaWddKTsNCglzd2l0Y2goc2lnKSB7DQoJY2FzZSBTSUdIVVA6 DQoJY2FzZSBTSUdURVJNOg0KCQlwcmV2dHJhbnM9dHJhbnNpdGlvbjsNCgkJ dHJhbnNpdGlvbj1TSU5HTEU7DQoJCWJyZWFrOw0KCWNhc2UgU0lHSU5UOg0K CQlSZWJvb3Q9VFJVRTsNCgkJLyogRkFMTFRIUk9VR0ggKi8NCgljYXNlIFNJ R1FVSVQ6DQoJCXByZXZ0cmFucz10cmFuc2l0aW9uOw0KCQl0cmFuc2l0aW9u PURFQVRIOw0KCQlicmVhazsNCglkZWZhdWx0Og0KCQlicmVhazsNCgl9DQoJ c3lzbG9nKExPR19FTUVSRywiXG4lcyAtPiAlc1xuIix0cmFuc1twcmV2dHJh bnNdLHRyYW5zW3RyYW5zaXRpb25dKTsNCn0NCg0KLyoNCiAqIENoYW5nZSBz eXN0ZW0gc3RhdGUgYXBwcm9wcmlhdGVseSB0byB0aGUgc2lnbmFscw0KICov DQoNCmludA0KdHJhbnNpdGlvbl9tYWNoaW5lKCkNCnsNCglpbnQgaTsNCg0K CXdoaWxlKHRyYW5zaXRpb24hPURFQVRIKSB7DQoJCXN3aXRjaCh0cmFuc2l0 aW9uKSB7DQoJCWNhc2UgTVVMVEk6DQoJCQlydW5fbXVsdGkoKTsNCgkJCWJy ZWFrOw0KCQljYXNlIFNJTkdMRToNCgkJCXJ1bl9zaW5nbGUoKTsNCgkJCWJy ZWFrOw0KCQl9DQoJfQ0KCS8qIEtpbGwgYWxsIHNlc3Npb25zICovDQoJa2ls bCgtMSxTSUdLSUxMKTsNCgkvKiBCZSBuaWNlIGFuZCB3YWl0IG9uIHRoZW0g Ki8NCgl3aGlsZSh3YWl0cGlkKC0xLChpbnQgKikwLFdOT0hBTkd8V1VOVFJB Q0VEKT4wKSBjb250aW51ZTsNCglyZWJvb3QoUkJfQVVUT0JPT1QpOw0KCS8q IE5PVFJFQUNIRUQgKi8NCn0NCg0KaW50DQptYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikNCnsNCglpbnQgZGV2ZnM9MCxjLGk7DQoNCgkvKiBUaGVzZSBh cmUgY29waWVkIGZyb20gcmVhbCBpbml0KDgpICovDQoJaWYoZ2V0dWlkKCkh PTApDQoJCWVycngoMSwiJXMiLHN0cmVycm9yKEVQRVJNKSk7DQoJb3Blbmxv ZygiaW5pdCIsTE9HX0NPTlN8TE9HX09ERUxBWSxMT0dfQVVUSCk7DQoJaWYo c2V0c2lkKCk8MCkNCgkJd2FybigiaW5pdGlhbCBzZXRzaWQoKSBmYWlsZWQi KTsNCglpZihzZXRsb2dpbigicm9vdCIpPDApDQoJCXdhcm4oInNldGxvZ2lu KCkgZmFpbGVkIik7DQoNCgljbG9zZSgwKTsNCgljbG9zZSgxKTsNCgljbG9z ZSgyKTsNCgljaGRpcigiLyIpOw0KDQoJcHJvZ25hbWU9cmluZGV4KGFyZ3Zb MF0sJy8nKTsNCglpZihwcm9nbmFtZT09TlVMTCkgew0KCQlwcm9nbmFtZT1h cmd2WzBdOw0KCX0gZWxzZSBwcm9nbmFtZSsrOw0KDQoJdHJhbnNpdGlvbj1N VUxUSTsNCg0KCS8qIFdlIG11c3QgcmVjb2duaXplIHRoZSBzYW1lIG9wdGlv bnMgYXMgcmVhbCBpbml0IGRvZXMgKi8NCgl3aGlsZSgoYz1nZXRvcHQoYXJn Yyxhcmd2LCJkc2YiKSkhPS0xKSB7DQoJCXN3aXRjaChjKSB7DQoJCWNhc2Ug J2QnOg0KCQkJZGV2ZnM9MTsNCgkJCWJyZWFrOw0KCQljYXNlICdzJzoNCgkJ CXRyYW5zaXRpb249U0lOR0xFOw0KCQkJYnJlYWs7DQoJCWNhc2UgJ2YnOg0K CQkJYnJlYWs7DQoJCWRlZmF1bHQ6DQoJCQlwcmludGYoIiVzOiB1bnJlY29n bml6ZWQgZmxhZyAnLSVjJ1xuIixwcm9nbmFtZSxjKTsNCgkJCWJyZWFrOw0K CQl9DQoJfQ0KCWlmKGRldmZzKQ0KCQltb3VudCgiZGV2ZnMiLCIvZGV2IixN TlRfTk9FWEVDfE1OVF9SRE9OTFksMCk7DQoNCgkvKiBGaWxsIGluIHRoZSBz ZXNzIHN0cnVjdHVyZXMuICovDQoJLyogWFhYIFJlYWxseSwgc2hvdWxkIGJl IGZpbGxlZCBiYXNpbmcgb24gY29uZmlnIGZpbGUuICovDQoJZm9yKGk9MDtp PE1BWF9DT05TO2krKykgew0KCQlzcHJpbnRmKHR0eXNbaV0udHR5LCIvZGV2 L3R0eXYlYyIsdnR5W2ldKTsNCgkJdHR5c1tpXS5waWQ9MDsNCgkJdHR5c1tp XS5mdW5jPXNoZWxsOw0KCX0NCg0KCWdldGN3ZChjd2QsQlVGU0laRSk7DQoN CglzaWduYWwoU0lHSU5ULHRyYW5zaXRpb25faGFuZGxlcik7DQoJc2lnbmFs KFNJR1FVSVQsdHJhbnNpdGlvbl9oYW5kbGVyKTsNCglzaWduYWwoU0lHVEVS TSx0cmFuc2l0aW9uX2hhbmRsZXIpOw0KCXNpZ25hbChTSUdIVVAsdHJhbnNp dGlvbl9oYW5kbGVyKTsNCg0KCXRyYW5zaXRpb25fbWFjaGluZSh0cmFuc2l0 aW9uKTsNCgkvKiBOT1RSRUFDSEVEICovDQoJZXhpdCgxMDApOw0KfQ0K --0-1146471947-899671929=:27775-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-small" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.95.980705224839.27775A-200000>