Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Aug 2010 03:54:29 -0700
From:      Garrett Cooper <gcooper@FreeBSD.org>
To:        Garrett Cooper <gcooper@freebsd.org>
Cc:        freebsd-bugs@freebsd.org, Bruce Evans <brde@optusnet.com.au>
Subject:   Re: bin/144411: [patch] mtree(8) doesn't reject non-regular files for -X
Message-ID:  <AANLkTi=C7nshKdKWdhTL7qK2dm=o3M83NyyfF6UHFVe9@mail.gmail.com>
In-Reply-To: <364299f41003301740m4ca73398v9aadcc87e53a4628@mail.gmail.com>
References:  <201003300830.o2U8U93Y096013@freefall.freebsd.org> <20100331034500.O1425@besplex.bde.org> <20100331060503.G1425@besplex.bde.org> <364299f41003301740m4ca73398v9aadcc87e53a4628@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--0016363b9eaa1af2d1048ef42cfd
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Tue, Mar 30, 2010 at 5:40 PM, Garrett Cooper <gcooper@freebsd.org> wrote=
:
> On Tue, Mar 30, 2010 at 12:12 PM, Bruce Evans <brde@optusnet.com.au> wrot=
e:
>> On Wed, 31 Mar 2010, Bruce Evans wrote:
>>
>>> On Tue, 30 Mar 2010, Garrett Cooper wrote:
>>>
>>>> Hi,
>>>> =A0 =A0I'm not 100% satisfied with this patch now. Looking back it fai=
ls
>>>> the following case:
>>>>
>>>> =A0 =A0 -P =A0 =A0Do not follow symbolic links in the file hierarchy, =
instead
>>>> con-
>>>> =A0 =A0 =A0 =A0 =A0 sider the symbolic link itself in any comparisons.=
 =A0This is the
>>>> =A0 =A0 =A0 =A0 =A0 default.
>>>
>>> -P should have the same semantics and description in all utilities. =A0=
The
>>> description should not have grammar errors like the above (comma splice=
).
>>> ...
>>> I now see that the grammar error is from the original version of mtree(=
1),
>>> and is probably one of the things you don't like. =A0mtree also has -L,=
 but
>>> not -R or -P or -h. =A0It is not clear how any utility that traverses t=
rees
>>> can work without a full complement of -[HLPR] or how any utility that
>>> ...
>>
>> Looking at the actual patch, I now see that it is about a completely
>> different problem. =A0You would only need to understand the amount of
>> brokenness of -P to see if you need to use lstat(). =A0I think -P is so
>> broken that mtree on symlinks doesn't work at all and not using lstat()
>> would be safest.
>
> Hmmm... so I take it that this is actually the first step in many to
> fixing this underlying problem? I suppose I should be opening bugs for
> all of the itemized issues that you see in mtree(8) so someone can
> submit patches to fix the utility?
>
>> The patch has some style bugs.
>
> Please expound on this -- I want to improve my style (without having
> to rewrite the entire program of course) -- so that it conforms more
> to the projects overall style rules; of course there are some cases
> where I can't readily do that (like pkg_install -- ugh), but I'll do
> my best to make sure that the rules are withheld.

    Just for the record, here's the latest patch that I submitted to
Bruce for this PR.
Thanks,
-Garrett

--0016363b9eaa1af2d1048ef42cfd
Content-Type: application/octet-stream; name="bin.45529.2.diff"
Content-Disposition: attachment; filename="bin.45529.2.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gdfs692k0

SW5kZXg6IHBhcnNlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFyc2UuYwkocmV2aXNpb24gMjA1MTM3KQor
KysgcGFyc2UuYwkod29ya2luZyBjb3B5KQpAQCAtOTQsNTggKzk0LDExMiBAQAogCW5leHRmcyA9
ICZ0ZnMtPm5leHRmczsKIAluZXh0ZnUgPSAmdGZzLT5uZXh0ZnU7CiAKLQkvKiB0YWtlIHRoZSBm
b3JtYXQgc3RyaW5nIGFuZCBicmVhayBpdCB1cCBpbnRvIGZvcm1hdCB1bml0cyAqLwotCWZvciAo
cCA9IGZtdDs7KSB7Ci0JCS8qIHNraXAgbGVhZGluZyB3aGl0ZSBzcGFjZSAqLwotCQlmb3IgKDsg
aXNzcGFjZSgqcCk7ICsrcCk7Ci0JCWlmICghKnApCi0JCQlicmVhazsKKwkvKiAKKwkgKiBUYWtl
IHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBicmVhayBpdCB1cCBpbnRvIGZvcm1hdCB1bml0cy4KKwkg
KgorCSAqIFRoZSBzdHJ1Y3R1cmUgb2YgZWFjaCBmb3JtYXQgdW5pdCBpcyBhcyBmb2xsb3dzOgor
CSAqCisJICogCWl0ZXJhdGlvbl9jb3VudC9ieXRlX2NvdW50CisJICoKKwkgKiBpdGVyYXRpb25f
Y291bnQgYW5kIGJ5dGVfY291bnQgYXJlIG9wdGlvbmFsLCBidXQgZWl0aGVyIG9uZSBvciB0aGUK
KwkgKiBvdGhlciBtdXN0IGJlIHByZXNlbnQuCisJICoKKwkgKiBJdGVyYXRpb24gY291bnQgZGVm
YXVsdHMgdG8gMSwgYW5kIGJ5dGUgY291bnQgZGVmYXVsdHMgdmFyeQorCSAqIGRlcGVuZGluZyB1
cG9uIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZC4gU2VlIHNpemUgZm9yIG1vcmUKKwkgKiBk
ZXRhaWxzLgorCSAqLworCWZvciAocCA9IGZtdDsgKnA7ICkgewogCi0JCS8qIGFsbG9jYXRlIGEg
bmV3IGZvcm1hdCB1bml0IGFuZCBsaW5rIGl0IGluICovCi0JCWlmICgodGZ1ID0gY2FsbG9jKDEs
IHNpemVvZihGVSkpKSA9PSBOVUxMKQotCQkJZXJyKDEsIE5VTEwpOwotCQkqbmV4dGZ1ID0gdGZ1
OwotCQluZXh0ZnUgPSAmdGZ1LT5uZXh0ZnU7Ci0JCXRmdS0+cmVwcyA9IDE7CisJCS8qIFNraXAg
YW55IGFuZCBhbGwgbGVhZGluZyB3aGl0ZSBzcGFjZS4gKi8KKwkJZm9yICg7IGlzc3BhY2UoKnAp
OyBwKyspIDsKIAotCQkvKiBpZiBsZWFkaW5nIGRpZ2l0LCByZXBldGl0aW9uIGNvdW50ICovCi0J
CWlmIChpc2RpZ2l0KCpwKSkgewotCQkJZm9yIChzYXZlcCA9IHA7IGlzZGlnaXQoKnApOyArK3Ap
OwotCQkJaWYgKCFpc3NwYWNlKCpwKSAmJiAqcCAhPSAnLycpCisJCS8qIFRoZXJlJ3MgbW9yZSBp
bmZvcm1hdGlvbiBvbiB0aGUgbGluZSB0byBzY2FuLiAqLworCQlpZiAoKnApIHsKKworCQkJLyog
YWxsb2NhdGUgYSBuZXcgZm9ybWF0IHVuaXQgYW5kIGxpbmsgaXQgaW4gKi8KKwkJCWlmICgodGZ1
ID0gY2FsbG9jKDEsIHNpemVvZihGVSkpKSA9PSBOVUxMKQorCQkJCWVycigxLCAiY2FsbG9jIik7
CisJCQkqbmV4dGZ1ID0gdGZ1OworCQkJbmV4dGZ1ID0gJnRmdS0+bmV4dGZ1OworCQkJLyogRGVm
YXVsdCB0byBvbmUgaXRlcmF0aW9uIGNvdW50LiAqLworCQkJdGZ1LT5yZXBzID0gMTsKKworCQkJ
LyogCisJCQkgKiBTY2FuIHRoZSBsZWFkaW5nIGRpZ2l0IC0tIGl0J3MgdGhlIHJlcGV0aXRpb24g
Y291bnQuCisJCQkgKi8KKwkJCWlmIChpc2RpZ2l0KCpwKSkgeworCisJCQkJZm9yIChzYXZlcCA9
IHA7IGlzZGlnaXQoKnApOyArK3ApOworCQkJCS8qIAorCQkJCSAqIE5leHQgY2hhcmFjdGVyIHNj
YW5uZWQgd2Fzbid0ICcvJyAtLSB0aGUKKwkJCQkgKiBpdGVyYXRpb24gY291bnQgaXMgaW52YWxp
ZC4KKwkJCQkgKi8KKwkJCQlpZiAoIWlzc3BhY2UoKnApICYmICpwICE9ICcvJykKKwkJCQkJYmFk
Zm10KGZtdCk7CisJCQkJLyogTWF5IG92ZXJ3cml0ZSBlaXRoZXIgd2hpdGUgc3BhY2Ugb3Igc2xh
c2ggKi8KKwkJCQl0ZnUtPnJlcHMgPSAoaW50KSBzdHJ0b2woc2F2ZXAsIE5VTEwsIDEwKTsKKwkJ
CQkvKgorCQkJCSAqIFdlIG9ubHkgd2FudCBub24temVybyBudW1iZXJzLiBBbGwgbmVnYXRpdmUK
KwkJCQkgKiBudW1iZXJzIHdvdWxkIGJlIGNhdWdodCBiZWxvdyBhdCB0aGUgPT0gJyInCisJCQkJ
ICogY2hlY2sgYmVjYXVzZSB0aGUgbGVhZGluZyBjaGFyYWN0ZXIgaXMgYC0nLgorCQkJCSAqLwor
CQkJCWlmICh0ZnUtPnJlcHMgPT0gMCkKKwkJCQkJYmFkZm10KGZtdCk7CisJCQkJdGZ1LT5mbGFn
cyA9IEZfU0VUUkVQOworCQkJCS8qIHNraXAgdHJhaWxpbmcgd2hpdGUgc3BhY2UgKi8KKwkJCQlm
b3IgKCsrcDsgaXNzcGFjZSgqcCk7ICsrcCkgOworCisJCQl9CisKKwkJCS8qIFNraXAgdGhlIHNs
YXNoIGFuZCB0cmFpbGluZyB3aGl0ZSBzcGFjZSAqLworCQkJaWYgKCpwID09ICcvJykKKwkJCQl3
aGlsZSAoaXNzcGFjZSgqKytwKSk7CisKKwkJCS8qIFNjYW4gdGhlIHRyYWlsaW5nIGRpZ2l0IC0t
IGl0J3MgdGhlIGJ5dGUgY291bnQuICovCisJCQlpZiAoaXNkaWdpdCgqcCkpIHsKKworCQkJCWZv
ciAoc2F2ZXAgPSBwOyBpc2RpZ2l0KCpwKTsgKytwKTsKKwkJCQlpZiAoIWlzc3BhY2UoKnApKQor
CQkJCQliYWRmbXQoZm10KTsKKwkJCQl0ZnUtPmJjbnQgPSAoaW50KSBzdHJ0b2woc2F2ZXAsIE5V
TEwsIDEwKTsKKwkJCQkvKgorCQkJCSAqIFdlIG9ubHkgd2FudCBub24temVybyBudW1iZXJzLiBB
bGwgbmVnYXRpdmUKKwkJCQkgKiBudW1iZXJzIHdvdWxkIGJlIGNhdWdodCBiZWxvdyBhdCB0aGUg
PT0gJyInCisJCQkJICogY2hlY2sgYmVjYXVzZSB0aGUgbGVhZGluZyBjaGFyYWN0ZXIgaXMgYC0n
LgorCQkJCSAqLworCQkJCWlmICh0ZnUtPmJjbnQgPT0gMCkKKwkJCQkJYmFkZm10KGZtdCk7CisJ
CQkJLyogc2tpcCB0cmFpbGluZyB3aGl0ZSBzcGFjZSAqLworCQkJCWZvciAoKytwOyBpc3NwYWNl
KCpwKTsgKytwKSA7CisKKwkJCX0KKworCQkJLyogVGhpcyB3YXNuJ3QgYSB2YWxpZCBmb3JtYXQg
c3RyaW5nICovCisJCQlpZiAoKnArKyAhPSAnIicpCiAJCQkJYmFkZm10KGZtdCk7Ci0JCQkvKiBt
YXkgb3ZlcndyaXRlIGVpdGhlciB3aGl0ZSBzcGFjZSBvciBzbGFzaCAqLwotCQkJdGZ1LT5yZXBz
ID0gYXRvaShzYXZlcCk7Ci0JCQl0ZnUtPmZsYWdzID0gRl9TRVRSRVA7Ci0JCQkvKiBza2lwIHRy
YWlsaW5nIHdoaXRlIHNwYWNlICovCi0JCQlmb3IgKCsrcDsgaXNzcGFjZSgqcCk7ICsrcCk7Ci0J
CX0KKwkJCS8qIAorCQkJICogQ29weSB0aGUgZm9ybWF0IHN0cmluZyBiZXR3ZWVuIHRoZSAnIicK
KwkJCSAqIHRlcm1pbmF0b3JzLgorCQkJICovCisJCQlmb3IgKHNhdmVwID0gcDsgKnAgIT0gJyIn
OyBwKyspIHsKIAotCQkvKiBza2lwIHNsYXNoIGFuZCB0cmFpbGluZyB3aGl0ZSBzcGFjZSAqLwot
CQlpZiAoKnAgPT0gJy8nKQotCQkJd2hpbGUgKGlzc3BhY2UoKisrcCkpOworCQkJCS8qIFRoZSBm
b3JtYXQgc3RyaW5nIGlzbid0IHZhbGlkIChjb3VsZG4ndCBmaW5kCisJCQkJICogYSAnIicgdGVy
bWluYXRvcikgKi8KKwkJCQlpZiAoKnAgPT0gJ1wwJykKKwkJCQkJYmFkZm10KGZtdCk7CiAKLQkJ
LyogYnl0ZSBjb3VudCAqLwotCQlpZiAoaXNkaWdpdCgqcCkpIHsKLQkJCWZvciAoc2F2ZXAgPSBw
OyBpc2RpZ2l0KCpwKTsgKytwKTsKLQkJCWlmICghaXNzcGFjZSgqcCkpCi0JCQkJYmFkZm10KGZt
dCk7Ci0JCQl0ZnUtPmJjbnQgPSBhdG9pKHNhdmVwKTsKLQkJCS8qIHNraXAgdHJhaWxpbmcgd2hp
dGUgc3BhY2UgKi8KLQkJCWZvciAoKytwOyBpc3NwYWNlKCpwKTsgKytwKTsKKwkJCX0KKwkJCWlm
ICghKHRmdS0+Zm10ID0gbWFsbG9jKHAgLSBzYXZlcCArIDEpKSkKKwkJCQllcnIoMSwgIm1hbGxv
YyIpOworCQkJKHZvaWQpIHN0cmxjcHkodGZ1LT5mbXQsIHNhdmVwLCBwIC0gc2F2ZXAgKyAxKTsK
KwkJCS8qIEVuZCBmb3JtYXQgc3RyaW5nIGNvcHkuICovCisJCQllc2NhcGUodGZ1LT5mbXQpOwor
CQkJcCsrOworCiAJCX0KIAotCQkvKiBmb3JtYXQgKi8KLQkJaWYgKCpwICE9ICciJykKLQkJCWJh
ZGZtdChmbXQpOwotCQlmb3IgKHNhdmVwID0gKytwOyAqcCAhPSAnIic7KQotCQkJaWYgKCpwKysg
PT0gMCkKLQkJCQliYWRmbXQoZm10KTsKLQkJaWYgKCEodGZ1LT5mbXQgPSBtYWxsb2MocCAtIHNh
dmVwICsgMSkpKQotCQkJZXJyKDEsIE5VTEwpOwotCQkodm9pZCkgc3RybGNweSh0ZnUtPmZtdCwg
c2F2ZXAsIHAgLSBzYXZlcCArIDEpOwotCQllc2NhcGUodGZ1LT5mbXQpOwotCQlwKys7CiAJfQor
CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzcGVjID0gIi4jLSsgMDEyMzQ1Njc4OSI7CkBAIC0x
NjAsNDcgKzIxNCw2OCBAQAogCiAJLyogZmlndXJlIG91dCB0aGUgZGF0YSBibG9jayBzaXplIG5l
ZWRlZCBmb3IgZWFjaCBmb3JtYXQgdW5pdCAqLwogCWZvciAoY3Vyc2l6ZSA9IDAsIGZ1ID0gZnMt
Pm5leHRmdTsgZnU7IGZ1ID0gZnUtPm5leHRmdSkgewotCQlpZiAoZnUtPmJjbnQpIHsKLQkJCWN1
cnNpemUgKz0gZnUtPmJjbnQgKiBmdS0+cmVwczsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWZvciAo
YmNudCA9IHByZWMgPSAwLCBmbXQgPSBmdS0+Zm10OyAqZm10OyArK2ZtdCkgewotCQkJaWYgKCpm
bXQgIT0gJyUnKQotCQkJCWNvbnRpbnVlOwotCQkJLyoKLQkJCSAqIHNraXAgYW55IHNwZWNpYWwg
Y2hhcnMgLS0gc2F2ZSBwcmVjaXNpb24gaW4KLQkJCSAqIGNhc2UgaXQncyBhICVzIGZvcm1hdC4K
LQkJCSAqLwotCQkJd2hpbGUgKGluZGV4KHNwZWMgKyAxLCAqKytmbXQpKTsKLQkJCWlmICgqZm10
ID09ICcuJyAmJiBpc2RpZ2l0KCorK2ZtdCkpIHsKLQkJCQlwcmVjID0gYXRvaShmbXQpOwotCQkJ
CXdoaWxlIChpc2RpZ2l0KCorK2ZtdCkpOwotCQkJfQotCQkJc3dpdGNoKCpmbXQpIHsKLQkJCWNh
c2UgJ2MnOgotCQkJCWJjbnQgKz0gMTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ2QnOiBjYXNlICdp
JzogY2FzZSAnbyc6IGNhc2UgJ3UnOgotCQkJY2FzZSAneCc6IGNhc2UgJ1gnOgotCQkJCWJjbnQg
Kz0gNDsKLQkJCQlicmVhazsKLQkJCWNhc2UgJ2UnOiBjYXNlICdFJzogY2FzZSAnZic6IGNhc2Ug
J2cnOiBjYXNlICdHJzoKLQkJCQliY250ICs9IDg7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICdzJzoK
LQkJCQliY250ICs9IHByZWM7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlICdfJzoKLQkJCQlzd2l0Y2go
KisrZm10KSB7Ci0JCQkJY2FzZSAnYyc6IGNhc2UgJ3AnOiBjYXNlICd1JzoKLQkJCQkJYmNudCAr
PSAxOwotCQkJCQlicmVhazsKKworCQliY250ID0gZnUtPmJjbnQ7CisKKwkJaWYgKGJjbnQgPT0g
MCkgeworCisJCQlmb3IgKHByZWMgPSAwLCBmbXQgPSBmdS0+Zm10OyAqZm10OyArK2ZtdCkgewor
CisJCQkJaWYgKCpmbXQgPT0gJyUnKSB7CisKKwkJCQkJLyoKKwkJCQkJICogU2tpcCBhbnkgc3Bl
Y2lhbCBjaGFycyBtaW51cyBgLicuCisJCQkJCSAqIFNhdmUgcHJlY2lzaW9uIGluIGNhc2UgaXQn
cyBhICVzCisJCQkJCSAqIGZvcm1hdC4KKwkJCQkJICovCisJCQkJCXdoaWxlICgqZm10ICE9ICdc
MCcgJiYKKwkJCQkJICAgICAgICBpbmRleChzcGVjKzEsICorK2ZtdCkgIT0gTlVMTCkgOworCisJ
CQkJCWlmICgqZm10ID09ICcuJyAmJiBpc2RpZ2l0KCorK2ZtdCkpIHsKKwkJCQkJCXByZWMgPSBz
dHJ0b2woZm10LCBOVUxMLCAxMCk7CisJCQkJCQlpZiAocHJlYyA9PSAwKSB7CisJCQkJCQkJZXJy
eCgxLCAiQmFkIHByZWNpc2lvbiAiCisJCQkJCQkJCSJ2YWx1ZTogJXMiLAorCQkJCQkJCQlmbXQp
OworCQkJCQkJfQorCQkJCQkJd2hpbGUgKGlzZGlnaXQoKisrZm10KSkgOworCQkJCQl9CisJCQkJ
CXN3aXRjaCgqZm10KSB7CisJCQkJCWNhc2UgJ2MnOgorCQkJCQkJYmNudCArPSAxOworCQkJCQkJ
YnJlYWs7CisJCQkJCWNhc2UgJ2QnOiBjYXNlICdpJzogY2FzZSAnbyc6IGNhc2UgJ3UnOgorCQkJ
CQljYXNlICd4JzogY2FzZSAnWCc6CisJCQkJCQliY250ICs9IDQ7CisJCQkJCQlicmVhazsKKwkJ
CQkJY2FzZSAnZSc6IGNhc2UgJ0UnOiBjYXNlICdmJzogY2FzZSAnZyc6CisJCQkJCWNhc2UgJ0cn
OgorCQkJCQkJYmNudCArPSA4OworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgJ3MnOgorCQkJCQkJ
YmNudCArPSBwcmVjOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgJ18nOgorCQkJCQkJc3dpdGNo
KCorK2ZtdCkgeworCQkJCQkJY2FzZSAnYyc6IGNhc2UgJ3AnOiBjYXNlICd1JzoKKwkJCQkJCQli
Y250ICs9IDE7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisKKwkJCQkJfQorCiAJCQkJfQorCiAJ
CQl9CisKIAkJfQorCiAJCWN1cnNpemUgKz0gYmNudCAqIGZ1LT5yZXBzOworCiAJfQorCiAJcmV0
dXJuIChjdXJzaXplKTsKKwogfQogCiB2b2lkCkBAIC0yNDcsMTAgKzMyMiwxMCBAQAogCQkJaWYg
KGZ1LT5iY250KSB7CiAJCQkJc29rYXkgPSBVU0VCQ05UOwogCQkJCS8qIFNraXAgdG8gY29udmVy
c2lvbiBjaGFyYWN0ZXIuICovCi0JCQkJZm9yICgrK3AxOyBpbmRleChzcGVjLCAqcDEpOyArK3Ax
KTsKKwkJCQlmb3IgKCsrcDE7ICpwMSAhPSAnXDAnICYmIGluZGV4KHNwZWMsICpwMSk7ICsrcDEp
OwogCQkJfSBlbHNlIHsKIAkJCQkvKiBTa2lwIGFueSBzcGVjaWFsIGNoYXJzLCBmaWVsZCB3aWR0
aC4gKi8KLQkJCQl3aGlsZSAoaW5kZXgoc3BlYyArIDEsICorK3AxKSk7CisJCQkJd2hpbGUgKCpw
MSAhPSAnXDAnICYmIGluZGV4KHNwZWMgKyAxLCAqKytwMSkpOwogCQkJCWlmICgqcDEgPT0gJy4n
ICYmIGlzZGlnaXQoKisrcDEpKSB7CiAJCQkJCXNva2F5ID0gVVNFUFJFQzsKIAkJCQkJcHJlYyA9
IGF0b2kocDEpOwpAQCAtMzk2LDcgKzQ3MSw3IEBACiAJCQlwMVswXSA9ICdcMCc7CiAJCQlsZW4g
PSBzdHJsZW4oZm10cCkgKyBzdHJsZW4oY3MpICsgMTsKIAkJCWlmICgocHItPmZtdCA9IGNhbGxv
YygxLCBsZW4pKSA9PSBOVUxMKQotCQkJCWVycigxLCBOVUxMKTsKKwkJCQllcnIoMSwgImNhbGxv
YyIpOwogCQkJc25wcmludGYocHItPmZtdCwgbGVuLCAiJXMlcyIsIGZtdHAsIGNzKTsKIAkJCSpw
MiA9IHNhdmVjaDsKIAkJCXByLT5jY2hhciA9IHByLT5mbXQgKyAocDEgLSBmbXRwKTsKQEAgLTQy
NSwxNiArNTAwLDIwIEBACiAJICovCiAJZm9yIChmdSA9IGZzLT5uZXh0ZnU7IGZ1OyBmdSA9IGZ1
LT5uZXh0ZnUpIHsKIAkJaWYgKCFmdS0+bmV4dGZ1ICYmIGZzLT5iY250IDwgYmxvY2tzaXplICYm
Ci0JCSAgICAhKGZ1LT5mbGFncyZGX1NFVFJFUCkgJiYgZnUtPmJjbnQpCisJCSAgICAhKGZ1LT5m
bGFncyAmIEZfU0VUUkVQKSAmJiBmdS0+YmNudCkKIAkJCWZ1LT5yZXBzICs9IChibG9ja3NpemUg
LSBmcy0+YmNudCkgLyBmdS0+YmNudDsKIAkJaWYgKGZ1LT5yZXBzID4gMSkgewotCQkJZm9yIChw
ciA9IGZ1LT5uZXh0cHI7OyBwciA9IHByLT5uZXh0cHIpCi0JCQkJaWYgKCFwci0+bmV4dHByKQot
CQkJCQlicmVhazsKLQkJCWZvciAocDEgPSBwci0+Zm10LCBwMiA9IE5VTEw7ICpwMTsgKytwMSkK
LQkJCQlwMiA9IGlzc3BhY2UoKnAxKSA/IHAxIDogTlVMTDsKLQkJCWlmIChwMikKLQkJCQlwci0+
bm9zcGFjZSA9IHAyOworCisJCQlmb3IgKHByID0gZnUtPm5leHRwcjsgcHIgJiYgcHItPm5leHRw
cjsgcHIgPSBwci0+bmV4dHByKSA7CisKKwkJCS8qIEF2b2lkIGEgTlVMTCBwb2ludGVyLiAqLwor
CQkJaWYgKHByICE9IE5VTEwpIHsKKwkJCQlmb3IgKHAxID0gcHItPmZtdCwgcDIgPSBOVUxMOyAq
cDE7ICsrcDEpCisJCQkJCXAyID0gaXNzcGFjZSgqcDEpID8gcDEgOiBOVUxMOworCQkJCWlmIChw
MikKKwkJCQkJcHItPm5vc3BhY2UgPSBwMjsKKwkJCX0KKwogCQl9CiAJfQogI2lmZGVmIERFQlVH
Cg==
--0016363b9eaa1af2d1048ef42cfd--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=C7nshKdKWdhTL7qK2dm=o3M83NyyfF6UHFVe9>