[patch]: adding nls to smbfs

Urban Widmark (urban@svenskatest.se)
Mon, 17 May 1999 10:01:17 +0200 (CEST)


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.

---1463780587-1963227503-926928077=:4696
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello again

(Volker, are you out there?)

This is a patch to make smbfs aware of differences in "codepages" (charset
encodings). It makes swedish characters exported by a smb server appear as
they should on an iso8859-1 display (terminal?). Chances are that it also
works for other encodings, possibly even utf8 ...
I need help testing this with various encodings, for stability, etc.

The codepages are changed by changing some defines, or by patching samba
(smbmount & smbmnt) to handle 2 new arguments. The later requires you to
patch your kernel and change a define in include/linux/smb_mount.h (it's
experimental, it's not supposed to be easy :), *before* recompiling samba.

(Michael, I sent you this < 1week ago for comments on the samba part.
Either you've been busy or it was lost in your elm/2.2.8/buffer.c disk
corruption, anyway here you have it again.)

What the patch does is that it makes smbfs convert from the remote charset
to the local when reading, and convert back when sending requests to the
server. Nicer would perhaps be to keep a copy of both filenames (but there
is a lot of copying and string reversing anyway, this shouldn't be too
much of a performance hit).

Patch against 2.2.9 attached (known to work with 2.2.7, 2.2.8, 2.3.3,
+- some offsets)

/Urban

---1463780587-1963227503-926928077=:4696
Content-Type: TEXT/PLAIN; charset=iso-8859-1; name="smbfs-nls.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9905171001170.4696@cola.svenskatest.se>
Content-Description: smbfs-nls.patch
Content-Disposition: attachment; filename="smbfs-nls.patch"

ZGlmZiAtdXIgbGludXgtMi4yLjkvZnMvQ29uZmlnLmluIGxpbnV4L2ZzL0Nv
bmZpZy5pbg0KLS0tIGxpbnV4LTIuMi45L2ZzL0NvbmZpZy5pbglNb24gTWF5
IDE3IDA4OjQ5OjU0IDE5OTkNCisrKyBsaW51eC9mcy9Db25maWcuaW4JTW9u
IE1heSAxNyAwOToxMTo0NiAxOTk5DQpAQCAtODksNiArODksOSBAQA0KICAg
aWYgWyAiJENPTkZJR19TTUJfRlMiICE9ICJuIiBdOyB0aGVuDQogICAgIGJv
b2wgJ1NNQiBXaW45NSBidWcgd29yay1hcm91bmQnIENPTkZJR19TTUJfV0lO
OTUNCiAgIGZpDQorICBpZiBbICIkQ09ORklHX0VYUEVSSU1FTlRBTCIgPSAi
eSIgLWEgIiRDT05GSUdfU01CX0ZTIiAhPSAibiIgXTsgdGhlbg0KKyAgICBi
b29sICdTTUIgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQgKEVYUEVSSU1FTlRB
TCknIENPTkZJR19TTUJfTkxTDQorICBmaQ0KIGZpDQogaWYgWyAiJENPTkZJ
R19JUFgiICE9ICJuIiAtbyAiJENPTkZJR19JTkVUIiAhPSAibiIgXTsgdGhl
bg0KICAgdHJpc3RhdGUgJ05DUCBmaWxlc3lzdGVtIHN1cHBvcnQgKHRvIG1v
dW50IE5ldFdhcmUgdm9sdW1lcyknIENPTkZJR19OQ1BfRlMNCmRpZmYgLXVy
IGxpbnV4LTIuMi45L2ZzL25scy9Db25maWcuaW4gbGludXgvZnMvbmxzL0Nv
bmZpZy5pbg0KLS0tIGxpbnV4LTIuMi45L2ZzL25scy9Db25maWcuaW4JTW9u
IE1heSAxNyAwODo1MDo0NiAxOTk5DQorKysgbGludXgvZnMvbmxzL0NvbmZp
Zy5pbglNb24gTWF5IDE3IDA5OjExOjQ3IDE5OTkNCkBAIC0yLDkgKzIsMTAg
QEANCiAjIE5hdGl2ZSBsYW5ndWFnZSBzdXBwb3J0IGNvbmZpZ3VyYXRpb24N
CiAjDQogDQotIyBtc2RvcyBhbmQgSm9saWV0IHdhbnQgTkxTDQorIyBtc2Rv
cywgSm9saWV0LCBuY3BmcyBhbmQgc21iZnMgKG1heSkgd2FudCBOTFMNCiBp
ZiBbICIkQ09ORklHX0pPTElFVCIgPSAieSIgLW8gIiRDT05GSUdfRkFUX0ZT
IiAhPSAibiIgXA0KLQktbyAiJENPTkZJR19OVEZTX0ZTIiAhPSAibiIgLW8g
IiRDT05GSUdfTkNQRlNfTkxTIiA9ICJ5IiBdOyB0aGVuDQorCS1vICIkQ09O
RklHX05URlNfRlMiICE9ICJuIiAtbyAiJENPTkZJR19OQ1BGU19OTFMiID0g
InkiIFwNCisJLW8gIiRDT05GSUdfU01CX05MUyIgPSAieSIgXTsgdGhlbg0K
ICAgZGVmaW5lX2Jvb2wgQ09ORklHX05MUyB5DQogZWxzZQ0KICAgZGVmaW5l
X2Jvb2wgQ09ORklHX05MUyBuDQpkaWZmIC11ciBsaW51eC0yLjIuOS9mcy9z
bWJmcy9pbm9kZS5jIGxpbnV4L2ZzL3NtYmZzL2lub2RlLmMNCi0tLSBsaW51
eC0yLjIuOS9mcy9zbWJmcy9pbm9kZS5jCVdlZCBEZWMgMjMgMTg6NDQ6NDIg
MTk5OA0KKysrIGxpbnV4L2ZzL3NtYmZzL2lub2RlLmMJTW9uIE1heSAxNyAw
OToxMTo0NyAxOTk5DQpAQCAtMjAsNiArMjAsNyBAQA0KICNpbmNsdWRlIDxs
aW51eC9pbml0Lmg+DQogI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4NCiAjaW5j
bHVkZSA8bGludXgvZGNhY2hlLmg+DQorI2luY2x1ZGUgPGxpbnV4L25scy5o
Pg0KIA0KICNpbmNsdWRlIDxsaW51eC9zbWJfZnMuaD4NCiAjaW5jbHVkZSA8
bGludXgvc21ibm8uaD4NCkBAIC0zMzYsNiArMzM3LDE3IEBADQogCWlmIChz
ZXJ2ZXItPnBhY2tldCkNCiAJCXNtYl92ZnJlZShzZXJ2ZXItPnBhY2tldCk7
DQogDQorI2lmZGVmIENPTkZJR19TTUJfTkxTDQorCWlmKHNiLT51LnNtYmZz
X3NiLnJlbW90ZV9ubHMpIHsNCisJCXVubG9hZF9ubHMoc2ItPnUuc21iZnNf
c2IucmVtb3RlX25scyk7DQorCQlzYi0+dS5zbWJmc19zYi5yZW1vdGVfbmxz
ID0gTlVMTDsNCisJfQ0KKwlpZihzYi0+dS5zbWJmc19zYi5sb2NhbF9ubHMp
IHsNCisJCXVubG9hZF9ubHMoc2ItPnUuc21iZnNfc2IubG9jYWxfbmxzKTsN
CisJCXNiLT51LnNtYmZzX3NiLmxvY2FsX25scyA9IE5VTEw7DQorCX0NCisj
ZW5kaWYNCisNCiAJTU9EX0RFQ19VU0VfQ09VTlQ7DQogfQ0KIA0KQEAgLTQx
NCw2ICs0MjYsNTggQEANCiAJaWYgKCFzYi0+c19yb290KQ0KIAkJZ290byBv
dXRfbm9fcm9vdDsNCiANCisjaWZkZWYgQ09ORklHX1NNQl9OTFMNCisjaWZk
ZWYgU01CTU9VTlRfUEFUQ0hFRA0KKwkvKg0KKwkgKiBzbWJtb3VudCBpcyBw
YXRjaGVkIHRvIGtub3cgYWJvdXQgY29kZXBhZ2VzIGFuZCB0ZWxscyB1cyBp
biB0aGUNCisJICogc21iX21vdW50X2RhdGEgc3RydWN0DQorCSAqLw0KKwlz
Yi0+dS5zbWJmc19zYi5yZW1vdGVfbmxzID0gTlVMTDsNCisJc2ItPnUuc21i
ZnNfc2IubG9jYWxfbmxzID0gTlVMTDsNCisJaWYoc3RybGVuKG1udC0+cmVt
b3RlX25scykgPiAwKSB7DQorCQkvKnByaW50aygiU01CRlM6IExvYWRpbmcg
cmVtb3RlIGNvZGVwYWdlICclcydcbiIsIA0KKwkJICAgICAgIG1udC0+cmVt
b3RlX25scyk7Ki8NCisJCWlmKCEoc2ItPnUuc21iZnNfc2IucmVtb3RlX25s
cyA9IGxvYWRfbmxzKG1udC0+cmVtb3RlX25scykpICkNCisJCQlwcmludGso
IlNNQkZTOiBGYWlsZWQgdG8gbG9hZCByZW1vdGUgY29kZXBhZ2UuIik7DQor
DQorCQlpZihzYi0+dS5zbWJmc19zYi5yZW1vdGVfbmxzICYmIHN0cmxlbiht
bnQtPmxvY2FsX25scykgPiAwKSB7DQorCQkJcHJpbnRrKCJTTUJGUzogTG9h
ZGluZyBsb2NhbCBjb2RlcGFnZSAnJXMnXG4iLCANCisJCQkgICAgICAgbW50
LT5sb2NhbF9ubHMpOw0KKwkJCWlmKCAhKHNiLT51LnNtYmZzX3NiLmxvY2Fs
X25scyA9IA0KKwkJCSAgICAgIGxvYWRfbmxzKG1udC0+bG9jYWxfbmxzKSkg
KQ0KKwkJCXsNCisJCQkJLyoNCisJCQkJICogQmV0dGVyIHRvIGRpc2FibGUg
Y29tcGxldGVseSB0aGFuDQorCQkJCSAqIHRvIGNvbmZ1c2UgcGVvcGxlIHdp
dGggdXRmOCAuLi4gDQorCQkJCSAqIG9yIHNob3VsZCBhbGwgZXJyb3JzIGZh
aWwgdGhlIG1vdW50Pw0KKwkJCQkgKi8NCisJCQkJcHJpbnRrKCJTTUJGUzog
RmFpbGVkIHRvIGxvYWQgbG9jYWwgY29kZXBhZ2UuIg0KKwkJCQkgICAgICAg
IiAtLSBubHMgZGlzYWJsZWQuIik7DQorCQkJCXVubG9hZF9ubHMoc2ItPnUu
c21iZnNfc2IucmVtb3RlX25scyk7DQorCQkJCXNiLT51LnNtYmZzX3NiLnJl
bW90ZV9ubHMgPSBOVUxMOw0KKwkJCX0NCisJCX0NCisJfQ0KKyNlbHNlDQor
CS8qDQorCSAqIHNtYm1vdW50IGlzIHVuY2hhbmdlZCwgdXNlIGNvbXBpbGUg
dGltZSBvcHRpb25zIGluc3RlYWQuDQorCSAqIChkbyBzb21ldGhpbmcgd2l0
aCAvcHJvYz8pDQorCSAqLw0KKwlzYi0+dS5zbWJmc19zYi5yZW1vdGVfbmxz
ID0gTlVMTDsNCisJc2ItPnUuc21iZnNfc2IubG9jYWxfbmxzID0gTlVMTDsN
CisNCisjaWZkZWYgU01CX1JFTU9URV9DUA0KKwlpZighKHNiLT51LnNtYmZz
X3NiLnJlbW90ZV9ubHMgPSBsb2FkX25scyhTTUJfUkVNT1RFX0NQKSkgKQ0K
KwkJcHJpbnRrKCJTTUJGUzogRmFpbGVkIHRvIGxvYWQgcmVtb3RlIGNvZGVw
YWdlLiIpOw0KKyNlbmRpZg0KKyNpZmRlZiBTTUJfTE9DQUxfQ1ANCisJaWYo
IShzYi0+dS5zbWJmc19zYi5sb2NhbF9ubHMgPSBsb2FkX25scyhTTUJfTE9D
QUxfQ1ApKSApDQorCQlwcmludGsoIlNNQkZTOiBGYWlsZWQgdG8gbG9hZCBs
b2NhbCBjb2RlcGFnZS4iKTsNCisjZW5kaWYNCisNCisjZW5kaWYNCisjZW5k
aWYNCisNCiAJdW5sb2NrX3N1cGVyKHNiKTsNCiAJcmV0dXJuIHNiOw0KIA0K
QEAgLTU5Nyw2ICs2NjEsNyBAQA0KIA0KICNpZmRlZiBNT0RVTEUNCiBFWFBP
UlRfTk9fU1lNQk9MUzsNCisNCiANCiBpbnQNCiBpbml0X21vZHVsZSh2b2lk
KQ0KZGlmZiAtdXIgbGludXgtMi4yLjkvZnMvc21iZnMvcHJvYy5jIGxpbnV4
L2ZzL3NtYmZzL3Byb2MuYw0KLS0tIGxpbnV4LTIuMi45L2ZzL3NtYmZzL3By
b2MuYwlXZWQgTm92ICA0IDA2OjU2OjU4IDE5OTgNCisrKyBsaW51eC9mcy9z
bWJmcy9wcm9jLmMJTW9uIE1heSAxNyAwOToxMTo0NyAxOTk5DQpAQCAtNyw2
ICs3LDcgQEANCiAgKiAgMjgvMDYvOTYgLSBGaXhlZCBsb25nIGZpbGUgbmFt
ZSBzdXBwb3J0IChzbWJfcHJvY19yZWFkZGlyX2xvbmcpIGJ5IFl1cmkgUGVy
DQogICogIDI4LzA5Lzk3IC0gRml4ZWQgc21iX2RfcGF0aCBbbm93IHNtYl9i
dWlsZF9wYXRoKCldIHRvIGJlIG5vbi1yZWN1cnNpdmUNCiAgKiAgICAgICAg
ICAgICBieSBSaWNjYXJkbyBGYWNjaGV0dGkNCisgKiAgMTAvMDUvOTkgLSBT
aW1wbGUgZmlsZW5hbWUgY29kZXBhZ2UgY29udmVyc2lvbnMgYWRkZWQgYnkg
VXJiYW4gV2lkbWFyaw0KICAqLw0KIA0KICNpbmNsdWRlIDxsaW51eC90eXBl
cy5oPg0KQEAgLTE4LDYgKzE5LDcgQEANCiAjaW5jbHVkZSA8bGludXgvZmNu
dGwuaD4NCiAjaW5jbHVkZSA8bGludXgvZGNhY2hlLmg+DQogI2luY2x1ZGUg
PGxpbnV4L2RpcmVudC5oPg0KKyNpbmNsdWRlIDxsaW51eC9ubHMuaD4NCiAN
CiAjaW5jbHVkZSA8bGludXgvc21iX2ZzLmg+DQogI2luY2x1ZGUgPGxpbnV4
L3NtYm5vLmg+DQpAQCAtODAsNiArODIsMTY4IEBADQogCX0NCiB9DQogDQor
DQorI2lmZGVmIENPTkZJR19TTUJfTkxTDQorDQorLyoNCisgKiBDb2RlcGFn
ZSBjb252ZXJzaW9ucy4NCisgKg0KKyAqIE5vdGU6IHVwcGVyICYgbG93ZXIg
Y29udmVyc2lvbnMgd29uJ3Qgd29yayBmb3Igbm9uIGEteiBjaGFycw0KKyAq
Lw0KKw0KKy8qDQorICAyZG86DQorICAgKyBTTUJGU19DT0RFUEFHRVMgc2hv
dWxkIHBlcmhhcHMgYmUgQ09ORklHX1NNQl9OTFMNCisgICAtIEJpZyAmIGxp
dHRsZSBlbmRpYW4gcHJvYmxlbXMgaW4gbXkgY29udmVyc2lvbi4NCisgICAg
IEFsc28gaW4gb3RoZXIgcGFydHMgb2Ygc21iZnM/DQorICAgKyBDaGFuZ2Ug
c28gdGhhdCBjb2RlcGFnZSBpbmZvIGlzIHNlbnQgd2l0aCB0aGUgbW91bnRf
ZGF0YQ0KKyAgICAgKHJlcXVpcmVzIGNoYW5nZXMgdG8gc21iX21vdW50Lmgg
YW5kIHJlcXVpcmVzIA0KKyAgICAgIGNoYW5nZXMgJiByZWNvbXBpbGUgb2Y6
IHNtYm1udCAmIHNtYm1vdW50KQ0KKyAgICAgRG9uZSwgYnV0IGl0IHRvdWNo
ZXMgZXh0ZXJuYWwgcGFja2FnZXMuIFZlcnNpb24gDQorDQorDQorICBQcm9i
bGVtczoNCitleHQyOg0KKy1ydy1yLS1yLS0gICAxIHVyYmFuICAgIHVzZXJz
ICAgICAgICAgICAwIE1heSAgOCAxMzo0MCDE1sV8DQorLXJ3LXItLXItLSAg
IDEgdXJiYW4gICAgdXNlcnMgICAgICAgICAgIDAgTWF5ICA4IDEzOjQwIMTW
xXw8Pg0KKw0KK3NtYmZzOg0KKy1yd3hyLXhyLXggICAxIHJvb3QgICAgIHJv
b3QgICAgICAgICAgICAwIE1heSAgOCAxMjo0MCDE1sV+QjMqDQorLXJ3eHIt
eHIteCAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgIDAgTWF5ICA4IDEy
OjQwIMTWxX5JTioNCisNCitUaGUgY2hhcnMgfDw+OiBkb2Vzbid0IHdvcmsu
IE1lIG9yIHNlcnZlcj8NCitUaGUgcGVyZmVjdGx5IG5vcm1hbCBmaWxlbmFt
ZSBhYSEiI6OkJCUmeyhbKV09fSBhbHNvIGZhaWxzLg0KKw0KKyovDQorDQor
I2RlZmluZSBDT05WRVJUX0xPQ0FMICAwDQorI2RlZmluZSBDT05WRVJUX1JF
TU9URSAxDQorDQorI2lmIDANCitzdGF0aWMgdm9pZCBwcmludF9uYW1lKGNv
bnN0IGNoYXIgKnByZWZpeCwgY29uc3QgdW5zaWduZWQgY2hhciAqbmFtZSwg
aW50IGxlbikNCit7DQorCXByaW50ayhLRVJOX0RFQlVHICIlc1slZF0gJyIs
IHByZWZpeCwgbGVuKTsNCisJd2hpbGUobGVuLS0gPiAwKSB7DQorCQlwcmlu
dGsoIiVjICUwMnggICIsICpuYW1lLCAqbmFtZSk7DQorCQluYW1lKys7DQor
CX0NCisJcHJpbnRrKCInXG4iKTsNCit9DQorI2VuZGlmDQorDQorLyogQ29u
dmVydCBmcm9tIGNvZGVwYWdlIGVuY29kaW5nIHRvIHV0ZjgsIHdyaXRpbmcg
dG8gb3V0cHV0ICovDQorc3RhdGljIGludCBjb2RlcGFnZV91dGY4KHVuc2ln
bmVkIGNoYXIgKm91dHB1dCwgaW50IG1heF9sZW4sIA0KKwkJCSBjb25zdCB1
bnNpZ25lZCBjaGFyICpuYW1lLCBpbnQgbGVuLCANCisJCQkgc3RydWN0IG5s
c190YWJsZSAqbmxzKQ0KK3sNCisJX191MTYgeDsNCisJdW5zaWduZWQgY2hh
ciAqcyA9IG91dHB1dDsNCisJaW50IG47DQorCXVuc2lnbmVkIGNoYXIgYzsN
CisNCisJd2hpbGUobGVuLS0gPiAwKSB7DQorCQljID0gKm5hbWUrKzsNCisJ
CS8qRklYTUU6IGJpZyAmIGxpdHRsZSBlbmRpYW4/ICovDQorCQl4ID0gbmxz
LT5jaGFyc2V0MnVuaVtjXS51bmkxIHwgKG5scy0+Y2hhcnNldDJ1bmlbY10u
dW5pMiA8PCA4KTsNCisJCW4gPSB1dGY4X3djdG9tYihzLCB4LCBtYXhfbGVu
KTsNCisJCWlmKG4gIT0gLTEpIHsNCisJCQltYXhfbGVuIC09IG47DQorCQkJ
cyArPSBuOw0KKwkJfQ0KKwl9DQorCS8qcHJpbnRfbmFtZSgidXRmOCIsIG91
dHB1dCwgcyAtIG91dHB1dCk7Ki8NCisJcmV0dXJuIHMgLSBvdXRwdXQ7DQor
fQ0KKw0KKy8qIENvbnZlcnQgZnJvbSB1dGY4IGVuY29kaW5nIHRvIHRoZSAn
bmxzJyBjb2RlcGFnZSAqLw0KK3N0YXRpYyBpbnQgdXRmOF9jb2RlcGFnZSh1
bnNpZ25lZCBjaGFyICpvdXRwdXQsIA0KKwkJCSBjb25zdCB1bnNpZ25lZCBj
aGFyICpuYW1lLCBpbnQgbGVuLCANCisJCQkgc3RydWN0IG5sc190YWJsZSAq
bmxzKQ0KK3sNCisJdW5zaWduZWQgY2hhciAqcGFnZTsNCisJdW5zaWduZWQg
Y2hhciAqcyA9IG91dHB1dDsNCisJdW5zaWduZWQgY2hhciBjaDsNCisJdW5z
aWduZWQgY2hhciBjbDsNCisJaW50IG47DQorCV9fdTE2IHg7DQorDQorCXdo
aWxlKGxlbiA+IDApIHsNCisJCWlmKCAobiA9IHV0ZjhfbWJ0b3djKCZ4LCBu
YW1lLCA2KSkgPT0gLTEpIHsNCisJCQluYW1lKys7DQorCQkJbGVuLS07DQor
CQkJY29udGludWU7DQorCQl9DQorCQluYW1lICs9IG47DQorCQlsZW4gLT0g
bjsNCisNCisJCWNoID0gKHggJiAweGZmMDApID4+IDg7DQorCQljbCA9ICh4
ICYgMHgwMGZmKTsNCisNCisJCXBhZ2UgPSBubHMtPnBhZ2VfdW5pMmNoYXJz
ZXRbIGNoIF07DQorCQljaCA9IChwYWdlID8gcGFnZVsgY2wgXSA6ICc/Jyk7
DQorCQkqcysrID0gKGNoID8gY2ggOiAnPycpOw0KKwl9DQorCS8qcHJpbnRf
bmFtZSgiY3AiLCBvdXRwdXQsIHMgLSBvdXRwdXQpOyovDQorCXJldHVybiBz
IC0gb3V0cHV0Ow0KK30NCisNCisvKiBjb252ZXJ0IGZyb20gY29kZXBhZ2Ug
J25sc19pbicgdG8gJ25sc19vdXQnICovDQorc3RhdGljIHZvaWQgY29udmVy
dF9jb2RlcGFnZTIodW5zaWduZWQgY2hhciAqb3V0cHV0LCANCisJCQkgICAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lLCBpbnQgbGVuLA0KKwkJCSAg
ICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19pbiwNCisJCQkgICAgICBzdHJ1
Y3QgbmxzX3RhYmxlICpubHNfb3V0KQ0KK3sNCisJdW5zaWduZWQgY2hhciBj
aCwgY2w7DQorCXVuc2lnbmVkIGNoYXIgKnBhZ2U7DQorDQorCXdoaWxlKGxl
bi0tID4gMCkgew0KKwkJY2wgPSBubHNfaW4tPmNoYXJzZXQydW5pWypuYW1l
XS51bmkxOw0KKwkJY2ggPSBubHNfaW4tPmNoYXJzZXQydW5pWypuYW1lXS51
bmkyOw0KKwkJbmFtZSsrOw0KKw0KKwkJcGFnZSA9IG5sc19vdXQtPnBhZ2Vf
dW5pMmNoYXJzZXRbIGNoIF07DQorCQkvKkZJWE1FOiAnPycgY2FuIG5vdCBi
ZSB1c2VkIHRvIHJlbWVtYmVyIHRoZSB2YWx1ZSBpbiB0aGUNCisJCSAgb3Jp
Z2luYWwgY29kZXBhZ2UuIFdpbGwgY2F1c2UgZXJyb3JzIG9uIGxvb2t1cHMu
IG5vPyAqLw0KKwkJY2ggPSAocGFnZSA/IHBhZ2VbIGNsIF0gOiAnPycpOw0K
KwkJKm91dHB1dCsrID0gKGNoID8gY2ggOiAnPycpOw0KKwl9DQorfQ0KKw0K
Kw0KKy8qDQorICogRGV0ZXJtaW5lIHdoYXQga2luZCBvZiBjb252ZXJzaW9u
IGlzIHJlcXVlc3RlZCwgdGhlbiBjYWxsIGhlbHBlcnMuDQorICogQXNzdW1l
cyB0aGUgc2VydmVyIGlzIGxvY2tlZCB3aGVuIGNhbGxlZC4NCisgKg0KKyAq
IFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgY29udmVydGVkIG5hbWUNCisg
Ki8NCitzdGF0aWMgaW50IGNvbnZlcnRfY29kZXBhZ2UoY2hhciAqb3V0cHV0
LCBjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lLCBpbnQgbGVuLA0KKwkJCSAg
ICBzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlciwgaW50IGRpcmVjdGlvbikN
Cit7DQorCWlmKCFzZXJ2ZXItPmxvY2FsX25scyAmJiAhc2VydmVyLT5yZW1v
dGVfbmxzKSB7DQorCQkvKiBubyBjb252ZXJzaW9uIHJlcXVlc3RlZCAqLw0K
KwkJbWVtY3B5KG91dHB1dCwgbmFtZSwgbGVuKTsNCisJCXJldHVybiBsZW47
DQorCX0NCisJaWYoIXNlcnZlci0+bG9jYWxfbmxzKSB7DQorCQlpZihkaXJl
Y3Rpb24gPT0gQ09OVkVSVF9SRU1PVEUpIHsNCisJCQlyZXR1cm4gdXRmOF9j
b2RlcGFnZShvdXRwdXQsIG5hbWUsIGxlbiwgDQorCQkJCQkgICAgIHNlcnZl
ci0+cmVtb3RlX25scyk7DQorCQl9DQorCQlyZXR1cm4gY29kZXBhZ2VfdXRm
OChvdXRwdXQsIFNNQl9NQVhOQU1FTEVOLCBuYW1lLCBsZW4sIA0KKwkJCQkg
ICAgIHNlcnZlci0+cmVtb3RlX25scyk7DQorCX0NCisNCisJaWYoZGlyZWN0
aW9uID09IENPTlZFUlRfUkVNT1RFKQ0KKwkJY29udmVydF9jb2RlcGFnZTIo
b3V0cHV0LCBuYW1lLCBsZW4sIHNlcnZlci0+bG9jYWxfbmxzLCANCisJCQkJ
ICBzZXJ2ZXItPnJlbW90ZV9ubHMpOw0KKwllbHNlDQorCQljb252ZXJ0X2Nv
ZGVwYWdlMihvdXRwdXQsIG5hbWUsIGxlbiwgc2VydmVyLT5yZW1vdGVfbmxz
LCANCisJCQkJICBzZXJ2ZXItPmxvY2FsX25scyk7DQorCXJldHVybiBsZW47
CS8qIG5vIGNoYW5nZSAqLw0KK30NCisNCisjZW5kaWYNCisNCiAvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovDQogLyogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLw0KIC8qICBFbmNvZGluZy9EZWNvZGluZyBz
ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8NCkBAIC0xMDQsOSArMjY4LDExIEBADQogICogc21iX2J1
aWxkX3BhdGg6IGJ1aWxkIHRoZSBwYXRoIHRvIGVudHJ5IGFuZCBuYW1lIHN0
b3JpbmcgaXQgaW4gYnVmLg0KICAqIFRoZSBwYXRoIHJldHVybmVkIHdpbGwg
aGF2ZSB0aGUgdHJhaWxpbmcgJ1wwJy4NCiAgKi8NCi1zdGF0aWMgaW50IHNt
Yl9idWlsZF9wYXRoKHN0cnVjdCBkZW50cnkgKiBlbnRyeSwgc3RydWN0IHFz
dHIgKiBuYW1lLCBjaGFyICogYnVmKQ0KK3N0YXRpYyBpbnQgc21iX2J1aWxk
X3BhdGgoc3RydWN0IGRlbnRyeSAqIGVudHJ5LCBzdHJ1Y3QgcXN0ciAqIG5h
bWUsIA0KKwkJCSAgY2hhciAqIGJ1Ziwgc3RydWN0IHNtYl9zYl9pbmZvICpz
ZXJ2ZXIpDQogew0KIAljaGFyICpwYXRoID0gYnVmOw0KKwlpbnQgbGVuOw0K
IA0KIAlpZiAoZW50cnkgPT0gTlVMTCkNCiAJCWdvdG8gdGVzdF9uYW1lX2Fu
ZF9vdXQ7DQpAQCAtMTI2LDkgKzI5MiwxNyBAQA0KIAkgKiBhbmQgc3RvcmUg
aXQgaW4gcmV2ZXJzZWQgb3JkZXIgW3NlZSByZXZlcnNlX3N0cmluZygpXQ0K
IAkgKi8NCiAJZm9yICg7Oykgew0KLQkJbWVtY3B5KHBhdGgsIGVudHJ5LT5k
X25hbWUubmFtZSwgZW50cnktPmRfbmFtZS5sZW4pOw0KLQkJcmV2ZXJzZV9z
dHJpbmcocGF0aCwgZW50cnktPmRfbmFtZS5sZW4pOw0KLQkJcGF0aCArPSBl
bnRyeS0+ZF9uYW1lLmxlbjsNCisjaWZkZWYgQ09ORklHX1NNQl9OTFMNCisJ
CS8qIGNvbnZlcnQgbmFtZSB0byB0aGUgZm9ybWF0IHRoZSBzZXJ2ZXIgZXhw
ZWN0cyAqLw0KKwkJbGVuID0gY29udmVydF9jb2RlcGFnZShwYXRoLCBlbnRy
eS0+ZF9uYW1lLm5hbWUsIA0KKwkJCQkgICAgICAgZW50cnktPmRfbmFtZS5s
ZW4sIHNlcnZlciwgDQorCQkJCSAgICAgICBDT05WRVJUX1JFTU9URSk7DQor
I2Vsc2UNCisJCWxlbiA9IGVudHJ5LT5kX25hbWUubGVuOw0KKwkJbWVtY3B5
KHBhdGgsIGVudHJ5LT5kX25hbWUubmFtZSwgbGVuKTsNCisjZW5kaWYNCisJ
CXJldmVyc2Vfc3RyaW5nKHBhdGgsIGxlbik7DQorCQlwYXRoICs9IGxlbjsN
CiANCiAJCSoocGF0aCsrKSA9ICdcXCc7DQogDQpAQCAtMTQ0LDIwICszMTgs
MjkgQEANCiAJaWYgKG5hbWUgIT0gTlVMTCkgew0KIAkJKihwYXRoKyspID0g
J1xcJzsNCiBuYW1lX2FuZF9vdXQ6DQotCQltZW1jcHkocGF0aCwgbmFtZS0+
bmFtZSwgbmFtZS0+bGVuKTsNCi0JCXBhdGggKz0gbmFtZS0+bGVuOw0KKyNp
ZmRlZiBDT05GSUdfU01CX05MUw0KKwkJLyogY29udmVydCBuYW1lIHRvIHRo
ZSBmb3JtYXQgdGhlIHNlcnZlciBleHBlY3RzICovDQorCQlsZW4gPSBjb252
ZXJ0X2NvZGVwYWdlKHBhdGgsIG5hbWUtPm5hbWUsIA0KKwkJCQkgICAgICAg
bmFtZS0+bGVuLCBzZXJ2ZXIsIA0KKwkJCQkgICAgICAgQ09OVkVSVF9SRU1P
VEUpOw0KKyNlbHNlDQorCQlsZW4gPSBlbnRyeS0+ZF9uYW1lLmxlbjsNCisJ
CW1lbWNweShwYXRoLCBlbnRyeS0+ZF9uYW1lLm5hbWUsIGxlbik7DQorI2Vu
ZGlmDQorCQlwYXRoICs9IGxlbjsNCiAJfQ0KIG91dDoNCiAJKihwYXRoKysp
ID0gJ1wwJzsNCiAJcmV0dXJuIChwYXRoLWJ1Zik7DQogfQ0KIA0KKy8qIFRo
aXMgYXNzdW1lcyB0aGUgc2VydmVyIGlzIGxvY2tlZCB3aGVuIGNhbGxlZC4g
Ki8NCiBzdGF0aWMgY2hhciAqc21iX2VuY29kZV9wYXRoKHN0cnVjdCBzbWJf
c2JfaW5mbyAqc2VydmVyLCBjaGFyICpidWYsDQogCQkJICAgICBzdHJ1Y3Qg
ZGVudHJ5ICpkaXIsIHN0cnVjdCBxc3RyICpuYW1lKQ0KIHsNCiAJY2hhciAq
c3RhcnQgPSBidWY7DQogDQotCWJ1ZiArPSBzbWJfYnVpbGRfcGF0aChkaXIs
IG5hbWUsIGJ1Zik7DQorCWJ1ZiArPSBzbWJfYnVpbGRfcGF0aChkaXIsIG5h
bWUsIGJ1Ziwgc2VydmVyKTsNCiANCiAJaWYgKHNlcnZlci0+b3B0LnByb3Rv
Y29sIDw9IFNNQl9QUk9UT0NPTF9DT1JFUExVUykNCiAJCXN0cl91cHBlcihz
dGFydCwgYnVmIC0gc3RhcnQpOw0KQEAgLTEyNjYsNyArMTQ0OSw3IEBADQog
ICovDQogc3RhdGljIF9fdTggKg0KIHNtYl9kZWNvZGVfZGlyZW50KHN0cnVj
dCBzbWJfc2JfaW5mbyAqc2VydmVyLCBfX3U4ICpwLCANCi0JCQlzdHJ1Y3Qg
Y2FjaGVfZGlyZW50ICplbnRyeSkNCisJCQlzdHJ1Y3QgY2FjaGVfZGlyZW50
ICplbnRyeSwgY2hhciAqbmFtZWJ1ZikNCiB7DQogCWludCBsZW47DQogDQpA
QCAtMTI4Nyw2ICsxNDcwLDE2IEBADQogCSAqLw0KIAl3aGlsZSAobGVuID4g
MiAmJiBlbnRyeS0+bmFtZVtsZW4tMV0gPT0gJyAnKQ0KIAkJbGVuLS07DQor
DQorI2lmZGVmIENPTkZJR19TTUJfTkxTDQorCS8qDQorCSAqIGNvbnZlcnQg
bmFtZSBmb3IgbG9jYWwgdXNlLCB1c2VkIGJ5OiBDT1JFLCBDT1JFUExVUywg
TEFOTUFOMQ0KKwkgKiAoYXQgbGVhc3QgdGhhdCdzIHdoYXQgc2FtYmEgc2hv
d3MpDQorCSAqLw0KKwlsZW4gPSBjb252ZXJ0X2NvZGVwYWdlKG5hbWVidWYs
ICZlbnRyeS0+bmFtZVswXSwgbGVuLCANCisJCQkgICAgICAgc2VydmVyLCBD
T05WRVJUX0xPQ0FMKTsNCisJZW50cnktPm5hbWUgPSBuYW1lYnVmOw0KKyNl
bmRpZg0KIAllbnRyeS0+bGVuID0gbGVuOw0KIA0KIAlzd2l0Y2ggKHNlcnZl
ci0+b3B0LmNhc2VfaGFuZGxpbmcpDQpAQCAtMTM5Miw4ICsxNTg1LDExIEBA
DQogCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykNCiAJCXsNCiAJCQlz
dHJ1Y3QgY2FjaGVfZGlyZW50IHRoaXNfZW50LCAqZW50cnkgPSAmdGhpc19l
bnQ7DQorCQkJLyogdXRmOCBtYWtlcyBzdHJpbmdzIGxvbmdlciwgSSBjYW4n
dCBkbw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLXBsYWNlIGNv
bnZlcnNpb24uICovDQorCQkJY2hhciBuYW1lYnVmW1NNQl9NQVhOQU1FTEVO
XTsNCiANCi0JCQlwID0gc21iX2RlY29kZV9kaXJlbnQoc2VydmVyLCBwLCBl
bnRyeSk7DQorCQkJcCA9IHNtYl9kZWNvZGVfZGlyZW50KHNlcnZlciwgcCwg
ZW50cnksIG5hbWVidWYpOw0KIAkJCWlmIChlbnRyaWVzX3NlZW4gPT0gMiAm
JiBlbnRyeS0+bmFtZVswXSA9PSAnLicpDQogCQkJew0KIAkJCQlpZiAoZW50
cnktPmxlbiA9PSAxKQ0KQEAgLTE0MzgsNyArMTYzNCw4IEBADQogICovDQog
c3RhdGljIGNoYXIgKg0KIHNtYl9kZWNvZGVfbG9uZ19kaXJlbnQoc3RydWN0
IHNtYl9zYl9pbmZvICpzZXJ2ZXIsIGNoYXIgKnAsDQotCQkJc3RydWN0IGNh
Y2hlX2RpcmVudCAqZW50cnksIGludCBsZXZlbCkNCisJCSAgICAgICBzdHJ1
Y3QgY2FjaGVfZGlyZW50ICplbnRyeSwgaW50IGxldmVsLA0KKwkJICAgICAg
IGNoYXIgKm5hbWVidWYpDQogew0KIAljaGFyICpyZXN1bHQ7DQogCXVuc2ln
bmVkIGludCBsZW4gPSAwOw0KQEAgLTE0NTIsMTMgKzE2NDksMjEgQEANCiAJ
ew0KIAljYXNlIDE6DQogCQlsZW4gPSAqKCh1bnNpZ25lZCBjaGFyICopIHAg
KyAyNik7DQotCQllbnRyeS0+bGVuID0gbGVuOw0KIAkJZW50cnktPm5hbWUg
PSBwICsgMjc7DQogCQlyZXN1bHQgPSBwICsgMjggKyBsZW47DQorDQorI2lm
ZGVmIENPTkZJR19TTUJfTkxTDQorCQkvKiBjb252ZXJ0IG5hbWUgZm9yIGxv
Y2FsIHVzZSwgdXNlZCBieSBMQU5NQU4yICovDQorCQlsZW4gPSBjb252ZXJ0
X2NvZGVwYWdlKG5hbWVidWYsICZlbnRyeS0+bmFtZVswXSwgbGVuLCANCisJ
CQkJICAgICAgIHNlcnZlciwgQ09OVkVSVF9MT0NBTCk7DQorCQllbnRyeS0+
bmFtZSA9IG5hbWVidWY7DQorI2VuZGlmDQorCQllbnRyeS0+bGVuID0gbGVu
Ow0KIAkJYnJlYWs7DQogDQogCWNhc2UgMjU5OiAvKiBTTUJfRklORF9GSUxF
X05BTUVTX0lORk8gPSAweDEwMyAqLw0KIAkJcmVzdWx0ID0gcCArIERWQUwo
cCwgMCk7DQorDQogCQkvKiBEVkFMKHAsIDQpIHNob3VsZCBiZSByZXN1bWUg
a2V5PyBTZWVtcyB0byBiZSAwIC4uICovDQogCQlsZW4gPSBEVkFMKHAsIDgp
Ow0KIAkJaWYgKGxlbiA+IDI1NSkNCkBAIC0xNDcxLDcgKzE2NzYsMTUgQEAN
CiAJCSAqLw0KIAkJaWYgKGxlbiAmJiBlbnRyeS0+bmFtZVtsZW4tMV0gPT0g
J1wwJykNCiAJCQlsZW4tLTsNCisNCisjaWZkZWYgQ09ORklHX1NNQl9OTFMN
CisJCS8qIGNvbnZlcnQgbmFtZSBmb3IgbG9jYWwgdXNlLCB1c2VkIGJ5IE5U
MSAqLw0KKwkJbGVuID0gY29udmVydF9jb2RlcGFnZShuYW1lYnVmLCAmZW50
cnktPm5hbWVbMF0sIGxlbiwgDQorCQkJCSAgICAgICBzZXJ2ZXIsIENPTlZF
UlRfTE9DQUwpOw0KKwkJZW50cnktPm5hbWUgPSBuYW1lYnVmOw0KKyNlbmRp
Zg0KIAkJZW50cnktPmxlbiA9IGxlbjsNCisNCiAjaWZkZWYgU01CRlNfREVC
VUdfVkVSQk9TRQ0KIHByaW50aygic21iX2RlY29kZV9sb25nX2RpcmVudDog
aW5mbyAyNTkgYXQgJXAsIGxlbj0lZCwgbmFtZT0lc1xuIiwNCiBwLCBsZW4s
IGVudHJ5LT5uYW1lKTsNCkBAIC0xNjkzLDkgKzE5MDYsMTIgQEANCiAJCWZv
ciAoaSA9IDA7IGkgPCBmZl9zZWFyY2hjb3VudDsgaSsrKQ0KIAkJew0KIAkJ
CXN0cnVjdCBjYWNoZV9kaXJlbnQgdGhpc19lbnQsICplbnRyeSA9ICZ0aGlz
X2VudDsNCisJCQkvKiB1dGY4IG1ha2VzIHN0cmluZ3MgbG9uZ2VyLCBJIGNh
bid0IGRvDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4tcGxhY2Ug
Y29udmVyc2lvbi4gKi8NCisJCQljaGFyIG5hbWVidWZbU01CX01BWE5BTUVM
RU5dOw0KIA0KIAkJCXAgPSBzbWJfZGVjb2RlX2xvbmdfZGlyZW50KHNlcnZl
ciwgcCwgZW50cnksDQotCQkJCQkJCWluZm9fbGV2ZWwpOw0KKwkJCQkJCSAg
IGluZm9fbGV2ZWwsIG5hbWVidWYpOw0KIA0KIAkJCXByX2RlYnVnKCJzbWJf
cmVhZGRpcl9sb25nOiBnb3QgJXNcbiIsIGVudHJ5LT5uYW1lKTsNCiANCmRp
ZmYgLXVyIGxpbnV4LTIuMi45L2luY2x1ZGUvbGludXgvbmxzLmggbGludXgv
aW5jbHVkZS9saW51eC9ubHMuaA0KLS0tIGxpbnV4LTIuMi45L2luY2x1ZGUv
bGludXgvbmxzLmgJVGh1IEphbiAgNyAxODoyNTowMiAxOTk5DQorKysgbGlu
dXgvaW5jbHVkZS9saW51eC9ubHMuaAlNb24gTWF5IDE3IDA5OjExOjQ3IDE5
OTkNCkBAIC0xLDMgKzEsNyBAQA0KKw0KKyNpZm5kZWYgX05MU19IXw0KKyNk
ZWZpbmUgX05MU19IXw0KKw0KIHN0cnVjdCBubHNfdW5pY29kZSB7DQogCXVu
c2lnbmVkIGNoYXIgdW5pMTsNCiAJdW5zaWduZWQgY2hhciB1bmkyOw0KQEAg
LTU0LDMgKzU4LDUgQEANCiBleHRlcm4gaW50IGluaXRfbmxzX2NwODY5KHZv
aWQpOw0KIGV4dGVybiBpbnQgaW5pdF9ubHNfY3A4NzQodm9pZCk7DQogZXh0
ZXJuIGludCBpbml0X25sc19rb2k4X3Iodm9pZCk7DQorDQorI2VuZGlmIC8q
IF9OTFNfSF8gKi8NCmRpZmYgLXVyIGxpbnV4LTIuMi45L2luY2x1ZGUvbGlu
dXgvc21iX2ZzX3NiLmggbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfc2Iu
aA0KLS0tIGxpbnV4LTIuMi45L2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgJ
TW9uIERlYyAyOCAwNzoxODoyOCAxOTk4DQorKysgbGludXgvaW5jbHVkZS9s
aW51eC9zbWJfZnNfc2IuaAlNb24gTWF5IDE3IDA5OjExOjQ3IDE5OTkNCkBA
IC0xMyw2ICsxMyw4IEBADQogDQogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+
DQogI2luY2x1ZGUgPGxpbnV4L3NtYi5oPg0KKyNpbmNsdWRlIDxsaW51eC9u
bHMuaD4NCisNCiANCiAvKiBHZXQgdGhlIHNlcnZlciBmb3IgdGhlIHNwZWNp
ZmllZCBkZW50cnkgKi8NCiAjZGVmaW5lIHNlcnZlcl9mcm9tX2RlbnRyeShk
ZW50cnkpICZkZW50cnktPmRfc2ItPnUuc21iZnNfc2INCkBAIC00Myw2ICs0
NSwxMiBAQA0KIA0KICAgICAgICAgLyogV2UgdXNlIG91ciBvbiBkYXRhX3Jl
YWR5IGNhbGxiYWNrLCBidXQgbmVlZCB0aGUgb3JpZ2luYWwgb25lICovDQog
ICAgICAgICB2b2lkICpkYXRhX3JlYWR5Ow0KKw0KKyNpZmRlZiBDT05GSUdf
U01CX05MUw0KKwkvKiBubHMgcG9pbnRlcnMgZm9yIGNvZGVwYWdlIGNvbnZl
cnNpb25zICovDQorCXN0cnVjdCBubHNfdGFibGUgKnJlbW90ZV9ubHM7DQor
CXN0cnVjdCBubHNfdGFibGUgKmxvY2FsX25sczsNCisjZW5kaWYNCiB9Ow0K
IA0KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovDQpkaWZmIC11ciBsaW51eC0y
LjIuOS9pbmNsdWRlL2xpbnV4L3NtYl9tb3VudC5oIGxpbnV4L2luY2x1ZGUv
bGludXgvc21iX21vdW50LmgNCi0tLSBsaW51eC0yLjIuOS9pbmNsdWRlL2xp
bnV4L3NtYl9tb3VudC5oCVRodSBBdWcgMjcgMTk6NTg6MjMgMTk5OA0KKysr
IGxpbnV4L2luY2x1ZGUvbGludXgvc21iX21vdW50LmgJTW9uIE1heSAxNyAw
OToxMTo0NyAxOTk5DQpAQCAtMTEsOCArMTEsMzcgQEANCiANCiAjaW5jbHVk
ZSA8bGludXgvdHlwZXMuaD4NCiANCisvKg0KKyAqIElmIHlvdSBlbmFibGUg
dGhpcyBhbmQgcGF0Y2ggc21ibW91bnQgeW91IGNhbiBkbyBwZXItbW91bnQg
dGhpbmdzDQorICogbGlrZToNCisgKiBzbWJtb3VudCAnLy9mb28vYmFyJyAt
UmNwODUwIC1MaXNvODg1OS0xIC1jICdtb3VudCAvbW50Jw0KKyAqLw0KKy8q
I2RlZmluZSBTTUJNT1VOVF9QQVRDSEVEICovDQorDQorI2lmZGVmIFNNQk1P
VU5UX1BBVENIRUQNCisvKiBTb21lIG51bWJlciB0aGF0IHdvbid0IGNsYXNo
IHdpdGggb2ZmaWNpYWwgc21ibW91bnQvc21iZnMgbW91bnQgbnVtYmVycyAq
Lw0KKyNkZWZpbmUgU01CX01PVU5UX1ZFUlNJT04gMHgxMDA3DQorI2RlZmlu
ZSBTTUJfTkxTX01BWE5BTUVMRU4gMjANCisNCisjZWxzZQ0KKw0KICNkZWZp
bmUgU01CX01PVU5UX1ZFUlNJT04gNg0KIA0KKy8qDQorICogRm9yIHN0YW5k
YXJkIHNtYm1vdW50IHRoaXMgaXMgd2hlcmUgdG8gZGVmaW5lIGNvZGVwYWdl
cy4gU2VlIGZzL25scw0KKyAqIGZvciBhdmFpbGFibGUgY29kZXBhZ2UgdHJh
bnNsYXRpb25zLg0KKyAqDQorICogdXRmOCBpcyBzcGVjaWFsLiBpZiBubyBs
b2NhbCBwYWdlIGlzIGRlZmluZWQgYW5kIGEgcmVtb3RlIGlzLCB0aGVuDQor
ICogdGhlIGxvY2FsIGVuY29kaW5nIGlzIGFzc3VtZWQgdG8gYmUgdXRmOC4g
Q29tbWVudCBvdXQgU01CX0xPQ0FMX0NQDQorICogdG8gZ2V0IHV0ZjguDQor
ICoNCisgKiBUaGlzIHdvdWxkIGxvb2sgYmV0dGVyIGFzIGEgL3Byb2MgaW50
ZXJmYWNlIG9yIHNvbWV0aGluZy4NCisgKi8NCisjZGVmaW5lIFNNQl9SRU1P
VEVfQ1AJImNwODUwIg0KKyNkZWZpbmUgU01CX0xPQ0FMX0NQCSJpc284ODU5
LTEiDQorDQorI2VuZGlmDQorDQogc3RydWN0IHNtYl9tb3VudF9kYXRhIHsN
CiAJaW50IHZlcnNpb247DQogCV9fa2VybmVsX3VpZF90IG1vdW50ZWRfdWlk
OyAvKiBXaG8gbWF5IHVtb3VudCgpIHRoaXMgZmlsZXN5c3RlbT8gKi8NCkBA
IC0yMCw2ICs0OSwxMSBAQA0KIAlfX2tlcm5lbF9naWRfdCBnaWQ7DQogCV9f
a2VybmVsX21vZGVfdCBmaWxlX21vZGU7DQogCV9fa2VybmVsX21vZGVfdCBk
aXJfbW9kZTsNCisNCisjaWZkZWYgU01CTU9VTlRfUEFUQ0hFRA0KKwljaGFy
IHJlbW90ZV9ubHNbU01CX05MU19NQVhOQU1FTEVOXTsNCisJY2hhciBsb2Nh
bF9ubHNbU01CX05MU19NQVhOQU1FTEVOXTsNCisjZW5kaWYNCiB9Ow0KIA0K
ICNlbmRpZg0K
---1463780587-1963227503-926928077=:4696
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="samba-2.0.3-nls.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9905171001171.4696@cola.svenskatest.se>
Content-Description: samba-2.0.3-nls.patch
Content-Disposition: attachment; filename="samba-2.0.3-nls.patch"

ZGlmZiAtdXIgc2FtYmEtMi4wLjMtb3JnL3NvdXJjZS9jbGllbnQvc21ibW50
LmMgc2FtYmEtMi4wLjMvc291cmNlL2NsaWVudC9zbWJtbnQuYw0KLS0tIHNh
bWJhLTIuMC4zLW9yZy9zb3VyY2UvY2xpZW50L3NtYm1udC5jCU1vbiBTZXAg
MjggMjE6MTg6MjEgMTk5OA0KKysrIHNhbWJhLTIuMC4zL3NvdXJjZS9jbGll
bnQvc21ibW50LmMJTW9uIE1heSAxMCAyMjoxMTo1MyAxOTk5DQpAQCAtNDQs
NiArNDQsOCBAQA0KICAgICAgICAgICAgICAgICItZCBtb2RlICAgICAgICBw
ZXJtaXNzaW9uIHRoZSBkaXJzIGdldCAob2N0YWwgbm90YXRpb24pXG4iDQog
CSAgICAgICAiLVAgcGlkICAgICAgICAgY29ubmVjdGlvbiBoYW5kbGVyJ3Mg
cGlkXG5cbiINCiAJICAgICAgICItcyBzaGFyZSAgICAgICBzaGFyZSBuYW1l
IG9uIHNlcnZlclxuXG4iDQorCSAgICAgICAiLVIgbmxzICAgICAgICAgcmVt
b3RlIGNvZGVwYWdlXG4iDQorCSAgICAgICAiLUwgbmxzICAgICAgICAgbG9j
YWwgY29kZXBhZ2UgKGJsYW5rIGZvciB1dGY4KVxuXG4iDQogICAgICAgICAg
ICAgICAgIi1oICAgICAgICAgICAgIHByaW50IHRoaXMgaGVscCB0ZXh0XG4i
KTsNCiB9DQogDQpAQCAtNTQsNyArNTYsNyBAQA0KICAgICAgICAgc3RydWN0
IHBhc3N3ZCAqcHdkOw0KICAgICAgICAgc3RydWN0IGdyb3VwICAqZ3JwOw0K
IA0KLSAgICAgICAgd2hpbGUgKChvcHQgPSBnZXRvcHQgKGFyZ2MsIGFyZ3Ys
ICJ1Omc6ZjpkOnM6IikpICE9IEVPRikNCisgICAgICAgIHdoaWxlICgob3B0
ID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAidTpnOmY6ZDpzOlI6TDoiKSkgIT0g
RU9GKQ0KIAl7DQogICAgICAgICAgICAgICAgIHN3aXRjaCAob3B0KQ0KIAkJ
ew0KQEAgLTEwMSw2ICsxMDMsMTQgQEANCiAgICAgICAgICAgICAgICAgY2Fz
ZSAncyc6DQogICAgICAgICAgICAgICAgICAgICAgICAgKnNoYXJlID0gb3B0
YXJnOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAg
ICAgICAgICAgICBjYXNlICdSJzoNCisJCQlzdHJuY3B5KGRhdGEtPnJlbW90
ZV9ubHMsIG9wdGFyZywgU01CX05MU19NQVhOQU1FTEVOKTsNCisJCQlkYXRh
LT5yZW1vdGVfbmxzW1NNQl9OTFNfTUFYTkFNRUxFTi0xXSA9IDA7DQorCQkJ
YnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgJ0wnOg0KKwkJCXN0cm5j
cHkoZGF0YS0+bG9jYWxfbmxzLCBvcHRhcmcsIFNNQl9OTFNfTUFYTkFNRUxF
Tik7DQorCQkJZGF0YS0+bG9jYWxfbmxzW1NNQl9OTFNfTUFYTkFNRUxFTi0x
XSA9IDA7DQorCQkJYnJlYWs7DQogICAgICAgICAgICAgICAgIGRlZmF1bHQ6
DQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAg
ICAgICAgICAgICB9DQpkaWZmIC11ciBzYW1iYS0yLjAuMy1vcmcvc291cmNl
L2NsaWVudC9zbWJtb3VudC5jIHNhbWJhLTIuMC4zL3NvdXJjZS9jbGllbnQv
c21ibW91bnQuYw0KLS0tIHNhbWJhLTIuMC4zLW9yZy9zb3VyY2UvY2xpZW50
L3NtYm1vdW50LmMJU2F0IEZlYiAyNyAyMzowODo1OSAxOTk5DQorKysgc2Ft
YmEtMi4wLjMvc291cmNlL2NsaWVudC9zbWJtb3VudC5jCU1vbiBNYXkgMTAg
MjI6MTA6MzggMTk5OQ0KQEAgLTMzLDYgKzMzLDcgQEANCiANCiAjaW5jbHVk
ZSA8YXNtL3R5cGVzLmg+DQogI2luY2x1ZGUgPGxpbnV4L3NtYl9mcy5oPg0K
KyNpbmNsdWRlIDxsaW51eC9zbWJfbW91bnQuaD4NCiBzdGF0aWMgc3RydWN0
IHNtYl9jb25uX29wdCBjb25uX29wdGlvbnM7DQogDQogI2lmbmRlZiBSRUdJ
U1RFUg0KQEAgLTEzOCw2ICsxMzksMTEgQEANCiANCiBleHRlcm4gaW50IENs
aWVudDsNCiANCisvKiBzbWJmcyBubHMgc3VwcG9ydCAqLw0KK3N0YXRpYyBj
aGFyIHJlbW90ZV9ubHNbU01CX05MU19NQVhOQU1FTEVOXTsNCitzdGF0aWMg
Y2hhciBsb2NhbF9ubHNbU01CX05MU19NQVhOQU1FTEVOXTsNCisNCisNCiAj
ZGVmaW5lIFVTRU5NQg0KIA0KICNkZWZpbmUgQ05WX0xBTkcocykgZG9zX3Rv
X3VuaXgocyxGYWxzZSkNCkBAIC00ODksNyArNDk1LDE4IEBADQogCXN0cmlu
Z19yZXBsYWNlKHNoYXJlX25hbWUsICdcXCcsICcvJyk7DQogCXN0cmluZ19y
ZXBsYWNlKHNoYXJlX25hbWUsICcgJywgJ18nKTsNCiANCi0Jc2xwcmludGYo
bW91bnRfY29tbWFuZCwgc2l6ZW9mKG1vdW50X2NvbW1hbmQpLTEsInNtYm1u
dCAlcyAtcyAlcyIsIG1vdW50X3BvaW50LCBzaGFyZV9uYW1lKTsNCisJc2xw
cmludGYobW91bnRfY29tbWFuZCwgc2l6ZW9mKG1vdW50X2NvbW1hbmQpLTEs
ICJzbWJtbnQgJXMgLXMgJXMiLCANCisJCSBtb3VudF9wb2ludCwgc2hhcmVf
bmFtZSk7DQorDQorCS8qIGFwcGVuZCBubHMtb3B0aW9ucyB0byBzbWJtbnQu
IElzIHRoaXMgdGhlIHJpZ2h0IHdheT8gKi8NCisJaWYocmVtb3RlX25sc1sw
XSAhPSAwKSB7DQorCQlwc3RyY2F0KG1vdW50X2NvbW1hbmQsICIgLVIgIik7
DQorCQlwc3RyY2F0KG1vdW50X2NvbW1hbmQsIHJlbW90ZV9ubHMpOw0KKwl9
DQorCWlmKGxvY2FsX25sc1swXSAhPSAwKSB7DQorCQlwc3RyY2F0KG1vdW50
X2NvbW1hbmQsICIgLUwgIik7DQorCQlwc3RyY2F0KG1vdW50X2NvbW1hbmQs
IGxvY2FsX25scyk7DQorCX0NCiANCiAJd2hpbGUobmV4dF90b2tlbihOVUxM
LCBidWYsIE5VTEwsIHNpemVvZihidWYpKSkNCiAJew0KQEAgLTc1MCw2ICs3
NjcsOCBAQA0KICAgREVCVUcoMCwoIlx0LWMgY29tbWFuZCBzdHJpbmcgICAg
IGV4ZWN1dGUgc2VtaWNvbG9uIHNlcGFyYXRlZCBjb21tYW5kc1xuIikpOw0K
ICAgREVCVUcoMCwoIlx0LXQgdGVybWluYWwgY29kZSAgICAgIHRlcm1pbmFs
IGkvbyBjb2RlIHtzamlzfGV1Y3xqaXM3fGppczh8anVuZXR8aGV4fVxuIikp
Ow0KICAgREVCVUcoMCwoIlx0LUQgZGlyZWN0b3J5ICAgICAgICAgIHN0YXJ0
IGZyb20gZGlyZWN0b3J5XG4iKSk7DQorICBERUJVRygwLCgiXHQtUiBubHMg
ICAgICAgICAgICAgICAgcmVtb3RlIGNvZGVwYWdlXG4iKSk7DQorICBERUJV
RygwLCgiXHQtTCBubHMgICAgICAgICAgICAgICAgbG9jYWwgY29kZXBhZ2Ug
KGJsYW5rIGZvciB1dGY4KVxuIikpOw0KICAgREVCVUcoMCwoIlxuIikpOw0K
IH0NCiANCkBAIC04NTQsNyArODczLDcgQEANCiAgICAgfQ0KIA0KICAgd2hp
bGUgKChvcHQgPSANCi0JICBnZXRvcHQoYXJnYywgYXJndiwiczpCOk86TTpT
Omk6Tm46ZDpQcDpsOmhJOkVCOlU6TDp0Om06VzpUOkQ6YzoiKSkgIT0gRU9G
KQ0KKwkgIGdldG9wdChhcmdjLCBhcmd2LCJzOkI6TzpNOlM6aTpObjpkOlBw
Omw6aEk6RUI6VTp0Om06VzpUOkQ6YzpMOlI6IikpICE9IEVPRikNCiAgICAg
c3dpdGNoIChvcHQpDQogICAgICAgew0KICAgICAgIGNhc2UgJ20nOg0KQEAg
LTkzNSw2ICs5NTQsMTQgQEANCiAJYnJlYWs7DQogICAgICAgY2FzZSAndCc6
DQogICAgICAgICBwc3RyY3B5KHRlcm1fY29kZSwgb3B0YXJnKTsNCisJYnJl
YWs7DQorICAgICAgY2FzZSAnUic6DQorCXN0cm5jcHkocmVtb3RlX25scywg
b3B0YXJnLCBTTUJfTkxTX01BWE5BTUVMRU4pOw0KKwlyZW1vdGVfbmxzW1NN
Ql9OTFNfTUFYTkFNRUxFTi0xXSA9IDA7DQorCWJyZWFrOw0KKyAgICAgIGNh
c2UgJ0wnOgkvKiBUaGlzIHdhcyBsaXN0ZWQgaW4gdGhlIGdldG9wdCgpIGJ1
dCB1bnVzZWQsIG9yPyAqLw0KKwlzdHJuY3B5KGxvY2FsX25scywgb3B0YXJn
LCBTTUJfTkxTX01BWE5BTUVMRU4pOw0KKwlsb2NhbF9ubHNbU01CX05MU19N
QVhOQU1FTEVOLTFdID0gMDsNCiAJYnJlYWs7DQogICAgICAgZGVmYXVsdDoN
CiAJdXNhZ2UocG5hbWUpOw0K
---1463780587-1963227503-926928077=:4696--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/