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>