[PHP-dev 694] [PATCH] mb_send_mail() の拡張

Moriyoshi Koizumi php-dev@php.gr.jp
Sun, 16 Feb 2003 19:04:26 +0900


--------------Boundary_7t.(poF47vM40bv
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

小泉です。

かねてより要望のあった mb_send_mail() の拡張を行ってみました。
このパッチにより、additional_headers パラメータに
Content-Type や Content-Transfer-Encoding を書いておくと、
mbstring.language で決定されるデフォルトの設定をオーバーライドできるように
なります。

関連バグレポート

http://bugs.php.net/21985
http://bugs.php.net/22064

[PHP-users 13252] Re: mb_send_mailの文字化けについて
http://ns1.php.gr.jp/pipermail/php-users/2003-February/013784.html

ちょっと行儀の悪いのは承知ですが、

Content-Type: text/plain; charset=Shift_JIS
Content-Transfer-Encoding: 8bit

と書いておけば、絵文字メールも送れるようになるはずです。

恐らく下位互換性を壊すことはないでしょうが、念のためコミットする前に
皆さんにレビューしていただければと思います。

それでは、フィードバックお待ちしています。



--------------Boundary_7t.(poF47vM40bv
Content-Type: text/plain; name="mb_send_mail-patch.diff.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mb_send_mail-patch.diff.txt"

SW5kZXg6IGV4dC9tYnN0cmluZy9tYnN0cmluZy5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9yZXBvc2l0b3J5L3BocDQvZXh0L21ic3RyaW5nL21ic3RyaW5nLmMsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTYxCmRpZmYgLXUgLXIxLjE2MSBtYnN0cmluZy5jCi0tLSBleHQvbWJz
dHJpbmcvbWJzdHJpbmcuYwkxMSBGZWIgMjAwMyAwMzo1NTowOCAtMDAwMAkxLjE2MQorKysg
ZXh0L21ic3RyaW5nL21ic3RyaW5nLmMJMTYgRmViIDIwMDMgMDk6NTM6MTUgLTAwMDAKQEAg
LTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJtYnN0cmluZy5oIgogI2luY2x1ZGUgImV4dC9z
dGFuZGFyZC9waHBfc3RyaW5nLmgiCiAjaW5jbHVkZSAiZXh0L3N0YW5kYXJkL3BocF9tYWls
LmgiCisjaW5jbHVkZSAiZXh0L3N0YW5kYXJkL3BocF9zbWFydF9zdHIuaCIKICNpbmNsdWRl
ICJleHQvc3RhbmRhcmQvdXJsLmgiCiAjaW5jbHVkZSAibWFpbi9waHBfb3V0cHV0LmgiCiAj
aW5jbHVkZSAiZXh0L3N0YW5kYXJkL2luZm8uaCIKQEAgLTI2NDgsNiArMjY0OSwxOTQgQEAK
ICAqICBTZW5kcyBhbiBlbWFpbCBtZXNzYWdlIHdpdGggTUlNRSBzY2hlbWUKICAqLwogI2lm
IEhBVkVfU0VORE1BSUwKKworI2RlZmluZSBBUFBFTkRfT05FX0NIQVIoY2gpIGRvIHsgXAor
CWlmICh0b2tlbi5hID4gMCkgeyBcCisJCXNtYXJ0X3N0cl9hcHBlbmRjKCZ0b2tlbiwgY2gp
OyBcCisJfSBlbHNlIHtcCisJCXRva2VuLmxlbisrOyBcCisJfSBcCit9IHdoaWxlICgwKQor
CisjZGVmaW5lIFNFUEFSQVRFX1NNQVJUX1NUUihzdHIpIGRvIHtcCisJaWYgKChzdHIpLT5h
ID09IDApIHsgXAorCQljaGFyICp0bXBfcHRyOyBcCisJCShzdHIpLT5hID0gMTsgXAorCQl3
aGlsZSAoKHN0ciktPmEgPCAoc3RyKS0+bGVuKSB7IFwKKwkJCShzdHIpLT5hIDw8PSAxOyBc
CisJCX0gXAorCQl0bXBfcHRyID0gZW1hbGxvYygoc3RyKS0+YSArIDEpOyBcCisJCW1lbWNw
eSh0bXBfcHRyLCAoc3RyKS0+YywgKHN0ciktPmxlbik7IFwKKwkJKHN0ciktPmMgPSB0bXBf
cHRyOyBcCisJfSBcCit9IHdoaWxlICgwKQorCitzdGF0aWMgdm9pZCBteV9zbWFydF9zdHJf
ZHRvcihzbWFydF9zdHIgKnMpCit7CisJaWYgKHMtPmEgPiAwKSB7CisJCXNtYXJ0X3N0cl9m
cmVlKHMpOworCX0KK30KKworc3RhdGljIGludCBfcGhwX21ic3RyX3BhcnNlX21haWxfaGVh
ZGVycyhIYXNoVGFibGUgKmh0LCBjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzdHJfbGVuKQor
eworCWNvbnN0IGNoYXIgKnBzOworCXNpemVfdCBpY250OworCWludCBzdGF0ZSA9IDA7CisJ
aW50IGNybGZfc3RhdGUgPSAtMTsKKworCXNtYXJ0X3N0ciB0b2tlbiA9IHsgMCwgMCwgMCB9
OworCXNtYXJ0X3N0ciBmbGRfbmFtZSA9IHsgMCwgMCwgMCB9LCBmbGRfdmFsID0geyAwLCAw
LCAwIH07CisKKwlwcyA9IHN0cjsKKwlpY250ID0gc3RyX2xlbjsKKworCXdoaWxlIChpY250
ID4gMCkgeworCQlzd2l0Y2ggKCpwcykgeworCQkJY2FzZSAnOic6CisJCQkJaWYgKGNybGZf
c3RhdGUgPT0gMSkgeworCQkJCQlBUFBFTkRfT05FX0NIQVIoJ1xyJyk7CisJCQkJfQorCisJ
CQkJaWYgKHN0YXRlID09IDAgfHwgc3RhdGUgPT0gMSkgeworCQkJCQlmbGRfbmFtZSA9IHRv
a2VuOworCisJCQkJCXN0YXRlID0gMjsKKwkJCQl9IGVsc2UgeworCQkJCQlBUFBFTkRfT05F
X0NIQVIoKnBzKTsKKwkJCQl9CisKKwkJCQljcmxmX3N0YXRlID0gMDsKKwkJCQlicmVhazsK
KworCQkJY2FzZSAnXG4nOgorCQkJCWlmIChjcmxmX3N0YXRlID09IC0xKSB7CisJCQkJCWdv
dG8gb3V0OworCQkJCX0KKwkJCQljcmxmX3N0YXRlID0gLTE7CisJCQkJYnJlYWs7CisKKwkJ
CWNhc2UgJ1xyJzoKKwkJCQlpZiAoY3JsZl9zdGF0ZSA9PSAxKSB7CisJCQkJCUFQUEVORF9P
TkVfQ0hBUignXHInKTsKKwkJCQl9IGVsc2UgeworCQkJCQljcmxmX3N0YXRlID0gMTsKKwkJ
CQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgJyAnOiBjYXNlICdcdCc6CisJCQkJaWYgKGNy
bGZfc3RhdGUgPT0gLTEpIHsKKwkJCQkJaWYgKHN0YXRlID09IDMpIHsKKwkJCQkJCS8qIGNv
bnRpbnVpbmcgZnJvbSB0aGUgcHJldmlvdXMgbGluZSAqLworCQkJCQkJU0VQQVJBVEVfU01B
UlRfU1RSKCZ0b2tlbik7CisJCQkJCQlzdGF0ZSA9IDQ7CisJCQkJCX0gZWxzZSB7CisJCQkJ
CQkvKiBzaW1wbHkgc2tpcHBpbmcgdGhpcyBuZXcgbGluZSAqLworCQkJCQkJc3RhdGUgPSA1
OworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKGNybGZfc3RhdGUgPT0gMSkgewor
CQkJCQkJQVBQRU5EX09ORV9DSEFSKCdccicpOworCQkJCQl9CisJCQkJCWlmIChzdGF0ZSA9
PSAxIHx8IHN0YXRlID09IDMpIHsKKwkJCQkJCUFQUEVORF9PTkVfQ0hBUigqcHMpOworCQkJ
CQl9CisJCQkJfQorCQkJCWNybGZfc3RhdGUgPSAwOworCQkJCWJyZWFrOworCisJCQlkZWZh
dWx0OgorCQkJCXN3aXRjaCAoc3RhdGUpIHsKKwkJCQkJY2FzZSAwOgorCQkJCQkJdG9rZW4u
YyA9IChjaGFyICopcHM7CisJCQkJCQl0b2tlbi5sZW4gPSAwOworCQkJCQkJdG9rZW4uYSA9
IDA7CisJCQkJCQlzdGF0ZSA9IDE7CisJCQkJCQlicmVhazsKKwkJCQkJCisJCQkJCWNhc2Ug
MjoKKwkJCQkJCWlmIChjcmxmX3N0YXRlICE9IC0xKSB7CisJCQkJCQkJdG9rZW4uYyA9IChj
aGFyICopcHM7CisJCQkJCQkJdG9rZW4ubGVuID0gMDsKKwkJCQkJCQl0b2tlbi5hID0gMDsK
KworCQkJCQkJCXN0YXRlID0gMzsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCS8q
IGJyZWFrIGlzIG1pc3NpbmcgaW50ZW50aW9uYWxseSAqLworCisJCQkJCWNhc2UgMzoKKwkJ
CQkJCWlmIChjcmxmX3N0YXRlID09IC0xKSB7CisJCQkJCQkJZmxkX3ZhbCA9IHRva2VuOwor
CisJCQkJCQkJaWYgKGZsZF9uYW1lLmMgIT0gTlVMTCAmJiBmbGRfdmFsLmMgIT0gTlVMTCkg
eworCQkJCQkJCQljaGFyICpkdW1teTsKKworCQkJCQkJCQkvKiBGSVhNRTogc29tZSBsb2Nh
bGUgZnJlZSBpbXBsZW1lbnRhdGlvbiBpcworCQkJCQkJCQkgKiByZWFsbHkgcmVxdWlyZWQg
aGVyZSwsLCAqLworCQkJCQkJCQlTRVBBUkFURV9TTUFSVF9TVFIoJmZsZF9uYW1lKTsKKwkJ
CQkJCQkJcGhwX3N0cnRvdXBwZXIoZmxkX25hbWUuYywgZmxkX25hbWUubGVuKTsKKworCQkJ
CQkJCQl6ZW5kX2hhc2hfdXBkYXRlKGh0LCAoY2hhciAqKWZsZF9uYW1lLmMsIGZsZF9uYW1l
LmxlbiwgJmZsZF92YWwsIHNpemVvZihzbWFydF9zdHIpLCAodm9pZCAqKikmZHVtbXkpOwor
CisJCQkJCQkJCW15X3NtYXJ0X3N0cl9kdG9yKCZmbGRfbmFtZSk7CisJCQkJCQkJfQorCisJ
CQkJCQkJbWVtc2V0KCZmbGRfbmFtZSwgMCwgc2l6ZW9mKHNtYXJ0X3N0cikpOworCQkJCQkJ
CW1lbXNldCgmZmxkX3ZhbCwgMCwgc2l6ZW9mKHNtYXJ0X3N0cikpOworCisJCQkJCQkJdG9r
ZW4uYyA9IChjaGFyICopcHM7CisJCQkJCQkJdG9rZW4ubGVuID0gMDsKKwkJCQkJCQl0b2tl
bi5hID0gMDsKKworCQkJCQkJCXN0YXRlID0gMTsKKwkJCQkJCX0KKwkJCQkJCWJyZWFrOwor
CisJCQkJCWNhc2UgNDoKKwkJCQkJCUFQUEVORF9PTkVfQ0hBUignICcpOworCQkJCQkJc3Rh
dGUgPSAzOworCQkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYgKGNybGZfc3RhdGUgPT0g
MSkgeworCQkJCQlBUFBFTkRfT05FX0NIQVIoJ1xyJyk7CisJCQkJfQorCisJCQkJQVBQRU5E
X09ORV9DSEFSKCpwcyk7CisKKwkJCQljcmxmX3N0YXRlID0gMDsKKwkJCQlicmVhazsKKwkJ
fQorCQlwcysrLCBpY250LS07CisJfQorb3V0OgorCWlmIChzdGF0ZSA9PSAyKSB7CisJCXRv
a2VuLmMgPSAiIjsKKwkJdG9rZW4ubGVuID0gMDsKKwkJdG9rZW4uYSA9IDA7CisKKwkJc3Rh
dGUgPSAzOworCX0KKwlpZiAoc3RhdGUgPT0gMykgeworCQlmbGRfdmFsID0gdG9rZW47CisK
KwkJaWYgKGZsZF9uYW1lLmMgIT0gTlVMTCAmJiBmbGRfdmFsLmMgIT0gTlVMTCkgeworCQkJ
dm9pZCAqZHVtbXk7CisKKwkJCS8qIEZJWE1FOiBzb21lIGxvY2FsZSBmcmVlIGltcGxlbWVu
dGF0aW9uIGlzCisJCQkgKiByZWFsbHkgcmVxdWlyZWQgaGVyZSwsLCAqLworCQkJU0VQQVJB
VEVfU01BUlRfU1RSKCZmbGRfbmFtZSk7CisJCQlwaHBfc3RydG91cHBlcihmbGRfbmFtZS5j
LCBmbGRfbmFtZS5sZW4pOworCisJCQl6ZW5kX2hhc2hfdXBkYXRlKGh0LCAoY2hhciAqKWZs
ZF9uYW1lLmMsIGZsZF9uYW1lLmxlbiwgJmZsZF92YWwsIHNpemVvZihzbWFydF9zdHIpLCAo
dm9pZCAqKikmZHVtbXkpOworCisJCQlteV9zbWFydF9zdHJfZHRvcigmZmxkX25hbWUpOwor
CQl9CisJfQorCXJldHVybiBzdGF0ZTsKK30KKwogUEhQX0ZVTkNUSU9OKG1iX3NlbmRfbWFp
bCkKIHsKIAlpbnQgbjsKQEAgLTI2NjEsNiArMjg1MCwxMCBAQAogCWludCBzdWJqZWN0X2xl
bjsKIAljaGFyICpleHRyYV9jbWQ9TlVMTDsKIAlpbnQgZXh0cmFfY21kX2xlbjsKKwlzdHJ1
Y3QgeworCQlpbnQgY250X3R5cGU6MTsKKwkJaW50IGNudF90cmFuc19lbmM6MTsKKwl9IHN1
cHByZXNzZWRfaGRycyA9IHsgMCwgMCB9OwogCiAJY2hhciAqbWVzc2FnZV9idWY9TlVMTCwg
KnN1YmplY3RfYnVmPU5VTEwsICpwOwogCW1iZmxfc3RyaW5nIG9yaWdfc3RyLCBjb252X3N0
cjsKQEAgLTI2NzIsNyArMjg2NSwxMCBAQAogCW1iZmxfbWVtb3J5X2RldmljZSBkZXZpY2U7
CS8qIGF1dG9tYXRpYyBhbGxvY2F0ZWFibGUgYnVmZmVyIGZvciBhZGRpdGlvbmFsIGhlYWRl
ciAqLwogCWNvbnN0IG1iZmxfbGFuZ3VhZ2UgKmxhbmc7CiAJaW50IGVyciA9IDA7Ci0KKwlI
YXNoVGFibGUgaHRfaGVhZGVyczsKKwlzbWFydF9zdHIgKnM7CisJZXh0ZXJuIHZvaWQgbWJm
bF9tZW1vcnlfZGV2aWNlX3VucHV0KG1iZmxfbWVtb3J5X2RldmljZSAqZGV2aWNlIFRTUk1M
U19EQyk7CisJCiAJLyogaW5pdGlhbGl6ZSAqLwogCW1iZmxfbWVtb3J5X2RldmljZV9pbml0
KCZkZXZpY2UsIDAsIDAgVFNSTUxTX0NDKTsKIAltYmZsX3N0cmluZ19pbml0KCZvcmlnX3N0
cik7CkBAIC0yNjkzLDYgKzI4ODksNzEgQEAKIAkJcmV0dXJuOwogCX0KIAorCXplbmRfaGFz
aF9pbml0KCZodF9oZWFkZXJzLCAwLCBOVUxMLCAoZHRvcl9mdW5jX3QpIG15X3NtYXJ0X3N0
cl9kdG9yLCAwKTsKKworCWlmIChoZWFkZXJzICE9IE5VTEwpIHsKKwkJX3BocF9tYnN0cl9w
YXJzZV9tYWlsX2hlYWRlcnMoJmh0X2hlYWRlcnMsIGhlYWRlcnMsIGhlYWRlcnNfbGVuKTsK
Kwl9CisKKwlpZiAoemVuZF9oYXNoX2ZpbmQoJmh0X2hlYWRlcnMsICJDT05URU5ULVRZUEUi
LCBzaXplb2YoIkNPTlRFTlQtVFlQRSIpIC0gMSwgKHZvaWQgKiopJnMpID09IFNVQ0NFU1Mp
IHsKKwkJY2hhciAqdG1wOworCQljaGFyICpwYXJhbV9uYW1lOworCQljaGFyICpjaGFyc2V0
ID0gTlVMTDsKKworCQlTRVBBUkFURV9TTUFSVF9TVFIocyk7CisJCXNtYXJ0X3N0cl8wKHMp
OworCisJCXAgPSBzdHJjaHIocy0+YywgJzsnKTsKKworCQlpZiAocCAhPSBOVUxMKSB7CisJ
CQkvKiBza2lwcGluZyB0aGUgcGFkZGVkIHNwYWNlcyAqLworCQkJZG8geworCQkJCSsrcDsK
KwkJCX0gd2hpbGUgKCpwID09ICcgJyB8fCAqcCA9PSAnXHQnKTsKKworCQkJaWYgKCpwICE9
ICdcMCcpIHsKKwkJCQlpZiAoKHBhcmFtX25hbWUgPSBwaHBfc3RydG9rX3IocCwgIj0gIiwg
JnRtcCkpICE9IE5VTEwpIHsKKwkJCQkJaWYgKHN0cmNhc2VjbXAocGFyYW1fbmFtZSwgImNo
YXJzZXQiKSA9PSAwKSB7CisJCQkJCQllbnVtIG1iZmxfbm9fZW5jb2RpbmcgX3RyYW5fY3Mg
PSB0cmFuX2NzOworCQkJCQkJCisJCQkJCQljaGFyc2V0ID0gcGhwX3N0cnRva19yKE5VTEws
ICI9ICIsICZ0bXApOworCQkJCQkJaWYgKGNoYXJzZXQgIT0gTlVMTCkgeworCQkJCQkJCV90
cmFuX2NzID0gbWJmbF9uYW1lMm5vX2VuY29kaW5nKGNoYXJzZXQpOworCQkJCQkJfQorCisJ
CQkJCQlpZiAoX3RyYW5fY3MgPT0gbWJmbF9ub19lbmNvZGluZ19pbnZhbGlkKSB7CisJCQkJ
CQkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLCAiVW5zdXBw
b3J0ZWQgY2hhcnNldCBcIiVzXCIgLSB3aWxsIGJlIHJlZ2FyZGVkIGFzIGFzY2lpIiwgY2hh
cnNldCk7IAorCQkJCQkJCV90cmFuX2NzID0gbWJmbF9ub19lbmNvZGluZ19hc2NpaTsKKwkJ
CQkJCX0KKwkJCQkJCXRyYW5fY3MgPSBfdHJhbl9jczsKKwkJCQkJfQorCQkJCX0KKwkJCX0K
KwkJfQorCQlzdXBwcmVzc2VkX2hkcnMuY250X3R5cGUgPSAxOworCX0KKworCWlmICh6ZW5k
X2hhc2hfZmluZCgmaHRfaGVhZGVycywgIkNPTlRFTlQtVFJBTlNGRVItRU5DT0RJTkciLCBz
aXplb2YoIkNPTlRFTlQtVFJBTlNGRVItRU5DT0RJTkciKSAtIDEsICh2b2lkICoqKSZzKSA9
PSBTVUNDRVNTKSB7CisJCWVudW0gbWJmbF9ub19lbmNvZGluZyBfYm9keV9lbmM7CisJCVNF
UEFSQVRFX1NNQVJUX1NUUihzKTsKKwkJc21hcnRfc3RyXzAocyk7CisKKwkJX2JvZHlfZW5j
ID0gbWJmbF9uYW1lMm5vX2VuY29kaW5nKHMtPmMpOworCQlzd2l0Y2ggKF9ib2R5X2VuYykg
eworCQkJY2FzZSBtYmZsX25vX2VuY29kaW5nX2Jhc2U2NDoKKwkJCWNhc2UgbWJmbF9ub19l
bmNvZGluZ183Yml0OgorCQkJY2FzZSBtYmZsX25vX2VuY29kaW5nXzhiaXQ6CisJCQkJYm9k
eV9lbmMgPSBfYm9keV9lbmM7CisJCQkJYnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJcGhw
X2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLCAiVW5zdXBwb3J0ZWQg
dHJhbnNmZXIgZW5jb2RpbmcgXCIlc1wiIC0gd2lsbCBiZSByZWdhcmRlZCBhcyA4Yml0Iiwg
cy0+Yyk7IAorCQkJCWJvZHlfZW5jID0JbWJmbF9ub19lbmNvZGluZ184Yml0OworCQkJCWJy
ZWFrOworCQl9CisJCXN1cHByZXNzZWRfaGRycy5jbnRfdHJhbnNfZW5jID0gMTsKKwl9CisK
IAkvKiBUbzogKi8KIAlpZiAodG8gPT0gTlVMTCB8fCB0b19sZW4gPD0gMCkgewogCQlwaHBf
ZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJNaXNzaW5nIFRvOiBm
aWVsZCIpOwpAQCAtMjc1MCwyOSArMzAxMSw0MyBAQAogCX0KIAogCS8qIG90aGVyIGhlYWRl
cnMgKi8KLSNkZWZpbmUgUEhQX01CU1RSX01BSUxfTUlNRV9IRUFERVIxICJNaW1lLVZlcnNp
b246IDEuMFxuQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIgotI2RlZmluZSBQSFBfTUJTVFJf
TUFJTF9NSU1FX0hFQURFUjIgIjsgY2hhcnNldD0iCi0jZGVmaW5lIFBIUF9NQlNUUl9NQUlM
X01JTUVfSEVBREVSMyAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiCisjZGVmaW5l
IFBIUF9NQlNUUl9NQUlMX01JTUVfSEVBREVSMSAiTWltZS1WZXJzaW9uOiAxLjAiCisjZGVm
aW5lIFBIUF9NQlNUUl9NQUlMX01JTUVfSEVBREVSMiAiQ29udGVudC1UeXBlOiB0ZXh0L3Bs
YWluIgorI2RlZmluZSBQSFBfTUJTVFJfTUFJTF9NSU1FX0hFQURFUjMgIjsgY2hhcnNldD0i
CisjZGVmaW5lIFBIUF9NQlNUUl9NQUlMX01JTUVfSEVBREVSNCAiQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogIgogCWlmIChoZWFkZXJzICE9IE5VTEwpIHsKIAkJcCA9IGhlYWRlcnM7
CiAJCW4gPSBoZWFkZXJzX2xlbjsKIAkJbWJmbF9tZW1vcnlfZGV2aWNlX3N0cm5jYXQoJmRl
dmljZSwgcCwgbiBUU1JNTFNfQ0MpOwotCQlpZiAocFtuIC0gMV0gIT0gJ1xuJykgeworCQlp
ZiAobiA+IDAgJiYgcFtuIC0gMV0gIT0gJ1xuJykgewogCQkJbWJmbF9tZW1vcnlfZGV2aWNl
X3N0cm5jYXQoJmRldmljZSwgIlxuIiwgMSBUU1JNTFNfQ0MpOwogCQl9CiAJfQorCiAJbWJm
bF9tZW1vcnlfZGV2aWNlX3N0cm5jYXQoJmRldmljZSwgUEhQX01CU1RSX01BSUxfTUlNRV9I
RUFERVIxLCBzaXplb2YoUEhQX01CU1RSX01BSUxfTUlNRV9IRUFERVIxKSAtIDEgVFNSTUxT
X0NDKTsKLQlwID0gKGNoYXIgKiltYmZsX25vMnByZWZlcnJlZF9taW1lX25hbWUodHJhbl9j
cyk7Ci0JaWYgKHAgIT0gTlVMTCkgeworCW1iZmxfbWVtb3J5X2RldmljZV9zdHJuY2F0KCZk
ZXZpY2UsICJcbiIsIDEgVFNSTUxTX0NDKTsKKworCWlmICghc3VwcHJlc3NlZF9oZHJzLmNu
dF90eXBlKSB7CiAJCW1iZmxfbWVtb3J5X2RldmljZV9zdHJuY2F0KCZkZXZpY2UsIFBIUF9N
QlNUUl9NQUlMX01JTUVfSEVBREVSMiwgc2l6ZW9mKFBIUF9NQlNUUl9NQUlMX01JTUVfSEVB
REVSMikgLSAxIFRTUk1MU19DQyk7CisKKwkJcCA9IChjaGFyICopbWJmbF9ubzJwcmVmZXJy
ZWRfbWltZV9uYW1lKHRyYW5fY3MpOworCQlpZiAocCAhPSBOVUxMKSB7CisJCQltYmZsX21l
bW9yeV9kZXZpY2Vfc3RybmNhdCgmZGV2aWNlLCBQSFBfTUJTVFJfTUFJTF9NSU1FX0hFQURF
UjMsIHNpemVvZihQSFBfTUJTVFJfTUFJTF9NSU1FX0hFQURFUjMpIC0gMSBUU1JNTFNfQ0Mp
OworCQkJbWJmbF9tZW1vcnlfZGV2aWNlX3N0cmNhdCgmZGV2aWNlLCBwIFRTUk1MU19DQyk7
CisJCX0KKwkJbWJmbF9tZW1vcnlfZGV2aWNlX3N0cm5jYXQoJmRldmljZSwgIlxuIiwgMSBU
U1JNTFNfQ0MpOworCX0KKwlpZiAoIXN1cHByZXNzZWRfaGRycy5jbnRfdHJhbnNfZW5jKSB7
CisJCW1iZmxfbWVtb3J5X2RldmljZV9zdHJuY2F0KCZkZXZpY2UsIFBIUF9NQlNUUl9NQUlM
X01JTUVfSEVBREVSNCwgc2l6ZW9mKFBIUF9NQlNUUl9NQUlMX01JTUVfSEVBREVSNCkgLSAx
IFRTUk1MU19DQyk7CisJCXAgPSAoY2hhciAqKW1iZmxfbm8ycHJlZmVycmVkX21pbWVfbmFt
ZShib2R5X2VuYyk7CisJCWlmIChwID09IE5VTEwpIHsKKwkJCXAgPSAiN2JpdCI7CisJCX0K
IAkJbWJmbF9tZW1vcnlfZGV2aWNlX3N0cmNhdCgmZGV2aWNlLCBwIFRTUk1MU19DQyk7CisJ
CW1iZmxfbWVtb3J5X2RldmljZV9zdHJuY2F0KCZkZXZpY2UsICJcbiIsIDEgVFNSTUxTX0ND
KTsKIAl9Ci0JbWJmbF9tZW1vcnlfZGV2aWNlX3N0cm5jYXQoJmRldmljZSwgUEhQX01CU1RS
X01BSUxfTUlNRV9IRUFERVIzLCBzaXplb2YoUEhQX01CU1RSX01BSUxfTUlNRV9IRUFERVIz
KSAtIDEgVFNSTUxTX0NDKTsKLQlwID0gKGNoYXIgKiltYmZsX25vMnByZWZlcnJlZF9taW1l
X25hbWUoYm9keV9lbmMpOwotCWlmIChwID09IE5VTEwpIHsKLQkJcCA9ICI3Yml0IjsKLQl9
Ci0JbWJmbF9tZW1vcnlfZGV2aWNlX3N0cmNhdCgmZGV2aWNlLCBwIFRTUk1MU19DQyk7CisK
KwltYmZsX21lbW9yeV9kZXZpY2VfdW5wdXQoJmRldmljZSBUU1JNTFNfQ0MpOwogCW1iZmxf
bWVtb3J5X2RldmljZV9vdXRwdXQoJ1wwJywgJmRldmljZSBUU1JNTFNfQ0MpOwogCWhlYWRl
cnMgPSAoY2hhciAqKWRldmljZS5idWZmZXI7CiAKQEAgLTI3ODksNyArMzA2NCwxNSBAQAog
CQllZnJlZSgodm9pZCAqKW1lc3NhZ2VfYnVmKTsKIAl9CiAJbWJmbF9tZW1vcnlfZGV2aWNl
X2NsZWFyKCZkZXZpY2UgVFNSTUxTX0NDKTsKKwl6ZW5kX2hhc2hfZGVzdHJveSgmaHRfaGVh
ZGVycyk7CiB9CisKKyN1bmRlZiBBUFBFTkRfT05FX0NIQVIKKyN1bmRlZiBTRVBBUkFURV9T
TUFSVF9TVFIKKyN1bmRlZiBQSFBfTUJTVFJfTUFJTF9NSU1FX0hFQURFUjEKKyN1bmRlZiBQ
SFBfTUJTVFJfTUFJTF9NSU1FX0hFQURFUjIKKyN1bmRlZiBQSFBfTUJTVFJfTUFJTF9NSU1F
X0hFQURFUjMKKyN1bmRlZiBQSFBfTUJTVFJfTUFJTF9NSU1FX0hFQURFUjQKIAogI2Vsc2UJ
LyogSEFWRV9TRU5ETUFJTCAqLwogCj==

--------------Boundary_7t.(poF47vM40bv--