Skip site navigation (1)Skip section navigation (2)
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>