--296485894-925126659-1007504766=:17617
Content-Type: TEXT/PLAIN; charset=US-ASCII
On 3 Dec 2001, Edward Muller wrote:
> Anyone know where I can find the latest NBD stuff? Esp. client/server
> code?
I have the same question. Maybe the user-level stuff is not being
actively maintained?
However, since we couldn't find current versions of this stuff,
my colleagues and I patched nbd-server and the nbd kernel module
to fix a few bugs and to make them a little more robust. I'll
attach my versions of those files (which I think are derived from
Pavel's .14.tar.gz versions).
> Oh ... And one more question what's the best 2.4.X kernel to use with
> nbd?
You'll want at least 2.4.4 (you'll probably want later than that for
other reasons anyway) -- I think before that NBD was badly broken.
-- Paul Clements Paul.Clements@SteelEye.com
--296485894-925126659-1007504766=:17617 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="nbd_2_4.diff" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.10.10112041726060.17617@clements.sc.steeleye.com> Content-Description: Content-Disposition: attachment; filename="nbd_2_4.diff"
SW5kZXg6IGxpbnV4LzIuNC9kcml2ZXJzL2Jsb2NrL25iZC5jDQpkaWZmIC11 IGxpbnV4LzIuNC9kcml2ZXJzL2Jsb2NrL25iZC5jOjEuMS4xLjkgbGludXgv Mi40L2RyaXZlcnMvYmxvY2svbmJkLmM6MS4xLjEuOS40LjMNCi0tLSBsaW51 eC8yLjQvZHJpdmVycy9ibG9jay9uYmQuYzoxLjEuMS45CUZyaSBKdW4gMjkg MTY6MzE6MjUgMjAwMQ0KKysrIGxpbnV4LzIuNC9kcml2ZXJzL2Jsb2NrL25i ZC5jCVR1ZSBPY3QgIDIgMTM6MzQ6MDMgMjAwMQ0KQEAgLTkxLDE3ICs5MSwx OCBAQA0KIAlpbnQgcmVzdWx0Ow0KIAlzdHJ1Y3QgbXNnaGRyIG1zZzsNCiAJ c3RydWN0IGlvdmVjIGlvdjsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsNCi0J c2lnc2V0X3Qgb2xkc2V0Ow0KKwkvL3Vuc2lnbmVkIGxvbmcgZmxhZ3M7DQor CS8vc2lnc2V0X3Qgb2xkc2V0Ow0KIA0KIAlvbGRmcyA9IGdldF9mcygpOw0K IAlzZXRfZnMoZ2V0X2RzKCkpOw0KIA0KLQlzcGluX2xvY2tfaXJxc2F2ZSgm Y3VycmVudC0+c2lnbWFza19sb2NrLCBmbGFncyk7DQotCW9sZHNldCA9IGN1 cnJlbnQtPmJsb2NrZWQ7DQotCXNpZ2ZpbGxzZXQoJmN1cnJlbnQtPmJsb2Nr ZWQpOw0KLQlyZWNhbGNfc2lncGVuZGluZyhjdXJyZW50KTsNCi0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmY3VycmVudC0+c2lnbWFza19sb2NrLCBmbGFn cyk7DQorCS8vIEpFSkI6IEFsbG93IHNpZ25hbCBpbnRlcmNlcHRpb24NCisJ Ly9zcGluX2xvY2tfaXJxc2F2ZSgmY3VycmVudC0+c2lnbWFza19sb2NrLCBm bGFncyk7DQorCS8vb2xkc2V0ID0gY3VycmVudC0+YmxvY2tlZDsNCisJLy9z aWdmaWxsc2V0KCZjdXJyZW50LT5ibG9ja2VkKTsNCisJLy9yZWNhbGNfc2ln cGVuZGluZyhjdXJyZW50KTsNCisJLy9zcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjdXJyZW50LT5zaWdtYXNrX2xvY2ssIGZsYWdzKTsNCiANCiANCiAJZG8g ew0KQEAgLTEyMiw2ICsxMjMsMTMgQEANCiAJCWVsc2UNCiAJCQlyZXN1bHQg PSBzb2NrX3JlY3Ztc2coc29jaywgJm1zZywgc2l6ZSwgMCk7DQogDQorCQkv LyBKRUpCOiBEZXRlY3Qgc2lnbmFsIGlzc3VlIGhlcmUNCisJCWlmKHNpZ25h bF9wZW5kaW5nKGN1cnJlbnQpKSB7DQorCQkJcHJpbnRrKEtFUk5fV0FSTklO RyAiTkJEIGNhdWdodCBzaWduYWxcbiIpOw0KKwkJCXJlc3VsdCA9IC1FSU5U UjsNCisJCQlicmVhazsNCisJCX0NCisNCiAJCWlmIChyZXN1bHQgPD0gMCkg ew0KICNpZmRlZiBQQVJBTk9JQQ0KIAkJCXByaW50ayhLRVJOX0VSUiAiTkJE OiAlcyAtIHNvY2s9JWxkIGF0IGJ1Zj0lbGQsIHNpemU9JWQgcmV0dXJuZWQg JWQuXG4iLA0KQEAgLTEzMywxMCArMTQxLDExIEBADQogCQlidWYgKz0gcmVz dWx0Ow0KIAl9IHdoaWxlIChzaXplID4gMCk7DQogDQotCXNwaW5fbG9ja19p cnFzYXZlKCZjdXJyZW50LT5zaWdtYXNrX2xvY2ssIGZsYWdzKTsNCi0JY3Vy cmVudC0+YmxvY2tlZCA9IG9sZHNldDsNCi0JcmVjYWxjX3NpZ3BlbmRpbmco Y3VycmVudCk7DQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN1cnJlbnQt PnNpZ21hc2tfbG9jaywgZmxhZ3MpOw0KKwkvL0pFSkI6IGRpZG4ndCBtb2Rp Znkgc2lnbmFsIG1hc2ssIHNvIG5vIG5lZWQgdG8gcmVzdG9yZSBpdA0KKwkv L3NwaW5fbG9ja19pcnFzYXZlKCZjdXJyZW50LT5zaWdtYXNrX2xvY2ssIGZs YWdzKTsNCisJLy9jdXJyZW50LT5ibG9ja2VkID0gb2xkc2V0Ow0KKwkvL3Jl Y2FsY19zaWdwZW5kaW5nKGN1cnJlbnQpOw0KKwkvL3NwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmN1cnJlbnQtPnNpZ21hc2tfbG9jaywgZmxhZ3MpOw0KIA0K IAlzZXRfZnMob2xkZnMpOw0KIAlyZXR1cm4gcmVzdWx0Ow0KQEAgLTMzMyw4 ICszNDIsMjcgQEANCiAJCXNwaW5fdW5sb2NrX2lycSgmaW9fcmVxdWVzdF9s b2NrKTsNCiANCiAJCWRvd24gKCZsby0+cXVldWVfbG9jayk7DQorCQlpZigh bG8tPmZpbGUpIHsNCisJCQl1cCgmbG8tPnF1ZXVlX2xvY2spOw0KKwkJCXNw aW5fbG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7DQorCQkJcHJpbnRrKEtF Uk5fRVJSICJOQkQ6IEZBSUwgQkVUV0VFTiBBQ0NFUFQgQU5EIFNFTUFQSE9S RSwgRklMRSBMT1NUXG4iKTsNCisJCQlyZXEtPmVycm9ycysrOw0KKwkJCW5i ZF9lbmRfcmVxdWVzdChyZXEpOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKwkJ DQogCQlsaXN0X2FkZCgmcmVxLT5xdWV1ZSwgJmxvLT5xdWV1ZV9oZWFkKTsN CiAJCW5iZF9zZW5kX3JlcShsby0+c29jaywgcmVxKTsJLyogV2h5IGRvZXMg dGhpcyBibG9jaz8gICAgICAgICAqLw0KKwkJaWYocmVxLT5lcnJvcnMpIHsN CisJCQlwcmludGsoS0VSTl9FUlIgIk5CRDogTkJEX1NFTkRfUkVRIEZBSUxF RFxuIik7DQorCQkJbGlzdF9kZWwoJnJlcS0+cXVldWUpOw0KKw0KKwkJCXVw KCZsby0+cXVldWVfbG9jayk7DQorCQkJc3Bpbl9sb2NrX2lycSgmaW9fcmVx dWVzdF9sb2NrKTsNCisJCQluYmRfZW5kX3JlcXVlc3QocmVxKTsNCisNCisJ CQljb250aW51ZTsNCisJCX0NCiAJCXVwICgmbG8tPnF1ZXVlX2xvY2spOw0K IA0KIAkJc3Bpbl9sb2NrX2lycSgmaW9fcmVxdWVzdF9sb2NrKTsNCkBAIC0z ODQsMTIgKzQxMiwxNCBAQA0KIAkJCXByaW50ayhLRVJOX0VSUiAibmJkOiBT b21lIHJlcXVlc3RzIGFyZSBpbiBwcm9ncmVzcyAtPiBjYW4gbm90IHR1cm4g b2ZmLlxuIik7DQogCQkJcmV0dXJuIC1FQlVTWTsNCiAJCX0NCi0JCXVwKCZs by0+cXVldWVfbG9jayk7DQogCQlmaWxlID0gbG8tPmZpbGU7DQotCQlpZiAo IWZpbGUpDQorCQlpZiAoIWZpbGUpIHsNCisJCQl1cCgmbG8tPnF1ZXVlX2xv Y2spOw0KIAkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KIAkJbG8tPmZpbGUg PSBOVUxMOw0KIAkJbG8tPnNvY2sgPSBOVUxMOw0KKwkJdXAoJmxvLT5xdWV1 ZV9sb2NrKTsNCiAJCWZwdXQoZmlsZSk7DQogCQlyZXR1cm4gMDsNCiAJY2Fz ZSBOQkRfU0VUX1NPQ0s6DQpAQCAtNDMwLDkgKzQ2MCwyOSBAQA0KIAkJaWYg KCFsby0+ZmlsZSkNCiAJCQlyZXR1cm4gLUVJTlZBTDsNCiAJCW5iZF9kb19p dChsbyk7DQorCQkvKiBvbiByZXR1cm4gdGlkeSB1cCBpbiBjYXNlIHdlIGhh dmUgYSBzaWduYWwgKi8NCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIk5CRDog bmJkX2RvX2l0IHJldHVybmVkXG4iKTsNCisJCS8qIEZvcmNpYmx5IHNodXRk b3duIHRoZSBzb2NrZXQgY2F1c2luZyBhbGwgbGlzdGVuZXJzDQorCQkgKiB0 byBlcnJvcg0KKwkJICoNCisJCSAqIEZJWE1FOiBUaGlzIGNvZGUgaXMgZHVw bGljYXRlZCBmcm9tIHN5c19zaHV0ZG93biwgYnV0DQorCQkgKiB0aGVyZSBz aG91bGQgYmUgYSBtb3JlIGdlbmVyaWMgaW50ZXJmYWNlIHJhdGhlciB0aGFu DQorCQkgKiBjYWxsaW5nIHNvY2tldCBvcHMgZGlyZWN0bHkgaGVyZSAqLw0K KwkJbG8tPnNvY2stPm9wcy0+c2h1dGRvd24obG8tPnNvY2ssIDIpOw0KKwkJ ZG93bigmbG8tPnF1ZXVlX2xvY2spOw0KKwkJcHJpbnRrKEtFUk5fV0FSTklO RyAiTkJEOiBsb2NrIGFjcXVpcmVkXG4iKTsNCisJCW5iZF9jbGVhcl9xdWUo bG8pOw0KKwkJZmlsZSA9IGxvLT5maWxlOw0KKwkJbG8tPmZpbGUgPSBOVUxM Ow0KKwkJbG8tPnNvY2sgPSBOVUxMOw0KKwkJdXAoJmxvLT5xdWV1ZV9sb2Nr KTsNCisJCWlmKGZpbGUpDQorCQkJZnB1dChmaWxlKTsNCiAJCXJldHVybiBs by0+aGFyZGVycm9yOw0KIAljYXNlIE5CRF9DTEVBUl9RVUU6DQorCQlkb3du KCZsby0+cXVldWVfbG9jayk7DQogCQluYmRfY2xlYXJfcXVlKGxvKTsNCisJ CXVwKCZsby0+cXVldWVfbG9jayk7DQogCQlyZXR1cm4gMDsNCiAjaWZkZWYg UEFSQU5PSUENCiAJY2FzZSBOQkRfUFJJTlRfREVCVUc6DQpAQCAtNDkyLDcg KzU0Miw3IEBADQogCQlyZXR1cm4gLUVJTzsNCiAJfQ0KICNpZmRlZiBNT0RV TEUNCi0JcHJpbnRrKCJuYmQ6IHJlZ2lzdGVyZWQgZGV2aWNlIGF0IG1ham9y ICVkXG4iLCBNQUpPUl9OUik7DQorCXByaW50aygibmJkOiAodmVyc2lvbiBT dGVlbGV5ZS04KSByZWdpc3RlcmVkIGRldmljZSBhdCBtYWpvciAlZFxuIiwg TUFKT1JfTlIpOw0KICNlbmRpZg0KIAlibGtzaXplX3NpemVbTUFKT1JfTlJd ID0gbmJkX2Jsa3NpemVzOw0KIAlibGtfc2l6ZVtNQUpPUl9OUl0gPSBuYmRf c2l6ZXM7DQpAQCAtNTA3LDcgKzU1Nyw3IEBADQogCQlpbml0X01VVEVYKCZu YmRfZGV2W2ldLnF1ZXVlX2xvY2spOw0KIAkJbmJkX2Jsa3NpemVzW2ldID0g MTAyNDsNCiAJCW5iZF9ibGtzaXplX2JpdHNbaV0gPSAxMDsNCi0JCW5iZF9i eXRlc2l6ZXNbaV0gPSAweDdmZmZmYzAwOyAvKiAyR0IgKi8NCisJCW5iZF9i eXRlc2l6ZXNbaV0gPSAoKHU2NCkweDdmZmZmYzAwKSA8PCAxMDsgLyogMlRC ICovDQogCQluYmRfc2l6ZXNbaV0gPSBuYmRfYnl0ZXNpemVzW2ldID4+IEJM T0NLX1NJWkVfQklUUzsNCiAJCXJlZ2lzdGVyX2Rpc2soTlVMTCwgTUtERVYo TUFKT1JfTlIsaSksIDEsICZuYmRfZm9wcywNCiAJCQkJbmJkX2J5dGVzaXpl c1tpXT4+OSk7DQo= --296485894-925126659-1007504766=:17617 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="nbd-server.c" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.10.10112041726061.17617@clements.sc.steeleye.com> Content-Description: Content-Disposition: attachment; filename="nbd-server.c"
LyoNCiAqIE5ldHdvcmsgQmxvY2sgRGV2aWNlIC0gc2VydmVyDQogKg0KICog Q29weXJpZ2h0IDE5OTYtMTk5OCBQYXZlbCBNYWNoZWssIGRpc3RyaWJ1dGUg dW5kZXIgR1BMDQogKiAgPHBhdmVsQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5j ej4NCiAqDQogKiBWZXJzaW9uIDEuMCAtIGhvcGVmdWxseSA2NC1iaXQtY2xl YW4NCiAqIFZlcnNpb24gMS4xIC0gbWVyZ2luZyBlbmhhbmNlbWVudHMgZnJv bSBKb3NoIFBhcnNvbnMsIDxqb3NoQGNvb21icy5hbnUuZWR1LmF1Pg0KICog VmVyc2lvbiAxLjIgLSBhdXRvZGV0ZWN0IHNpemUgb2YgYmxvY2sgZGV2aWNl cywgdGhhbnggdG8gUGV0ZXIgVC4gQnJldWVyIiA8cHRiQGl0LnVjM20uZXM+ DQogKi8NCg0KI2RlZmluZSBWRVJTSU9OICIxLjMiDQojZGVmaW5lIEdJR0Eg KDEqMTAyNCoxMDI0KjEwMjQpDQoNCi8qIHVzZSBsc2VlazY0IGV4Y2x1c2l2 ZWx5ICovDQojZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFICAgLy8gU29tZSBt b3JlIGZ1bmN0aW9ucyBmb3IgY29ycmVjdCBzdGFuZGFyZCBJL08uDQojZGVm aW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UgLy8gQWRkaXRpb25hbCBmdW5jdGlv bmFsaXR5IGZyb20gTEZTIGZvciBsYXJnZSBmaWxlcw0KDQojaW5jbHVkZSA8 c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQojaW5jbHVk ZSA8bmV0aW5ldC90Y3AuaD4NCiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CQkv KiBzb2NrYWRkcl9pbiwgaHRvbnMsIGluX2FkZHIgKi8NCiNpbmNsdWRlIDxu ZXRkYi5oPgkJLyogaG9zdGVudCwgZ2V0aG9zdGJ5KiwgZ2V0c2VydmJ5KiAq Lw0KI2luY2x1ZGUgPHN5c2xvZy5oPg0KI2luY2x1ZGUgPHVuaXN0ZC5oPg0K I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5j bHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8ZmNudGwuaD4NCiNpbmNsdWRl IDxhcnBhL2luZXQuaD4NCg0KI2RlZmluZSBfSU8oYSxiKQ0KI2RlZmluZSBJ U1NFUlZFUg0KI2RlZmluZSBNWV9OQU1FICJuYmRfc2VydmVyIg0KI2luY2x1 ZGUgImNsaXNlcnYuaCINCiN1bmRlZiBfSU8NCi8qIERlZXAgbWFnaWM6IGlv Y3RsLmggZGVmaW5lcyBfSU8gbWFjcm8gKGF0IGxlYXN0IG9uIGxpbnV4KSAq Lw0KDQojaW5jbHVkZSA8c3lzL2lvY3RsLmg+DQojaW5jbHVkZSA8c3lzL21v dW50Lmg+CQkvKiBGb3IgQkxLR0VUU0laRSAqLw0KDQovLyAjZGVmaW5lIERP REJHDQovLyAjZGVmaW5lIERFQlVHKCBhLi4uICkgcHJpbnRmKCBhICkNCiNk ZWZpbmUgREVCVUcoIGEuLi4gKSBkbyB7IH0gd2hpbGUoMCkNCg0KDQppbmxp bmUgdm9pZCByZWFkaXQoaW50IGYsIHZvaWQgKmJ1ZiwgaW50IGxlbikNCnsN CglpbnQgcmVzOw0KCXdoaWxlIChsZW4gPiAwKSB7DQoJCURFQlVHKCIqIik7 DQoJCWlmICgocmVzID0gcmVhZChmLCBidWYsIGxlbikpIDw9IDApDQoJCQll cnIoIlJlYWQgZmFpbGVkOiAlbSIpOw0KCQlsZW4gLT0gcmVzOw0KCQlidWYg Kz0gcmVzOw0KCX0NCn0NCg0KaW5saW5lIHZvaWQgd3JpdGVpdChpbnQgZiwg dm9pZCAqYnVmLCBpbnQgbGVuKQ0Kew0KCWludCByZXM7DQoJd2hpbGUgKGxl biA+IDApIHsNCgkJREVCVUcoIisiKTsNCgkJaWYgKChyZXMgPSB3cml0ZShm LCBidWYsIGxlbikpIDw9IDApDQoJCQllcnIoIldyaXRlIGZhaWxlZDogJW0i KTsNCgkJbGVuIC09IHJlczsNCgkJYnVmICs9IHJlczsNCgl9DQp9DQoNCmlu dCBwb3J0OwkJCS8qIFBvcnQgSSdtIGxpc3RlbmluZyBhdCAqLw0KY2hhciAq ZXhwb3J0bmFtZTsJCS8qIEZpbGUgSSdtIGV4cG9ydGluZyAqLw0KdTY0IGV4 cG9ydHNpemUgPSB+MCwgaHVua3NpemUgPSB+MDsJLyogLi4uYW5kIGl0cyBs ZW5ndGggKi8NCmludCBmbGFncyA9IDA7DQppbnQgZXhwb3J0WzEwMjRdOw0K I2RlZmluZSBGX1JFQURPTkxZIDENCiNkZWZpbmUgRl9NVUxUSUZJTEUgMiAN Cg0Kdm9pZCBjbWRsaW5lKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQoJ aW50IGk7DQoNCglpZiAoYXJnYyA8IDMpIHsNCgkJcHJpbnRmKCJUaGlzIGlz IG5iZC1zZXJ2ZXIgdmVyc2lvbiAiIFZFUlNJT04gIlxuIik7CQ0KCQlwcmlu dGYoIlVzYWdlOiBwb3J0IGZpbGVfdG9fZXhwb3J0IFtzaXplXVtrS21NXSBb LXJdXG4iDQoJCSAgICAgICAiCS1yIHJlYWQgb25seVxuIg0KCQkgICAgICAg IglpZiBwb3J0IGlzIHNldCB0byAwLCBzdGRpbiBpcyB1c2VkIChmb3IgcnVu bmluZyBmcm9tIGluZXRkKVxuIg0KCQkgICAgICAgIglpZiBmaWxlX3RvX2V4 cG9ydCBjb250YWlucyAnJSVzJywgaXQgaXMgc3Vic3RpdHV0ZWQgd2l0aCBJ UFxuIg0KCQkgICAgICAgIgkJYWRkcmVzcyBvZiBtYWNoaW5lIHRyeWluZyB0 byBjb25uZWN0XG4iICk7DQoJCWV4aXQoMCk7DQoJfQ0KCXBvcnQgPSBhdG9p KGFyZ3ZbMV0pOw0KCWZvciAoaSA9IDM7IGkgPCBhcmdjOyBpKyspIHsNCgkJ aWYgKCphcmd2W2ldID09ICctJykgew0KCQkJc3dpdGNoIChhcmd2W2ldWzFd KSB7DQoJCQljYXNlICdyJzoNCgkJCQlmbGFncyB8PSBGX1JFQURPTkxZOw0K CQkJCWJyZWFrOw0KCQkJY2FzZSAnbSc6DQoJCQkJZmxhZ3MgfD0gRl9NVUxU SUZJTEU7DQoJCQkJaHVua3NpemUgPSAxKkdJR0E7DQoJCQkJYnJlYWs7DQoJ CQl9DQoJCX0gZWxzZSB7DQoJCQl1NjQgZXM7DQoJCQlpbnQgbGFzdCA9IHN0 cmxlbihhcmd2W2ldKS0xOw0KCQkJY2hhciBzdWZmaXggPSBhcmd2W2ldW2xh c3RdOw0KCQkJaWYgKHN1ZmZpeCA9PSAnaycgfHwgc3VmZml4ID09ICdLJyB8 fA0KCQkJICAgIHN1ZmZpeCA9PSAnbScgfHwgc3VmZml4ID09ICdNJykNCgkJ CQlhcmd2W2ldW2xhc3RdID0gJ1wwJzsNCgkJCWVzID0gKHU2NClhdG9sKGFy Z3ZbaV0pOw0KCQkJc3dpdGNoIChzdWZmaXgpIHsNCgkJCQljYXNlICdtJzoN CgkJCQljYXNlICdNJzogIGVzIDw8PSAxMDsNCgkJCQljYXNlICdrJzoNCgkJ CQljYXNlICdLJzogIGVzIDw8PSAxMDsNCgkJCQlkZWZhdWx0IDogIGJyZWFr Ow0KCQkJfQ0KCQkJZXhwb3J0c2l6ZSA9IGVzOw0KCQl9DQoJfQ0KDQoJZXhw b3J0bmFtZSA9IGFyZ3ZbMl07DQp9DQoNCmludCBjb25uZWN0bWUoaW50IHBv cnQpDQp7DQoJc3RydWN0IHNvY2thZGRyX2luIGFkZHJpbjsNCglpbnQgYWRk cmlubGVuID0gc2l6ZW9mKGFkZHJpbik7DQoJaW50IG5ldCwgc29jazsNCglp bnQgc2l6ZSA9IDE7DQoNCglpZiAoKHNvY2sgPSBzb2NrZXQoQUZfSU5FVCwg U09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPCAwKQ0KCQllcnIoInNvY2tl dDogJW0iKTsNCgkvLyBTdGVlbEV5ZSBjaGFuZ2UgLSByZXVzZSB0aGUgcG9y dCBudW1iZXINCglpZiAoc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBT T19SRVVTRUFERFIsICZzaXplLCBzaXplb2YoaW50KSkgPCAwKQ0KCQllcnIo InNldHNvY2tvcHQ6ICVtIik7DQoNCglERUJVRygiV2FpdGluZyBmb3IgY29u bmVjdGlvbnMuLi4gYmluZCwgIik7DQoJYWRkcmluLnNpbl9mYW1pbHkgPSBB Rl9JTkVUOw0KCWFkZHJpbi5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOw0KCWFk ZHJpbi5zaW5fYWRkci5zX2FkZHIgPSAwOw0KCWlmIChiaW5kKHNvY2ssIChz dHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHJpbiwgYWRkcmlubGVuKSA8IDApDQoJ CWVycigiYmluZDogJW0iKTsNCglERUJVRygibGlzdGVuLCAiKTsNCglpZiAo bGlzdGVuKHNvY2ssIDEpIDwgMCkNCgkJZXJyKCJsaXN0ZW46ICVtIik7DQoJ REVCVUcoImFjY2VwdCwgIik7DQoJaWYgKChuZXQgPSBhY2NlcHQoc29jaywg KHN0cnVjdCBzb2NrYWRkciAqKSAmYWRkcmluLCAmYWRkcmlubGVuKSkgPCAw KQ0KCQllcnIoImFjY2VwdDogJW0iKTsNCg0KCXJldHVybiBuZXQ7DQp9DQoN CiNkZWZpbmUgU0VORCB3cml0ZWl0KCBuZXQsICZyZXBseSwgc2l6ZW9mKCBy ZXBseSApKTsNCiNkZWZpbmUgRVJST1IgeyByZXBseS5lcnJvciA9IGh0b25s KC0xKTsgU0VORDsgcmVwbHkuZXJyb3IgPSAwOyBsYXN0cG9pbnQgPSAtMTsg fQ0KDQp1NjQgbGFzdHBvaW50ID0gLTE7DQoNCnZvaWQgbWF5YmVzZWVrKGlu dCBoYW5kbGUsIHU2NCBhKQ0Kew0KCWlmIChhID4gZXhwb3J0c2l6ZSkNCgkJ ZXJyKCJDYW4gbm90IGhhcHBlblxuIik7DQoJaWYgKGxhc3Rwb2ludCAhPSBh KSB7DQoJCWlmIChsc2VlazY0KGhhbmRsZSwgYSwgU0VFS19TRVQpIDwgMCkN CgkJCWVycigiQ2FuIG5vdCBzZWVrIGxvY2FsbHkhXG4iKTsNCgkJbGFzdHBv aW50ID0gYTsNCgl9IGVsc2Ugew0KCQlERUJVRygiQCIpOw0KCX0NCn0NCg0K aW50IGV4cHJlYWQodTY0IGEsIGNoYXIgKmJ1ZiwgaW50IGxlbikNCnsNCglt YXliZXNlZWsoZXhwb3J0W2EvaHVua3NpemVdLCBhJWh1bmtzaXplKTsNCgly ZXR1cm4gKHJlYWQoZXhwb3J0W2EvaHVua3NpemVdLCBidWYsIGxlbikgIT0g bGVuKTsNCn0NCg0KaW50IGV4cHdyaXRlKHU2NCBhLCBjaGFyICpidWYsIGlu dCBsZW4pDQp7DQoJbWF5YmVzZWVrKGV4cG9ydFthL2h1bmtzaXplXSwgYSVo dW5rc2l6ZSk7DQoJcmV0dXJuICh3cml0ZShleHBvcnRbYS9odW5rc2l6ZV0s IGJ1ZiwgbGVuKSAhPSBsZW4pOw0KfQ0KDQppbnQgbWFpbmxvb3AoaW50IG5l dCkNCnsNCglzdHJ1Y3QgbmJkX3JlcXVlc3QgcmVxdWVzdDsNCglzdHJ1Y3Qg bmJkX3JlcGx5IHJlcGx5Ow0KCWNoYXIgemVyb3NbMzAwXTsNCglpbnQgaSA9 IDA7DQoJdTY0IHNpemVfaG9zdDsNCg0KCWJ6ZXJvKHplcm9zLCAyOTApOw0K CWlmICh3cml0ZShuZXQsIElOSVRfUEFTU1dELCA4KSA8IDApDQoJCWVycigi TmVnb3RpYXRpb24gZmFpbGVkOiAlbSIpOw0KCWNsaXNlcnZfbWFnaWMgPSBo dG9ubGwoY2xpc2Vydl9tYWdpYyk7DQoJaWYgKHdyaXRlKG5ldCwgJmNsaXNl cnZfbWFnaWMsIHNpemVvZihjbGlzZXJ2X21hZ2ljKSkgPCAwKQ0KCQllcnIo Ik5lZ290aWF0aW9uIGZhaWxlZDogJW0iKTsNCglzaXplX2hvc3QgPSBodG9u bGwoZXhwb3J0c2l6ZSk7DQoJaWYgKHdyaXRlKG5ldCwgJnNpemVfaG9zdCwg OCkgPCAwKQ0KCQllcnIoIk5lZ290aWF0aW9uIGZhaWxlZDogJW0iKTsNCglp ZiAod3JpdGUobmV0LCB6ZXJvcywgMTI4KSA8IDApDQoJCWVycigiTmVnb3Rp YXRpb24gZmFpbGVkOiAlbSIpOw0KDQoJREVCVUcoIkVudGVyaW5nIHJlcXVl c3QgbG9vcCFcbiIpOw0KCXJlcGx5Lm1hZ2ljID0gaHRvbmwoTkJEX1JFUExZ X01BR0lDKTsNCglyZXBseS5lcnJvciA9IDA7DQoJd2hpbGUgKDEpIHsNCgkJ LyogU3RlZWxFeWUgY2hhbmdlIC0gbmVlZCBkeW5hbWljIGJ1ZmZlciB0byB3 b3JrIHdpdGggZWxldmF0b3IgKi8NCgkJc3RhdGljIGxvbmcgbWF4X25iZF9y ZXF1ZXN0PTEzMTA3MjsgLyogMTI4SyAqLw0KCQlzdGF0aWMgY2hhciAqYnVm PU5VTEw7DQoJCWludCBsZW47DQoNCiNpZmRlZiBET0RCRw0KCQlpKys7DQoJ CXByaW50ZigiJWQ6ICIsIGkpOw0KI2VuZGlmDQoNCgkJcmVhZGl0KG5ldCwg JnJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSk7DQoJCXJlcXVlc3QuZnJvbSA9 IG50b2hsbChyZXF1ZXN0LmZyb20pOw0KCQlyZXF1ZXN0LnR5cGUgPSBudG9o bChyZXF1ZXN0LnR5cGUpOw0KCQlsZW4gPSBudG9obChyZXF1ZXN0Lmxlbik7 DQoNCgkJaWYgKHJlcXVlc3QubWFnaWMgIT0gaHRvbmwoTkJEX1JFUVVFU1Rf TUFHSUMpKQ0KCQkJZXJyKCJOb3QgZW5vdWdoIG1hZ2ljLiIpOw0KDQoJCURF QlVHKCJyZXF1ZXN0IGxlbjogJWQgYnl0ZXNcbiIsIGxlbik7DQoNCgkJd2hp bGUgKGxlbiA+IG1heF9uYmRfcmVxdWVzdCB8fCAhYnVmKSB7DQoJCQkvKiBT dGVlbEV5ZSBjaGFuZ2UgLSAocmUpYWxsb2NhdGUgdGhlIGJ1ZmZlciAqLw0K CQkJaWYgKGJ1ZikgDQoJCQkJZnJlZShidWYpOw0KCQkJaWYgKGxlbiA+IG1h eF9uYmRfcmVxdWVzdCkgDQoJCQkJbWF4X25iZF9yZXF1ZXN0ID0gbGVuOw0K CQkJYnVmPW1hbGxvYyhtYXhfbmJkX3JlcXVlc3QpOw0KCQkJaWYgKCFidWYp IA0KCQkJCURFQlVHKCJmYWlsZWQgdG8gYWxsb2NhdGUgJWQgYnl0ZSBidWZm ZXJcbiIsIG1heF9uYmRfcmVxdWVzdCk7DQoJCX0NCiNpZmRlZiBET0RCRw0K CQlwcmludGYoIiVzIGZyb20gJWQgKCVkKSBsZW4gJWQsICIsIChyZXF1ZXN0 LnR5cGUgPyAiV1JJVEUiIDogIlJFQUQiKSwNCgkJICAgICAgIChpbnQpIHJl cXVlc3QuZnJvbSwgKGludCkgcmVxdWVzdC5mcm9tIC8gNTEyLCBsZW4pOw0K I2VuZGlmDQoJCW1lbWNweShyZXBseS5oYW5kbGUsIHJlcXVlc3QuaGFuZGxl LCBzaXplb2YocmVwbHkuaGFuZGxlKSk7DQoJCWlmICgoKHJlcXVlc3QuZnJv bSArIGxlbikgPiBleHBvcnRzaXplKSB8fA0KCQkgICAgKChmbGFncyAmIEZf UkVBRE9OTFkpICYmIHJlcXVlc3QudHlwZSkpIHsNCgkJCURFQlVHKCJbUkFO R0UhXSIpOw0KCQkJRVJST1I7DQoJCQljb250aW51ZTsNCgkJfQ0KCQlpZiAo cmVxdWVzdC50eXBlKSB7CS8qIFdSSVRFICovDQoJCQlERUJVRygid3I6IG5l dC0+YnVmLCAiKTsNCgkJCXJlYWRpdChuZXQsIGJ1ZiwgbGVuKTsNCgkJCURF QlVHKCJidWYtPmV4cCwgIik7DQoJCQlpZiAoZXhwd3JpdGUocmVxdWVzdC5m cm9tLCBidWYsIGxlbikpIHsNCgkJCQlERUJVRygiV3JpdGUgZmFpbGVkOiAl bSIgKTsNCgkJCQlFUlJPUjsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCWxh c3Rwb2ludCArPSBsZW47DQoJCQlTRU5EOw0KCQkJY29udGludWU7DQoJCX0N CgkJLyogUkVBRCAqLw0KDQoJCURFQlVHKCJleHAtPmJ1ZiwgIik7DQoJCWlm IChleHByZWFkKHJlcXVlc3QuZnJvbSwgYnVmICsgc2l6ZW9mKHN0cnVjdCBu YmRfcmVwbHkpLCBsZW4pKSB7DQoJCSAJbGFzdHBvaW50ID0gLTE7DQoJCQlE RUJVRygiUmVhZCBmYWlsZWQ6ICVtIik7DQoJCQlFUlJPUjsNCgkJCWNvbnRp bnVlOw0KCQl9DQoJCWxhc3Rwb2ludCArPSBsZW47DQoNCgkJREVCVUcoImJ1 Zi0+bmV0LCAiKTsNCgkJbWVtY3B5KGJ1ZiwgJnJlcGx5LCBzaXplb2Yoc3Ry dWN0IG5iZF9yZXBseSkpOw0KCQl3cml0ZWl0KG5ldCwgYnVmLCBsZW4gKyBz aXplb2Yoc3RydWN0IG5iZF9yZXBseSkpOw0KCQlERUJVRygiT0shXG4iKTsN Cgl9DQp9DQoNCmNoYXIgZXhwb3J0bmFtZTJbMTAyNF07DQoNCnZvaWQgc2V0 X3BlZXJuYW1lKGludCBuZXQpDQp7DQoJc3RydWN0IHNvY2thZGRyX2luIGFk ZHJpbjsNCglpbnQgYWRkcmlubGVuID0gc2l6ZW9mKCBhZGRyaW4gKTsNCglj aGFyICpwZWVybmFtZTsNCg0KCWlmIChnZXRwZWVybmFtZSggbmV0LCAoc3Ry dWN0IHNvY2thZGRyICopICZhZGRyaW4sICZhZGRyaW5sZW4gKSA8IDApDQoJ CWVycigiZ2V0c29ja25hbWUgZmFpbGVkOiAlbSIpOw0KCXBlZXJuYW1lID0g aW5ldF9udG9hKGFkZHJpbi5zaW5fYWRkcik7DQoJc3ByaW50ZihleHBvcnRu YW1lMiwgZXhwb3J0bmFtZSwgcGVlcm5hbWUpOw0KDQoJc3lzbG9nKExPR19J TkZPLCAiY29ubmVjdCBmcm9tICVzLCBhc3NpZ25lZCBmaWxlIGlzICVzIiwg cGVlcm5hbWUsIGV4cG9ydG5hbWUyKTsNCn0NCg0KdTY0IHNpemVfYXV0b2Rl dGVjdChpbnQgZXhwb3J0KQ0Kew0KCXU2NCBlczsNCglERUJVRygibG9va2lu ZyBmb3IgZXhwb3J0IHNpemUgd2l0aCBsc2VlayBTRUVLX0VORFxuIik7DQoJ aWYgKChlcyA9IGxzZWVrNjQoZXhwb3J0LCAwLCBTRUVLX0VORCkpID09IE1J TlVTX09ORV82NCB8fCBlcyA9PSAwKSB7DQoJCXN0cnVjdCBzdGF0IHN0YXRf YnVmID0geyAwLCB9IDsNCgkJaW50IGVycm9yOw0KCQlERUJVRygibG9va2lu ZyBmb3IgZXhwb3J0IHNpemUgd2l0aCBmc3RhdFxuIik7DQoJCWlmICgoZXJy b3IgPSBmc3RhdChleHBvcnQsICZzdGF0X2J1ZikpID09IC0xIHx8IHN0YXRf YnVmLnN0X3NpemUgPT0gMCApIHsNCgkJCURFQlVHKCJsb29raW5nIGZvciBl eHBvcnQgc2l6ZSB3aXRoIGlvY3RsIEJMS0dFVFNJWkVcbiIpOw0KI2lmZGVm IEJMS0dFVFNJWkUNCgkJCWlmKGlvY3RsKGV4cG9ydCwgQkxLR0VUU0laRSwg JmVzKSB8fCBlcyA9PSAwKSB7DQojZWxzZQ0KCQkJaWYoMSl7DQojZW5kaWYN CgkJCQllcnIoIkNvdWxkIG5vdCBmaW5kIHNpemUgb2YgZXhwb3J0ZWQgYmxv Y2sgZGV2aWNlOiAlbSIpOw0KCQkJfSBlbHNlIHsNCgkJCQllcyAqPSA1MTI7 IC8qIGFzc3VtZSBibG9ja3NpemUgNTEyICovDQoJCQl9DQoJCX0gZWxzZSB7 DQoJCQllcyA9IHN0YXRfYnVmLnN0X3NpemU7DQoJCX0NCgl9DQoJcmV0dXJu IGVzOw0KfQ0KDQppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0K ew0KCWludCBuZXQ7DQoJdTY0IGk7DQoNCglpZiAoc2l6ZW9mKCBzdHJ1Y3Qg bmJkX3JlcXVlc3QgKSE9MjgpDQoJCWVycigiQmFkIHNpemUgb2Ygc3RydWN0 dXJlLiBBbGlnbm1lbnQgcHJvYmxlbXM/Iik7DQoNCglsb2dnaW5nKCk7DQoJ Y21kbGluZShhcmdjLCBhcmd2KTsNCgkNCglpZiAocG9ydCkNCgkJbmV0ID0g Y29ubmVjdG1lKHBvcnQpOw0KCWVsc2UNCgkJbmV0ID0gMDsNCglzZXRfcGVl cm5hbWUobmV0KTsNCg0KCWZvciAoaT0wOyBpPGV4cG9ydHNpemU7IGkrPWh1 bmtzaXplKSB7DQoJCWNoYXIgZXhwb3J0bmFtZTNbMTAyNF07DQoNCgkJc3By aW50ZihleHBvcnRuYW1lMywgZXhwb3J0bmFtZTIsIGkvaHVua3NpemUpOw0K CQlwcmludGYoICJPcGVuaW5nICVzXG4iLCBleHBvcnRuYW1lMyApOw0KCQlp ZiAoKGV4cG9ydFtpL2h1bmtzaXplXSA9IG9wZW4oZXhwb3J0bmFtZTMsIChm bGFncyAmIEZfUkVBRE9OTFkpID8gT19SRE9OTFkgOiBPX1JEV1IpKSA9PSAt MSkNCgkJCWVycigiQ291bGQgbm90IG9wZW4gZXhwb3J0ZWQgZmlsZTogJW0i KTsNCgl9DQoJDQoJaWYgKGV4cG9ydHNpemUgPT0gfjApIHsNCgkJZXhwb3J0 c2l6ZSA9IHNpemVfYXV0b2RldGVjdChleHBvcnRbMF0pOw0KCX0NCglpZiAo ZXhwb3J0c2l6ZSA+ICh+MFVMID4+IDEpKQ0KCQlpZiAoKGV4cG9ydHNpemUg Pj4gMTApID4gKH4wVUwgPj4gMSkpDQoJCQlzeXNsb2coTE9HX0lORk8sICJz aXplIG9mIGV4cG9ydGVkIGZpbGUvZGV2aWNlIGlzICVsdU1CIiwNCgkJCQkg ICAgICAgKHVuc2lnbmVkIGxvbmcpKGV4cG9ydHNpemUgPj4gMjApKTsNCgkJ ZWxzZQ0KCQkJc3lzbG9nKExPR19JTkZPLCAic2l6ZSBvZiBleHBvcnRlZCBm aWxlL2RldmljZSBpcyAlbHVLQiIsDQoJCQkgICAgICAgKHVuc2lnbmVkIGxv bmcpKGV4cG9ydHNpemUgPj4gMTApKTsNCgllbHNlDQoJCXN5c2xvZyhMT0df SU5GTywgInNpemUgb2YgZXhwb3J0ZWQgZmlsZS9kZXZpY2UgaXMgJWx1IiwN CgkJICAgICAgICh1bnNpZ25lZCBsb25nKWV4cG9ydHNpemUpOw0KCXNldG15 c29ja29wdChuZXQpOw0KDQoJbWFpbmxvb3AobmV0KTsNCglyZXR1cm4gMDsN Cn0NCg== --296485894-925126659-1007504766=:17617 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="cliserv.h" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.10.10112041726062.17617@clements.sc.steeleye.com> Content-Description: Content-Disposition: attachment; filename="cliserv.h"
LyogVGhpcyBoZWFkZXIgZmlsZSBpcyBzaGFyZWQgYnkgY2xpZW50ICYgc2Vy dmVyLiBUaGV5IHJlYWxseSBoYXZlDQogKiBzb21ldGhpbmcgdG8gc2hhcmUu Li4NCiAqICovDQoNCi8qIENsaWVudC9zZXJ2ZXIgcHJvdG9jb2wgaXMgYXMg Zm9sbG93czoNCiAgIFNlbmQgSU5JVF9QQVNTV0QNCiAgIFNlbmQgNjQtYml0 IGNsaXNlcnZfbWFnaWMNCiAgIFNlbmQgNjQtYml0IHNpemUgb2YgZXhwb3J0 ZWQgZGV2aWNlDQogICBTZW5kIDEyOCBieXRlcyBvZiB6ZXJvcyAocmVzZXJ2 ZWQgZm9yIGZ1dHVyZSB1c2UpDQogKi8NCg0KI2luY2x1ZGUgImNvbmZpZy5o Ig0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQoj aW5jbHVkZSA8bmV0ZGIuaD4NCg0KI2lmIFNJWkVPRl9VTlNJR05FRF9TSE9S VF9JTlQ9PTQNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTMyOw0KI2VsaWYg U0laRU9GX1VOU0lHTkVEX0lOVD09NA0KdHlwZWRlZiB1bnNpZ25lZCBpbnQg dTMyOw0KI2VsaWYgU0laRU9GX1VOU0lHTkVEX0xPTkdfSU5UPT00DQp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgdTMyOw0KI2Vsc2UNCiNlcnJvciBJIG5lZWQg YXQgbGVhc3Qgc29tZSAzMi1iaXQgdHlwZQ0KI2VuZGlmDQoNCiNpZiBTSVpF T0ZfVU5TSUdORURfSU5UPT04DQp0eXBlZGVmIHVuc2lnbmVkIGludCB1NjQ7 DQojZGVmaW5lIE1JTlVTX09ORV82NCAoLTFVKQ0KI2VsaWYgU0laRU9GX1VO U0lHTkVEX0xPTkdfSU5UPT04DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTY0 Ow0KI2RlZmluZSBNSU5VU19PTkVfNjQgKC0xVUwpDQojZWxpZiBTSVpFT0Zf VU5TSUdORURfTE9OR19MT05HX0lOVD09OA0KdHlwZWRlZiB1bnNpZ25lZCBs b25nIGxvbmcgdTY0Ow0KI2RlZmluZSBNSU5VU19PTkVfNjQgKC0xVUxMKQ0K I2Vsc2UNCiNlcnJvciBJIG5lZWQgYXQgbGVhc3Qgc29tZSA2NC1iaXQgdHlw ZQ0KI2VuZGlmDQoNCiNpbmNsdWRlICJuYmQuaCINCg0KdTY0IGNsaXNlcnZf bWFnaWMgPSAweDAwNDIwMjgxODYxMjUzTEw7DQojZGVmaW5lIElOSVRfUEFT U1dEICJOQkRNQUdJQyINCg0KI2RlZmluZSBJTkZPKGEpIGRvIHsgfSB3aGls ZSgwKQ0KDQp2b2lkIHNldG15c29ja29wdChpbnQgc29jaykNCnsNCglpbnQg c2l6ZSA9IDE7DQojaWYgMA0KCWlmIChzZXRzb2Nrb3B0KHNvY2ssIFNPTF9T T0NLRVQsIFNPX1NOREJVRiwgJnNpemUsIHNpemVvZihpbnQpKSA8IDApDQoJ CSBJTkZPKCIobm8gc29ja29wdC8xOiAlbSkiKTsNCiNlbmRpZg0KCXNpemUg PSAxOw0KCWlmIChzZXRzb2Nrb3B0KHNvY2ssIFNPTF9UQ1AsIFRDUF9OT0RF TEFZLCAmc2l6ZSwgc2l6ZW9mKGludCkpIDwgMCkNCgkJIElORk8oIihubyBz b2Nrb3B0LzI6ICVtKSIpOw0KI2lmIDANCglzaXplID0gMTAyNDsNCglpZiAo c2V0c29ja29wdChzb2NrLCBTT0xfVENQLCBUQ1BfTUFYU0VHLCAmc2l6ZSwg c2l6ZW9mKGludCkpIDwgMCkNCgkJIElORk8oIihubyBzb2Nrb3B0LzM6ICVt KSIpOw0KI2VuZGlmDQp9DQoNCnZvaWQgZXJyKGNvbnN0IGNoYXIgKnMpDQp7 DQoJY29uc3QgaW50IG1heGxlbiA9IDE1MDsNCgljaGFyIHMxW21heGxlbl0s ICpzMjsNCglpbnQgbiA9IDA7DQoNCglzdHJuY3B5KHMxLCBzLCBtYXhsZW4p Ow0KCWlmIChzMiA9IHN0cnN0cihzLCAiJW0iKSkgew0KCQlzdHJjcHkoczEg KyAoczIgLSBzKSwgc3lzX2Vycmxpc3RbZXJybm9dKTsNCgkJczIgKz0gMjsN CgkJc3RyY3B5KHMxICsgc3RybGVuKHMxKSwgczIpOw0KCX0NCgllbHNlIGlm IChzMiA9IHN0cnN0cihzLCAiJWgiKSkgew0KCQlzdHJjcHkoczEgKyAoczIg LSBzKSwgaHN0cmVycm9yKGhfZXJybm8pKTsNCgkJczIgKz0gMjsNCgkJc3Ry Y3B5KHMxICsgc3RybGVuKHMxKSwgczIpOw0KCX0NCg0KCXMxW21heGxlbi0x XSA9ICdcMCc7DQojaWZkZWYgSVNTRVJWRVINCglzeXNsb2coTE9HX0VSUiwg czEpOw0KI2Vsc2UNCglmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwg czEpOw0KI2VuZGlmDQoJZXhpdCgxKTsNCn0NCg0Kdm9pZCBsb2dnaW5nKHZv aWQpDQp7DQojaWZkZWYgSVNTRVJWRVINCglvcGVubG9nKE1ZX05BTUUsIExP R19QSUQsIExPR19EQUVNT04pOw0KI2VuZGlmDQoJc2V0dmJ1ZihzdGRvdXQs IE5VTEwsIF9JT05CRiwgMCk7DQoJc2V0dmJ1ZihzdGRlcnIsIE5VTEwsIF9J T05CRiwgMCk7DQp9DQoNCiNpZmRlZiBXT1JEU19CSUdFTkRJQU4NCnU2NCBu dG9obGwodTY0IGEpDQp7DQoJcmV0dXJuIGE7DQp9DQojZWxzZQ0KdTY0IG50 b2hsbCh1NjQgYSkNCnsNCgl1MzIgbG8gPSBhICYgMHhmZmZmZmZmZjsNCgl1 MzIgaGkgPSBhID4+IDMyVTsNCglsbyA9IG50b2hsKGxvKTsNCgloaSA9IG50 b2hsKGhpKTsNCglyZXR1cm4gKCh1NjQpIGxvKSA8PCAzMlUgfCBoaTsNCn0N CiNlbmRpZg0KI2RlZmluZSBodG9ubGwgbnRvaGxsDQo= --296485894-925126659-1007504766=:17617-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/