From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 6587 invoked from network); 27 Feb 2023 04:08:55 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 27 Feb 2023 04:08:55 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1677470935; b=m5HvDGTT30bFen3+Q9M/ThGFDyfM/vUsjooIZ6n/8QSfTSw35nLqzLBZtT3R0O/YPoFzDaAZHM gvUN52FrqkQwRIbXTK076Km5XCM6KWaQToKHhZjsIp6yRqeCldw+8uRePBx1irp+CZIxH0V0D4 bcXd6Rry3pay7oE9Q20+gofKoZrAORkU2CtfEqtDaKXXRpfgCLON+9OVXMDERSqqSO84eQno4c AqOpEKeWyN5fxtw0hSTDdSMAsPlIWp+fut3DP7V2SZWrLYYr2fc0QlijpiUPOnVqtYhBCW0xpP PAUF4g/x6ic5ttlZ6P8iDrhKuI8XlXXmsaNsZnEpH6KwEQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f51.google.com) smtp.remote-ip=209.85.208.51; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1677470935; bh=T0xrhZRmUA/OeS3lWRnkrjyK6MucY14HLZXNIx+/IdU=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=Je3vzz4r5dmksy0nKfYpXIr4kE4LdffrH9ZSmhYEs79TECEtupVa0GAtt5wvJiqW7t/hGDircV vV/H47L3xBHCTZgnBY1TR9/Gc3WOwS5WSOi4O3rKlooZFW+8LsIgvjyBYWRvNzPinaTwUe8ZQC 6V9YVPjFsmiIjg9vdXG1pEEqGUSiIVK8PY21Nh+8gNT3qPhoFpoyL/9QjyjusrYeuTVSJZhzlG sll3I8yhTqob32pWZkoLdE2nueV9X0/79w+OM5jIHZJd3ogKr+5b9+SABHH+UMhQe5LA5kOqk8 BFvppK34ef0P8DQ+0awXs0FG+S0LyPqLzKexCZ7aMDUo7g==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=QtD1IouOtojRr9djhgCpARlrMU57zspzyE4fIHHuNlE=; b=a/DQToWSxlf6gBjv2cADIol1xF qL4InVfPHLusNkZ1FIOgzUxHrLl9ZnWSX4MGkEi3sxk2bN3M2RcgZIq1koMI0gJzIM2a1gdY0Gb8z utIwJwfaxmeyuUU8RrLNBo9TwZNxVLk+FeoPtkvXI+W7s/psMr81HT5tSAlt7Z7U9gQSDxLrTLgFj O2QPKJf514ZJ5Sy0WCJt62YCNFyIIhB+Np6hPmGMqbw7+xcg8XkIvawX8TjiIKyR6TKYuR0goRuxr VM53dElE4l+EKGGMhxpUCHk+0hqQjCEtugsBs3c95wlGwvmy0Mu98h8mqRu5Js/9ODOuWOCHeBnU2 eHZUHJng==; Received: by zero.zsh.org with local id 1pWUoo-0006rX-Qt; Mon, 27 Feb 2023 04:08:54 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f51.google.com) smtp.remote-ip=209.85.208.51; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ed1-f51.google.com ([209.85.208.51]:41558) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1pWUoV-0006Xz-UG; Mon, 27 Feb 2023 04:08:36 +0000 Received: by mail-ed1-f51.google.com with SMTP id ec43so20396495edb.8 for ; Sun, 26 Feb 2023 20:08:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=QtD1IouOtojRr9djhgCpARlrMU57zspzyE4fIHHuNlE=; b=RodPZxbLFjM4/PN2BnP5yRwuxX/mexYUbEMVlq/xHnUCG8lTJhGo01yoNmGyOtm1JP MpSx4gTLp7Nvc7yGi4xMcMOjoIXf94pCA87CthrFS4FzWRvKzKAn0S5xsGKRh+8uyCNm BLkCloKeoUxTx+7E6PDJliD6y/AVvfX137JSNzm5uU36D0k6ewcDNrKpFUpJ6B1hBpEU 4AfrEqqxc+f09nXRzG7YogLto/uzFq+OaaQtGZg1HsP6lTJYptIZODnr61pv76wmyHY2 I+dABww1Fa6D16PhdYbJYY31cV/DBKETObe2ElIauW7dhZlm++ysAqCbcV3BZmWZNIWX vujg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=QtD1IouOtojRr9djhgCpARlrMU57zspzyE4fIHHuNlE=; b=Nt6/OrOCx5UQB6Rseyxk2bKcTKE3Yz/IdL+lXaaFQOpCqjoeVwQUfUN6xjnTe85L4R mG/vInFuten3RvXVDUIlsbgzQqtSkvTzZe5Kn1xkgWyyumPC4uDbUlLseKsehXwHIAEL gYRzBq2B8kcMMpM29OjDUzinY3OcV7GjcTs9xaJaD4gVemhkcxh3k4qzhhOQE4ErS8XB A7hFbPXv+nPMy2NlZhyS472+a4vySJbaVZAAeukCe2VhYoa4G2ONhXz0j3CYsSuA2VBw 6D/Cc7oSWeiJkKYjbwnAk0cJOspWlUf6oryFaCgGVzKFhaQYGs38nfBflCh8zMYuz53l AvNg== X-Gm-Message-State: AO0yUKVaWInS8xEsd2BcSo1zrEhsxa/UUKDv79aYejhkiJg5Bz7nXOY0 nCkOhpUhoy0zWksVM/gBP71wn75lNI6ZDzmRU9TExRG6tLgwCQ== X-Google-Smtp-Source: AK7set8CIqz46Xryd5YIDyxC06miIZT351VzE9OqGNnnI+mcYyMe2VsRevG1DFS8K0iSbzEWWQX/MJLvi51pWm88obA= X-Received: by 2002:a17:907:d30d:b0:88d:ba79:4317 with SMTP id vg13-20020a170907d30d00b0088dba794317mr4580224ejc.7.1677470913229; Sun, 26 Feb 2023 20:08:33 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Sun, 26 Feb 2023 20:08:22 -0800 Message-ID: Subject: [PATCH 2/3] Special named references To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000e7a4dc05f5a6a1a3" X-Seq: 51484 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000e7a4dc05f5a6a1a3 Content-Type: text/plain; charset="UTF-8" The previously-posted implementation of named references assumes all PM_NAMEREF parameters are created as simple scalars with the referent parameter name stored in the u.str field of the referencing param structure. This is efficient but complicates the creation of special named references, for example in modules. This patch changes the implementation to call the get/set/unset function pointers when the PM_SPECIAL flag is present, and otherwise to continue directly accessing u.str. This should be applied after the namespace-syntax patch, though if wanted independently there is only a single line of overlap with an obvious adjustment. Included is a fix to builtins.yo to add an explicit summary line for "typeset -n". --000000000000e7a4dc05f5a6a1a3 Content-Type: text/plain; charset="US-ASCII"; name="nameref-improve.txt" Content-Disposition: attachment; filename="nameref-improve.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lemag91j0 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvYnVpbHRpbnMueW8gYi9Eb2MvWnNoL2J1aWx0aW5zLnlvCmlu ZGV4IDkyOTE3YzA2Yy4uNTM5M2NiMTQ5IDEwMDY0NAotLS0gYS9Eb2MvWnNoL2J1aWx0aW5zLnlv CisrKyBiL0RvYy9ac2gvYnVpbHRpbnMueW8KQEAgLTE5MjQsNiArMTkyNCw4IEBAIHJlZGVmKFNQ QUNFUykoMCkodHQoaWZ6dGV4aShOT1RSQU5TKEAgQCBAIEAgQCBAIEAgQCApKWlmbnp0ZXhpKCAg ICAgICAgKSkpCiB4aXRlbSh0dCh0eXBlc2V0IClbIHt0dChQTFVTKCkpfHR0KC0pfXR0KEFIVWFn aGxtcnR1eCkgXSBcCiBbIHt0dChQTFVTKCkpfHR0KC0pfXR0KEVGTFJaaXApIFsgdmFyKG4pIF0g XSkKIHhpdGVtKFNQQUNFUygpWyB0dCgrKSBdIFsgdmFyKG5hbWUpW3R0KD0pdmFyKHZhbHVlKV0g Li4uIF0pCit4aXRlbSh0dCh0eXBlc2V0IClbIHt0dChQTFVTKCkpfHR0KC0pfXR0KG4pIF0gXAor WyB0dCgtZ3IpIF0gWyB2YXIobmFtZSlbdHQoPSl2YXIodmFsdWUpXSAuLi4gXSkKIHhpdGVtKHR0 KHR5cGVzZXQgKXR0KC1UKSBbIHt0dChQTFVTKCkpfHR0KC0pfXR0KFVnbHJ1eCkgXSBbIHt0dChQ TFVTKCkpfHR0KC0pfXR0KExSWnApIFsgdmFyKG4pIF0gXSkKIHhpdGVtKFNQQUNFUygpWyB0dCgr KSB8IHZhcihTQ0FMQVIpW3R0KD0pdmFyKHZhbHVlKV0gdmFyKGFycmF5KVt0dCg9TFBBUigpKXZh cih2YWx1ZSkgLi4udHQoUlBBUigpKV0gWyB2YXIoc2VwKSBdIF0pCiBpdGVtKHR0KHR5cGVzZXQp IHR0KC1mKSBbIHt0dChQTFVTKCkpfHR0KC0pfXR0KFRVa210dXopIF0gWyB0dCgrKSBdIFsgdmFy KG5hbWUpIC4uLiBdKSgKCmRpZmYgLS1naXQgYS9TcmMvcGFyYW1zLmMgYi9TcmMvcGFyYW1zLmMK aW5kZXggZDNiNmE3ZDQzLi5jOWY0YjMwMTcgMTAwNjQ0Ci0tLSBhL1NyYy9wYXJhbXMuYworKysg Yi9TcmMvcGFyYW1zLmMKQEAgLTQ3NSw2ICs0NzUsMTUgQEAgc3RhdGljIGluaXRwYXJhbSBhcmd2 cGFyYW1fcG0gPSBJUERFRjkoIiIsICZwcGFyYW1zLCBOVUxMLCBcCiAJKChWKSAmJiAoIShWKS0+ cG0gfHwgKChWKS0+cG0tPm5vZGUuZmxhZ3MgJiBQTV9VTlNFVCkgfHwgXAogCQkgIShWKS0+cG0t Pm5vZGUubmFtIHx8ICEqKFYpLT5wbS0+bm9kZS5uYW0pKQogCisvKgorICogRm9yIG5hbWVkIHJl ZmVyZW5jZXMuICBTaW1wbGUgbmFtZWQgcmVmZXJlbmNlcyBhcmUganVzdCBsaWtlIHNjYWxhcnMK KyAqIGZvciBlZmZpY2llbmN5LCBidXQgc3BlY2lhbCBuYW1lZCByZWZlcmVuY2VzIG5lZWQgZ2V0 L3NldCBmdW5jdGlvbnMuCisgKi8KKyNkZWZpbmUgR0VUUkVGTkFNRShQTSkgKCgoUE0pLT5ub2Rl LmZsYWdzICYgUE1fU1BFQ0lBTCkgPwlcCisJCQkoUE0pLT5nc3Uucy0+Z2V0Zm4oUE0pIDogKFBN KS0+dS5zdHIpCisjZGVmaW5lIFNFVFJFRk5BTUUoUE0sUykgKCgoUE0pLT5ub2RlLmZsYWdzICYg UE1fU1BFQ0lBTCkgPwkJXAorCQkJICAoUE0pLT5nc3Uucy0+c2V0Zm4oUE0sKFMpKSA6ICgoUE0p LT51LnN0ciA9IChTKSkpCisKIHN0YXRpYyBQYXJhbSBhcmd2cGFyYW07CiAKIC8qICJwYXJhbWV0 ZXIgdGFibGUiIC0gaGFzaCB0YWJsZSBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXJzCkBAIC01MjAs NyArNTI5LDcgQEAgZ2V0cGFyYW1ub2RlKEhhc2hUYWJsZSBodCwgY29uc3QgY2hhciAqbmFtKQog ICAgIEhhc2hOb2RlIGhuID0gZ2V0aGFzaG5vZGUyKGh0LCBuYW0pOwogICAgIFBhcmFtIHBtID0g KFBhcmFtKSBobjsKIAotICAgIGlmIChwbSAmJiBwbS0+dS5zdHIgJiYgKHBtLT5ub2RlLmZsYWdz ICYgUE1fQVVUT0xPQUQpKSB7CisgICAgaWYgKHBtICYmIChwbS0+bm9kZS5mbGFncyAmIFBNX0FV VE9MT0FEKSAmJiBwbS0+dS5zdHIpIHsKIAljaGFyICptbiA9IGR1cHN0cmluZyhwbS0+dS5zdHIp OwogCiAJKHZvaWQpZW5zdXJlZmVhdHVyZShtbiwgInA6IiwgKHBtLT5ub2RlLmZsYWdzICYgUE1f QVVUT0FMTCkgPyBOVUxMIDoKQEAgLTEwMDIsMTIgKzEwMTEsMTMgQEAgY3JlYXRlcGFyYW0oY2hh ciAqbmFtZSwgaW50IGZsYWdzKQogCSAgICBzdHJ1Y3QgYXNnbWVudCBzdG9wOwogCSAgICBzdG9w LmZsYWdzID0gUE1fTkFNRVJFRiB8IChmbGFncyAmIFBNX0xPQ0FMKTsKIAkgICAgc3RvcC5uYW1l ID0gb2xkcG0tPm5vZGUubmFtOwotCSAgICBzdG9wLnZhbHVlLnNjYWxhciA9IG9sZHBtLT51LnN0 cjsKKwkgICAgc3RvcC52YWx1ZS5zY2FsYXIgPSBHRVRSRUZOQU1FKG9sZHBtKTsKIAkgICAgbGFz dHBtID0gKFBhcmFtKXJlc29sdmVfbmFtZXJlZihvbGRwbSwgJnN0b3ApOwogCSAgICBpZiAobGFz dHBtKSB7CiAJCWlmIChsYXN0cG0tPm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVGKSB7Ci0JCSAgICBp ZiAobGFzdHBtLT51LnN0ciAmJiAqKGxhc3RwbS0+dS5zdHIpKSB7Ci0JCQluYW1lID0gbGFzdHBt LT51LnN0cjsKKwkJICAgIGNoYXIgKnJlZm5hbWUgPSBHRVRSRUZOQU1FKGxhc3RwbSk7CisJCSAg ICBpZiAocmVmbmFtZSAmJiAqcmVmbmFtZSkgeworCQkJbmFtZSA9IHJlZm5hbWU7CiAJCQlvbGRw bSA9IE5VTEw7CiAJCSAgICB9IGVsc2UgewogCQkJaWYgKCEobGFzdHBtLT5ub2RlLmZsYWdzICYg UE1fUkVBRE9OTFkpKQpAQCAtMjE0NSwyNSArMjE1NSwyOCBAQCBmZXRjaHZhbHVlKFZhbHVlIHYs IGNoYXIgKipwcHRyLCBpbnQgYnJhY2tzLCBpbnQgZmxhZ3MpCiAJICAgIG1lbXNldCh2LCAwLCBz aXplb2YoKnYpKTsKIAllbHNlCiAJICAgIHYgPSAoVmFsdWUpIGhjYWxsb2Moc2l6ZW9mICp2KTsK LQlpZiAoKHBtLT5ub2RlLmZsYWdzICYgUE1fTkFNRVJFRikgJiYgcG0tPnUuc3RyICYmICoocG0t PnUuc3RyKSkgewotCSAgICAvKiBvbmx5IGhhcHBlbnMgZm9yIG5hbWVyZWZzIHBvaW50aW5nIHRv IGFycmF5IGVsZW1lbnRzICovCi0JICAgIGNoYXIgKnJlZiA9IGR1cHN0cmluZyhwbS0+dS5zdHIp OwotCSAgICBjaGFyICpzcyA9IHBtLT53aWR0aCA/IHJlZiArIHBtLT53aWR0aCA6IE5VTEw7Ci0J ICAgIGlmIChzcykgewotCQlzYXYgPSAqc3M7Ci0JCSpzcyA9IDA7CisJaWYgKHBtLT5ub2RlLmZs YWdzICYgUE1fTkFNRVJFRikgeworCSAgICBjaGFyICpyZWZuYW1lID0gR0VUUkVGTkFNRShwbSk7 CisJICAgIGlmIChyZWZuYW1lICYmICpyZWZuYW1lKSB7CisJCS8qIG9ubHkgaGFwcGVucyBmb3Ig bmFtZXJlZnMgcG9pbnRpbmcgdG8gYXJyYXkgZWxlbWVudHMgKi8KKwkJY2hhciAqcmVmID0gZHVw c3RyaW5nKHJlZm5hbWUpOworCQljaGFyICpzcyA9IHBtLT53aWR0aCA/IHJlZiArIHBtLT53aWR0 aCA6IE5VTEw7CisJCWlmIChzcykgeworCQkgICAgc2F2ID0gKnNzOworCQkgICAgKnNzID0gMDsK KwkJfQorCQlQYXJhbSBwMSA9IChQYXJhbSlnZXRoYXNobm9kZTIocGFyYW10YWIsIHJlZik7CisJ CWlmICghKHAxICYmIChwbSA9IHVwc2NvcGUocDEsIHBtLT5iYXNlKSkpIHx8CisJCSAgICAoKHBt LT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpICYmCisJCSAgICAgIShwbS0+bm9kZS5mbGFncyAmIFBN X0RFQ0xBUkVEKSkpCisJCSAgICByZXR1cm4gTlVMTDsKKwkJaWYgKHNzKSB7CisJCSAgICBmbGFn cyB8PSBTQ0FOUE1fTk9FWEVDOworCQkgICAgKnNzID0gc2F2OworCQkgICAgcyA9IGR5bmNhdChz cywqcHB0cik7CisJCX0gZWxzZQorCQkgICAgcyA9ICpwcHRyOwogCSAgICB9Ci0JICAgIFBhcmFt IHAxID0gKFBhcmFtKWdldGhhc2hub2RlMihwYXJhbXRhYiwgcmVmKTsKLQkgICAgaWYgKCEocDEg JiYgKHBtID0gdXBzY29wZShwMSwgcG0tPmJhc2UpKSkgfHwKLQkJKChwbS0+bm9kZS5mbGFncyAm IFBNX1VOU0VUKSAmJgotCQkhKHBtLT5ub2RlLmZsYWdzICYgUE1fREVDTEFSRUQpKSkKLQkJcmV0 dXJuIE5VTEw7Ci0JICAgIGlmIChzcykgewotCQlmbGFncyB8PSBTQ0FOUE1fTk9FWEVDOwotCQkq c3MgPSBzYXY7Ci0JCXMgPSBkeW5jYXQoc3MsKnBwdHIpOwotCSAgICB9IGVsc2UKLQkJcyA9ICpw cHRyOwogCX0KIAlpZiAoUE1fVFlQRShwbS0+bm9kZS5mbGFncykgJiAoUE1fQVJSQVl8UE1fSEFT SEVEKSkgewogCSAgICAvKiBPdmVybG9hZCB2LT5pc2FyciBhcyB0aGUgZmxhZyBiaXRzIGZvciBo YXNoZWQgYXJyYXlzLiAqLwpAQCAtMzY0OCw3ICszNjYxLDcgQEAgbW9kX2V4cG9ydCBQYXJhbQog c2V0aXBhcmFtX25vX2NvbnZlcnQoY2hhciAqcywgemxvbmcgdmFsKQogewogICAgIC8qCi0gICAg ICogSWYgdGhlIHRhcmdldCBpcyBhbHJlYWR5IGFuIGludGVnZXIsIHRoaXNnZXRzIGNvbnZlcnRl ZAorICAgICAqIElmIHRoZSB0YXJnZXQgaXMgYWxyZWFkeSBhbiBpbnRlZ2VyLCB0aGlzIGdldHMg Y29udmVydGVkCiAgICAgICogYmFjay4gIExvdyB0ZWNobm9sb2d5IHJ1bGVzLgogICAgICAqLwog ICAgIGNoYXIgYnVmW0JESUdCVUZTSVpFXTsKQEAgLTYxMTUsMjIgKzYxMjgsMjMgQEAgcmVzb2x2 ZV9uYW1lcmVmKFBhcmFtIHBtLCBjb25zdCBBc2dtZW50IHN0b3ApCiAgICAgY29uc3QgY2hhciAq c2VlayA9IHN0b3AgPyBzdG9wLT52YWx1ZS5zY2FsYXIgOiBOVUxMOwogCiAgICAgaWYgKHBtICYm IChwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpKSB7Ci0JaWYgKHBtICYmIChwbS0+bm9kZS5m bGFncyAmIChQTV9VTlNFVHxQTV9UQUdHRUQpKSkgeworCWNoYXIgKnJlZm5hbWUgPSBHRVRSRUZO QU1FKHBtKTsKKwlpZiAocG0tPm5vZGUuZmxhZ3MgJiAoUE1fVU5TRVR8UE1fVEFHR0VEKSkgewog CSAgICAvKiBTZW1hcGhvcmUgd2l0aCBjcmVhdGVwYXJhbSgpICovCiAJICAgIHBtLT5ub2RlLmZs YWdzICY9IH5QTV9VTlNFVDsKIAkgICAgaWYgKHBtLT5ub2RlLmZsYWdzICYgUE1fTkVXUkVGKQkv KiBTZWUgc2V0bG9vcHZhcigpICovCiAJCXJldHVybiBOVUxMOwotCSAgICBpZiAocG0tPnUuc3Ry ICYmICoocG0tPnUuc3RyKSAmJiAocG0tPm5vZGUuZmxhZ3MgJiBQTV9UQUdHRUQpKQorCSAgICBp ZiAocmVmbmFtZSAmJiAqcmVmbmFtZSAmJiAocG0tPm5vZGUuZmxhZ3MgJiBQTV9UQUdHRUQpKQog CQlwbS0+bm9kZS5mbGFncyB8PSBQTV9TRUxGUkVGOwkvKiBTZWUgc2V0c2NvcGUoKSAqLwogCSAg ICByZXR1cm4gKEhhc2hOb2RlKSBwbTsKLQl9IGVsc2UgaWYgKHBtLT51LnN0cikgeworCX0gZWxz ZSBpZiAocmVmbmFtZSkgewogCSAgICBpZiAoKHBtLT5ub2RlLmZsYWdzICYgUE1fVEFHR0VEKSB8 fAotCQkoc3RvcCAmJiBzdHJjbXAocG0tPnUuc3RyLCBzdG9wLT5uYW1lKSA9PSAwKSkgewotCQkv KiB6d2Fybm5hbShwbS0+dS5zdHIsICJpbnZhbGlkIHNlbGYgcmVmZXJlbmNlIik7ICovCisJCShz dG9wICYmIHN0cmNtcChyZWZuYW1lLCBzdG9wLT5uYW1lKSA9PSAwKSkgeworCQkvKiB6d2Fybm5h bShyZWZuYW1lLCAiaW52YWxpZCBzZWxmIHJlZmVyZW5jZSIpOyAqLwogCQlyZXR1cm4gc3RvcCA/ IChIYXNoTm9kZSlwbSA6IE5VTEw7CiAJICAgIH0KLQkgICAgaWYgKCoocG0tPnUuc3RyKSkKLQkJ c2VlayA9IHBtLT51LnN0cjsKKwkgICAgaWYgKCpyZWZuYW1lKQorCQlzZWVrID0gcmVmbmFtZTsK IAl9CiAgICAgfQogICAgIGVsc2UgaWYgKHBtICYmICEoc3RvcCAmJiAoc3RvcC0+ZmxhZ3MgJiBQ TV9OQU1FUkVGKSkpCkBAIC02MTgwLDggKzYxOTQsMTMgQEAgc2V0bG9vcHZhcihjaGFyICpuYW1l LCBjaGFyICp2YWx1ZSkKICAgUGFyYW0gcG0gPSAoUGFyYW0pIGdldGhhc2hub2RlMihyZWFscGFy YW10YWIsIG5hbWUpOwogCiAgIGlmIChwbSAmJiAocG0tPm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVG KSkgeworICAgICAgaWYgKHBtLT5ub2RlLmZsYWdzICYgUE1fUkVBRE9OTFkpIHsKKwkgIC8qIEJh c2ggZXJyb3IgaXM6ICIlczogcmVhZG9ubHkgdmFyaWFibGUiICovCisJICB6ZXJyKCJyZWFkLW9u bHkgcmVmZXJlbmNlOiAlcyIsIHBtLT5ub2RlLm5hbSk7CisJICByZXR1cm47CisgICAgICB9CiAg ICAgICBwbS0+YmFzZSA9IHBtLT53aWR0aCA9IDA7Ci0gICAgICBwbS0+dS5zdHIgPSB6dHJkdXAo dmFsdWUpOworICAgICAgU0VUUkVGTkFNRShwbSwgenRyZHVwKHZhbHVlKSk7CiAgICAgICBwbS0+ bm9kZS5mbGFncyAmPSB+UE1fVU5TRVQ7CiAgICAgICBwbS0+bm9kZS5mbGFncyB8PSBQTV9ORVdS RUY7CiAgICAgICBzZXRzY29wZShwbSk7CkBAIC02MTk3LDcgKzYyMTYsOCBAQCBzZXRzY29wZShQ YXJhbSBwbSkKICAgICBpZiAocG0tPm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVGKSB7CiAJUGFyYW0g YmFzZXBtOwogCXN0cnVjdCBhc2dtZW50IHN0b3A7Ci0JY2hhciAqdCA9IHBtLT51LnN0ciA/IGl0 eXBlX2VuZChwbS0+dS5zdHIsIElOQU1FU1BDLCAwKSA6IE5VTEw7CisJY2hhciAqcmVmbmFtZSA9 IEdFVFJFRk5BTUUocG0pOworCWNoYXIgKnQgPSByZWZuYW1lID8gaXR5cGVfZW5kKHJlZm5hbWUs IElOQU1FU1BDLCAwKSA6IE5VTEw7CiAKIAkvKiBUZW1wb3JhcmlseSBjaGFuZ2UgbmFtZXJlZiB0 byBhcnJheSBwYXJhbWV0ZXIgaXRzZWxmICovCiAJaWYgKHQgJiYgKnQgPT0gJ1snKQpAQCAtNjIx MSw3ICs2MjMxLDcgQEAgc2V0c2NvcGUoUGFyYW0gcG0pCiAJICAgIHN0b3AuZmxhZ3MgfD0gUE1f TE9DQUw7CiAJYmFzZXBtID0gKFBhcmFtKXJlc29sdmVfbmFtZXJlZihwbSwgJnN0b3ApOwogCWlm ICh0KSB7Ci0JICAgIHBtLT53aWR0aCA9IHQgLSBwbS0+dS5zdHI7CisJICAgIHBtLT53aWR0aCA9 IHQgLSByZWZuYW1lOwogCSAgICAqdCA9ICdbJzsKIAl9CiAJaWYgKGJhc2VwbSkgewpAQCAtNjIy MCwyMyArNjI0MCwyMyBAQCBzZXRzY29wZShQYXJhbSBwbSkKIAkJICAgIGlmIChwbS0+bm9kZS5m bGFncyAmIFBNX1NFTEZSRUYpIHsKIAkJCS8qIExvb3Agc2lnbmFsbGVkIGJ5IHJlc29sdmVfbmFt ZXJlZigpICovCiAJCQlpZiAodXBzY29wZShwbSwgcG0tPmJhc2UpID09IHBtKSB7Ci0JCQkgICAg emVycigiJXM6IGludmFsaWQgc2VsZiByZWZlcmVuY2UiLCBwbS0+dS5zdHIpOworCQkJICAgIHpl cnIoIiVzOiBpbnZhbGlkIHNlbGYgcmVmZXJlbmNlIiwgcmVmbmFtZSk7CiAJCQkgICAgdW5zZXRw YXJhbV9wbShwbSwgMCwgMSk7CiAJCQkgICAgcmV0dXJuOwogCQkJfQogCQkJcG0tPm5vZGUuZmxh Z3MgJj0gflBNX1NFTEZSRUY7CiAJCSAgICB9IGVsc2UgaWYgKHBtLT5iYXNlID09IHBtLT5sZXZl bCkgewotCQkJaWYgKHBtLT51LnN0ciAmJiAqKHBtLT51LnN0cikgJiYKLQkJCSAgICBzdHJjbXAo cG0tPm5vZGUubmFtLCBwbS0+dS5zdHIpID09IDApIHsKLQkJCSAgICB6ZXJyKCIlczogaW52YWxp ZCBzZWxmIHJlZmVyZW5jZSIsIHBtLT51LnN0cik7CisJCQlpZiAocmVmbmFtZSAmJiAqcmVmbmFt ZSAmJgorCQkJICAgIHN0cmNtcChwbS0+bm9kZS5uYW0sIHJlZm5hbWUpID09IDApIHsKKwkJCSAg ICB6ZXJyKCIlczogaW52YWxpZCBzZWxmIHJlZmVyZW5jZSIsIHJlZm5hbWUpOwogCQkJICAgIHVu c2V0cGFyYW1fcG0ocG0sIDAsIDEpOwogCQkJICAgIHJldHVybjsKIAkJCX0KIAkJICAgIH0KLQkJ fSBlbHNlIGlmIChiYXNlcG0tPnUuc3RyKSB7CisJCX0gZWxzZSBpZiAoKHQgPSBHRVRSRUZOQU1F KGJhc2VwbSkpKSB7CiAJCSAgICBpZiAoYmFzZXBtLT5iYXNlIDw9IGJhc2VwbS0+bGV2ZWwgJiYK LQkJCXN0cmNtcChwbS0+bm9kZS5uYW0sIGJhc2VwbS0+dS5zdHIpID09IDApIHsKLQkJCXplcnIo IiVzOiBpbnZhbGlkIHNlbGYgcmVmZXJlbmNlIiwgcG0tPnUuc3RyKTsKKwkJCXN0cmNtcChwbS0+ bm9kZS5uYW0sIHQpID09IDApIHsKKwkJCXplcnIoIiVzOiBpbnZhbGlkIHNlbGYgcmVmZXJlbmNl IiwgcmVmbmFtZSk7CiAJCQl1bnNldHBhcmFtX3BtKHBtLCAwLCAxKTsKIAkJCXJldHVybjsKIAkJ ICAgIH0KQEAgLTYyNTEsMTEgKzYyNzEsMTEgQEAgc2V0c2NvcGUoUGFyYW0gcG0pCiAJCXVuc2V0 cGFyYW1fcG0ocG0sIDAsIDEpOwogCSAgICB9IGVsc2UgaWYgKGlzc2V0KFdBUk5ORVNURURWQVIp KQogCQl6d2FybigicmVmZXJlbmNlICVzIGluIGVuY2xvc2luZyBzY29wZSBzZXQgdG8gbG9jYWwg dmFyaWFibGUgJXMiLAotCQkgICAgICBwbS0+bm9kZS5uYW0sIHBtLT51LnN0cik7CisJCSAgICAg IHBtLT5ub2RlLm5hbSwgcmVmbmFtZSk7CiAJfQotCWlmIChwbS0+dS5zdHIgJiYgdXBzY29wZShw bSwgcG0tPmJhc2UpID09IHBtICYmCi0JICAgIHN0cmNtcChwbS0+bm9kZS5uYW0sIHBtLT51LnN0 cikgPT0gMCkgewotCSAgICB6ZXJyKCIlczogaW52YWxpZCBzZWxmIHJlZmVyZW5jZSIsIHBtLT51 LnN0cik7CisJaWYgKHJlZm5hbWUgJiYgdXBzY29wZShwbSwgcG0tPmJhc2UpID09IHBtICYmCisJ ICAgIHN0cmNtcChwbS0+bm9kZS5uYW0sIHJlZm5hbWUpID09IDApIHsKKwkgICAgemVycigiJXM6 IGludmFsaWQgc2VsZiByZWZlcmVuY2UiLCByZWZuYW1lKTsKIAkgICAgdW5zZXRwYXJhbV9wbShw bSwgMCwgMSk7CiAJfQogICAgIH0KCg== --000000000000e7a4dc05f5a6a1a3--