From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FB79CA9EBD for ; Mon, 28 Oct 2019 09:24:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0EC4E21850 for ; Mon, 28 Oct 2019 09:24:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728941AbfJ1JYc (ORCPT ); Mon, 28 Oct 2019 05:24:32 -0400 Received: from mga14.intel.com ([192.55.52.115]:42059 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728194AbfJ1JYb (ORCPT ); Mon, 28 Oct 2019 05:24:31 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 02:24:30 -0700 X-IronPort-AV: E=Sophos;i="5.68,239,1569308400"; d="scan'208";a="193204146" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 02:24:25 -0700 From: Jani Nikula To: Changbin Du Cc: Jonathan Corbet , Changbin Du , linux-pci@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-crypto@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-wireless@vger.kernel.org, linux-fpga@vger.kernel.org, linux-usb@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Matthew Wilcox , Thomas Zimmermann Subject: Re: [PATCH v2] kernel-doc: rename the kernel-doc directive 'functions' to 'identifiers' In-Reply-To: <20191025144802.uixg2crhw6h7gghq@mail.google.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20191020131717.28990-1-changbin.du@gmail.com> <20191024121940.1d6a64df@lwn.net> <87woctb9cj.fsf@intel.com> <20191025144802.uixg2crhw6h7gghq@mail.google.com> Date: Mon, 28 Oct 2019 11:24:22 +0200 Message-ID: <87v9s99q9l.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org On Fri, 25 Oct 2019, Changbin Du wrote: > On Fri, Oct 25, 2019 at 09:57:48AM +0300, Jani Nikula wrote: >> On Thu, 24 Oct 2019, Jonathan Corbet wrote: >> > On Sun, 20 Oct 2019 21:17:17 +0800 >> > Changbin Du wrote: >> > >> >> The 'functions' directive is not only for functions, but also works for >> >> structs/unions. So the name is misleading. This patch renames it to >> >> 'identifiers', which specific the functions/types to be included in >> >> documentation. We keep the old name as an alias of the new one before >> >> all documentation are updated. >> >> >> >> Signed-off-by: Changbin Du >> > >> > So I think this is basically OK, but I have one more request... >> > >> > [...] >> > >> >> diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py >> >> index 1159405cb920..0689f9c37f1e 100644 >> >> --- a/Documentation/sphinx/kerneldoc.py >> >> +++ b/Documentation/sphinx/kerneldoc.py >> >> @@ -59,9 +59,10 @@ class KernelDocDirective(Directive): >> >> optional_arguments = 4 >> >> option_spec = { >> >> 'doc': directives.unchanged_required, >> >> - 'functions': directives.unchanged, >> >> 'export': directives.unchanged, >> >> 'internal': directives.unchanged, >> >> + 'identifiers': directives.unchanged, >> >> + 'functions': directives.unchanged, # alias of 'identifiers' >> >> } >> >> has_content = False >> >> >> >> @@ -71,6 +72,7 @@ class KernelDocDirective(Directive): >> >> >> >> filename = env.config.kerneldoc_srctree + '/' + self.arguments[0] >> >> export_file_patterns = [] >> >> + identifiers = None >> >> >> >> # Tell sphinx of the dependency >> >> env.note_dependency(os.path.abspath(filename)) >> >> @@ -86,19 +88,22 @@ class KernelDocDirective(Directive): >> >> export_file_patterns = str(self.options.get('internal')).split() >> >> elif 'doc' in self.options: >> >> cmd += ['-function', str(self.options.get('doc'))] >> >> + elif 'identifiers' in self.options: >> >> + identifiers = self.options.get('identifiers').split() >> >> elif 'functions' in self.options: >> >> - functions = self.options.get('functions').split() >> >> - if functions: >> >> - for f in functions: >> >> - cmd += ['-function', f] >> >> - else: >> >> - cmd += ['-no-doc-sections'] >> >> + identifiers = self.options.get('functions').split() >> > >> > Rather than do this, can you just change the elif line to read: >> > >> > elif ('identifiers' in self.options) or ('functions' in self.options): >> > >> > ...then leave the rest of the code intact? It keeps the logic together, >> > and avoids the confusing distinction between identifiers=='' and >> > identifiers==None . >> >> I think the problem is you still need to distinguish between the two for >> the get('functions') part. >> >> One option is to rename 'functions' to 'identifiers' in the above block, >> and put something like this above the whole if ladder (untested): >> >> # backward compat >> if 'functions' in self.options: >> if 'identifiers' in self.options: >> kernellog.warn(env.app, "fail") > This will miss the content of 'functions' directive if both exist in > same doc. Did you not notice your patch does the same, except silently, while this would produce a warning? Which one is less surprising? > >> else: >> self.options.set('identifiers', self.options.get('functions')) >> >> BR, >> Jani. >> > After comparing, I still perfer my original code which is simpler. :) But is it, really? I agree with Jon about the distinction between None and '' being confusing. BR, Jani. > >> >> -- >> Jani Nikula, Intel Open Source Graphics Center -- Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: Received: from mga14.intel.com ([192.55.52.115]:42059 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728194AbfJ1JYb (ORCPT ); Mon, 28 Oct 2019 05:24:31 -0400 From: Jani Nikula Subject: Re: [PATCH v2] kernel-doc: rename the kernel-doc directive 'functions' to 'identifiers' In-Reply-To: <20191025144802.uixg2crhw6h7gghq@mail.google.com> References: <20191020131717.28990-1-changbin.du@gmail.com> <20191024121940.1d6a64df@lwn.net> <87woctb9cj.fsf@intel.com> <20191025144802.uixg2crhw6h7gghq@mail.google.com> Date: Mon, 28 Oct 2019 11:24:22 +0200 Message-ID: <87v9s99q9l.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-fpga-owner@vger.kernel.org List-Id: linux-fpga@vger.kernel.org To: Changbin Du Cc: Jonathan Corbet , linux-pci@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-crypto@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-wireless@vger.kernel.org, linux-fpga@vger.kernel.org, linux-usb@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Matthew Wilcox , Thomas Zimmermann On Fri, 25 Oct 2019, Changbin Du wrote: > On Fri, Oct 25, 2019 at 09:57:48AM +0300, Jani Nikula wrote: >> On Thu, 24 Oct 2019, Jonathan Corbet wrote: >> > On Sun, 20 Oct 2019 21:17:17 +0800 >> > Changbin Du wrote: >> > >> >> The 'functions' directive is not only for functions, but also works for >> >> structs/unions. So the name is misleading. This patch renames it to >> >> 'identifiers', which specific the functions/types to be included in >> >> documentation. We keep the old name as an alias of the new one before >> >> all documentation are updated. >> >> >> >> Signed-off-by: Changbin Du >> > >> > So I think this is basically OK, but I have one more request... >> > >> > [...] >> > >> >> diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py >> >> index 1159405cb920..0689f9c37f1e 100644 >> >> --- a/Documentation/sphinx/kerneldoc.py >> >> +++ b/Documentation/sphinx/kerneldoc.py >> >> @@ -59,9 +59,10 @@ class KernelDocDirective(Directive): >> >> optional_arguments = 4 >> >> option_spec = { >> >> 'doc': directives.unchanged_required, >> >> - 'functions': directives.unchanged, >> >> 'export': directives.unchanged, >> >> 'internal': directives.unchanged, >> >> + 'identifiers': directives.unchanged, >> >> + 'functions': directives.unchanged, # alias of 'identifiers' >> >> } >> >> has_content = False >> >> >> >> @@ -71,6 +72,7 @@ class KernelDocDirective(Directive): >> >> >> >> filename = env.config.kerneldoc_srctree + '/' + self.arguments[0] >> >> export_file_patterns = [] >> >> + identifiers = None >> >> >> >> # Tell sphinx of the dependency >> >> env.note_dependency(os.path.abspath(filename)) >> >> @@ -86,19 +88,22 @@ class KernelDocDirective(Directive): >> >> export_file_patterns = str(self.options.get('internal')).split() >> >> elif 'doc' in self.options: >> >> cmd += ['-function', str(self.options.get('doc'))] >> >> + elif 'identifiers' in self.options: >> >> + identifiers = self.options.get('identifiers').split() >> >> elif 'functions' in self.options: >> >> - functions = self.options.get('functions').split() >> >> - if functions: >> >> - for f in functions: >> >> - cmd += ['-function', f] >> >> - else: >> >> - cmd += ['-no-doc-sections'] >> >> + identifiers = self.options.get('functions').split() >> > >> > Rather than do this, can you just change the elif line to read: >> > >> > elif ('identifiers' in self.options) or ('functions' in self.options): >> > >> > ...then leave the rest of the code intact? It keeps the logic together, >> > and avoids the confusing distinction between identifiers=='' and >> > identifiers==None . >> >> I think the problem is you still need to distinguish between the two for >> the get('functions') part. >> >> One option is to rename 'functions' to 'identifiers' in the above block, >> and put something like this above the whole if ladder (untested): >> >> # backward compat >> if 'functions' in self.options: >> if 'identifiers' in self.options: >> kernellog.warn(env.app, "fail") > This will miss the content of 'functions' directive if both exist in > same doc. Did you not notice your patch does the same, except silently, while this would produce a warning? Which one is less surprising? > >> else: >> self.options.set('identifiers', self.options.get('functions')) >> >> BR, >> Jani. >> > After comparing, I still perfer my original code which is simpler. :) But is it, really? I agree with Jon about the distinction between None and '' being confusing. BR, Jani. > >> >> -- >> Jani Nikula, Intel Open Source Graphics Center -- Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2] kernel-doc: rename the kernel-doc directive 'functions' to 'identifiers' Date: Mon, 28 Oct 2019 11:24:22 +0200 Message-ID: <87v9s99q9l.fsf@intel.com> References: <20191020131717.28990-1-changbin.du@gmail.com> <20191024121940.1d6a64df@lwn.net> <87woctb9cj.fsf@intel.com> <20191025144802.uixg2crhw6h7gghq@mail.google.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <20191025144802.uixg2crhw6h7gghq-Ru1csStN2yBibQn6LdNjmg@public.gmane.org> Sender: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Jonathan Corbet , Changbin Du , linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kselftest-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-fpga-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Matthew Wilcox , Thomas Zimmermann List-Id: dri-devel@lists.freedesktop.org On Fri, 25 Oct 2019, Changbin Du wrote: > On Fri, Oct 25, 2019 at 09:57:48AM +0300, Jani Nikula wrote: >> On Thu, 24 Oct 2019, Jonathan Corbet wrote: >> > On Sun, 20 Oct 2019 21:17:17 +0800 >> > Changbin Du wrote: >> > >> >> The 'functions' directive is not only for functions, but also works for >> >> structs/unions. So the name is misleading. This patch renames it to >> >> 'identifiers', which specific the functions/types to be included in >> >> documentation. We keep the old name as an alias of the new one before >> >> all documentation are updated. >> >> >> >> Signed-off-by: Changbin Du >> > >> > So I think this is basically OK, but I have one more request... >> > >> > [...] >> > >> >> diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py >> >> index 1159405cb920..0689f9c37f1e 100644 >> >> --- a/Documentation/sphinx/kerneldoc.py >> >> +++ b/Documentation/sphinx/kerneldoc.py >> >> @@ -59,9 +59,10 @@ class KernelDocDirective(Directive): >> >> optional_arguments = 4 >> >> option_spec = { >> >> 'doc': directives.unchanged_required, >> >> - 'functions': directives.unchanged, >> >> 'export': directives.unchanged, >> >> 'internal': directives.unchanged, >> >> + 'identifiers': directives.unchanged, >> >> + 'functions': directives.unchanged, # alias of 'identifiers' >> >> } >> >> has_content = False >> >> >> >> @@ -71,6 +72,7 @@ class KernelDocDirective(Directive): >> >> >> >> filename = env.config.kerneldoc_srctree + '/' + self.arguments[0] >> >> export_file_patterns = [] >> >> + identifiers = None >> >> >> >> # Tell sphinx of the dependency >> >> env.note_dependency(os.path.abspath(filename)) >> >> @@ -86,19 +88,22 @@ class KernelDocDirective(Directive): >> >> export_file_patterns = str(self.options.get('internal')).split() >> >> elif 'doc' in self.options: >> >> cmd += ['-function', str(self.options.get('doc'))] >> >> + elif 'identifiers' in self.options: >> >> + identifiers = self.options.get('identifiers').split() >> >> elif 'functions' in self.options: >> >> - functions = self.options.get('functions').split() >> >> - if functions: >> >> - for f in functions: >> >> - cmd += ['-function', f] >> >> - else: >> >> - cmd += ['-no-doc-sections'] >> >> + identifiers = self.options.get('functions').split() >> > >> > Rather than do this, can you just change the elif line to read: >> > >> > elif ('identifiers' in self.options) or ('functions' in self.options): >> > >> > ...then leave the rest of the code intact? It keeps the logic together, >> > and avoids the confusing distinction between identifiers=='' and >> > identifiers==None . >> >> I think the problem is you still need to distinguish between the two for >> the get('functions') part. >> >> One option is to rename 'functions' to 'identifiers' in the above block, >> and put something like this above the whole if ladder (untested): >> >> # backward compat >> if 'functions' in self.options: >> if 'identifiers' in self.options: >> kernellog.warn(env.app, "fail") > This will miss the content of 'functions' directive if both exist in > same doc. Did you not notice your patch does the same, except silently, while this would produce a warning? Which one is less surprising? > >> else: >> self.options.set('identifiers', self.options.get('functions')) >> >> BR, >> Jani. >> > After comparing, I still perfer my original code which is simpler. :) But is it, really? I agree with Jon about the distinction between None and '' being confusing. BR, Jani. > >> >> -- >> Jani Nikula, Intel Open Source Graphics Center -- Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62DABCA9EBC for ; Mon, 28 Oct 2019 09:24:33 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 40D5A21850 for ; Mon, 28 Oct 2019 09:24:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 40D5A21850 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A7A5E89F8B; Mon, 28 Oct 2019 09:24:32 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF38689F8B; Mon, 28 Oct 2019 09:24:31 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 02:24:30 -0700 X-IronPort-AV: E=Sophos;i="5.68,239,1569308400"; d="scan'208";a="193204146" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 02:24:25 -0700 From: Jani Nikula To: Changbin Du Subject: Re: [PATCH v2] kernel-doc: rename the kernel-doc directive 'functions' to 'identifiers' In-Reply-To: <20191025144802.uixg2crhw6h7gghq@mail.google.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20191020131717.28990-1-changbin.du@gmail.com> <20191024121940.1d6a64df@lwn.net> <87woctb9cj.fsf@intel.com> <20191025144802.uixg2crhw6h7gghq@mail.google.com> Date: Mon, 28 Oct 2019 11:24:22 +0200 Message-ID: <87v9s99q9l.fsf@intel.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-usb@vger.kernel.org, Matthew Wilcox , Thomas Zimmermann , linux-doc@vger.kernel.org, linux-pci@vger.kernel.org, linux-fpga@vger.kernel.org, Jonathan Corbet , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-crypto@vger.kernel.org, linux-kselftest@vger.kernel.org, intel-gfx@lists.freedesktop.org, Changbin Du Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191028092422.DQoo1LqZVa6K7Ho6wTZk7fq38JHOZqMvVt61lS1WK6g@z> T24gRnJpLCAyNSBPY3QgMjAxOSwgQ2hhbmdiaW4gRHUgPGNoYW5nYmluLmR1QGdtYWlsLmNvbT4g d3JvdGU6Cj4gT24gRnJpLCBPY3QgMjUsIDIwMTkgYXQgMDk6NTc6NDhBTSArMDMwMCwgSmFuaSBO aWt1bGEgd3JvdGU6Cj4+IE9uIFRodSwgMjQgT2N0IDIwMTksIEpvbmF0aGFuIENvcmJldCA8Y29y YmV0QGx3bi5uZXQ+IHdyb3RlOgo+PiA+IE9uIFN1biwgMjAgT2N0IDIwMTkgMjE6MTc6MTcgKzA4 MDAKPj4gPiBDaGFuZ2JpbiBEdSA8Y2hhbmdiaW4uZHVAZ21haWwuY29tPiB3cm90ZToKPj4gPgo+ PiA+PiBUaGUgJ2Z1bmN0aW9ucycgZGlyZWN0aXZlIGlzIG5vdCBvbmx5IGZvciBmdW5jdGlvbnMs IGJ1dCBhbHNvIHdvcmtzIGZvcgo+PiA+PiBzdHJ1Y3RzL3VuaW9ucy4gU28gdGhlIG5hbWUgaXMg bWlzbGVhZGluZy4gVGhpcyBwYXRjaCByZW5hbWVzIGl0IHRvCj4+ID4+ICdpZGVudGlmaWVycycs IHdoaWNoIHNwZWNpZmljIHRoZSBmdW5jdGlvbnMvdHlwZXMgdG8gYmUgaW5jbHVkZWQgaW4KPj4g Pj4gZG9jdW1lbnRhdGlvbi4gV2Uga2VlcCB0aGUgb2xkIG5hbWUgYXMgYW4gYWxpYXMgb2YgdGhl IG5ldyBvbmUgYmVmb3JlCj4+ID4+IGFsbCBkb2N1bWVudGF0aW9uIGFyZSB1cGRhdGVkLgo+PiA+ PiAKPj4gPj4gU2lnbmVkLW9mZi1ieTogQ2hhbmdiaW4gRHUgPGNoYW5nYmluLmR1QGdtYWlsLmNv bT4KPj4gPgo+PiA+IFNvIEkgdGhpbmsgdGhpcyBpcyBiYXNpY2FsbHkgT0ssIGJ1dCBJIGhhdmUg b25lIG1vcmUgcmVxdWVzdC4uLgo+PiA+Cj4+ID4gWy4uLl0KPj4gPgo+PiA+PiBkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9zcGhpbngva2VybmVsZG9jLnB5IGIvRG9jdW1lbnRhdGlvbi9zcGhp bngva2VybmVsZG9jLnB5Cj4+ID4+IGluZGV4IDExNTk0MDVjYjkyMC4uMDY4OWY5YzM3ZjFlIDEw MDY0NAo+PiA+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL3NwaGlueC9rZXJuZWxkb2MucHkKPj4gPj4g KysrIGIvRG9jdW1lbnRhdGlvbi9zcGhpbngva2VybmVsZG9jLnB5Cj4+ID4+IEBAIC01OSw5ICs1 OSwxMCBAQCBjbGFzcyBLZXJuZWxEb2NEaXJlY3RpdmUoRGlyZWN0aXZlKToKPj4gPj4gICAgICBv cHRpb25hbF9hcmd1bWVudHMgPSA0Cj4+ID4+ICAgICAgb3B0aW9uX3NwZWMgPSB7Cj4+ID4+ICAg ICAgICAgICdkb2MnOiBkaXJlY3RpdmVzLnVuY2hhbmdlZF9yZXF1aXJlZCwKPj4gPj4gLSAgICAg ICAgJ2Z1bmN0aW9ucyc6IGRpcmVjdGl2ZXMudW5jaGFuZ2VkLAo+PiA+PiAgICAgICAgICAnZXhw b3J0JzogZGlyZWN0aXZlcy51bmNoYW5nZWQsCj4+ID4+ICAgICAgICAgICdpbnRlcm5hbCc6IGRp cmVjdGl2ZXMudW5jaGFuZ2VkLAo+PiA+PiArICAgICAgICAnaWRlbnRpZmllcnMnOiBkaXJlY3Rp dmVzLnVuY2hhbmdlZCwKPj4gPj4gKyAgICAgICAgJ2Z1bmN0aW9ucyc6IGRpcmVjdGl2ZXMudW5j aGFuZ2VkLCAgIyBhbGlhcyBvZiAnaWRlbnRpZmllcnMnCj4+ID4+ICAgICAgfQo+PiA+PiAgICAg IGhhc19jb250ZW50ID0gRmFsc2UKPj4gPj4gIAo+PiA+PiBAQCAtNzEsNiArNzIsNyBAQCBjbGFz cyBLZXJuZWxEb2NEaXJlY3RpdmUoRGlyZWN0aXZlKToKPj4gPj4gIAo+PiA+PiAgICAgICAgICBm aWxlbmFtZSA9IGVudi5jb25maWcua2VybmVsZG9jX3NyY3RyZWUgKyAnLycgKyBzZWxmLmFyZ3Vt ZW50c1swXQo+PiA+PiAgICAgICAgICBleHBvcnRfZmlsZV9wYXR0ZXJucyA9IFtdCj4+ID4+ICsg ICAgICAgIGlkZW50aWZpZXJzID0gTm9uZQo+PiA+PiAgCj4+ID4+ICAgICAgICAgICMgVGVsbCBz cGhpbnggb2YgdGhlIGRlcGVuZGVuY3kKPj4gPj4gICAgICAgICAgZW52Lm5vdGVfZGVwZW5kZW5j eShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQo+PiA+PiBAQCAtODYsMTkgKzg4LDIyIEBAIGNs YXNzIEtlcm5lbERvY0RpcmVjdGl2ZShEaXJlY3RpdmUpOgo+PiA+PiAgICAgICAgICAgICAgZXhw b3J0X2ZpbGVfcGF0dGVybnMgPSBzdHIoc2VsZi5vcHRpb25zLmdldCgnaW50ZXJuYWwnKSkuc3Bs aXQoKQo+PiA+PiAgICAgICAgICBlbGlmICdkb2MnIGluIHNlbGYub3B0aW9uczoKPj4gPj4gICAg ICAgICAgICAgIGNtZCArPSBbJy1mdW5jdGlvbicsIHN0cihzZWxmLm9wdGlvbnMuZ2V0KCdkb2Mn KSldCj4+ID4+ICsgICAgICAgIGVsaWYgJ2lkZW50aWZpZXJzJyBpbiBzZWxmLm9wdGlvbnM6Cj4+ ID4+ICsgICAgICAgICAgICBpZGVudGlmaWVycyA9IHNlbGYub3B0aW9ucy5nZXQoJ2lkZW50aWZp ZXJzJykuc3BsaXQoKQo+PiA+PiAgICAgICAgICBlbGlmICdmdW5jdGlvbnMnIGluIHNlbGYub3B0 aW9uczoKPj4gPj4gLSAgICAgICAgICAgIGZ1bmN0aW9ucyA9IHNlbGYub3B0aW9ucy5nZXQoJ2Z1 bmN0aW9ucycpLnNwbGl0KCkKPj4gPj4gLSAgICAgICAgICAgIGlmIGZ1bmN0aW9uczoKPj4gPj4g LSAgICAgICAgICAgICAgICBmb3IgZiBpbiBmdW5jdGlvbnM6Cj4+ID4+IC0gICAgICAgICAgICAg ICAgICAgIGNtZCArPSBbJy1mdW5jdGlvbicsIGZdCj4+ID4+IC0gICAgICAgICAgICBlbHNlOgo+ PiA+PiAtICAgICAgICAgICAgICAgIGNtZCArPSBbJy1uby1kb2Mtc2VjdGlvbnMnXQo+PiA+PiAr ICAgICAgICAgICAgaWRlbnRpZmllcnMgPSBzZWxmLm9wdGlvbnMuZ2V0KCdmdW5jdGlvbnMnKS5z cGxpdCgpCj4+ID4KPj4gPiBSYXRoZXIgdGhhbiBkbyB0aGlzLCBjYW4geW91IGp1c3QgY2hhbmdl IHRoZSBlbGlmIGxpbmUgdG8gcmVhZDoKPj4gPgo+PiA+ICAgICBlbGlmICgnaWRlbnRpZmllcnMn IGluIHNlbGYub3B0aW9ucykgb3IgKCdmdW5jdGlvbnMnIGluIHNlbGYub3B0aW9ucyk6Cj4+ID4K Pj4gPiAuLi50aGVuIGxlYXZlIHRoZSByZXN0IG9mIHRoZSBjb2RlIGludGFjdD8gIEl0IGtlZXBz IHRoZSBsb2dpYyB0b2dldGhlciwKPj4gPiBhbmQgYXZvaWRzIHRoZSBjb25mdXNpbmcgZGlzdGlu Y3Rpb24gYmV0d2VlbiBpZGVudGlmaWVycz09JycgYW5kCj4+ID4gaWRlbnRpZmllcnM9PU5vbmUg Lgo+PiAKPj4gSSB0aGluayB0aGUgcHJvYmxlbSBpcyB5b3Ugc3RpbGwgbmVlZCB0byBkaXN0aW5n dWlzaCBiZXR3ZWVuIHRoZSB0d28gZm9yCj4+IHRoZSBnZXQoJ2Z1bmN0aW9ucycpIHBhcnQuCj4+ IAo+PiBPbmUgb3B0aW9uIGlzIHRvIHJlbmFtZSAnZnVuY3Rpb25zJyB0byAnaWRlbnRpZmllcnMn IGluIHRoZSBhYm92ZSBibG9jaywKPj4gYW5kIHB1dCBzb21ldGhpbmcgbGlrZSB0aGlzIGFib3Zl IHRoZSB3aG9sZSBpZiBsYWRkZXIgKHVudGVzdGVkKToKPj4gCj4+ICAgICAgICAgIyBiYWNrd2Fy ZCBjb21wYXQKPj4gICAgICAgICBpZiAnZnVuY3Rpb25zJyBpbiBzZWxmLm9wdGlvbnM6Cj4+ICAg ICAgICAgICAgIGlmICdpZGVudGlmaWVycycgaW4gc2VsZi5vcHRpb25zOgo+PiAgICAgICAgICAg ICAgICAga2VybmVsbG9nLndhcm4oZW52LmFwcCwgImZhaWwiKQo+IFRoaXMgd2lsbCBtaXNzIHRo ZSBjb250ZW50IG9mICdmdW5jdGlvbnMnIGRpcmVjdGl2ZSBpZiBib3RoIGV4aXN0IGluCj4gc2Ft ZSBkb2MuCgpEaWQgeW91IG5vdCBub3RpY2UgeW91ciBwYXRjaCBkb2VzIHRoZSBzYW1lLCBleGNl cHQgc2lsZW50bHksIHdoaWxlIHRoaXMKd291bGQgcHJvZHVjZSBhIHdhcm5pbmc/IFdoaWNoIG9u ZSBpcyBsZXNzIHN1cnByaXNpbmc/Cgo+Cj4+ICAgICAgICAgICAgIGVsc2U6Cj4+ICAgICAgICAg ICAgICAgICBzZWxmLm9wdGlvbnMuc2V0KCdpZGVudGlmaWVycycsIHNlbGYub3B0aW9ucy5nZXQo J2Z1bmN0aW9ucycpKQo+PiAKPj4gQlIsCj4+IEphbmkuCj4+Cj4gQWZ0ZXIgY29tcGFyaW5nLCBJ IHN0aWxsIHBlcmZlciBteSBvcmlnaW5hbCBjb2RlIHdoaWNoIGlzIHNpbXBsZXIuIDopCgpCdXQg aXMgaXQsIHJlYWxseT8gSSBhZ3JlZSB3aXRoIEpvbiBhYm91dCB0aGUgZGlzdGluY3Rpb24gYmV0 d2VlbiBOb25lCmFuZCAnJyBiZWluZyBjb25mdXNpbmcuCgoKQlIsCkphbmkuCgoKCj4KPj4gCj4+ IC0tIAo+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCgot LSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C059ACA9EBD for ; Mon, 28 Oct 2019 09:24:37 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9C6202184C for ; Mon, 28 Oct 2019 09:24:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C6202184C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4A9806E50C; Mon, 28 Oct 2019 09:24:33 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF38689F8B; Mon, 28 Oct 2019 09:24:31 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 02:24:30 -0700 X-IronPort-AV: E=Sophos;i="5.68,239,1569308400"; d="scan'208";a="193204146" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 02:24:25 -0700 From: Jani Nikula To: Changbin Du In-Reply-To: <20191025144802.uixg2crhw6h7gghq@mail.google.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20191020131717.28990-1-changbin.du@gmail.com> <20191024121940.1d6a64df@lwn.net> <87woctb9cj.fsf@intel.com> <20191025144802.uixg2crhw6h7gghq@mail.google.com> Date: Mon, 28 Oct 2019 11:24:22 +0200 Message-ID: <87v9s99q9l.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v2] kernel-doc: rename the kernel-doc directive 'functions' to 'identifiers' X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-usb@vger.kernel.org, Matthew Wilcox , Thomas Zimmermann , linux-doc@vger.kernel.org, linux-pci@vger.kernel.org, linux-fpga@vger.kernel.org, Jonathan Corbet , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-crypto@vger.kernel.org, linux-kselftest@vger.kernel.org, intel-gfx@lists.freedesktop.org, Changbin Du Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191028092422.EOqRhwwIBdWgRbrppjr6gXp61sZ3HnGLgWDJflI-S7g@z> T24gRnJpLCAyNSBPY3QgMjAxOSwgQ2hhbmdiaW4gRHUgPGNoYW5nYmluLmR1QGdtYWlsLmNvbT4g d3JvdGU6Cj4gT24gRnJpLCBPY3QgMjUsIDIwMTkgYXQgMDk6NTc6NDhBTSArMDMwMCwgSmFuaSBO aWt1bGEgd3JvdGU6Cj4+IE9uIFRodSwgMjQgT2N0IDIwMTksIEpvbmF0aGFuIENvcmJldCA8Y29y YmV0QGx3bi5uZXQ+IHdyb3RlOgo+PiA+IE9uIFN1biwgMjAgT2N0IDIwMTkgMjE6MTc6MTcgKzA4 MDAKPj4gPiBDaGFuZ2JpbiBEdSA8Y2hhbmdiaW4uZHVAZ21haWwuY29tPiB3cm90ZToKPj4gPgo+ PiA+PiBUaGUgJ2Z1bmN0aW9ucycgZGlyZWN0aXZlIGlzIG5vdCBvbmx5IGZvciBmdW5jdGlvbnMs IGJ1dCBhbHNvIHdvcmtzIGZvcgo+PiA+PiBzdHJ1Y3RzL3VuaW9ucy4gU28gdGhlIG5hbWUgaXMg bWlzbGVhZGluZy4gVGhpcyBwYXRjaCByZW5hbWVzIGl0IHRvCj4+ID4+ICdpZGVudGlmaWVycycs IHdoaWNoIHNwZWNpZmljIHRoZSBmdW5jdGlvbnMvdHlwZXMgdG8gYmUgaW5jbHVkZWQgaW4KPj4g Pj4gZG9jdW1lbnRhdGlvbi4gV2Uga2VlcCB0aGUgb2xkIG5hbWUgYXMgYW4gYWxpYXMgb2YgdGhl IG5ldyBvbmUgYmVmb3JlCj4+ID4+IGFsbCBkb2N1bWVudGF0aW9uIGFyZSB1cGRhdGVkLgo+PiA+ PiAKPj4gPj4gU2lnbmVkLW9mZi1ieTogQ2hhbmdiaW4gRHUgPGNoYW5nYmluLmR1QGdtYWlsLmNv bT4KPj4gPgo+PiA+IFNvIEkgdGhpbmsgdGhpcyBpcyBiYXNpY2FsbHkgT0ssIGJ1dCBJIGhhdmUg b25lIG1vcmUgcmVxdWVzdC4uLgo+PiA+Cj4+ID4gWy4uLl0KPj4gPgo+PiA+PiBkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9zcGhpbngva2VybmVsZG9jLnB5IGIvRG9jdW1lbnRhdGlvbi9zcGhp bngva2VybmVsZG9jLnB5Cj4+ID4+IGluZGV4IDExNTk0MDVjYjkyMC4uMDY4OWY5YzM3ZjFlIDEw MDY0NAo+PiA+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL3NwaGlueC9rZXJuZWxkb2MucHkKPj4gPj4g KysrIGIvRG9jdW1lbnRhdGlvbi9zcGhpbngva2VybmVsZG9jLnB5Cj4+ID4+IEBAIC01OSw5ICs1 OSwxMCBAQCBjbGFzcyBLZXJuZWxEb2NEaXJlY3RpdmUoRGlyZWN0aXZlKToKPj4gPj4gICAgICBv cHRpb25hbF9hcmd1bWVudHMgPSA0Cj4+ID4+ICAgICAgb3B0aW9uX3NwZWMgPSB7Cj4+ID4+ICAg ICAgICAgICdkb2MnOiBkaXJlY3RpdmVzLnVuY2hhbmdlZF9yZXF1aXJlZCwKPj4gPj4gLSAgICAg ICAgJ2Z1bmN0aW9ucyc6IGRpcmVjdGl2ZXMudW5jaGFuZ2VkLAo+PiA+PiAgICAgICAgICAnZXhw b3J0JzogZGlyZWN0aXZlcy51bmNoYW5nZWQsCj4+ID4+ICAgICAgICAgICdpbnRlcm5hbCc6IGRp cmVjdGl2ZXMudW5jaGFuZ2VkLAo+PiA+PiArICAgICAgICAnaWRlbnRpZmllcnMnOiBkaXJlY3Rp dmVzLnVuY2hhbmdlZCwKPj4gPj4gKyAgICAgICAgJ2Z1bmN0aW9ucyc6IGRpcmVjdGl2ZXMudW5j aGFuZ2VkLCAgIyBhbGlhcyBvZiAnaWRlbnRpZmllcnMnCj4+ID4+ICAgICAgfQo+PiA+PiAgICAg IGhhc19jb250ZW50ID0gRmFsc2UKPj4gPj4gIAo+PiA+PiBAQCAtNzEsNiArNzIsNyBAQCBjbGFz cyBLZXJuZWxEb2NEaXJlY3RpdmUoRGlyZWN0aXZlKToKPj4gPj4gIAo+PiA+PiAgICAgICAgICBm aWxlbmFtZSA9IGVudi5jb25maWcua2VybmVsZG9jX3NyY3RyZWUgKyAnLycgKyBzZWxmLmFyZ3Vt ZW50c1swXQo+PiA+PiAgICAgICAgICBleHBvcnRfZmlsZV9wYXR0ZXJucyA9IFtdCj4+ID4+ICsg ICAgICAgIGlkZW50aWZpZXJzID0gTm9uZQo+PiA+PiAgCj4+ID4+ICAgICAgICAgICMgVGVsbCBz cGhpbnggb2YgdGhlIGRlcGVuZGVuY3kKPj4gPj4gICAgICAgICAgZW52Lm5vdGVfZGVwZW5kZW5j eShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQo+PiA+PiBAQCAtODYsMTkgKzg4LDIyIEBAIGNs YXNzIEtlcm5lbERvY0RpcmVjdGl2ZShEaXJlY3RpdmUpOgo+PiA+PiAgICAgICAgICAgICAgZXhw b3J0X2ZpbGVfcGF0dGVybnMgPSBzdHIoc2VsZi5vcHRpb25zLmdldCgnaW50ZXJuYWwnKSkuc3Bs aXQoKQo+PiA+PiAgICAgICAgICBlbGlmICdkb2MnIGluIHNlbGYub3B0aW9uczoKPj4gPj4gICAg ICAgICAgICAgIGNtZCArPSBbJy1mdW5jdGlvbicsIHN0cihzZWxmLm9wdGlvbnMuZ2V0KCdkb2Mn KSldCj4+ID4+ICsgICAgICAgIGVsaWYgJ2lkZW50aWZpZXJzJyBpbiBzZWxmLm9wdGlvbnM6Cj4+ ID4+ICsgICAgICAgICAgICBpZGVudGlmaWVycyA9IHNlbGYub3B0aW9ucy5nZXQoJ2lkZW50aWZp ZXJzJykuc3BsaXQoKQo+PiA+PiAgICAgICAgICBlbGlmICdmdW5jdGlvbnMnIGluIHNlbGYub3B0 aW9uczoKPj4gPj4gLSAgICAgICAgICAgIGZ1bmN0aW9ucyA9IHNlbGYub3B0aW9ucy5nZXQoJ2Z1 bmN0aW9ucycpLnNwbGl0KCkKPj4gPj4gLSAgICAgICAgICAgIGlmIGZ1bmN0aW9uczoKPj4gPj4g LSAgICAgICAgICAgICAgICBmb3IgZiBpbiBmdW5jdGlvbnM6Cj4+ID4+IC0gICAgICAgICAgICAg ICAgICAgIGNtZCArPSBbJy1mdW5jdGlvbicsIGZdCj4+ID4+IC0gICAgICAgICAgICBlbHNlOgo+ PiA+PiAtICAgICAgICAgICAgICAgIGNtZCArPSBbJy1uby1kb2Mtc2VjdGlvbnMnXQo+PiA+PiAr ICAgICAgICAgICAgaWRlbnRpZmllcnMgPSBzZWxmLm9wdGlvbnMuZ2V0KCdmdW5jdGlvbnMnKS5z cGxpdCgpCj4+ID4KPj4gPiBSYXRoZXIgdGhhbiBkbyB0aGlzLCBjYW4geW91IGp1c3QgY2hhbmdl IHRoZSBlbGlmIGxpbmUgdG8gcmVhZDoKPj4gPgo+PiA+ICAgICBlbGlmICgnaWRlbnRpZmllcnMn IGluIHNlbGYub3B0aW9ucykgb3IgKCdmdW5jdGlvbnMnIGluIHNlbGYub3B0aW9ucyk6Cj4+ID4K Pj4gPiAuLi50aGVuIGxlYXZlIHRoZSByZXN0IG9mIHRoZSBjb2RlIGludGFjdD8gIEl0IGtlZXBz IHRoZSBsb2dpYyB0b2dldGhlciwKPj4gPiBhbmQgYXZvaWRzIHRoZSBjb25mdXNpbmcgZGlzdGlu Y3Rpb24gYmV0d2VlbiBpZGVudGlmaWVycz09JycgYW5kCj4+ID4gaWRlbnRpZmllcnM9PU5vbmUg Lgo+PiAKPj4gSSB0aGluayB0aGUgcHJvYmxlbSBpcyB5b3Ugc3RpbGwgbmVlZCB0byBkaXN0aW5n dWlzaCBiZXR3ZWVuIHRoZSB0d28gZm9yCj4+IHRoZSBnZXQoJ2Z1bmN0aW9ucycpIHBhcnQuCj4+ IAo+PiBPbmUgb3B0aW9uIGlzIHRvIHJlbmFtZSAnZnVuY3Rpb25zJyB0byAnaWRlbnRpZmllcnMn IGluIHRoZSBhYm92ZSBibG9jaywKPj4gYW5kIHB1dCBzb21ldGhpbmcgbGlrZSB0aGlzIGFib3Zl IHRoZSB3aG9sZSBpZiBsYWRkZXIgKHVudGVzdGVkKToKPj4gCj4+ICAgICAgICAgIyBiYWNrd2Fy ZCBjb21wYXQKPj4gICAgICAgICBpZiAnZnVuY3Rpb25zJyBpbiBzZWxmLm9wdGlvbnM6Cj4+ICAg ICAgICAgICAgIGlmICdpZGVudGlmaWVycycgaW4gc2VsZi5vcHRpb25zOgo+PiAgICAgICAgICAg ICAgICAga2VybmVsbG9nLndhcm4oZW52LmFwcCwgImZhaWwiKQo+IFRoaXMgd2lsbCBtaXNzIHRo ZSBjb250ZW50IG9mICdmdW5jdGlvbnMnIGRpcmVjdGl2ZSBpZiBib3RoIGV4aXN0IGluCj4gc2Ft ZSBkb2MuCgpEaWQgeW91IG5vdCBub3RpY2UgeW91ciBwYXRjaCBkb2VzIHRoZSBzYW1lLCBleGNl cHQgc2lsZW50bHksIHdoaWxlIHRoaXMKd291bGQgcHJvZHVjZSBhIHdhcm5pbmc/IFdoaWNoIG9u ZSBpcyBsZXNzIHN1cnByaXNpbmc/Cgo+Cj4+ICAgICAgICAgICAgIGVsc2U6Cj4+ICAgICAgICAg ICAgICAgICBzZWxmLm9wdGlvbnMuc2V0KCdpZGVudGlmaWVycycsIHNlbGYub3B0aW9ucy5nZXQo J2Z1bmN0aW9ucycpKQo+PiAKPj4gQlIsCj4+IEphbmkuCj4+Cj4gQWZ0ZXIgY29tcGFyaW5nLCBJ IHN0aWxsIHBlcmZlciBteSBvcmlnaW5hbCBjb2RlIHdoaWNoIGlzIHNpbXBsZXIuIDopCgpCdXQg aXMgaXQsIHJlYWxseT8gSSBhZ3JlZSB3aXRoIEpvbiBhYm91dCB0aGUgZGlzdGluY3Rpb24gYmV0 d2VlbiBOb25lCmFuZCAnJyBiZWluZyBjb25mdXNpbmcuCgoKQlIsCkphbmkuCgoKCj4KPj4gCj4+ IC0tIAo+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCgot LSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=