Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 01 Sep 1997 00:25:16 -0700
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        Denis DeLaRoca <CSP1DWD@MVS.OAC.UCLA.EDU>
Cc:        multimedia@FREEBSD.ORG
Subject:   fix for multiple vats, was( Re: guspnp18 and vat )
Message-ID:  <199709010725.AAA00272@rah.star-gate.com>
In-Reply-To: Your message of "Sun, 31 Aug 1997 20:16:00 PDT." <199709010356.UAA00289@rah.star-gate.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multipart MIME message.

--==_Exmh_2165216400
Content-Type: text/plain; charset=us-ascii

>From The Desk Of Denis DeLaRoca :
> The other outstanding problem is with passing the audio device among
> multiple active vats. That is completely broken and I think we have
> to wrestle with vat's code to find out how that is supposed to work.

The problem was in audio-voxare.cc. A separate problem
is group-ipc.cc which  needs to enable local ipc multicast.

So here are both modules for vat-4.0b2


	Amancio




--==_Exmh_2165216400
Content-Type: application/octet-stream ; name="audio-voxware.cc"
Content-Description: audio-voxware.cc
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="audio-voxware.cc"

LyoKICogQ29weXJpZ2h0IChjKSAxOTkxLTE5OTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0
eSBvZiBDYWxpZm9ybmlhLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p
bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAgbXVzdCBkaXNwbGF5
IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKglUaGlzIHByb2R1Y3QgaW5jbHVk
ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBDb21wdXRlciBTeXN0ZW1zCiAqCUVuZ2lu
ZWVyaW5nIEdyb3VwIGF0IExhd3JlbmNlIEJlcmtlbGV5IExhYm9yYXRvcnkuCiAqIDQuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIG9mIHRoZSBMYWJvcmF0b3J5
IG1heSBiZSB1c2VkCiAqICAgIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CiAqICAgIHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiAqIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQog
KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAogKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwogKiBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikKICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GCiAqIFNVQ0ggREFNQUdFLgogKi8KCgovKiBGdWxsIER1
cGxleCBhdWRpbyBtb2R1bGUgZm9yIHZveHdhcmUgMy41IHNvdW5kIGRyaXZlcnMgb3IgaGln
aGVyIAogICBUaGlzIG1vZHVsZSBoYXMgYmVlbiB0ZXN0ZWQgb24gRnJlZUJTRCAyLjEtU3Rh
YmxlLCBzb3VuZCBkcml2ZXIgCiAgIDMuNSBhbmQgYSBHVVMgUG5QLiBJZiB0aGUgc291bmQg
Y2FyZCBpcyBub3QgZnVsbCBkdXBsZXggdGhpcwogICBtb2R1bGUgd2lsbCBub3Qgd29yay4K
ICAgQW1hbmNpbyBIYXN0eQoKICovCgoKI2lmbmRlZiBsaW50CnN0YXRpYyBjb25zdCBjaGFy
IHJjc2lkW10gPQogICAgIkAoIykgJEhlYWRlcjogbGludXhfYXVkaW8uY2MsdiAxLjQgOTUv
MTAvMTQgMTc6NDQ6MjEgbWNjYW5uZSBFeHAgJCAoTEJMKSI7CiNlbmRpZgoKI2luY2x1ZGUg
PG9zZmNuLmg+CiNpbmNsdWRlIDxtYWNoaW5lL3NvdW5kY2FyZC5oPgojaW5jbHVkZSAiYXVk
aW8uaCIKI2luY2x1ZGUgIlRjbC5oIgoKI2RlZmluZSBVTEFXX1pFUk8gMHg3ZgojZGVmaW5l
IEFCVUZMT0cyIDgKI2RlZmluZSBBQlVGTEVOICgxIDw8IEFCVUZMT0cyKSAKLyojZGVmaW5l
IEFCVUZMRU4gMTYwKjIwKi8KI2RlZmluZSBORlJBRyA0CgppbnQgZm9vX2NvdW50ID0gMDsK
Y2xhc3MgVm94V2FyZSA6IHB1YmxpYyBBdWRpbyB7CiAgICBwdWJsaWM6CglWb3hXYXJlKCk7
Cgl2aXJ0dWFsIGludCBGcmFtZVJlYWR5KCk7Cgl2aXJ0dWFsIHVfY2hhciogUmVhZCgpOwoJ
dmlydHVhbAl2b2lkIFdyaXRlKHVfY2hhciAqKTsKCXZpcnR1YWwgdm9pZCBTZXRSR2Fpbihp
bnQpOwoJdmlydHVhbCB2b2lkIFNldFBHYWluKGludCk7Cgl2aXJ0dWFsIHZvaWQgT3V0cHV0
UG9ydChpbnQpOwoJdmlydHVhbCB2b2lkIElucHV0UG9ydChpbnQpOwoJdmlydHVhbCB2b2lk
IE9idGFpbigpOwoJdmlydHVhbCB2b2lkIFJlbGVhc2UoKTsKCXZpcnR1YWwgdm9pZCBSTXV0
ZSgpOwoJdmlydHVhbCB2b2lkIFJVbm11dGUoKTsKICAgIHByb3RlY3RlZDoKCgl1X2NoYXIq
IHJlYWRwdHI7Cgl1X2NoYXIqIHJlYWRidWZlbmQ7Cgl1X2NoYXIqIHJlYWRidWY7CiAgICAg
ICAgaW50ICAgICByZWFkX2xlbjsKCXVfY2hhciogdWJ1ZnB0cjsKCXVfY2hhciogdWJ1ZmVu
ZDsKCXVfY2hhciogdWJ1ZjsKCgl1X2NoYXIqIHdyaXRlcHRyOwoJdV9jaGFyKiB3cml0ZWJ1
ZmVuZDsKCXVfY2hhciogd3JpdGVidWY7CiAgICAgICAgaW50IG1peGVyZmQ7CiAgICAgICAg
aW50IHRlc3RmZDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBjdXIsIG5vdywgd3JpdGVfbGFz
dDsKICAgICAgICBpbnQgZnJhbWVfcmVhZHk7ICAgCiAgICAgICAgY2hhciBvYnVmZlsyMDQ4
XTsKICAgICAgICBpbnQgIG9idWZmX3B0cjsKCXVfY2hhciogemJ1ZjsKICAgICAgICBpbnQg
cmdhaW47CiAgICAgICAgaW50IHBnYWluOwogICAgICAgIGludCBpbnB1dHBvcnQ7CiAgCn07
CgpzdGF0aWMgY2xhc3MgVm94V2FyZU1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlciB7CnB1Ymxp
YzoKCVZveFdhcmVNYXRjaGVyKCkgOiBNYXRjaGVyKCJhdWRpbyIpIHt9CglUY2xPYmplY3Qq
IG1hdGNoKGNvbnN0IGNoYXIqIGZtdCkgewoJCWlmIChzdHJjbXAoZm10LCAidm94d2FyZSIp
ID09IDApCgkJCXJldHVybiAobmV3IFZveFdhcmUpOwoJCXJldHVybiAoMCk7Cgl9Cn0gbGlu
dXhfYXVkaW9fbWF0Y2hlcjsKZXh0ZXJuIGNvbnN0IHNob3J0IG11bGF3dG9saW5bXTsKZXh0
ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbGludG9tdWxhd1tdOwpleHRlcm4gY29uc3QgdW5z
aWduZWQgY2hhciBsaW50b211bGF3WFtdOwoKClZveFdhcmU6OlZveFdhcmUoKQp7CglyZWFk
YnVmID0gbmV3IHVfY2hhcltBQlVGTEVOXTsKCXJlYWRwdHIgPSByZWFkYnVmZW5kID0gcmVh
ZGJ1ZiArIEFCVUZMRU47CgoJd3JpdGVwdHIgPSB3cml0ZWJ1ZiA9IG5ldyB1X2NoYXJbQUJV
RkxFTl07Cgl3cml0ZWJ1ZmVuZCA9IHdyaXRlYnVmICsgQUJVRkxFTjsKCgl1YnVmcHRyID0g
dWJ1ZiA9IG5ldyB1X2NoYXJbYmxrc2l6ZV07Cgl1YnVmZW5kID0gdWJ1ZiArIGJsa3NpemU7
CgltZW1zZXQodWJ1ZiwgVUxBV19aRVJPLCBibGtzaXplKTsKCgl6YnVmID0gbmV3IHVfY2hh
cltibGtzaXplXTsKCW1lbXNldCh6YnVmLCBVTEFXX1pFUk8sIGJsa3NpemUpOwoJaXBvcnRz
ID0gMjsKCXJnYWluID0gLTE7CglwZ2FpbiA9IC0xOwoJaW5wdXRwb3J0ID0gLTE7CgkKfQoK
Cgp2b2lkIFZveFdhcmU6Ok9idGFpbigpCnsKICBpbnQgc3BlZWQgPSA4MDAwOwoKCWlmIChI
YXZlQXVkaW8oKSkKCQlhYm9ydCgpOwoJZnJhbWVfcmVhZHkgPSAwOwoJb2J1ZmZfcHRyID0g
MDsKCWZkID0gb3BlbigiL2Rldi9hdWRpbyIsIE9fUkRXUnxPX05ERUxBWSk7CglpZiAoZmQg
Pj0gMCkgewoJCWludCBvbiA9IDE7CgkJaW50IGZyYWcgOwogICAgICAgICAgICAgICAgcmVh
ZF9sZW4gPSAwOwoJCWlvY3RsKGZkLFNORENUTF9EU1BfTk9OQkxPQ0sgLCAmb24pOyAgCgkJ
ZnJhZyA9ICAxNjA7CgkgICAgICAgIGlvY3RsKGZkLCBTTkRDVExfRFNQX1NFVEJMS1NJWkUs
ICZmcmFnKTsKCQlBdWRpbzo6T2J0YWluKCk7CgkJbWl4ZXJmZCA9IG9wZW4oIi9kZXYvbWl4
ZXIiLCBPX1JEV1IpOwoJCWlmIChpbnB1dHBvcnQgPj0gMCApIHsKCQkgIFZveFdhcmU6Oklu
cHV0UG9ydChpbnB1dHBvcnQpOwoJCSAgVm94V2FyZTpTZXRSR2FpbihyZ2Fpbik7CgkJICBW
b3hXYXJlOjpTZXRQR2FpbihwZ2Fpbik7CgkJfQoJCQoJfQp9Cgp2b2lkIFZveFdhcmU6OlJl
bGVhc2UoKQp7CgkgIAoJaWYgKEhhdmVBdWRpbygpKSB7CgkgIGNsb3NlKG1peGVyZmQpOwoJ
ICBtaXhlcmZkID0gLTE7CgkgIEF1ZGlvOjpSZWxlYXNlKCk7Cgl9Cgp9Cgp2b2lkIFZveFdh
cmU6OldyaXRlKHVfY2hhciAqY3ApCnsKICBpbnQgZm9vLCBibG9ja19zb3VuZDsKICBpbnQg
bXNlYywgZGVsdGE7CgogIHN0cnVjdCB0aW1ldmFsIHdyaXRlX2RlbHRhOwogIGNvdW50X2lu
Zm8gaW5mbzsKCiAgZ2V0dGltZW9mZGF5KCZ3cml0ZV9kZWx0YSwgTlVMTCk7CiAgaW9jdGwo
ZmQsIFNORENUTF9EU1BfR0VUT1BUUiwgJmluZm8pOwogIGJsb2NrX3NvdW5kID0gaW5mby5i
bG9ja3M7CiAgd2hpbGUgKGluZm8uYmxvY2tzID4gMiAgKSB7CiAgICAKICAgIGlvY3RsKGZk
LCBTTkRDVExfRFNQX0dFVE9QVFIsICZpbmZvKTsKICAgIHVzbGVlcCgxKTsKICB9IAogICAg
Zm9vID0gd3JpdGUoZmQsIGNwLCBibGtzaXplKTsgCiAgCiAgCgogIGdldHRpbWVvZmRheSgm
bm93LCBOVUxMKTsKICBkZWx0YSA9ICgoMTAwMCAqIG5vdy50dl9zZWMpICsgbm93LnR2X3Vz
ZWMgLyAxMDAwKSAgLQogICAgKCgxMDAwICogd3JpdGVfZGVsdGEudHZfc2VjKSArIHdyaXRl
X2RlbHRhLnR2X3VzZWMgLyAxMDAwKTsKCiAgbXNlYyA9ICgoMTAwMCAqIG5vdy50dl9zZWMp
ICsgbm93LnR2X3VzZWMgLyAxMDAwKSAgLQogICAgKCgxMDAwICogd3JpdGVfbGFzdC50dl9z
ZWMpICsgd3JpdGVfbGFzdC50dl91c2VjIC8gMTAwMCk7CgogLyogIHByaW50Zigid3JpdGUg
IG1zZWMgJWQgZGVsdGEgICVkICBieXRlICVkICBcbiIsIG1zZWMsIGRlbHRhLCBpbmZvLmJ5
dGVzKTsgKi8KICB3cml0ZV9sYXN0ID0gbm93OwoKCgp9CgoKCnVfY2hhciogVm94V2FyZTo6
UmVhZCgpCnsKCXVfY2hhciogY3A7CglpbnQgaSA9IHJlYWRfbGVuOwoJaW50IG1zZWM7CgoJ
Y3AgPSByZWFkYnVmOyAKCWkgPSAwOwoKCXdoaWxlIChpID09IDAgKSB7CgkgIGkgPSByZWFk
KGZkLCBjcCwgYmxrc2l6ZSk7Cgl9CglpZiAoaSAgPCAxNTAgKSBwcmludGYoInJlYWQgIHh4
eCAlZCBcbiIsIGkpOwogICAgICAgIGN1ciA9IG5vdzsKCglyZXR1cm4gY3A7Cn0KCnZvaWQg
Vm94V2FyZTo6U2V0UkdhaW4oaW50IGxldmVsKQp7ICAgIAogIGZsb2F0IHggPSBsZXZlbDsK
ICByZ2FpbiA9IGxldmVsOwogIGxldmVsID0gKGludCkgKHgvMi41Nik7CiAgaW50IGZvbyA9
IGxldmVsPDw4IHwgbGV2ZWw7CiAgaW50IHplcm87CgogIGlmICghSGF2ZUF1ZGlvKCkgKSB7
CiAgICByZXR1cm47CiAgfQoKICBpZiAoaXBvcnQpIHsKCiAgICAvKiBmb3IgdGhlIGd1cyBw
bnAgbGluZTMgaXMgbGluZSBpbnB1dCA6KCAqLwoKICAgIGlmIChpb2N0bChtaXhlcmZkLCBN
SVhFUl9XUklURShTT1VORF9NSVhFUl9MSU5FMSksICZmb28pID09IC0xKSB7CiAgICAgIHBy
aW50ZigiZmFpbGVkIHNldCBpbnB1dCBsaW5lIHZvbHVtZSBcbiIpOwogICAgfQogIH0gZWxz
ZSB7CgogICAgaWYgKGlvY3RsKG1peGVyZmQsIE1JWEVSX1dSSVRFKFNPVU5EX01JWEVSX01J
QyksICZmb28pID09IC0xKSB7CiAgICAgIHByaW50ZigiZmFpbGVkIHRvIHNldCBtaWMgdm9s
dW1lIFxuIik7CiAgICB9CiAgfQoKCiAgICAgICAgCn0KCnZvaWQgVm94V2FyZTo6U2V0UEdh
aW4oaW50IGxldmVsKQp7CiAgZmxvYXQgeCA9IGxldmVsOwogIHBnYWluID0gbGV2ZWw7CiAg
bGV2ZWwgPSAoaW50KSAoeC8yLjU2KTsKICBpbnQgZm9vID0gbGV2ZWw8PDggfCBsZXZlbDsK
ICBpZiAoIUhhdmVBdWRpbygpICkgewogICAgcmV0dXJuOwogIH0KCiAgaWYgKGlvY3RsKG1p
eGVyZmQsIE1JWEVSX1dSSVRFKFNPVU5EX01JWEVSX1BDTSksICZmb28pID09IC0xKSB7CiAg
IHByaW50ZigiZmFpbGVkIHRvIG91dHB1dCBsZXZlbCAleCBcbiIsIGxldmVsKTsKICB9Cn0K
CnZvaWQgVm94V2FyZTo6T3V0cHV0UG9ydChpbnQgcCkKewoJb3BvcnQgPSBwOwp9Cgp2b2lk
IFZveFdhcmU6OklucHV0UG9ydChpbnQgcCkKewogIGludCAgIHplcm8gPSAwOwogIGludCBm
b28gPSByZ2Fpbjw8OCB8IHJnYWluOwogIGlucHV0cG9ydCA9IHA7CgogIGlmICghSGF2ZUF1
ZGlvKCkgKSB7CiAgICByZXR1cm47CiAgfQoKICBpZiAocCkgewogICAgLyogZm9yIHRoZSBn
dXMgcG5wIGxpbmUgaW5wdXQgaXMgbGluZTMgOiggKi8KICAgIHplcm8gPSAxIDw8IFNPVU5E
X01JWEVSX0xJTkUzOwogICAgaWYgKGlvY3RsKG1peGVyZmQsIFNPVU5EX01JWEVSX1dSSVRF
X1JFQ1NSQywgJnplcm8pID09IC0xKSB7CiAgICAgIHByaW50ZigiZmFpbGVkIHRvIHNlbGVj
dCBsaW5lIGlucHV0IFxuIik7CiAgICB9CgogIH0gZWxzZSB7CgogICAgemVybyA9IDEgPDwg
U09VTkRfTUlYRVJfTUlDOwogICAgaWYgKCBpb2N0bChtaXhlcmZkLCBTT1VORF9NSVhFUl9X
UklURV9SRUNTUkMsICZ6ZXJvKSA9PSAtMSApIHsKICAgICAgcHJpbnRmKCJmYWlsZWQgdG8g
c2VsZWN0IG1pYyBpbnB1dCBcbiIpOwogICAgfQogIH0KCWlwb3J0ID0gcDsKfQoKCgoKdm9p
ZCBWb3hXYXJlOjpSTXV0ZSgpCnsKCXJtdXRlIHw9IDE7Cgp9Cgp2b2lkIFZveFdhcmU6OlJV
bm11dGUoKQp7CglybXV0ZSAmPX4gMTsKCn0KCgppbnQgVm94V2FyZTo6RnJhbWVSZWFkeSgp
CnsKICBpbnQgaSwgaW87CiAgY291bnRfaW5mbyBpbmZvOwoKCiAgaW8gPSAgaW9jdGwoZmQs
IFNORENUTF9EU1BfR0VUSVBUUiwgJmluZm8pOwoKICBpZiAoaW5mby5ibG9ja3MgPiAwICkg
CiAgICBmcmFtZV9yZWFkeSA9IDE7CiAgZWxzZSBmcmFtZV9yZWFkeSA9IDA7CgogIHJldHVy
biBmcmFtZV9yZWFkeTsKCgp9CgoKCg==

--==_Exmh_2165216400
Content-Type: application/octet-stream ; name="group-ipc.cc"
Content-Description: group-ipc.cc
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="group-ipc.cc"

LyoKICogQ29weXJpZ2h0IChjKSAxOTkxLTE5OTQgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0
eSBvZiBDYWxpZm9ybmlhLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p
bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAgbXVzdCBkaXNwbGF5
IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKiAgICAgIFRoaXMgcHJvZHVjdCBp
bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKICogICAg
ICBDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgdGhlIE5ldHdvcmsgUmVzZWFyY2ggR3JvdXAg
YXQKICogICAgICBMYXdyZW5jZSBCZXJrZWxleSBMYWJvcmF0b3J5LgogKiA0LiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciBvZiB0aGUgTGFib3JhdG9yeSBtYXkg
YmUgdXNlZAogKiAgICB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAogKiAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJF
R0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECiAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKICogT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKICog
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgogKiBTVUNIIERBTUFHRS4KICovCgojaWZuZGVmIGxpbnQKc3Rh
dGljIGNvbnN0IGNoYXIgcmNzaWRbXSA9CiAgICAiQCgjKSAkSGVhZGVyOiBncm91cC1pcGMu
Y2MsdiAxLjIxIDk2LzAyLzA2IDE0OjQzOjMwIG1jY2FubmUgRXhwICQgKExCTCkiOwojZW5k
aWYKCiNpZm5kZWYgV0lOMzIKI2luY2x1ZGUgPHVuaXN0ZC5oPgojZW5kaWYKI2luY2x1ZGUg
PHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpZmRlZiBXSU4zMgojaW5jbHVkZSA8
d2luc29jay5oPgojZGVmaW5lIGNsb3NlIGNsb3Nlc29ja2V0CiNlbHNlCiNpbmNsdWRlIDxz
eXMvcGFyYW0uaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHN5cy9pb2N0
bC5oPgojaW5jbHVkZSA8c3lzL3Vpby5oPgojZW5kaWYKI2luY2x1ZGUgPGZjbnRsLmg+Cgoj
aW5jbHVkZSAiZ3JvdXAtaXBjLmgiCgojZGVmaW5lIEdST1VQX0lQQ19BRERSIDB4ZTBmZmRl
ZWYKI2RlZmluZSBHUk9VUF9JUENfUE9SVCAweGRlYWYKCnN0YXRpYyB2b2lkIG5vbmJsb2Nr
KGludCBmZCkKeyAgICAgICAKI2lmZGVmIFdJTjMyCgl1X2xvbmcgZmxhZyA9IDE7CglpZiAo
aW9jdGxzb2NrZXQoZmQsIEZJT05CSU8sICZmbGFnKSA9PSAtMSkgewoJCWZwcmludGYoc3Rk
ZXJyLCAiaW9jdGxzb2NrZXQ6IEZJT05CSU86ICVsdVxuIiwgR2V0TGFzdEVycm9yKCkpOwoJ
CWV4aXQoMSk7Cgl9CiNlbHNlCiAgICAgICBpbnQgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRG
TCwgMCk7CiNpZiBkZWZpbmVkKGhwdXgpIHx8IGRlZmluZWQoX19ocHV4KQogICAgICAgIGZs
YWdzIHw9IE9fTk9OQkxPQ0s7CiNlbHNlCiAgICAgICAgZmxhZ3MgfD0gT19OT05CTE9DS3xP
X05ERUxBWTsKI2VuZGlmCiAgICAgICAgaWYgKGZjbnRsKGZkLCBGX1NFVEZMLCBmbGFncykg
PT0gLTEpIHsKICAgICAgICAgICAgICAgIHBlcnJvcigiZmNudGw6IEZfU0VURkwiKTsKICAg
ICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgfQojZW5kaWYKfQoKSVBDSGFuZGxlcjo6
SVBDSGFuZGxlcihpbnQgbWFzaykgOiBtYXNrXyhtYXNrKSB7IH0KCiNpZmRlZiBJUF9BRERf
TUVNQkVSU0hJUApHcm91cElQQzo6R3JvdXBJUEMoaW50IGNoYW5uZWwpIDogaGFuZGxlcnNf
KDApCnsKCXJzb2NrXyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKCWlmIChy
c29ja18gPCAwKSB7CgkJcGVycm9yKCJzb2NrZXQiKTsKCQlleGl0KDEpOwoJfQoJaW50IG9u
ID0gMTsKCWlmIChzZXRzb2Nrb3B0KHJzb2NrXywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERS
LCAoY2hhciAqKSZvbiwKCQkgICAgICAgc2l6ZW9mKG9uKSkgPCAwKSB7CgkJcGVycm9yKCJT
T19SRVVTRUFERFIiKTsKCQlleGl0KDEpOwoJfQojaWZkZWYgU09fUkVVU0VQT1JUCglvbiA9
IDE7CglpZiAoc2V0c29ja29wdChyc29ja18sIFNPTF9TT0NLRVQsIFNPX1JFVVNFUE9SVCwg
KGNoYXIgKikmb24sCgkJICAgICAgIHNpemVvZihvbikpIDwgMCkgewoJCXBlcnJvcigiU09f
UkVVU0VQT1JUIik7CgkJZXhpdCgxKTsKCX0KI2VuZGlmCglzb2NrYWRkcl9pbiBzaW47Cglt
ZW1zZXQoKGNoYXIgKikmc2luLCAwLCBzaXplb2Yoc2luKSk7CglzaW4uc2luX2ZhbWlseSA9
IEFGX0lORVQ7CglpbnQgcG9ydCA9IGh0b25zKEdST1VQX0lQQ19QT1JUICsgY2hhbm5lbCk7
CglzaW4uc2luX3BvcnQgPSBwb3J0OwoJc2luLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKEdS
T1VQX0lQQ19BRERSKTsKCWlmIChiaW5kKHJzb2NrXywgKHN0cnVjdCBzb2NrYWRkciAqKSZz
aW4sIHNpemVvZihzaW4pKSA8IDApIHsKCQlzaW4uc2luX2FkZHIuc19hZGRyID0gSU5BRERS
X0FOWTsKCQlpZiAoYmluZChyc29ja18sIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXpl
b2Yoc2luKSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEMgYmluZCIpOwoJCQljbG9zZShy
c29ja18pOwoJCQlyc29ja18gPSAtMTsKCQkJc3NvY2tfID0gLTE7CgkJfQoJfQoJaWYgKHJz
b2NrXyA+PSAwKSB7CgkJbm9uYmxvY2socnNvY2tfKTsKCgkJc3RydWN0IGlwX21yZXEgbXI7
CgkJbXIuaW1yX211bHRpYWRkci5zX2FkZHIgPSBodG9ubChHUk9VUF9JUENfQUREUik7CgkJ
bXIuaW1yX2ludGVyZmFjZS5zX2FkZHIgPSBodG9ubChJTkFERFJfTE9PUEJBQ0spOwoJCWlm
IChzZXRzb2Nrb3B0KHJzb2NrXywgSVBQUk9UT19JUCwgSVBfQUREX01FTUJFUlNISVAsIAoJ
CQkgICAgICAgKGNoYXIgKikmbXIsIHNpemVvZihtcikpIDwgMCkgewoJCQkvKgoJCQkgKiBo
b3N0IHByb2JhYmx5IGRvZXNuJ3QgaGF2ZSBtdWx0aWNhc3QKCQkJICovCgkJCWNsb3NlKHJz
b2NrXyk7CgkJCXJzb2NrXyA9IC0xOwoJCQlzc29ja18gPSAtMTsKCQl9Cgl9IAoJaWYgKHJz
b2NrXyA+PSAwKSB7CgkJbGluayhyc29ja18sIFRLX1JFQURBQkxFKTsKCQlzc29ja18gPSBz
b2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CgkJaWYgKHNzb2NrXyA8IDApIHsKCQkJ
cGVycm9yKCJHcm91cElQQyBzb2NrZXQiKTsKCQkJZXhpdCgxKTsKCQl9CgkJc2luLnNpbl9w
b3J0ID0gMDsKCQlzaW4uc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNL
KTsKCQlpZiAoYmluZChzc29ja18sIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLCBzaXplb2Yo
c2luKSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEMgYmluZCIpOwoJCQlleGl0KDEpOwoJ
CX0KCQlzaW4uc2luX3BvcnQgPSBwb3J0OwoJCXNpbi5zaW5fYWRkci5zX2FkZHIgPSBodG9u
bChHUk9VUF9JUENfQUREUik7CgkJaWYgKGNvbm5lY3Qoc3NvY2tfLCAoc3RydWN0IHNvY2th
ZGRyKikmc2luLCBzaXplb2Yoc2luKSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEMgY29u
bmVjdCIpOwoJCQlleGl0KDEpOwoJCX0KCQljaGFyIHR0bCA9IDA7CgkJaWYgKHNldHNvY2tv
cHQoc3NvY2tfLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfVFRMLAoJCQkgICAgICAgJnR0
bCwgMSkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEM6IElQX01VTFRJQ0FTVF9UVEwiKTsK
CQkJZXhpdCgxKTsKCQl9CgkJdV9pbnQzMl90IGFkZHIgPSBodG9ubChJTkFERFJfTE9PUEJB
Q0spOwoJCWlmIChzZXRzb2Nrb3B0KHNzb2NrXywgSVBQUk9UT19JUCwgSVBfTVVMVElDQVNU
X0lGLAoJCQkJKGNoYXIgKikmYWRkciwgNCkgPCAwKSB7CgkJCXBlcnJvcigiR3JvdXBJUEM6
IElQX01VTFRJQ0FTVF9JRiIpOwoJCQlleGl0KDEpOwoJCX0KI2lmIGRlZmluZWQodWx0cml4
KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKQoJCXR0bCA9IDE7CgkJaWYgKHNldHNvY2tvcHQo
c3NvY2tfLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfTE9PUCwKCQkJCSZ0dGwsIDEpIDwg
MCkgewoJCQlwZXJyb3IoIkdyb3VwSVBDOiBJUF9NVUxUSUNBU1RfTE9PUCIpOwoJCQlleGl0
KDEpOwoJCX0KI2VuZGlmCgl9CglwaWRfID0gZ2V0cGlkKCk7Cn0KI2Vsc2UKR3JvdXBJUEM6
Okdyb3VwSVBDKGludCBjaGFubmVsKSA6IGhhbmRsZXJzXygwKSwgcnNvY2tfKC0xKSwgc3Nv
Y2tfKC0xKQp7Cn0KI2VuZGlmCgpHcm91cElQQzo6fkdyb3VwSVBDKCkKewoJaWYgKHJzb2Nr
XyA+PSAwKQoJCSh2b2lkKWNsb3NlKHJzb2NrXyk7CglpZiAoc3NvY2tfID49IDApCgkJKHZv
aWQpY2xvc2Uoc3NvY2tfKTsKfQoKdm9pZCBHcm91cElQQzo6c2VuZChpbnQgdHlwZSwgaW50
IGxlbikKewoJaXBjaGRyKiBoID0gKGlwY2hkciopYnVmZmVyXzsKCWgtPnR5cGUgPSB0eXBl
OwoJaC0+cGlkID0gcGlkXzsKCWgtPm1hZ2ljID0gR0lQQ19NQUdJQzsKCWxlbiArPSBzaXpl
b2YoKmgpOwoJaWYgKHNzb2NrXyA+PSAwICYmIDo6c2VuZChzc29ja18sIChjaGFyKilidWZm
ZXJfLCBsZW4sIDApIDwgMCkKCQlwZXJyb3IoIkdyb3VwSVBDIHNlbmQiKTsKfQoKdm9pZCBH
cm91cElQQzo6c2VuZChpbnQgdHlwZSwgY29uc3QgY2hhciogbXNnKQp7CglzdHJjcHkoKGNo
YXIqKWJ1ZmZlcigpLCBtc2cpOwoJLyogaW5jbHVkZSBudWxsIHRlcm1pbmF0b3IgKi8KCXNl
bmQodHlwZSwgc3RybGVuKG1zZykgKyAxKTsKfQoKdm9pZCBHcm91cElQQzo6YXR0YWNoKElQ
Q0hhbmRsZXIgKmgpCnsKCWgtPm5leHRfID0gaGFuZGxlcnNfOwoJaGFuZGxlcnNfID0gaDsK
fQoKdm9pZCBHcm91cElQQzo6ZGlzcGF0Y2goaW50KQp7CglpbnQgY2MgPSByZWN2KHJzb2Nr
XywgKGNoYXIqKWJ1ZmZlcl8sIHNpemVvZihidWZmZXJfKSwgMCk7CglpZiAoY2MgPCAwKSB7
CgkJcGVycm9yKCJHcm91cElQQzogcmVjdiIpOwoJCXJldHVybjsKCX0KCWNjIC09IHNpemVv
ZihpcGNoZHIpOwoJaWYgKGNjIDwgMCkKCQlyZXR1cm47CgoJaXBjaGRyKiBoID0gKGlwY2hk
ciopYnVmZmVyXzsKCWlmIChoLT5waWQgPT0gcGlkXykKCQlyZXR1cm47CgkJCglpbnQgYml0
ID0gMSA8PCBoLT50eXBlOwoJZm9yIChJUENIYW5kbGVyKiBwID0gaGFuZGxlcnNfOyBwICE9
IDA7IHAgPSBwLT5uZXh0XykgewoJCWlmIChwLT5tYXNrKCkgJiBiaXQpCgkJCXAtPmlwY19p
bnB1dChoLT50eXBlLCBoLT5waWQsICh1X2NoYXIqKShoICsgMSksIGNjKTsKCX0KfQo=

--==_Exmh_2165216400--





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709010725.AAA00272>