From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Allow #+SETUPFILE to point to an URL for the org file Date: Sat, 03 Dec 2016 17:23:00 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=f403045eb6760e87b80542c44f5b Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54006) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cDE1q-0006VK-90 for emacs-orgmode@gnu.org; Sat, 03 Dec 2016 12:23:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cDE1p-0004SA-9i for emacs-orgmode@gnu.org; Sat, 03 Dec 2016 12:23:14 -0500 Received: from mail-ua0-x22f.google.com ([2607:f8b0:400c:c08::22f]:34108) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cDE1p-0004Rz-2d for emacs-orgmode@gnu.org; Sat, 03 Dec 2016 12:23:13 -0500 Received: by mail-ua0-x22f.google.com with SMTP id 51so311558723uai.1 for ; Sat, 03 Dec 2016 09:23:12 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-org list --f403045eb6760e87b80542c44f5b Content-Type: text/plain; charset=UTF-8 Hello, I would like to put my common org config in github so that I can access it from anywhere/any machine. Currently I have #+SETUPFILE: ~/org/common/config.org I would like to do something like #+SETUPFILE: https://cdn.rawgit.com/path/to/config.org I can probably add an async shell execution to wget that link, save it to /tmp/config.org and then replace #+SETUPFILE: https://cdn.rawgit.com/path/to/config.org with #+SETUPFILE: /tmp/config.org in, may be, org-export-before-processing-hook? But has someone already implemented something like this? Thanks. -- Kaushal Modi --f403045eb6760e87b80542c44f5b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello,

I would like to put my common or= g config in github so that I can access it from anywhere/any machine.
=

Currently I have

#+SETUPFILE: = ~/org/common/config.org
I would like to do something like


I= can probably add an async shell execution to wget that link, save it to /t= mp/config.org and then replace=C2=A0

wit= h=C2=A0

#+SETUPFILE: /tmp/config.org

in, may be, org-export-before-processing-= hook?

But has someone already implemented somethin= g like this?

Thanks.
-= -

Kaushal = Modi

--f403045eb6760e87b80542c44f5b-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 11:51:21 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a1143d6f439fde305432442c4 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59568) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cExFy-0004VG-9G for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 06:52:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cExFv-0004TH-6L for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 06:52:58 -0500 Received: from mail-vk0-f47.google.com ([209.85.213.47]:35311) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cExFv-0004Hg-0C for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 06:52:55 -0500 Received: by mail-vk0-f47.google.com with SMTP id w194so227961715vkw.2 for ; Thu, 08 Dec 2016 03:52:33 -0800 (PST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-org list --001a1143d6f439fde305432442c4 Content-Type: text/plain; charset=UTF-8 Anyone? On Sat, Dec 3, 2016, 12:23 PM Kaushal Modi wrote: > Hello, > > I would like to put my common org config in github so that I can access it > from anywhere/any machine. > > Currently I have > > #+SETUPFILE: ~/org/common/config.org > > I would like to do something like > > #+SETUPFILE: https://cdn.rawgit.com/path/to/config.org > > I can probably add an async shell execution to wget that link, save it to > /tmp/config.org and then replace > > #+SETUPFILE: https://cdn.rawgit.com/path/to/config.org > > with > > #+SETUPFILE: /tmp/config.org > > in, may be, org-export-before-processing-hook? > > But has someone already implemented something like this? > > Thanks. > -- > > Kaushal Modi > -- Kaushal Modi --001a1143d6f439fde305432442c4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Anyone?


On Sat, Dec 3, 2016, 12:23 = PM Kaushal Modi <kaushal.modi@= gmail.com> wrote:
Hello,

I would like to put my common org c= onfig in github so that I can access it from anywhere/any machine.

Currently I have

#+SETUPFILE: ~/org/common/config.org

I would like to do something like


I can probably add= an async shell execution to wget that link, save it to /tmp/config.org and th= en replace=C2=A0


=

in, may be, org-export-before-processing-hook?

But has someone already implemented something like this?

Thanks.
--
=

Kaushal Modi

--

Kaushal Modi

--001a1143d6f439fde305432442c4-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Kitchin Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 09:22:30 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cEzbk-0002Vp-G7 for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:23:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cEzbh-0008Gr-CV for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:23:36 -0500 Received: from mail-qt0-f179.google.com ([209.85.216.179]:35199) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cEzbh-0008GX-7i for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:23:33 -0500 Received: by mail-qt0-f179.google.com with SMTP id c47so412896053qtc.2 for ; Thu, 08 Dec 2016 06:23:33 -0800 (PST) In-reply-to: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list +1. I would use it like an xml dtd if I could ;). Kaushal Modi writes: > Anyone? > > On Sat, Dec 3, 2016, 12:23 PM Kaushal Modi wrote: > >> Hello, >> >> I would like to put my common org config in github so that I can access it >> from anywhere/any machine. >> >> Currently I have >> >> #+SETUPFILE: ~/org/common/config.org >> >> I would like to do something like >> >> #+SETUPFILE: https://cdn.rawgit.com/path/to/config.org >> >> I can probably add an async shell execution to wget that link, save it to >> /tmp/config.org and then replace >> >> #+SETUPFILE: https://cdn.rawgit.com/path/to/config.org >> >> with >> >> #+SETUPFILE: /tmp/config.org >> >> in, may be, org-export-before-processing-hook? >> >> But has someone already implemented something like this? >> >> Thanks. >> -- >> >> Kaushal Modi >> -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 15:31:40 +0100 Message-ID: <87h96eh4qb.fsf@nicolasgoaziou.fr> References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cEzja-0003Qg-Gv for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:31:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cEzjX-0004RU-Dq for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:31:42 -0500 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:47051) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cEzjX-0004R6-7n for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:31:39 -0500 In-Reply-To: (Kaushal Modi's message of "Thu, 08 Dec 2016 11:51:21 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Hello, Kaushal Modi writes: > Anyone? Apparently not. Note that it could drastically slow down opening buffers with a mediocre connection since SETUPFILE is read every time buffer set-up is refreshed, e.g., when the buffer is opened. Regards, -- Nicolas Goaziou From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 14:44:25 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=f403045dd8f43b5244054326ad35 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38463) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cEzx8-00005B-DX for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:45:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cEzx5-0008Uz-46 for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:45:42 -0500 Received: from mail-ua0-f171.google.com ([209.85.217.171]:35577) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cEzx4-0008Ul-Ui for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 09:45:39 -0500 Received: by mail-ua0-f171.google.com with SMTP id 12so449913925uas.2 for ; Thu, 08 Dec 2016 06:45:38 -0800 (PST) In-Reply-To: <87h96eh4qb.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-org list --f403045dd8f43b5244054326ad35 Content-Type: text/plain; charset=UTF-8 On Thu, Dec 8, 2016 at 9:31 AM Nicolas Goaziou wrote: > Hello, > > Kaushal Modi writes: > > > Anyone? > > Apparently not. > > Note that it could drastically slow down opening buffers with a mediocre > connection since SETUPFILE is read every time buffer set-up is > refreshed, e.g., when the buffer is opened. > > Here are a couple of ideas: - Let's assume that if the current file name is /path/to/foo.org, the SETUPFILE is always downloaded to /tmp/path_to_foo_config.org for brevity. The function that sets that temp file should be a defcustom. - Now, the referenced SETUPFILE should be downloaded only if that (1) That file is being fetched for the first time in that emacs session, or (2) that temp file does not exist. - Add a defun to force reload the SETUPFILE from the referenced URL, in which case the temp file will be deleted and re-downloaded (as the above condition satisfied). So under the normal circumstance where that foo.org file buffer is reverted multiple times in an emacs session, the same SETUPFILE downloaded to /tmp will be used. If the user updated the file at the referenced URL, they can do the above mentioned forced reload of SETUPFILE and download the latest version of SETUPFILE. Thoughts? -- Kaushal Modi --f403045dd8f43b5244054326ad35 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Thu, De= c 8, 2016 at 9:31 AM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
Hello,

Kaushal Modi <kaushal.modi@gmail.com> writes:

> Anyone?

Apparently not.

Note that it could drastically slow down opening buffers with a mediocre connection since SETUPFILE is read every time buffer set-up is
refreshed, e.g., when the buffer is opened.


Here are a couple of ideas= :

- Let's assume that if the current file name= is /path/to/foo.org, the SETUPFILE is alway= s downloaded to /tmp/path_to_foo_= config.org for brevity. The function that sets that temp file should be= a defcustom.
- Now, the referenced SETUPFILE should be downloade= d only if that (1) That file is being fetched for the first time in that em= acs session, or (2) that temp file does not exist.
- Add a defun = to force reload the SETUPFILE from the referenced URL, in which case the te= mp file will be deleted and re-downloaded (as the above condition satisfied= ).

So under the normal circumstance where that foo.org file buffer is reverted multiple times = in an emacs session, the same SETUPFILE downloaded to /tmp will be used. If= the user updated the file at the referenced URL, they can do the above men= tioned forced reload of SETUPFILE and download the latest version of SETUPF= ILE.

Thoughts?
-= -

Kaushal = Modi

--f403045dd8f43b5244054326ad35-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 22:48:55 +0100 Message-ID: <871sxigkhk.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cF6Yi-0005JX-4Y for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 16:48:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cF6Yf-0006v4-2K for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 16:48:56 -0500 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:46341) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cF6Ye-0006ub-Rv for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 16:48:52 -0500 In-Reply-To: (Kaushal Modi's message of "Thu, 08 Dec 2016 14:44:25 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Kaushal Modi writes: > Here are a couple of ideas: > > - Let's assume that if the current file name is /path/to/foo.org, the > SETUPFILE is always downloaded to /tmp/path_to_foo_config.org for brevity. > The function that sets that temp file should be a defcustom. What about storing the contents of the file in a variable instead of cluttering the temp directory? > - Now, the referenced SETUPFILE should be downloaded only if that (1) That > file is being fetched for the first time in that emacs session, or (2) that > temp file does not exist. And (3) it isn't local? > - Add a defun to force reload the SETUPFILE from the referenced URL, in > which case the temp file will be deleted and re-downloaded (as the above > condition satisfied). > > So under the normal circumstance where that foo.org file buffer is reverted > multiple times in an emacs session, the same SETUPFILE downloaded to /tmp > will be used. If the user updated the file at the referenced URL, they can > do the above mentioned forced reload of SETUPFILE and download the latest > version of SETUPFILE. > > Thoughts? It could work. Do you want to provide an implementation? Regards, From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 22:07:39 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a1143d6f449b44705432cded9 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50530) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cF6s3-0000fx-3c for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 17:08:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cF6rz-0004c2-Rr for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 17:08:55 -0500 Received: from mail-vk0-f51.google.com ([209.85.213.51]:33615) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cF6rz-0004ap-Lj for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 17:08:51 -0500 Received: by mail-vk0-f51.google.com with SMTP id 137so236613013vkl.0 for ; Thu, 08 Dec 2016 14:08:51 -0800 (PST) In-Reply-To: <871sxigkhk.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-org list --001a1143d6f449b44705432cded9 Content-Type: text/plain; charset=UTF-8 On Thu, Dec 8, 2016 at 4:48 PM Nicolas Goaziou wrote: > Kaushal Modi writes: > > What about storing the contents of the file in a variable instead of > cluttering the temp directory? > Hmm, is there a way to read a file from a URL to a variable directly? Or did you mean to download the file first, read that into a temp buffer and then delete the temp file? > > > - Now, the referenced SETUPFILE should be downloaded only if that (1) > That > > file is being fetched for the first time in that emacs session, or (2) > that > > temp file does not exist. > > And (3) it isn't local? > This proposal was for the case where we have #+SETUPFILE: http://foo.bar/config.org So it cannot be local to begin with. With respect to the point about not having the file in temp, we can have a flag that if set, will prevent re-downloading of the file. User can choose to reset that flag and then re-download that file. This will be lieu of the earlier condition "(2) that temp file does not exist." > > > - Add a defun to force reload the SETUPFILE from the referenced URL, in > > which case the temp file will be deleted and re-downloaded (as the above > > condition satisfied). > > > > So under the normal circumstance where that foo.org file buffer is > reverted > > multiple times in an emacs session, the same SETUPFILE downloaded to /tmp > > will be used. If the user updated the file at the referenced URL, they > can > > do the above mentioned forced reload of SETUPFILE and download the latest > > version of SETUPFILE. > > > > Thoughts? > > It could work. Do you want to provide an implementation? > I would like to work on this. But I will be away from my computer for about a month starting tomorrow. Will get back to this once I am back from my vacation. Thank you for the feedback. -- Kaushal Modi --001a1143d6f449b44705432cded9 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Thu, Dec 8,= 2016 at 4:48 PM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
Kaushal Modi <kaushal.modi@gmail.com> writes:

What about storing the contents of the file in a va= riable instead of
cluttering the temp directory?
Hmm, is there a way to read a file from a URL to a variable dir= ectly? Or did you mean to download the file first, read that into a temp bu= ffer and then delete the temp file?
=C2=A0

> - Now, the referenced SETUPFILE should be downloaded only if that (1) = That
> file is being fetched for the first time in that emacs session, or (2)= that
> temp file does not exist.

And (3) it isn't local?

This proposal was for the case where we have

<= div>#+SETUPFILE: http://foo.bar/confi= g.org

So it cannot be local to begin with.

With respect to the point about not having the file i= n temp, we can have a flag that if set, will prevent re-downloading of the = file. User can choose to reset that flag and then re-download that file. Th= is will be lieu of the earlier condition "(2) that temp file does not = exist."
=C2=A0

> - Add a defun to force reload the SETUPFILE from the referenced URL, i= n
> which case the temp file will be deleted and re-downloaded (as the abo= ve
> condition satisfied).
>
> So under the normal circumstance where that foo.org file = buffer is reverted
> multiple times in an emacs session, the same SETUPFILE downloaded to /= tmp
> will be used. If the user updated the file at the referenced URL, they= can
> do the above mentioned forced reload of SETUPFILE and download the lat= est
> version of SETUPFILE.
>
> Thoughts?

It could work. Do you want to provide an implementation?

I would like to work on this. But I w= ill be away from my computer for about a month starting tomorrow. Will get = back to this once I am back from my vacation.

Than= k you for the feedback.
--

Kaushal Modi

--001a1143d6f449b44705432cded9-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 08 Dec 2016 23:40:45 +0100 Message-ID: <87twaef3iq.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57806) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cF7Mr-0003TI-RM for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 17:40:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cF7Mq-0006In-Pq for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 17:40:45 -0500 Received: from relay4-d.mail.gandi.net ([2001:4b98:c:538::196]:49392) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cF7Mq-0006IG-Dg for emacs-orgmode@gnu.org; Thu, 08 Dec 2016 17:40:44 -0500 In-Reply-To: (Kaushal Modi's message of "Thu, 08 Dec 2016 22:07:39 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Kaushal Modi writes: > Hmm, is there a way to read a file from a URL to a variable directly? Or > did you mean to download the file first, read that into a temp buffer and > then delete the temp file? You can use something like `url-insert' and `url-retrieve' or `url-retrieve-synchronously'. > This proposal was for the case where we have > > #+SETUPFILE: http://foo.bar/config.org > > So it cannot be local to begin with. Sure, but SETUPFILE still accepts local file names. So I was pointing out that you need to check if the URL is a local file name before proceeding. In particular, this check needs to happen when using "C-c '" (which may display URL contents in a read-only buffer, BTW). > With respect to the point about not having the file in temp, we can have a > flag that if set, will prevent re-downloading of the file. User can choose > to reset that flag and then re-download that file. This will be lieu of the > earlier condition "(2) that temp file does not exist." Is it necessary? File contents could be stored in, e.g., a hash table, url being the key. The file is downloaded only if the entry doesn't exist in the table and the user didn't force download.- > I would like to work on this. But I will be away from my computer for about > a month starting tomorrow. Will get back to this once I am back from my > vacation. Great. Thank you. Regards, From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Mon, 13 Mar 2017 17:37:03 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a114dbbba82a520054aa0292e Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33941) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnTuJ-0004lT-NL for emacs-orgmode@gnu.org; Mon, 13 Mar 2017 13:37:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnTuI-0004dl-12 for emacs-orgmode@gnu.org; Mon, 13 Mar 2017 13:37:19 -0400 Received: from mail-vk0-x22c.google.com ([2607:f8b0:400c:c05::22c]:36190) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cnTuH-0004cm-Po for emacs-orgmode@gnu.org; Mon, 13 Mar 2017 13:37:17 -0400 Received: by mail-vk0-x22c.google.com with SMTP id t8so39180445vke.3 for ; Mon, 13 Mar 2017 10:37:16 -0700 (PDT) In-Reply-To: <87twaef3iq.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-org list , Nicolas Goaziou --001a114dbbba82a520054aa0292e Content-Type: text/plain; charset=UTF-8 On Thu, Dec 8, 2016 at 5:40 PM Nicolas Goaziou wrote: > Kaushal Modi writes: > > You can use something like `url-insert' and `url-retrieve' or > `url-retrieve-synchronously'. > Thanks. I am using url-retrieve-synchronously. > > Sure, but SETUPFILE still accepts local file names. So I was pointing > out that you need to check if the URL is a local file name before > proceeding. In particular, this check needs to happen when using "C-c '" > (which may display URL contents in a read-only buffer, BTW). > Understood. I might need some help when baking this into org.el, org-macros.el, etc. > > Is it necessary? File contents could be stored in, e.g., a hash table, > url being the key. The file is downloaded only if the entry doesn't > exist in the table and the user didn't force download.- > Correct. Thanks for the idea. I am now using hash table for this. Here is my implementation.. it is still not baked into org.el, etc and provided as a complete patch; I have some questions.. ===== (defvar org-setupfile-ht (make-hash-table :test 'equal) "Hash table to store the org SETUPFILE. This acts as a cache of setup files read using `org-insert-setupfile-contents'.") (defun org-setupfile-clear-cache () "Clear the SETUPFILE cache stored in `org-setupfile-ht'." (interactive) (clrhash org-setupfile-ht)) (defun org-insert-setupfile-contents (setupfile &optional nocache noerror) "Insert the contents of SETUPFILE. SETUPFILE can be a file path or URL. If SETUPFILE is a file path, use `org-file-contents' to get the file contents. If it is a URL instead, download the contents. If the URL contents are already cached in the `org-setupfile-ht' hash table, the download step is skipped. If NOCACHE is non-nil, do a fresh fetch of SETUPFILE even if cached version is available. This option applies only if SETUPFILE is a URL. If NOERROR is non-nil, ignore the error when unable to read the SETUPFILE from file or URL." (require 'ffap) ;for `ffap-url-regexp' (let* ((is-url (string-match-p ffap-url-regexp setupfile)) (cache (when (and is-url (not nocache)) (gethash setupfile org-setupfile-ht))) (contents (when (and is-url cache) cache))) (if is-url (unless cache (let (url-retrieve-header) (with-current-buffer (url-retrieve-synchronously setupfile) (goto-char (point-min)) ;; Take point to after the url-retrieve header (re-search-forward "\n\n") ; 2 consecutive new-line chars (setq url-retrieve-header (buffer-substring-no-properties (point-min) (point))) (message url-retrieve-header) ;Dump the URL retrieve header to *Messages* (if (string-match-p "HTTP.*\\s-+200\\s-OK" url-retrieve-header) ;URL retrieved correctly (progn (setq contents (buffer-substring-no-properties (point) (point-max))) ;; Update the cache `org-setupfile-ht' (puthash setupfile contents org-setupfile-ht)) (funcall (if noerror 'message 'error) "Unable to fetch SETUPFILE from `%s'" setupfile))))) (setq contents (org-file-contents setupfile noerror))) (when contents (save-excursion (insert contents))))) ===== Question: - All the places where the content of SETUPFILE is inserted in a temp buffer, it is assumed that the file is retrieved from disk and not from URL. Example in ox.el: ((equal key "SETUPFILE") (let ((file (expand-file-name (org-unbracket-string "\"" "\"" (org-trim val))))) ;; Avoid circular dependencies. (unless (member file files) (with-temp-buffer (setq default-directory (file-name-directory file)) (insert (org-file-contents file 'noerror)) (let ((org-inhibit-startup t)) (org-mode)) (funcall get-options (cons file files)))))) Note the use of expand-file-name, (member file files), default-directory, (funcall get-options (cons file files)). How do we deal with those parts of the code when the 'file' is a URL. Using my implementation above, (org-insert-setupfile-contents "/file/path/or/url" nil :noerror) works the same way as (insert (org-file-contents "/file/path" 'noerror)) So org-insert-setupfile-contents can replace (insert (org-file-contents ..)) easily. The unknown is how to deal with the surrounding code that deals with > expand-file-name, (member file files), default-directory, (funcall get-options (cons file files)). Here's a similar code snippet around setupfile insertion in ox.el again, in org-export--list-bound-variables: ===== ;; Enter setup file. (let ((file (expand-file-name (org-unbracket-string "\"" "\"" val)))) (unless (member file files) (with-temp-buffer (setq default-directory (file-name-directory file)) (let ((org-inhibit-startup t)) (org-mode)) (insert (org-file-contents file 'noerror)) (setq alist (funcall collect-bind (cons file files) alist)))))))))) ===== -- Kaushal Modi --001a114dbbba82a520054aa0292e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Thu= , Dec 8, 2016 at 5:40 PM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
Kaushal Modi <kaushal.modi@gmail.com> writes:=

You can use something like `url-insert' and `ur= l-retrieve' or
`url-retrieve-synchronously'.
=
Thanks. I am using url-retrieve-synchronously.=C2=A0

Sure, but SETUPFILE still accepts local file names. So I was pointing
out that you need to check if the URL is a local file name before
proceeding. In particular, this check needs to happen when using "C-c = '"
(which may display URL contents in a read-only buffer, BTW).

Understood. I might need some hel= p when baking this into org.el, org-macros.el, etc.
=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
Is it necessary? File contents could be stored in, e.g., a hash table,
url being the key. The file is downloaded only if the entry doesn't
exist in the table and the user didn't force download.-

Correct. Thanks for the idea. I am= now using hash table for this.=C2=A0

Here is my i= mplementation.. it is still not baked into org.el, etc and provided as a co= mplete patch; I have some questions..

=3D=3D=3D=3D= =3D
(defvar org-setupfile-ht (make-hash-table :test 'equ= al)
=C2=A0 "Hash table to store the org SETUPFILE.
This acts as a cache of setup files read using `org-insert-setupfile-conte= nts'.")

(defun org-setupfile-clear-cache = ()
=C2=A0 "Clear the SETUPFILE cache stored in `org-setupfil= e-ht'."
=C2=A0 (interactive)
=C2=A0 (clrhash o= rg-setupfile-ht))

(defun org-insert-setupfile-cont= ents (setupfile &optional nocache noerror)
=C2=A0 "Inser= t the contents of SETUPFILE.
SETUPFILE can be a file path or URL.=

If SETUPFILE is a file path, use `org-file-conten= ts' to get the file contents.
If it is a URL instead, downloa= d the contents. If the URL contents are already
cached in the `or= g-setupfile-ht' hash table, the download step is skipped.
If NOCACHE is non-nil, do a fresh fetch of SETUPFILE even if ca= ched version is
available. This option applies only if SETUPFILE = is a URL.

If NOERROR is non-nil, ignore the error = when unable to read the SETUPFILE from
file or URL."
=C2=A0 (require 'ffap) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;for `ffap-url-regexp'
=C2=A0= (let* ((is-url (string-match-p ffap-url-regexp setupfile))
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(cache (when (and is-url (not nocache))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (getha= sh setupfile org-setupfile-ht)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(contents (when (and is-url cache) cache)))
=C2=A0 =C2=A0 (if = is-url
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (unless cache
=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let (url-retrieve-header)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (with-current-buffer (url-retrieve-synch= ronously setupfile)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (goto-char (point-min))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 ;; Take point to after the url-retrieve header
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (re-search-forward "\n\n= ") ; 2 consecutive new-line chars
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 (setq url-retrieve-header (buffer-substring-no-pro= perties
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(point-min) (point)))
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 (message url-retrieve-header) ;Dump the URL retrie= ve header to *Messages*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (if (string-match-p "HTTP.*\\s-+200\\s-OK" url-retrieve-h= eader) ;URL retrieved correctly
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq contents (buffer-substr= ing-no-properties (point) (point-max)))
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Update the cache `org-setu= pfile-ht'
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 (puthash setupfile contents org-setupfile-ht))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (funcall (if noe= rror 'message 'error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"Unable to fetc= h SETUPFILE from `%s'" setupfile)))))
=C2=A0 =C2=A0 =C2= =A0 (setq contents (org-file-contents setupfile noerror)))
=C2=A0= =C2=A0 (when contents
=C2=A0 =C2=A0 =C2=A0 (save-excursion
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (insert contents)))))
=3D= =3D=3D=3D=3D

Question:

- = All the places where the content of SETUPFILE is inserted in a temp buffer,= it is assumed that the file is retrieved from disk and not from URL.
=

Example in ox.el:

=C2=A0((equal = key "SETUPFILE")
=C2=A0 (let ((file
=C2=A0(expand-file-n= ame
= =C2=A0 (org-unbracket-string "\"" "\""= ; (org-trim val)))))
=C2=A0 =C2=A0 ;; Avoid circular dependencies.
=
= =C2=A0 =C2=A0 (unless (member file files)
=C2=A0 =C2=A0 =C2=A0 (with-tem= p-buffer
(setq default-directory
=C2=A0 (file-name-directory file))=
(insert (org-file-contents file 'noerror))
(let ((org-inhibi= t-startup t)) (org-mode))
(funcall get-options (cons file files))))))


Note the use of expand-file-na= me, (member file files), default-directory, (funcall get-options (cons file= files)).

How do we deal with those parts of the c= ode when the 'file' is a URL.

Using my imp= lementation above,=C2=A0

=C2=A0 =C2=A0 (org-insert= -setupfile-contents "/file/path/or/url" nil :noerror)

works the same way as=C2=A0

=C2= =A0 =C2=A0 (insert (org-file-contents "/file/path" 'noerror))=

So org-insert-setupfile-contents can replace (ins= ert (org-file-contents ..)) easily. The unknown is how to deal with the sur= rounding code that deals with

> expand-file-nam= e, (member file files), default-directory, (funcall get-options (cons file = files)).

Here's a similar code snippet around setupfile = insertion in ox.el again, in org-export--list-bound-variables:

=3D=3D=3D=3D=3D
=C2=A0 =C2=A0 ;; Enter se= tup file.
=C2=A0 =C2=A0 (let ((file (expand-file-n= ame
=C2=A0(org-unbracket-string "\"&qu= ot; "\"" val))))
=C2=A0 =C2=A0 =C2= =A0 (unless (member file files)
(with-temp-buffer=
=C2=A0 (setq default-directory
= (file-name-directory file))
=C2=A0 (l= et ((org-inhibit-startup t)) (org-mode))
=C2=A0 (= insert (org-file-contents file 'noerror))
=C2= =A0 (setq alist
(funcall collect-bind
=C2=A0(cons file files)
<= span class=3D"Apple-tab-span" style=3D"white-space:pre"> =C2= =A0alist))))))))))
=3D=3D=3D=3D=3D


<= /div>


--

Kaushal Modi

--001a114dbbba82a520054aa0292e-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 30 Mar 2017 09:43:41 +0200 Message-ID: <874lybp5ua.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50039) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ctW1w-0007Ju-Ov for emacs-orgmode@gnu.org; Thu, 30 Mar 2017 05:06:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ctW1s-0002ho-Dk for emacs-orgmode@gnu.org; Thu, 30 Mar 2017 05:06:08 -0400 Received: from relay2-d.mail.gandi.net ([217.70.183.194]:55446) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ctW1s-0002fX-4M for emacs-orgmode@gnu.org; Thu, 30 Mar 2017 05:06:04 -0400 In-Reply-To: (Kaushal Modi's message of "Mon, 13 Mar 2017 17:37:03 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Hello, Kaushal Modi writes: > Here is my implementation.. it is still not baked into org.el, etc and > provided as a complete patch; I have some questions.. Thank you. > (defvar org-setupfile-ht (make-hash-table :test 'equal) org-setupfile-ht -> org--setupfile-cache if it is meant to be inserted in "org.el" proper, or `org-setupfile--cache' if you want to create a new "org-setupfile.el" library. Nitpick : 'equal -> #'equal > "Hash table to store the org SETUPFILE. Hash table to store SETUPFILE contents. > This acts as a cache of setup files read using > `org-insert-setupfile-contents'.") > > (defun org-setupfile-clear-cache () `org--setupfile-clear-cache' or `org-setupfile--clear-cache' depending on the location of the function. > "Clear the SETUPFILE cache stored in `org-setupfile-ht'." > (interactive) > (clrhash org-setupfile-ht)) > > (defun org-insert-setupfile-contents (setupfile &optional nocache noerror) > "Insert the contents of SETUPFILE. > SETUPFILE can be a file path or URL. file path -> file name > If SETUPFILE is a file path, use `org-file-contents' to get the file > contents. Then, we might want to generalize `org-file-contents' instead (i.e., let `org-file-contents' handle remote locations). WDYT? > If it is a URL instead, download the contents. If the URL contents are > already > cached in the `org-setupfile-ht' hash table, the download step is > skipped. Mind the double spaces at the end of sentences. > If NOCACHE is non-nil, do a fresh fetch of SETUPFILE even if cached version > is > available. This option applies only if SETUPFILE is a URL. > > If NOERROR is non-nil, ignore the error when unable to read the SETUPFILE > from > file or URL." > (require 'ffap) ;for `ffap-url-regexp' > (let* ((is-url (string-match-p ffap-url-regexp setupfile)) They are not equivalent, but could `org-file-remote-p', or `file-remote-p' be used instead? > (cache (when (and is-url (not nocache)) > (gethash setupfile org-setupfile-ht))) (cache (and is-url (not nocache) (gethash setupfile org-setupfile-ht))) > (contents (when (and is-url cache) cache))) > (if is-url > (unless cache > (let (url-retrieve-header) > (with-current-buffer (url-retrieve-synchronously setupfile) > (goto-char (point-min)) > ;; Take point to after the url-retrieve header > (re-search-forward "\n\n") ; 2 consecutive new-line chars `re-search-forward' -> `search-forward' > (setq url-retrieve-header (buffer-substring-no-properties > (point-min) (point))) > (message url-retrieve-header) ;Dump the URL retrieve header > to *Messages* > (if (string-match-p "HTTP.*\\s-+200\\s-OK" > url-retrieve-header) ;URL retrieved correctly > (progn > (setq contents (buffer-substring-no-properties (point) > (point-max))) > ;; Update the cache `org-setupfile-ht' > (puthash setupfile contents org-setupfile-ht)) > (funcall (if noerror 'message 'error) (if noerror #'message #'error) > "Unable to fetch SETUPFILE from `%s'" `%s' -> %S > setupfile))))) > (setq contents (org-file-contents setupfile noerror))) I think it is clearer if wrapped like this: (contents (cond (cache) (is-url (let (url-retrieve-header) ...)) (t (org-file-contents setupfile noerror)))) > (when contents > (save-excursion > (insert contents))))) This may not be necessary at this point if we merge `org-file-contents' with the above. > Question: > > - All the places where the content of SETUPFILE is inserted in a temp > buffer, it is assumed that the file is retrieved from disk and not from URL. > > Example in ox.el: > > ((equal key "SETUPFILE") > (let ((file > (expand-file-name > (org-unbracket-string "\"" "\"" (org-trim val))))) > ;; Avoid circular dependencies. > (unless (member file files) > (with-temp-buffer > (setq default-directory > (file-name-directory file)) > (insert (org-file-contents file 'noerror)) > (let ((org-inhibit-startup t)) (org-mode)) > (funcall get-options (cons file files)))))) > > > Note the use of expand-file-name, (member file files), default-directory, > (funcall get-options (cons file files)). (member file files), (cons file files) and `expand-file-name' are used to avoid reading over and over the same setup file. In particular, they prevent circular dependencies. You can ignore `expand-file-name' and replace `file' with `uri', i.e., it is straightforward to extend the code to remote file names. `default-directory' is slightly more tricky, as it is used to properly read recursively setup files with relative file names. I think our best bet is to to check if current file name is local or remote, and ignore `default-directory' setting in the latter case. Regards, -- Nicolas Goaziou From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Tue, 23 May 2017 19:07:16 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a114b25ece4a456055035b2fe" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47275) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDF9f-0006Va-C7 for emacs-orgmode@gnu.org; Tue, 23 May 2017 15:07:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dDF9Y-0005Q1-VH for emacs-orgmode@gnu.org; Tue, 23 May 2017 15:07:34 -0400 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:33103) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dDF9Y-0005Pt-Du for emacs-orgmode@gnu.org; Tue, 23 May 2017 15:07:32 -0400 Received: by mail-lf0-x22b.google.com with SMTP id m18so55435367lfj.0 for ; Tue, 23 May 2017 12:07:29 -0700 (PDT) In-Reply-To: <874lybp5ua.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --001a114b25ece4a456055035b2fe Content-Type: multipart/alternative; boundary="001a114b25ece4a450055035b2fc" --001a114b25ece4a450055035b2fc Content-Type: text/plain; charset="UTF-8" Thanks for the detailed review. I have attached a patch following your recommendation. Please review it. Here's a MWE to show the use of this new feature: ===== #+SETUPFILE: https://cdn.rawgit.com/kaushalmodi/.emacs.d/master/misc/org-setupfile.org #+TITLE: Heading{{{NEWLINE}}}Sub-heading ===== (Note that NEWLINE is not an inbuilt macro.) On Thu, Mar 30, 2017 at 5:06 AM Nicolas Goaziou wrote: > org-setupfile-ht -> org--setupfile-cache > > if it is meant to be inserted in "org.el" proper, or > `org-setupfile--cache' if you want to create a new "org-setupfile.el" > library. > I ended up updating org-file-contents. So now that is org--file-cache. > Nitpick : 'equal -> #'equal > Done. > Hash table to store SETUPFILE contents. > Done. > `org--setupfile-clear-cache' or `org-setupfile--clear-cache' depending > on the location of the function. > This is an interactive, a user-facing function; do we want to add double-dashes in that name? The function is now called org-file-clear-cache. > file path -> file name > Done. > > If SETUPFILE is a file path, use `org-file-contents' to get the file > > contents. > > Then, we might want to generalize `org-file-contents' instead (i.e., let > `org-file-contents' handle remote locations). WDYT? > That was my first thought, but was leery on modifying the org-file-contents. I have now done that. > Mind the double spaces at the end of sentences. > Done. > They are not equivalent, but could `org-file-remote-p', or > `file-remote-p' be used instead? > I tried (org-file-remote-p "http://foo.bar") but it returned nil. Looks like both org-file-remote-p and file-remote-p will not work for URLs. > > (cache (when (and is-url (not nocache)) > > (gethash setupfile org-setupfile-ht))) > > (cache (and is-url (not nocache) (gethash setupfile org-setupfile-ht))) > Of course :) > > (re-search-forward "\n\n") ; 2 consecutive new-line chars > `re-search-forward' -> `search-forward' > Correct, regexp is not needed in that case. > > (funcall (if noerror 'message 'error) > (if noerror #'message #'error) > Done. > > > "Unable to fetch SETUPFILE from `%s'" > > `%s' -> %S > setupfile is always a string so I used %s. If setupfile is not a string (may be nil?), then the very first string-match-p will through an error. Is there a specific reason for using %S? I did not use %S because I did not want the double-quotes to be printed around the string in the echo area. > > setupfile))))) > > (setq contents (org-file-contents setupfile noerror))) > > I think it is clearer if wrapped like this: > > (contents > (cond (cache) > (is-url > (let (url-retrieve-header) > ...)) > (t (org-file-contents setupfile noerror)))) > That indeed is pretty sweet. I have made that change. > > (when contents > > (save-excursion > > (insert contents))))) > > This may not be necessary at this point if we merge `org-file-contents' > with the above. > Correct. The attached patch has everything integrated in org-file-contents. > > Question: > > > > - All the places where the content of SETUPFILE is inserted in a temp > > buffer, it is assumed that the file is retrieved from disk and not from > URL. > > > > Example in ox.el: > > > > ((equal key "SETUPFILE") > > (let ((file > > (expand-file-name > > (org-unbracket-string "\"" "\"" (org-trim val))))) > > ;; Avoid circular dependencies. > > (unless (member file files) > > (with-temp-buffer > > (setq default-directory > > (file-name-directory file)) > > (insert (org-file-contents file 'noerror)) > > (let ((org-inhibit-startup t)) (org-mode)) > > (funcall get-options (cons file files)))))) > > > > > > Note the use of expand-file-name, (member file files), default-directory, > > (funcall get-options (cons file files)). > > (member file files), (cons file files) and `expand-file-name' are used > to avoid reading over and over the same setup file. In particular, they > prevent circular dependencies. > > You can ignore `expand-file-name' and replace `file' with `uri', i.e., > it is straightforward to extend the code to remote file names. > > `default-directory' is slightly more tricky, as it is used to properly > read recursively setup files with relative file names. I think our best > bet is to to check if current file name is local or remote, and ignore > `default-directory' setting in the latter case. > Do we need to update the code using org-file-contents in these places: lisp/org-capture.el 692: (setq txt (org-file-contents file)) lisp/ox-man.el 519: (setq code-block (org-file-contents out-file)) 764: (setq code-block (org-file-contents out-file)) contrib/lisp/ox-groff.el 1084: (setq code-block (org-file-contents out-file)) 1521: (setq code-block (org-file-contents out-file)) -- Kaushal Modi --001a114b25ece4a450055035b2fc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for the= detailed review.

I have attached a pa= tch following your recommendation. Please review it.

Here's a MWE to show the use of this new feature:

=3D=3D=3D=3D=3D
= #+TITLE: Heading{{{NEWLINE}}}Sub-heading
=3D=3D=3D=3D=3D

(Note that NEWLINE is not an inbuilt macro.)

On Thu, Mar 30, 2017 at 5:06 AM Nicolas Goazi= ou <mail@nicolasgoaziou.fr= > wrote:
org-setupfile-ht -> = org--setupfile-cache

if it is meant to be inserted in "org.el" proper, or
`org-setupfile--cache' if you want to create a new "org-setupfile.= el"
library.

I ended up updating org-file-c= ontents. So now that is org--file-cache.
=C2=A0
Nitpick : 'equal -> #'equal

Done.
=C2=A0
Hash table to store SETUPFILE contents.

Done.
=C2=A0
`org--se= tupfile-clear-cache' or `org-setupfile--clear-cache' depending
on the location of the function.

This i= s an interactive, a user-facing function; do we want to add double-dashes i= n that name? The function is now called org-file-clear-cache.
=C2= =A0
file path -> file name

Done.
=C2=A0
> If SETUPFILE is a file path, use `org-file-contents' to= get the file
> contents.

Then, we might want to generalize `org-file-contents' instead (i.e., le= t
`org-file-contents' handle remote locations). WDYT?

That was my first thought, but was leery on modifying the = org-file-contents. I have now done that.
=C2=A0
Mind the double spaces at the end of sentences.

Done.
=C2=A0
They are not equivalent, but could `org-file-remote-p', o= r
`file-remote-p' be used instead?

>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cache (when (and is-url (n= ot nocache))
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(g= ethash setupfile org-setupfile-ht)))

=C2=A0 (cache (and is-url (not nocache) (gethash setupfile org-setupfile-ht= )))

=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(re-search-forward "\n\n") ; 2 consecutive new-l= ine chars
`re-search-forward' -> `search-forward'

Correct, regexp is not needed in that case.
<= div>=C2=A0
>=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(funcall (if noerror 'message = 9;error)
=C2=A0 (if noerror #'message #'error)
<= div>

>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 "Unable to fetch SETUPFILE from `%s'"
=C2=A0 `%s' -> %S

=C2=A0
> setupfile)))))
>=C2=A0 =C2=A0 =C2=A0 =C2=A0(setq contents (org-file-contents setupfile = noerror)))

I think it is clearer if wrapped like this:

=C2=A0 (contents
=C2=A0 =C2=A0(cond (cache)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(is-url
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let (url-retrieve-header)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(t (org-file-contents setupfile noerror))= ))

That indeed is pretty sweet. I have = made that change.
=C2=A0
>= =C2=A0 =C2=A0 =C2=A0(when contents
>=C2=A0 =C2=A0 =C2=A0 =C2=A0(save-excursion
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(insert contents)))))

This may not be necessary at this point if we merge `org-file-contents'=
with the above.

Correct. The attached p= atch has everything integrated in org-file-contents.
=C2=A0
=
> Question:
>
> - All the places where the content of SETUPFILE is inserted in a temp<= br> > buffer, it is assumed that the file is retrieved from disk and not fro= m URL.
>
> Example in ox.el:
>
>=C2=A0 ((equal key "SETUPFILE")
>=C2=A0 =C2=A0(let ((file
>=C2=A0 (expand-file-name
>=C2=A0 =C2=A0(org-unbracket-string "\"" "\"&qu= ot; (org-trim val)))))
>=C2=A0 =C2=A0 =C2=A0;; Avoid circular dependencies.
>=C2=A0 =C2=A0 =C2=A0(unless (member file files)
>=C2=A0 =C2=A0 =C2=A0 =C2=A0(with-temp-buffer
> (setq default-directory
>=C2=A0 =C2=A0(file-name-directory file))
> (insert (org-file-contents file 'noerror))
> (let ((org-inhibit-startup t)) (org-mode))
> (funcall get-options (cons file files))))))
>
>
> Note the use of expand-file-name, (member file files), default-directo= ry,
> (funcall get-options (cons file files)).

(member file files), (cons file files) and `expand-file-name' are used<= br> to avoid reading over and over the same setup file. In particular, they
prevent circular dependencies.

You can ignore `expand-file-name' and replace `file' with `uri'= , i.e.,
it is straightforward to extend the code to remote file names.

`default-directory' is slightly more tricky, as it is used to properly<= br> read recursively setup files with relative file names. I think our best
bet is to to check if current file name is local or remote, and ignore
`default-directory' setting in the latter case.
Do we need to update the code using org-file-contents in these= places:

lisp/org-capture.el
692: = =C2=A0 =C2=A0 =C2=A0(setq txt (org-file-contents file))

lisp/ox-man.el
519: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0(setq code-block =C2=A0(org-file-contents out-file))
764: =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq code-block =C2=A0(org-file-contents= out-file))

contrib/lisp/ox-groff.el
1084: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq code-block =C2= =A0(org-file-contents out-file))
1521: =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(setq code-block =C2=A0(org-file-contents out-file))
<= /div>
--001a114b25ece4a450055035b2fc-- --001a114b25ece4a456055035b2fe Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15c36b4ba9ece4967311> X-Attachment-Id: 15c36b4ba9ece4967311 RnJvbSA5M2ZkYmM5NjUyN2I2M2IzY2ViOWMyNTcwODk1OGI5YWNjZDY2YzA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjMgTWF5IDIwMTcgMTM6NDA6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB bGxvdyBvcmctZmlsZS1jb250ZW50cyB0byBmZXRjaCBmaWxlIGNvbnRlbnRzIGZyb20gYSBVUkwK CiogbGlzcC9vcmcuZWwgKG9yZy0tZmlsZS1jYWNoZSk6IE5ldyBpbnRlcm5hbCB2YXJpYWJsZSB0 byBzdG9yZQpkb3dubG9hZGVkIGZpbGVzJyBjYWNoZS4KCiogbGlzcC9vcmcuZWwgKG9yZy1maWxl LWNsZWFyLWNhY2hlKTogTmV3IGludGVyYWN0aXZlIGZ1bmN0aW9uIHRvCmNsZWFyIHRoZSBhYm92 ZSBmaWxlIGNhY2hlLgoKKiBsaXNwL29yZy5lbCAob3JnLWZpbGUtdXJsLXApOiBOZXcgZnVuY3Rp b24gdG8gdGVzdCBpZiB0aGUgaW5wdXQKYXJndW1lbnQgaXMgYSBVUkwuCgoqIGxpc3Avb3JnLmVs IChvcmctZmlsZS1jb250ZW50cyk6IEFsbG93IHRoZSBGSUxFIGFyZ3VtZW50IHRvIGJlIGEKVVJM LiAgSWYgdGhlIFVSTCBjb250ZW50cyBhcmUgYWxyZWFkeSBjYWNoZWQsIHJldHVybiB0aGUgY2Fj aGUKY29udGVudHMsIGVsc2UgZG93bmxvYWQgdGhlIGZpbGUgYW5kIHJldHVybiBjb250ZW50cyBv ZiB0aGF0LiAgVGhlCmZpbGUgaXMgYXV0b21hdGljYWxseSBjYWNoZWQgZWFjaCB0aW1lIGl0IGlz IGRvd25sb2FkZWQuICBBZGQgYSBuZXcKb3B0aW9uYWwgYXJndW1lbnQgTk9DQUNIRS4gIElmIHRo aXMgaXMgbm9uLW5pbCwgdGhlIFVSTCBpcyBhbHdheXMKZG93bmxvYWRlZCBhZnJlc2guICBVc2Ug YG9yZy0tZmlsZS1jYWNoZScgYW5kIGBvcmctZmlsZS11cmwtcCcuCgoqIGxpc3Avb3guZWwgKG9y Zy1leHBvcnQtLWxpc3QtYm91bmQtdmFyaWFibGVzKQoob3JnLWV4cG9ydC0tcHJlcGFyZS1maWxl LWNvbnRlbnRzKToKKiBsaXNwL29yZy1tYWNyby5lbCAob3JnLW1hY3JvLS1jb2xsZWN0LW1hY3Jv cykgOiBBZGFwdCB0byB0aGUKcG9zc2liaWxpdHkgdGhhdCB0aGUgaW5wdXQgdG8gYG9yZy1maWxl LWNvbnRlbnRzJyBjYW4gYmUgYSBVUkwgdG9vLgotLS0KIGV0Yy9PUkctTkVXUyAgICAgIHwgIDUg KysrKwogbGlzcC9vcmctbWFjcm8uZWwgfCAyMiArKysrKysrKysrLS0tLS0tCiBsaXNwL29yZy5l bCAgICAgICB8IDc3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0KIGxpc3Avb3guZWwgICAgICAgIHwgMzggKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9ldGMvT1JHLU5FV1MgYi9ldGMvT1JHLU5FV1MKaW5kZXggMjNlOGEx ZGI3Li40YWU0ZjU3ZWIgMTAwNjQ0Ci0tLSBhL2V0Yy9PUkctTkVXUworKysgYi9ldGMvT1JHLU5F V1MKQEAgLTIzMSw2ICsyMzEsMTEgQEAgd2hpY2ggY2F1c2VzIHJlZmlsZSB0YXJnZXRzIHRvIGJl IHByZWZpeGVkIHdpdGggdGhlIGJ1ZmZlcuKAmXMKIG5hbWUuIFRoaXMgaXMgcGFydGljdWxhcmx5 IHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAogfnVuaXF1aWZ5LmVsfi4KIAor KioqIH5vcmctZmlsZS1jb250ZW50c34gbm93IGFsbG93cyB0aGUgRklMRSBhcmd1bWVudCB0byBi ZSBhIFVSTC4KK1RoaXMgYWxsb3dzIH4jK1NFVFVQRklMRTp+IHRvIGFjY2VwdCBhIFVSTCBpbnN0 ZWFkIG9mIGEgbG9jYWwgZmlsZQorcGF0aC4gIEEgbmV3IG9wdGlvbmFsIGFyZ3VtZW50IH5OT0NB Q0hFfiBpcyBhZGRlZCB0bworfm9yZy1maWxlLWNvbnRlbnRzfi4KKwogKiogUmVtb3ZlZCBmdW5j dGlvbnMKIAogKioqIE9yZyBUaW1lbGluZQpkaWZmIC0tZ2l0IGEvbGlzcC9vcmctbWFjcm8uZWwg Yi9saXNwL29yZy1tYWNyby5lbAppbmRleCA3MWU5MTdiNzEuLjU5MGVlNTdiZCAxMDA2NDQKLS0t IGEvbGlzcC9vcmctbWFjcm8uZWwKKysrIGIvbGlzcC9vcmctbWFjcm8uZWwKQEAgLTU2LDcgKzU2 LDggQEAKIAkJICAoJm9wdGlvbmFsIGdyYW51bGFyaXR5IHZpc2libGUtb25seSkpCiAoZGVjbGFy ZS1mdW5jdGlvbiBvcmctZWxlbWVudC1wcm9wZXJ0eSAib3JnLWVsZW1lbnQiIChwcm9wZXJ0eSBl bGVtZW50KSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXR5cGUgIm9yZy1lbGVtZW50 IiAoZWxlbWVudCkpCi0oZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS1jb250ZW50cyAib3JnIiAo ZmlsZSAmb3B0aW9uYWwgbm9lcnJvcikpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS11cmwt cCAib3JnIiAoZmlsZSkpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS1jb250ZW50cyAib3Jn IiAoZmlsZSAmb3B0aW9uYWwgbm9lcnJvciBub2NhY2hlKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9y Zy1tb2RlICJvcmciICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gdmMtYmFja2VuZCAidmMtaG9va3Mi IChmKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHZjLWNhbGwgInZjLWhvb2tzIiAoZnVuIGZpbGUgJnJl c3QgYXJncykgdCkKQEAgLTEwMiwxNiArMTAzLDIxIEBAIFJldHVybiBhbiBhbGlzdCBjb250YWlu aW5nIGFsbCBtYWNybyB0ZW1wbGF0ZXMgZm91bmQuIgogCQkJCSAoaWYgb2xkLWNlbGwgKHNldGNk ciBvbGQtY2VsbCB0ZW1wbGF0ZSkKIAkJCQkgICAocHVzaCAoY29ucyBuYW1lIHRlbXBsYXRlKSB0 ZW1wbGF0ZXMpKSkpCiAJCQkgICA7OyBFbnRlciBzZXR1cCBmaWxlLgotCQkJICAgKGxldCAoKGZp bGUgKGV4cGFuZC1maWxlLW5hbWUKLQkJCQkJKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwi IiB2YWwpKSkpCi0JCQkgICAgICh1bmxlc3MgKG1lbWJlciBmaWxlIGZpbGVzKQorCQkJICAgKGxl dCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFsKSkp CisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICh1cmkgKGlm IHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkp CisJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKwkJCSAgICAgKHVubGVz cyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCSAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCQkJCSAo c2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJCSAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBm aWxlKSkKKwkJCQkgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAgKHNldHEgZGVmYXVsdC1kaXJl Y3RvcnkKKwkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkpKQogCQkJCSAob3JnLW1vZGUp Ci0JCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJCSAo aW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAoc2V0cSB0ZW1w bGF0ZXMKLQkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgZmlsZSBmaWxl cykKKwkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgdXJpIGZpbGVzKQog CQkJCQkJdGVtcGxhdGVzKSkpKSkpKSkpKSkKIAkJdGVtcGxhdGVzKSkpKQogICAgIChmdW5jYWxs IGNvbGxlY3QtbWFjcm9zIG5pbCBuaWwpKSkKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLmVsIGIvbGlz cC9vcmcuZWwKaW5kZXggNmExNWU4MDFjLi44ZGNmZDE2NzYgMTAwNjQ0Ci0tLSBhL2xpc3Avb3Jn LmVsCisrKyBiL2xpc3Avb3JnLmVsCkBAIC01MjczLDE3ICs1MjczLDcyIEBAIGEgc3RyaW5nLCBz dW1tYXJpemluZyBUQUdTLCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4iCiAJICAgKHNldHEgY3VycmVu dC1ncm91cCAobGlzdCB0YWcpKSkpCiAJKF8gbmlsKSkpKSkKIAotKGRlZnVuIG9yZy1maWxlLWNv bnRlbnRzIChmaWxlICZvcHRpb25hbCBub2Vycm9yKQotICAiUmV0dXJuIHRoZSBjb250ZW50cyBv ZiBGSUxFLCBhcyBhIHN0cmluZy4iCi0gIChpZiAoYW5kIGZpbGUgKGZpbGUtcmVhZGFibGUtcCBm aWxlKSkKLSAgICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JKGluc2VydC1maWxlLWNvbnRlbnRzIGZp bGUpCi0JKGJ1ZmZlci1zdHJpbmcpKQotICAgIChmdW5jYWxsIChpZiBub2Vycm9yICdtZXNzYWdl ICdlcnJvcikKLQkgICAgICJDYW5ub3QgcmVhZCBmaWxlIFwiJXNcIiVzIgotCSAgICAgZmlsZQot CSAgICAgKGxldCAoKGZyb20gKGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikp KSkKLQkgICAgICAgKGlmIGZyb20gKGNvbmNhdCAiIChyZWZlcmVuY2VkIGluIGZpbGUgXCIiIGZy b20gIlwiKSIpICIiKSkpKSkKKyhkZWZ2YXIgb3JnLS1maWxlLWNhY2hlIChtYWtlLWhhc2gtdGFi bGUgOnRlc3QgIydlcXVhbCkKKyAgIkhhc2ggdGFibGUgdG8gc3RvcmUgY29udGVudHMgb2YgZmls ZXMgcmVmZXJlbmNlZCB2aWEgYSBVUkwuCitUaGlzIGlzIHRoZSBjYWNoZSBvZiBmaWxlIFVSTHMg cmVhZCB1c2luZyBgb3JnLWZpbGUtY29udGVudHMnLiIpCisKKyhkZWZ1biBvcmctZmlsZS1jbGVh ci1jYWNoZSAoKQorICAiQ2xlYXIgdGhlIGZpbGUgY2FjaGUgc3RvcmVkIGluIGBvcmctLWZpbGUt Y2FjaGUnLiIKKyAgKGludGVyYWN0aXZlKQorICAoY2xyaGFzaCBvcmctLWZpbGUtY2FjaGUpKQor CisoZGVmdW4gb3JnLWZpbGUtdXJsLXAgKGZpbGUpCisgICJUZXN0IHdoZXRoZXIgRklMRSBpcyBh IFVSTC4KK1JldHVybiBub24tbmlsIGlmIGl0IGlzLiIKKyAgKHJlcXVpcmUgJ2ZmYXApCisgIChz dHJpbmctbWF0Y2gtcCBmZmFwLXVybC1yZWdleHAgZmlsZSkpCisKKyhkZWZ1biBvcmctZmlsZS1j b250ZW50cyAoZmlsZSAmb3B0aW9uYWwgbm9lcnJvciBub2NhY2hlKQorICAiUmV0dXJuIHRoZSBj b250ZW50cyBvZiBGSUxFLCBhcyBhIHN0cmluZy4KKworRklMRSBjYW4gYmUgYSBmaWxlIG5hbWUg b3IgVVJMLgorCitJZiBGSUxFIGlzIGEgVVJMLCBkb3dubG9hZCB0aGUgY29udGVudHMuICBJZiB0 aGUgVVJMIGNvbnRlbnRzIGFyZQorYWxyZWFkeSBjYWNoZWQgaW4gdGhlIGBvcmctLWZpbGUtY2Fj aGUnIGhhc2ggdGFibGUsIHRoZSBkb3dubG9hZCBzdGVwCitpcyBza2lwcGVkLgorCitJZiBOT0VS Uk9SIGlzIG5vbi1uaWwsIGlnbm9yZSB0aGUgZXJyb3Igd2hlbiB1bmFibGUgdG8gcmVhZCB0aGUg RklMRQorZnJvbSBmaWxlIG9yIFVSTC4KKworSWYgTk9DQUNIRSBpcyBub24tbmlsLCBkbyBhIGZy ZXNoIGZldGNoIG9mIEZJTEUgZXZlbiBpZiBjYWNoZWQgdmVyc2lvbgoraXMgYXZhaWxhYmxlLiAg VGhpcyBvcHRpb24gYXBwbGllcyBvbmx5IGlmIEZJTEUgaXMgYSBVUkwuIgorICAobGV0KiAoKGlz LXVybCAob3JnLWZpbGUtdXJsLXAgZmlsZSkpCisgICAgICAgICAoY2FjaGUgKGFuZCBpcy11cmwK KyAgICAgICAgICAgICAgICAgICAgIChub3Qgbm9jYWNoZSkKKyAgICAgICAgICAgICAgICAgICAg IChnZXRoYXNoIGZpbGUgb3JnLS1maWxlLWNhY2hlKSkpCisgICAgICAgICBlcnIpCisgICAgKHBy b2cxCisgICAgICAgIChjb25kCisgICAgICAgICAoY2FjaGUpICAgICAgICAgICA7U2V0IGNvbnRl bnRzIHRvIGNhY2hlIGlmIGNhY2hlIGlzIG5vbi1uaWwKKyAgICAgICAgIChpcy11cmwKKyAgICAg ICAgICAobGV0ICh1cmwtcmV0cmlldmUtaGVhZGVyCisJCWNvbnQpCisgICAgICAgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciAodXJsLXJldHJpZXZlLXN5bmNocm9ub3VzbHkgZmlsZSkKKyAgICAg ICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgOzsgVGFrZSBw b2ludCB0byBhZnRlciB0aGUgdXJsLXJldHJpZXZlIGhlYWRlcgorICAgICAgICAgICAgICAoc2Vh cmNoLWZvcndhcmQgIlxuXG4iKSA7MiBjb25zZWN1dGl2ZSBuZXctbGluZSBjaGFycworICAgICAg ICAgICAgICAoc2V0cSB1cmwtcmV0cmlldmUtaGVhZGVyIChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50 LW1pbikgKHBvaW50KSkpCisgICAgICAgICAgICAgIChtZXNzYWdlIHVybC1yZXRyaWV2ZS1oZWFk ZXIpIDtEdW1wIHRoZSBVUkwgcmV0cmlldmUgaGVhZGVyIHRvICpNZXNzYWdlcyoKKyAgICAgICAg ICAgICAgKGlmIChzdHJpbmctbWF0Y2gtcCAiSFRUUC4qXFxzLSsyMDBcXHMtT0siIHVybC1yZXRy aWV2ZS1oZWFkZXIpIDtVUkwgcmV0cmlldmVkIGNvcnJlY3RseQorICAgICAgICAgICAgICAgICAg KHByb2duCisgICAgICAgICAgICAgICAgICAgIChzZXRxIGNvbnQgKGJ1ZmZlci1zdWJzdHJpbmct bm8tcHJvcGVydGllcyAocG9pbnQpIChwb2ludC1tYXgpKSkKKyAgICAgICAgICAgICAgICAgICAg OzsgVXBkYXRlIHRoZSBjYWNoZSBgb3JnLS1maWxlLWNhY2hlJworICAgICAgICAgICAgICAgICAg ICAocHV0aGFzaCBmaWxlIGNvbnQgb3JnLS1maWxlLWNhY2hlKSkKKyAgICAgICAgICAgICAgICAo c2V0cSBlcnIgdCkpKQorCSAgICBjb250KSkKKyAgICAgICAgICh0IChpZiAoYW5kIGZpbGUgKGZp bGUtcmVhZGFibGUtcCBmaWxlKSkKKyAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgor CSAgICAgICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKKwkgICAgICAgICAgKGJ1ZmZl ci1zdHJpbmcpKQorICAgICAgICAgICAgICAoc2V0cSBlcnIgdCkpKSkKKyAgICAgICh3aGVuIGVy cgorICAgICAgICAobGV0ICgobXNnIChpZiBpcy11cmwKKyAgICAgICAgICAgICAgICAgICAgICAg IlVuYWJsZSB0byBmZXRjaCBmaWxlIGZyb20iCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90 IHJlYWQgZmlsZSIpKQorICAgICAgICAgICAgICAoZnJvbSAoYnVmZmVyLWZpbGUtbmFtZSAoYnVm ZmVyLWJhc2UtYnVmZmVyKSkpKQorICAgICAgICAgIChmdW5jYWxsIChpZiBub2Vycm9yICMnbWVz c2FnZSAjJ3VzZXItZXJyb3IpCisgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMgYCVzJyAo cmVmZXJlbmNlZCBpbiBmaWxlIGAlcycpIiBtc2cgZmlsZSBmcm9tKSkpKSkpKQogCiAoZGVmdW4g b3JnLWV4dHJhY3QtbG9nLXN0YXRlLXNldHRpbmdzICh4KQogICAiRXh0cmFjdCB0aGUgbG9nIHN0 YXRlIHNldHRpbmcgZnJvbSBhIFRPRE8ga2V5d29yZCBzdHJpbmcuCmRpZmYgLS1naXQgYS9saXNw L294LmVsIGIvbGlzcC9veC5lbAppbmRleCBhYzhkOGNlNjguLjdkMTAxMjk3NCAxMDA2NDQKLS0t IGEvbGlzcC9veC5lbAorKysgYi9saXNwL294LmVsCkBAIC0xNDk5LDE3ICsxNDk5LDIwIEBAIEFz c3VtZSBidWZmZXIgaXMgaW4gT3JnIG1vZGUuICBOYXJyb3dpbmcsIGlmIGFueSwgaXMgaWdub3Jl ZC4iCiAJCQkgKGNvbmQKIAkJCSAgOzsgT3B0aW9ucyBpbiBgb3JnLWV4cG9ydC1zcGVjaWFsLWtl eXdvcmRzJy4KIAkJCSAgKChlcXVhbCBrZXkgIlNFVFVQRklMRSIpCi0JCQkgICAobGV0ICgoZmls ZQotCQkJCSAgKGV4cGFuZC1maWxlLW5hbWUKLQkJCQkgICAob3JnLXVuYnJhY2tldC1zdHJpbmcg IlwiIiAiXCIiIChvcmctdHJpbSB2YWwpKSkpKQorCQkJICAgKGxldCogKCh1cmkgKG9yZy11bmJy YWNrZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFsKSkpCisJCQkJICAodXJpLWlzLXVy bCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICh1cmkgKGlmIHVyaS1pcy11cmwKKwkJCQkJ ICAgdXJpCisJCQkJCSAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkpCiAJCQkgICAgIDs7IEF2b2lk IGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KLQkJCSAgICAgKHVubGVzcyAobWVtYmVyIGZpbGUgZmls ZXMpCisJCQkgICAgICh1bmxlc3MgKG1lbWJlciB1cmkgZmlsZXMpCiAJCQkgICAgICAgKHdpdGgt dGVtcC1idWZmZXIKLQkJCQkgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKLQkJCQkgICAoZmlsZS1u YW1lLWRpcmVjdG9yeSBmaWxlKSkKLQkJCQkgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgZmls ZSAnbm9lcnJvcikpCisJCQkJICh1bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgIChzZXRxIGRlZmF1 bHQtZGlyZWN0b3J5CisJCQkJCSAoZmlsZS1uYW1lLWRpcmVjdG9yeSB1cmkpKSkKKwkJCQkgKGlu c2VydCAob3JnLWZpbGUtY29udGVudHMgdXJpICdub2Vycm9yKSkKIAkJCQkgKGxldCAoKG9yZy1p bmhpYml0LXN0YXJ0dXAgdCkpIChvcmctbW9kZSkpCi0JCQkJIChmdW5jYWxsIGdldC1vcHRpb25z IChjb25zIGZpbGUgZmlsZXMpKSkpKSkKKwkJCQkgKGZ1bmNhbGwgZ2V0LW9wdGlvbnMgKGNvbnMg dXJpIGZpbGVzKSkpKSkpCiAJCQkgICgoZXF1YWwga2V5ICJPUFRJT05TIikKIAkJCSAgIChzZXRx IHBsaXN0CiAJCQkJIChvcmctY29tYmluZS1wbGlzdHMKQEAgLTE2NDcsMTcgKzE2NTAsMjIgQEAg YW4gYWxpc3Qgd2hlcmUgYXNzb2NpYXRpb25zIGFyZSAoVkFSSUFCTEUtTkFNRSBWQUxVRSkuIgog CQkJCSAgICAgICJCSU5EIikKIAkJCSAgICAgICAocHVzaCAocmVhZCAoZm9ybWF0ICIoJXMpIiB2 YWwpKSBhbGlzdCkKIAkJCSAgICAgOzsgRW50ZXIgc2V0dXAgZmlsZS4KLQkJCSAgICAgKGxldCAo KGZpbGUgKGV4cGFuZC1maWxlLW5hbWUKLQkJCQkJICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwi IiAiXCIiIHZhbCkpKSkKLQkJCSAgICAgICAodW5sZXNzIChtZW1iZXIgZmlsZSBmaWxlcykKKwkJ CSAgICAgKGxldCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiB2YWwpKQor CQkJCSAgICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICAgKHVyaSAo aWYgdXJpLWlzLXVybAorCQkJCQkgICAgIHVyaQorCQkJCQkgICAoZXhwYW5kLWZpbGUtbmFtZSB1 cmkpKSkpCisJCQkgICAgICAgOzsgQXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCQkJICAg ICAgICh1bmxlc3MgKG1lbWJlciB1cmkgZmlsZXMpCiAJCQkJICh3aXRoLXRlbXAtYnVmZmVyCi0J CQkJICAgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKLQkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5 IGZpbGUpKQorCQkJCSAgICh1bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgICAgKHNldHEgZGVmYXVs dC1kaXJlY3RvcnkKKwkJCQkJICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgdXJpKSkpCiAJCQkJICAg KGxldCAoKG9yZy1pbmhpYml0LXN0YXJ0dXAgdCkpIChvcmctbW9kZSkpCi0JCQkJICAgKGluc2Vy dCAob3JnLWZpbGUtY29udGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJICAgKGluc2VydCAob3Jn LWZpbGUtY29udGVudHMgdXJpICdub2Vycm9yKSkKIAkJCQkgICAoc2V0cSBhbGlzdAogCQkJCQkg KGZ1bmNhbGwgY29sbGVjdC1iaW5kCi0JCQkJCQkgIChjb25zIGZpbGUgZmlsZXMpCisJCQkJCQkg IChjb25zIHVyaSBmaWxlcykKIAkJCQkJCSAgYWxpc3QpKSkpKSkpKSkpCiAJCSAgIGFsaXN0KSkp KSkKICAgICAgIDs7IFJldHVybiB2YWx1ZSBpbiBhcHByb3ByaWF0ZSBvcmRlciBvZiBhcHBlYXJh bmNlLgotLSAKMi4xMy4wCgo= --001a114b25ece4a456055035b2fe-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 25 May 2017 12:13:54 +0200 Message-ID: <87shjtb5wd.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50978) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDpnO-000422-0n for emacs-orgmode@gnu.org; Thu, 25 May 2017 06:15:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dDpnJ-0002YT-S1 for emacs-orgmode@gnu.org; Thu, 25 May 2017 06:15:06 -0400 Received: from relay4-d.mail.gandi.net ([2001:4b98:c:538::196]:45805) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dDpnJ-0002Xp-L9 for emacs-orgmode@gnu.org; Thu, 25 May 2017 06:15:01 -0400 In-Reply-To: (Kaushal Modi's message of "Tue, 23 May 2017 19:07:16 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Hello, Kaushal Modi writes: > I have attached a patch following your recommendation. Please review > it. Thank you. Comments follow. >> `org--setupfile-clear-cache' or `org-setupfile--clear-cache' depending >> on the location of the function. > > This is an interactive, a user-facing function; do we want to add > double-dashes in that name? The function is now called org-file-clear-cache. Interactive functions do not have double-dashes in their names. However, I have concerns about this interactive status. Given than the function is not properly documented in the manual, there is little chance it will be actually used. And if it isn't, it could return surprising results. Another idea would be to replace NOCACHE with CLEAR-CACHE. When this is non-nil, the cache is reset at the beginning of the function. The point is to reset the cache the first time the function is called, but not on recursive calls, which ensures any file is retrieved only once. Of course the cache doesn't survive to multiple exports, but at least it is transparent to the user. Yet another idea is to add a time-to-live to cached values and remove them from cache past it. However, I prefer the idea above. > I tried (org-file-remote-p "http://foo.bar") but it returned nil. Looks > like both org-file-remote-p and file-remote-p will not work for URLs. OK. > setupfile is always a string so I used %s. If setupfile is not a string > (may be nil?), then the very first string-match-p will through an error. Is > there a specific reason for using %S? I did not use %S because I did not > want the double-quotes to be printed around the string in the echo > area. The specific reason is, as you noticed, %S wraps file name within double quotes. IMO, `...' would be for symbols or key bindings. > Correct. The attached patch has everything integrated in > org-file-contents. `prog1' is difficult to read when the first SEXP is large. Also, we should avoid splitting error messages and constructing them back, for hypothetical i18n considerations. I suggest the following re-factoring, where I limited the number of bindings and remove some trivial comments. (defun org-file-contents (file &optional noerror nocache) "Return the contents of FILE, as a string. FILE can be a file name or URL. If FILE is a URL, download the contents. If the URL contents are already cached in the `org--file-cache' hash table, the download step is skipped. If NOERROR is non-nil, ignore the error when unable to read the FILE from file or URL. If NOCACHE is non-nil, do a fresh fetch of FILE even if cached version is available. This option applies only if FILE is a URL." (let* ((is-url (org-file-url-p file)) (cache (and is-url (not nocache) (gethash file org--file-cache)))) (cond (cache) (is-url (with-current-buffer (url-retrieve-synchronously file) (goto-char (point-min)) (if (re-search-forward "HTTP.*\\s-+200\\s-OK" nil t) ;; URL retrieved correctly. Move point to after the ;; url-retrieve header, update the cache `org--file-cache' ;; and return contents. (progn (search-forward "\n\n" nil 'move) (puthash file (buffer-substring-no-properties (point) (point-max)) org--file-cache)) (funcall (if noerror #'message #'user-error) (format "Unable to fetch file from %S" file))))) (t (with-temp-buffer (condition-case err (progn (insert-file-contents file) (buffer-string)) (file-error (funcall (if noerror #'message #'user-error) (error-message-string err))))))))) I'm not sure about the return value when NOERROR is non-nil, but it may not matter, per the suggestion above. > Do we need to update the code using org-file-contents in these places: What do you meant by "update"? Regards, -- Nicolas Goaziou From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 25 May 2017 12:18:28 +0200 Message-ID: <87k255b5or.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:51760) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDpqo-0005nl-Em for emacs-orgmode@gnu.org; Thu, 25 May 2017 06:18:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dDpqj-0004f6-EH for emacs-orgmode@gnu.org; Thu, 25 May 2017 06:18:38 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:49540) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dDpqj-0004eD-7b for emacs-orgmode@gnu.org; Thu, 25 May 2017 06:18:33 -0400 In-Reply-To: <87shjtb5wd.fsf@nicolasgoaziou.fr> (Nicolas Goaziou's message of "Thu, 25 May 2017 12:13:54 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Correcting myself, Nicolas Goaziou writes: > (cond > (cache) > (is-url > (with-current-buffer (url-retrieve-synchronously file) > (goto-char (point-min)) > (if (re-search-forward "HTTP.*\\s-+200\\s-OK" nil t) > ;; URL retrieved correctly. Move point to after the > ;; url-retrieve header, update the cache `org--file-cache' > ;; and return contents. > (progn > (search-forward "\n\n" nil 'move) > (puthash file > (buffer-substring-no-properties (point) (point-max)) > org--file-cache)) > (funcall (if noerror #'message #'user-error) > (format "Unable to fetch file from %S" file))))) Err. (funcall (if noerror #'message #'user-error) "Unable to fetch file from %S" file) Also, in your patch, "Test whether FILE is a URL. Return non-nil if it is." -> "Non-nil if FILE is a URL." From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 25 May 2017 11:43:31 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="94eb2c19d22297fda7055057bb72" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40224) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDrBC-0003Pz-Qf for emacs-orgmode@gnu.org; Thu, 25 May 2017 07:43:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dDrBB-0005tW-6M for emacs-orgmode@gnu.org; Thu, 25 May 2017 07:43:46 -0400 Received: from mail-lf0-x22e.google.com ([2a00:1450:4010:c07::22e]:34229) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dDrBA-0005tK-Pu for emacs-orgmode@gnu.org; Thu, 25 May 2017 07:43:45 -0400 Received: by mail-lf0-x22e.google.com with SMTP id 99so81977834lfu.1 for ; Thu, 25 May 2017 04:43:44 -0700 (PDT) In-Reply-To: <87shjtb5wd.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --94eb2c19d22297fda7055057bb72 Content-Type: text/plain; charset="UTF-8" On Thu, May 25, 2017, 6:15 AM Nicolas Goaziou wrote: > Interactive functions do not have double-dashes in their names. However, > I have concerns about this interactive status. Given than the function > is not properly documented in the manual, there is little chance it will > be actually used. And if it isn't, it could return surprising results. > > Another idea would be to replace NOCACHE with CLEAR-CACHE. When this is > non-nil, the cache is reset at the beginning of the function. The point > is to reset the cache the first time the function is called, but not on > recursive calls, which ensures any file is retrieved only once. Here is my use case for org-file-clear-cache: Let's say I have a file where I have a SETUPFILE retrieved from a URL. Now the upstream version changes but my cache is still on the older version. So I need to clear the hash. The org-file-clear-cache simply does that. With the function being interactive, I just do - M-x org-file-clear-cache - C-c C-e h h (or whatever I am exporting to) If you suggest a node where I should put that in the manual, I can add that to my updated patch. I'll all add more explanation to the doc-string of that function. Now, if the CLEAR-CACHE argument is added to org-file-clear-cache, how do we control the cache clearing interactively from outside? Also, how do we implement the resetting of the cache only the first time the function is called? Wouldn't that need an extra alist defvar to record the state of whether the function is already called specifically for that file? I think that would unnecessary complicate the logic. Another idea is that we have a defcustom like org-file-never-cache. When non-nil, that will always do a fresh URL download. This will be or'ed with the NOCACHE inside org-file-contents. This, though, makes it a bit inconvenient for the user to use the latest upstream version when they need... They might need to set org-file-never-cache to t momentarily, probably via Local Variables, before an export. Of course the cache doesn't survive to multiple exports, but at least it is > transparent to the user. > Sorry, I didn't follow that. Did you mean that the cache doesn't survive between emacs sessions? Because the cache will actually survive between multiple exports. > Yet another idea is to add a time-to-live to cached values and remove > them from cache past it. However, I prefer the idea above. > The specific reason is, as you noticed, %S wraps file name within double > quotes. IMO, `...' would be for symbols or key bindings. > I'll replace `%s' with "%S".. I just liked the curly quotes created by ` '. But if that breaks a convention, I rather not do that. `prog1' is difficult to read when the first SEXP is large. Also, we > should avoid splitting error messages and constructing them back, for > hypothetical i18n considerations. > > I suggest the following re-factoring, where I limited the number of > bindings and remove some trivial comments. > > (defun org-file-contents (file &optional noerror nocache) > "Return the contents of FILE, as a string. > > FILE can be a file name or URL. > > If FILE is a URL, download the contents. If the URL contents are > already cached in the `org--file-cache' hash table, the download step > is skipped. > > If NOERROR is non-nil, ignore the error when unable to read the FILE > from file or URL. > > If NOCACHE is non-nil, do a fresh fetch of FILE even if cached version > is available. This option applies only if FILE is a URL." > (let* ((is-url (org-file-url-p file)) > (cache (and is-url > (not nocache) > (gethash file org--file-cache)))) > (cond > (cache) > (is-url > (with-current-buffer (url-retrieve-synchronously file) > (goto-char (point-min)) > (if (re-search-forward "HTTP.*\\s-+200\\s-OK" nil t) > ;; URL retrieved correctly. Move point to after the > ;; url-retrieve header, update the cache `org--file-cache' > ;; and return contents. > (progn > (search-forward "\n\n" nil 'move) > (puthash file > (buffer-substring-no-properties (point) > (point-max)) > org--file-cache)) > (funcall (if noerror #'message #'user-error) > (format "Unable to fetch file from %S" file))))) > (t > (with-temp-buffer > (condition-case err > (progn (insert-file-contents file) (buffer-string)) > (file-error > (funcall (if noerror #'message #'user-error) > (error-message-string err))))))))) > > I'm not sure about the return value when NOERROR is non-nil, but it may > not matter, per the suggestion above. > I'll integrate your suggestion. > Do we need to update the code using org-file-contents in these places: > > What do you meant by "update"? > For the listed locations of org-file-contents instances in my earlier email, I made no change as I think that those would work the same as before after this commit is applied. I just wanted you to verify if that's the case. The only "update" required around org-file-contents was where expand-file-name was used or default-directory was set (as my patch shows). Thanks! > -- Kaushal Modi --94eb2c19d22297fda7055057bb72 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Interactive functions do not have double-dashes in their names. However, I have concerns about this interactive status. Given than the function
is not properly documented in the manual, there is little chance it will be actually used. And if it isn't, it could return surprising results.<= br>
Another idea would be to replace NOCACHE with CLEAR-CACHE. When this is
non-nil, the cache is reset at the beginning of the function. The point
is to reset the cache the first time the function is called, but not on
recursive calls, which ensures any file is retrieved only once.

Here is my use case for org-file-clear-cache:

Let's say I have a file where I have a SETUPFILE= retrieved from a URL. Now the upstream version changes but my cache is sti= ll on the older version. So I need to clear the hash. The org-file-clear-ca= che simply does that.=C2=A0

With the function bein= g interactive, I just do=C2=A0

- M-x org-file-clea= r-cache
- C-c C-e h h (or whatever I am exporting to)
<= br>
If you suggest a node where I should put that in the manual, = I can add that to my updated patch. I'll all add more explanation to th= e doc-string of that function. =C2=A0

Now, if = the CLEAR-CACHE argument is added to org-file-clear-cache, how do we contro= l the cache clearing interactively from outside?=C2=A0

=
Also, how do we implement the resetting of the cache only the first ti= me the function is called? Wouldn't that need an extra alist defvar to = record the state of whether the function is already called specifically for= that file? I think that would unnecessary complicate the logic.=C2=A0

Another idea is that we have a defcustom like org-file= -never-cache. When non-nil, that will always do a fresh URL download. This = will be or'ed with the NOCACHE inside org-file-contents. This, though, = makes it a bit inconvenient for the user to use the latest upstream version= when they need... They might need to set org-file-never-cache to t momenta= rily, probably via Local Variables, before an export.=C2=A0

<= /div>
=C2=A0Of
course the cache doesn't survive to multiple exports, but at least it i= s
transparent to the user.

Sorry, I= didn't follow that. Did you mean that the cache doesn't survive be= tween emacs sessions? Because the cache will actually survive between multi= ple exports.=C2=A0

Yet another idea is to add a time-to-live to cached= values and remove
them from cache past it. However, I prefer the idea above.
=


The specific reason is, as you noticed, %S wraps file na= me within double
quotes. IMO, `...' would be for symbols or key bindings.

I'll replace `%s' with "%S"..= I just liked the curly quotes created by ` '. But if that breaks a con= vention, I rather not do that.=C2=A0

`prog1' is difficult to read wh= en the first SEXP is large. Also, we
should avoid splitting error messages and constructing them back, for
hypothetical i18n considerations.

I suggest the following re-factoring, where I limited the number of
bindings and remove some trivial comments.

=C2=A0 (defun org-file-contents (file &optional noerror nocache)
=C2=A0 =C2=A0 "Return the contents of FILE, as a string.

=C2=A0 FILE can be a file name or URL.

=C2=A0 If FILE is a URL, download the contents.=C2=A0 If the URL contents a= re
=C2=A0 already cached in the `org--file-cache' hash table, the download= step
=C2=A0 is skipped.

=C2=A0 If NOERROR is non-nil, ignore the error when unable to read the FILE=
=C2=A0 from file or URL.

=C2=A0 If NOCACHE is non-nil, do a fresh fetch of FILE even if cached versi= on
=C2=A0 is available.=C2=A0 This option applies only if FILE is a URL."=
=C2=A0 =C2=A0 (let* ((is-url (org-file-url-p file))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(cache (and is-url
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(not nocache)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(gethash file org--file-cache))))
=C2=A0 =C2=A0 =C2=A0 (cond
=C2=A0 =C2=A0 =C2=A0 =C2=A0(cache)
=C2=A0 =C2=A0 =C2=A0 =C2=A0(is-url
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (with-current-buffer (url-retrieve-synchronousl= y file)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (goto-char (point-min))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (re-search-forward "HTTP.*\\s-+= 200\\s-OK" nil t)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; URL retrieved correctly= .=C2=A0 Move point to after the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; url-retrieve header, up= date the cache `org--file-cache'
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; and return contents. =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (search-forward &qu= ot;\n\n" nil 'move)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (puthash file
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(buffer-substring-no-properties (point) (point-max))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0org--file-cache))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (funcall (if noerror #'messag= e #'user-error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(format "Unable to fetch file from %S" file)))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0(t
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (with-temp-buffer
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (condition-case err
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn (insert-file-conten= ts file) (buffer-string))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (file-error
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(funcall (if noerror #'= message #'user-error)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (error-message-string err)))))))))

I'm not sure about the return value when NOERROR is non-nil, but it may=
not matter, per the suggestion above.

=
I'll integrate your suggestion.

> Do we need to update the c= ode using org-file-contents in these places:

What do you meant by "update"?

For the listed locations of org-file-contents instances in my earli= er email, I made no change as I think that those would work the same as bef= ore after this commit is applied. I just wanted you to verify if that's= the case. The only "update" required around org-file-contents wa= s where expand-file-name was used or default-directory was set (as my patch= shows).=C2=A0

Thanks!
--

Kaushal Modi

--94eb2c19d22297fda7055057bb72-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Thu, 25 May 2017 15:15:47 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="94eb2c19d222ba471805505ab2f4" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58841) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDuUd-0000z5-4F for emacs-orgmode@gnu.org; Thu, 25 May 2017 11:16:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dDuUb-0006yU-C8 for emacs-orgmode@gnu.org; Thu, 25 May 2017 11:16:03 -0400 Received: from mail-lf0-x22f.google.com ([2a00:1450:4010:c07::22f]:36640) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dDuUa-0006yB-Re for emacs-orgmode@gnu.org; Thu, 25 May 2017 11:16:01 -0400 Received: by mail-lf0-x22f.google.com with SMTP id h4so85756953lfj.3 for ; Thu, 25 May 2017 08:16:00 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --94eb2c19d222ba471805505ab2f4 Content-Type: multipart/alternative; boundary="94eb2c19d222ba471405505ab2f2" --94eb2c19d222ba471405505ab2f2 Content-Type: text/plain; charset="UTF-8" I have attached an updated and rebased patch with most of your suggestions implemented. Comments below. On Thu, May 25, 2017 at 7:43 AM Kaushal Modi wrote: > On Thu, May 25, 2017, 6:15 AM Nicolas Goaziou > wrote: > >> Interactive functions do not have double-dashes in their names. However, >> I have concerns about this interactive status. Given than the function >> is not properly documented in the manual, there is little chance it will >> be actually used. And if it isn't, it could return surprising results. >> >> Another idea would be to replace NOCACHE with CLEAR-CACHE. When this is >> non-nil, the cache is reset at the beginning of the function. The point >> is to reset the cache the first time the function is called, but not on >> recursive calls, which ensures any file is retrieved only once. > > > Here is my use case for org-file-clear-cache: > > Let's say I have a file where I have a SETUPFILE retrieved from a URL. Now > the upstream version changes but my cache is still on the older version. So > I need to clear the hash. The org-file-clear-cache simply does that. > > With the function being interactive, I just do > > - M-x org-file-clear-cache > - C-c C-e h h (or whatever I am exporting to) > > If you suggest a node where I should put that in the manual, I can add > that to my updated patch. I'll all add more explanation to the doc-string > of that function. > > Now, if the CLEAR-CACHE argument is added to org-file-clear-cache, how do > we control the cache clearing interactively from outside? > > Also, how do we implement the resetting of the cache only the first time > the function is called? Wouldn't that need an extra alist defvar to record > the state of whether the function is already called specifically for that > file? I think that would unnecessary complicate the logic. > > Another idea is that we have a defcustom like org-file-never-cache. When > non-nil, that will always do a fresh URL download. This will be or'ed with > the NOCACHE inside org-file-contents. This, though, makes it a bit > inconvenient for the user to use the latest upstream version when they > need... They might need to set org-file-never-cache to t momentarily, > probably via Local Variables, before an export. > > Of > > course the cache doesn't survive to multiple exports, but at least it is >> transparent to the user. >> > > Sorry, I didn't follow that. Did you mean that the cache doesn't survive > between emacs sessions? Because the cache will actually survive between > multiple exports. > This issue is still open. I have just added a bit more info to the docstring of org-file-clear-cache. I grepped org.texi but found no reference of org-file-contents. So may be we need to add a section for that, and there I can explain org-file-clear-cache in more detail. What would be a good node for that? > (if (re-search-forward "HTTP.*\\s-+200\\s-OK" nil t) >> ;; URL retrieved correctly. Move point to after the >> ;; url-retrieve header, update the cache `org--file-cache' >> ;; and return contents. >> (progn >> (search-forward "\n\n" nil 'move) > > I have integrated most of your refactored version except for this portion. Above will do a false match if that "HTTP.." string is present in the FILE body too! I have retained my version of only that part where the search happens only inside the url-retrieve header. The search is also faster in the case of failure as it does not have to search through the whole file before declaring a fail.. as only the header is searched. > -- Kaushal Modi --94eb2c19d222ba471405505ab2f2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I have attached an updated and rebased patch with most of = your suggestions implemented.

Comments below.

On Thu, May 25, 2017 at 7:43 AM Ka= ushal Modi <kaushal.modi@gmail= .com> wrote:
On Thu, May 25, 2017, 6:15 AM Nicolas Goaziou = <mail@nicola= sgoaziou.fr> wrote:
Interactive functions do not have double-dashes in their names. However, I have concerns about this interactive status. Given than the function
is not properly documented in the manual, there is little chance it will be actually used. And if it isn't, it could return surprising results.<= br>
Another idea would be to replace NOCACHE with CLEAR-CACHE. When this is
non-nil, the cache is reset at the beginning of the function. The point
is to reset the cache the first time the function is called, but not on
recursive calls, which ensures any file is retrieved only once.

Here is my use case for org-file-clear-cache:

Let's say I have a file where I have a SETUPFILE= retrieved from a URL. Now the upstream version changes but my cache is sti= ll on the older version. So I need to clear the hash. The org-file-clear-ca= che simply does that.=C2=A0

With the function bein= g interactive, I just do=C2=A0

- M-x org-file-clea= r-cache
- C-c C-e h h (or whatever I am exporting to)
<= br>
If you suggest a node where I should put that in the manual, = I can add that to my updated patch. I'll all add more explanation to th= e doc-string of that function. =C2=A0

Now, if = the CLEAR-CACHE argument is added to org-file-clear-cache, how do we contro= l the cache clearing interactively from outside?=C2=A0

=
Also, how do we implement the resetting of the cache only the first ti= me the function is called? Wouldn't that need an extra alist defvar to = record the state of whether the function is already called specifically for= that file? I think that would unnecessary complicate the logic.=C2=A0

Another idea is that we have a defcustom like org-file= -never-cache. When non-nil, that will always do a fresh URL download. This = will be or'ed with the NOCACHE inside org-file-contents. This, though, = makes it a bit inconvenient for the user to use the latest upstream version= when they need... They might need to set org-file-never-cache to t momenta= rily, probably via Local Variables, before an export.=C2=A0

<= /div>
=C2=A0Of
course the cache doesn't survive to multiple exports, but at least it i= s
transparent to the user.

Sorry, I= didn't follow that. Did you mean that the cache doesn't survive be= tween emacs sessions? Because the cache will actually survive between multi= ple exports.=C2=A0

This issue is stil= l open. I have just added a bit more info to the docstring of org-file-clea= r-cache.

I grepped org.texi but found no reference= of org-file-contents. So may be we need to add a section for that, and the= re I can explain org-file-clear-cache in more detail. What would be a good = node for that?
=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (if (re-search-forward "HTTP.*\\s-+200\\s-OK" nil t) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; URL retrieved correctly= .=C2=A0 Move point to after the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; url-retrieve header, up= date the cache `org--file-cache'
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; and return contents. =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (search-forward &qu= ot;\n\n" nil 'move)

=
I have integrated most of your refactored version except for this port= ion. Above will do a false match if that "HTTP.." string is prese= nt in the FILE body too! I have retained my version of only that part where= the search happens only inside the url-retrieve header. The search is also= faster in the case of failure as it does not have to search through the wh= ole file before declaring a fail.. as only the header is searched.
--

Kaushal Modi

--94eb2c19d222ba471405505ab2f2-- --94eb2c19d222ba471805505ab2f4 Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15c402d6d6fce4967311> X-Attachment-Id: 15c402d6d6fce4967311 RnJvbSBiOTg3N2FlNDNiYjhlODNlMWNlY2ZkZjBkYWI1MDY1NTc0YzhkYzg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjUgTWF5IDIwMTcgMTE6MDg6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB bGxvdyBvcmctZmlsZS1jb250ZW50cyB0byBmZXRjaCBmaWxlIGNvbnRlbnRzIGZyb20gYSBVUkwK CiogbGlzcC9vcmcuZWwgKG9yZy0tZmlsZS1jYWNoZSk6IE5ldyBpbnRlcm5hbCB2YXJpYWJsZSB0 byBzdG9yZQpkb3dubG9hZGVkIGZpbGVzJyBjYWNoZS4KCiogbGlzcC9vcmcuZWwgKG9yZy1maWxl LWNsZWFyLWNhY2hlKTogTmV3IGludGVyYWN0aXZlIGZ1bmN0aW9uIHRvCmNsZWFyIHRoZSBhYm92 ZSBmaWxlIGNhY2hlLgoKKiBsaXNwL29yZy5lbCAob3JnLWZpbGUtdXJsLXApOiBOZXcgZnVuY3Rp b24gdG8gdGVzdCBpZiB0aGUgaW5wdXQKYXJndW1lbnQgaXMgYSBVUkwuCgoqIGxpc3Avb3JnLmVs IChvcmctZmlsZS1jb250ZW50cyk6IEFsbG93IHRoZSBGSUxFIGFyZ3VtZW50IHRvIGJlIGEKVVJM LiAgSWYgdGhlIFVSTCBjb250ZW50cyBhcmUgYWxyZWFkeSBjYWNoZWQsIHJldHVybiB0aGUgY2Fj aGUKY29udGVudHMsIGVsc2UgZG93bmxvYWQgdGhlIGZpbGUgYW5kIHJldHVybiBjb250ZW50cyBv ZiB0aGF0LiAgVGhlCmZpbGUgaXMgYXV0b21hdGljYWxseSBjYWNoZWQgZWFjaCB0aW1lIGl0IGlz IGRvd25sb2FkZWQuICBBZGQgYSBuZXcKb3B0aW9uYWwgYXJndW1lbnQgTk9DQUNIRS4gIElmIHRo aXMgaXMgbm9uLW5pbCwgdGhlIFVSTCBpcyBhbHdheXMKZG93bmxvYWRlZCBhZnJlc2guICBVc2Ug YG9yZy0tZmlsZS1jYWNoZScgYW5kIGBvcmctZmlsZS11cmwtcCcuCgoqIGxpc3Avb3guZWwgKG9y Zy1leHBvcnQtLWxpc3QtYm91bmQtdmFyaWFibGVzKQoob3JnLWV4cG9ydC0tcHJlcGFyZS1maWxl LWNvbnRlbnRzKToKKiBsaXNwL29yZy1tYWNyby5lbCAob3JnLW1hY3JvLS1jb2xsZWN0LW1hY3Jv cykgOiBBZGFwdCB0byB0aGUKcG9zc2liaWxpdHkgdGhhdCB0aGUgaW5wdXQgdG8gYG9yZy1maWxl LWNvbnRlbnRzJyBjYW4gYmUgYSBVUkwgdG9vLgotLS0KIGV0Yy9PUkctTkVXUyAgICAgIHwgIDUg KysrKwogbGlzcC9vcmctbWFjcm8uZWwgfCAyMiArKysrKysrKysrLS0tLS0tLQogbGlzcC9vcmcu ZWwgICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCiBsaXNwL294LmVsICAgICAgICB8IDM4ICsrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9ldGMvT1JHLU5FV1MgYi9ldGMvT1JHLU5FV1MKaW5kZXggMDQ0 ZjE2N2NlLi42ZTI0ZDQwOGYgMTAwNjQ0Ci0tLSBhL2V0Yy9PUkctTkVXUworKysgYi9ldGMvT1JH LU5FV1MKQEAgLTIzNCw2ICsyMzQsMTEgQEAgd2hpY2ggY2F1c2VzIHJlZmlsZSB0YXJnZXRzIHRv IGJlIHByZWZpeGVkIHdpdGggdGhlIGJ1ZmZlcuKAmXMKIG5hbWUuIFRoaXMgaXMgcGFydGljdWxh cmx5IHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAogfnVuaXF1aWZ5LmVsfi4K IAorKioqIH5vcmctZmlsZS1jb250ZW50c34gbm93IGFsbG93cyB0aGUgRklMRSBhcmd1bWVudCB0 byBiZSBhIFVSTC4KK1RoaXMgYWxsb3dzIH4jK1NFVFVQRklMRTp+IHRvIGFjY2VwdCBhIFVSTCBp bnN0ZWFkIG9mIGEgbG9jYWwgZmlsZQorcGF0aC4gIEEgbmV3IG9wdGlvbmFsIGFyZ3VtZW50IH5O T0NBQ0hFfiBpcyBhZGRlZCB0bworfm9yZy1maWxlLWNvbnRlbnRzfi4KKwogKiogUmVtb3ZlZCBm dW5jdGlvbnMKIAogKioqIE9yZyBUaW1lbGluZQpkaWZmIC0tZ2l0IGEvbGlzcC9vcmctbWFjcm8u ZWwgYi9saXNwL29yZy1tYWNyby5lbAppbmRleCBmNWRkYjkyZTQuLjlmNmUwZWJhZiAxMDA2NDQK LS0tIGEvbGlzcC9vcmctbWFjcm8uZWwKKysrIGIvbGlzcC9vcmctbWFjcm8uZWwKQEAgLTU5LDcg KzU5LDggQEAKIAkJICAoJm9wdGlvbmFsIGdyYW51bGFyaXR5IHZpc2libGUtb25seSkpCiAoZGVj bGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1wcm9wZXJ0eSAib3JnLWVsZW1lbnQiIChwcm9wZXJ0 eSBlbGVtZW50KSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXR5cGUgIm9yZy1lbGVt ZW50IiAoZWxlbWVudCkpCi0oZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS1jb250ZW50cyAib3Jn IiAoZmlsZSAmb3B0aW9uYWwgbm9lcnJvcikpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS11 cmwtcCAib3JnIiAoZmlsZSkpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS1jb250ZW50cyAi b3JnIiAoZmlsZSAmb3B0aW9uYWwgbm9lcnJvciBub2NhY2hlKSkKIChkZWNsYXJlLWZ1bmN0aW9u IG9yZy1tb2RlICJvcmciICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gdmMtYmFja2VuZCAidmMtaG9v a3MiIChmKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHZjLWNhbGwgInZjLWhvb2tzIiAoZnVuIGZpbGUg JnJlc3QgYXJncykgdCkKQEAgLTEwNSwxNiArMTA2LDIxIEBAIFJldHVybiBhbiBhbGlzdCBjb250 YWluaW5nIGFsbCBtYWNybyB0ZW1wbGF0ZXMgZm91bmQuIgogCQkJCSAoaWYgb2xkLWNlbGwgKHNl dGNkciBvbGQtY2VsbCB0ZW1wbGF0ZSkKIAkJCQkgICAocHVzaCAoY29ucyBuYW1lIHRlbXBsYXRl KSB0ZW1wbGF0ZXMpKSkpCiAJCQkgICA7OyBFbnRlciBzZXR1cCBmaWxlLgotCQkJICAgKGxldCAo KGZpbGUgKGV4cGFuZC1maWxlLW5hbWUKLQkJCQkJKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIg IlwiIiB2YWwpKSkpCi0JCQkgICAgICh1bmxlc3MgKG1lbWJlciBmaWxlIGZpbGVzKQorCQkJICAg KGxldCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFs KSkpCisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICh1cmkg KGlmIHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhwYW5kLWZpbGUtbmFtZSB1cmkp KSkpCisJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKwkJCSAgICAgKHVu bGVzcyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCSAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCQkJ CSAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJCSAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9y eSBmaWxlKSkKKwkJCQkgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAgKHNldHEgZGVmYXVsdC1k aXJlY3RvcnkKKwkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkpKQogCQkJCSAob3JnLW1v ZGUpCi0JCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJ CSAoaW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAoc2V0cSB0 ZW1wbGF0ZXMKLQkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgZmlsZSBm aWxlcykKKwkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgdXJpIGZpbGVz KQogCQkJCQkJdGVtcGxhdGVzKSkpKSkpKSkpKSkKIAkJdGVtcGxhdGVzKSkpKQogICAgIChmdW5j YWxsIGNvbGxlY3QtbWFjcm9zIG5pbCBuaWwpKSkKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLmVsIGIv bGlzcC9vcmcuZWwKaW5kZXggOTQ2ZDhhZjhjLi5lYmQxZjQ3OTIgMTAwNjQ0Ci0tLSBhL2xpc3Av b3JnLmVsCisrKyBiL2xpc3Avb3JnLmVsCkBAIC01MjczLDE3ICs1MjczLDY5IEBAIGEgc3RyaW5n LCBzdW1tYXJpemluZyBUQUdTLCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4iCiAJICAgKHNldHEgY3Vy cmVudC1ncm91cCAobGlzdCB0YWcpKSkpCiAJKF8gbmlsKSkpKSkKIAotKGRlZnVuIG9yZy1maWxl LWNvbnRlbnRzIChmaWxlICZvcHRpb25hbCBub2Vycm9yKQotICAiUmV0dXJuIHRoZSBjb250ZW50 cyBvZiBGSUxFLCBhcyBhIHN0cmluZy4iCi0gIChpZiAoYW5kIGZpbGUgKGZpbGUtcmVhZGFibGUt cCBmaWxlKSkKKyhkZWZ2YXIgb3JnLS1maWxlLWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3Qg IydlcXVhbCkKKyAgIkhhc2ggdGFibGUgdG8gc3RvcmUgY29udGVudHMgb2YgZmlsZXMgcmVmZXJl bmNlZCB2aWEgYSBVUkwuCitUaGlzIGlzIHRoZSBjYWNoZSBvZiBmaWxlIFVSTHMgcmVhZCB1c2lu ZyBgb3JnLWZpbGUtY29udGVudHMnLiIpCisKKyhkZWZ1biBvcmctZmlsZS1jbGVhci1jYWNoZSAo KQorICAiQ2xlYXIgdGhlIGZpbGUgY2FjaGUgc3RvcmVkIGluIGBvcmctLWZpbGUtY2FjaGUnLgor CitCeSBkZWZhdWx0LCBpZiB0aGUgRklMRSBhcmd1bWVudCBvZiBgb3JnLWZpbGUtY29udGVudHMn IGlzIGEgVVJMLCB0aGUKK1VSTCBkb3dubG9hZCB3aWxsIGJlIHNraXBwZWQgaWYgaXQgd2FzIGFs cmVhZHkgZG93bmxvYWRlZCBhbmQgY2FjaGVkCitpbiBgb3JnLS1maWxlLWNhY2hlJy4gIElmIHlv dSBuZWVkIHRvIGZvcmNlLWRvd25sb2FkIHRoZSBVUkwgYWdhaW4sCitjYWxsIHRoaXMgZnVuY3Rp b24gdG8gY2xlYXIgdGhlIGNhY2hlIGZpcnN0LiIKKyAgKGludGVyYWN0aXZlKQorICAoY2xyaGFz aCBvcmctLWZpbGUtY2FjaGUpKQorCisoZGVmdW4gb3JnLWZpbGUtdXJsLXAgKGZpbGUpCisgICJO b24tbmlsIGlmIEZJTEUgaXMgYSBVUkwuIgorICAocmVxdWlyZSAnZmZhcCkKKyAgKHN0cmluZy1t YXRjaC1wIGZmYXAtdXJsLXJlZ2V4cCBmaWxlKSkKKworKGRlZnVuIG9yZy1maWxlLWNvbnRlbnRz IChmaWxlICZvcHRpb25hbCBub2Vycm9yIG5vY2FjaGUpCisgICJSZXR1cm4gdGhlIGNvbnRlbnRz IG9mIEZJTEUsIGFzIGEgc3RyaW5nLgorCitGSUxFIGNhbiBiZSBhIGZpbGUgbmFtZSBvciBVUkwu CisKK0lmIEZJTEUgaXMgYSBVUkwsIGRvd25sb2FkIHRoZSBjb250ZW50cy4gIElmIHRoZSBVUkwg Y29udGVudHMgYXJlCithbHJlYWR5IGNhY2hlZCBpbiB0aGUgYG9yZy0tZmlsZS1jYWNoZScgaGFz aCB0YWJsZSwgdGhlIGRvd25sb2FkIHN0ZXAKK2lzIHNraXBwZWQuCisKK0lmIE5PRVJST1IgaXMg bm9uLW5pbCwgaWdub3JlIHRoZSBlcnJvciB3aGVuIHVuYWJsZSB0byByZWFkIHRoZSBGSUxFCitm cm9tIGZpbGUgb3IgVVJMLgorCitJZiBOT0NBQ0hFIGlzIG5vbi1uaWwsIGRvIGEgZnJlc2ggZmV0 Y2ggb2YgRklMRSBldmVuIGlmIGNhY2hlZCB2ZXJzaW9uCitpcyBhdmFpbGFibGUuICBUaGlzIG9w dGlvbiBhcHBsaWVzIG9ubHkgaWYgRklMRSBpcyBhIFVSTC4iCisgIChsZXQqICgoaXMtdXJsIChv cmctZmlsZS11cmwtcCBmaWxlKSkKKyAgICAgICAgIChjYWNoZSAoYW5kIGlzLXVybAorICAgICAg ICAgICAgICAgICAgICAgKG5vdCBub2NhY2hlKQorICAgICAgICAgICAgICAgICAgICAgKGdldGhh c2ggZmlsZSBvcmctLWZpbGUtY2FjaGUpKSkpCisgICAgKGNvbmQKKyAgICAgKGNhY2hlKQorICAg ICAoaXMtdXJsCisgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAodXJsLXJldHJpZXZlLXN5bmNo cm9ub3VzbHkgZmlsZSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAg OzsgTW92ZSBwb2ludCB0byBhZnRlciB0aGUgdXJsLXJldHJpZXZlIGhlYWRlcgorICAgICAgICAo c2VhcmNoLWZvcndhcmQgIlxuXG4iIG5pbCAnbW92ZSkKKwk7OyBTZWFyY2ggZm9yIHRoZSBzdWNj ZXNzIGNvZGUgb25seSBpbiB0aGUgdXJsLXJldHJpZXZlIGhlYWRlcgorICAgICAgICAoaWYgKHN0 cmluZy1tYXRjaC1wICJIVFRQLipcXHMtKzIwMFxccy1PSyIKKwkJCSAgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1t aW4pIChwb2ludCkpKQorCSAgICA7OyBVcGRhdGUgdGhlIGNhY2hlIGBvcmctLWZpbGUtY2FjaGUn IGFuZCByZXR1cm4gY29udGVudHMKKyAgICAgICAgICAgIChwdXRoYXNoIGZpbGUKKwkJICAgICAo YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgKHBvaW50LW1heCkpCisJCSAg ICAgb3JnLS1maWxlLWNhY2hlKQorCSAgKGZ1bmNhbGwgKGlmIG5vZXJyb3IgIydtZXNzYWdlICMn dXNlci1lcnJvcikKKyAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGZldGNoIGZpbGUgZnJv bSAlUyIgZmlsZSkpKSkKKyAgICAgKHQKICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JKGluc2Vy dC1maWxlLWNvbnRlbnRzIGZpbGUpCi0JKGJ1ZmZlci1zdHJpbmcpKQotICAgIChmdW5jYWxsIChp ZiBub2Vycm9yICdtZXNzYWdlICdlcnJvcikKLQkgICAgICJDYW5ub3QgcmVhZCBmaWxlIFwiJXNc IiVzIgotCSAgICAgZmlsZQotCSAgICAgKGxldCAoKGZyb20gKGJ1ZmZlci1maWxlLW5hbWUgKGJ1 ZmZlci1iYXNlLWJ1ZmZlcikpKSkKLQkgICAgICAgKGlmIGZyb20gKGNvbmNhdCAiIChyZWZlcmVu Y2VkIGluIGZpbGUgXCIiIGZyb20gIlwiKSIpICIiKSkpKSkKKyAgICAgICAgKGNvbmRpdGlvbi1j YXNlIGVycgorCSAgICAocHJvZ24KKwkgICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgZmlsZSkK KwkgICAgICAoYnVmZmVyLXN0cmluZykpCisJICAoZmlsZS1lcnJvcgorICAgICAgICAgICAoZnVu Y2FsbCAoaWYgbm9lcnJvciAjJ21lc3NhZ2UgIyd1c2VyLWVycm9yKQorCQkgICAgKGVycm9yLW1l c3NhZ2Utc3RyaW5nIGVycikpKSkpKSkpKQogCiAoZGVmdW4gb3JnLWV4dHJhY3QtbG9nLXN0YXRl LXNldHRpbmdzICh4KQogICAiRXh0cmFjdCB0aGUgbG9nIHN0YXRlIHNldHRpbmcgZnJvbSBhIFRP RE8ga2V5d29yZCBzdHJpbmcuCmRpZmYgLS1naXQgYS9saXNwL294LmVsIGIvbGlzcC9veC5lbApp bmRleCBhYzhkOGNlNjguLjdkMTAxMjk3NCAxMDA2NDQKLS0tIGEvbGlzcC9veC5lbAorKysgYi9s aXNwL294LmVsCkBAIC0xNDk5LDE3ICsxNDk5LDIwIEBAIEFzc3VtZSBidWZmZXIgaXMgaW4gT3Jn IG1vZGUuICBOYXJyb3dpbmcsIGlmIGFueSwgaXMgaWdub3JlZC4iCiAJCQkgKGNvbmQKIAkJCSAg OzsgT3B0aW9ucyBpbiBgb3JnLWV4cG9ydC1zcGVjaWFsLWtleXdvcmRzJy4KIAkJCSAgKChlcXVh bCBrZXkgIlNFVFVQRklMRSIpCi0JCQkgICAobGV0ICgoZmlsZQotCQkJCSAgKGV4cGFuZC1maWxl LW5hbWUKLQkJCQkgICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIChvcmctdHJpbSB2 YWwpKSkpKQorCQkJICAgKGxldCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwi IiAob3JnLXRyaW0gdmFsKSkpCisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAgdXJp KSkKKwkJCQkgICh1cmkgKGlmIHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhwYW5k LWZpbGUtbmFtZSB1cmkpKSkpCiAJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2ll cy4KLQkJCSAgICAgKHVubGVzcyAobWVtYmVyIGZpbGUgZmlsZXMpCisJCQkgICAgICh1bmxlc3Mg KG1lbWJlciB1cmkgZmlsZXMpCiAJCQkgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKLQkJCQkgKHNl dHEgZGVmYXVsdC1kaXJlY3RvcnkKLQkJCQkgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlKSkK LQkJCQkgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJICh1 bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5CisJCQkJCSAo ZmlsZS1uYW1lLWRpcmVjdG9yeSB1cmkpKSkKKwkJCQkgKGluc2VydCAob3JnLWZpbGUtY29udGVu dHMgdXJpICdub2Vycm9yKSkKIAkJCQkgKGxldCAoKG9yZy1pbmhpYml0LXN0YXJ0dXAgdCkpIChv cmctbW9kZSkpCi0JCQkJIChmdW5jYWxsIGdldC1vcHRpb25zIChjb25zIGZpbGUgZmlsZXMpKSkp KSkKKwkJCQkgKGZ1bmNhbGwgZ2V0LW9wdGlvbnMgKGNvbnMgdXJpIGZpbGVzKSkpKSkpCiAJCQkg ICgoZXF1YWwga2V5ICJPUFRJT05TIikKIAkJCSAgIChzZXRxIHBsaXN0CiAJCQkJIChvcmctY29t YmluZS1wbGlzdHMKQEAgLTE2NDcsMTcgKzE2NTAsMjIgQEAgYW4gYWxpc3Qgd2hlcmUgYXNzb2Np YXRpb25zIGFyZSAoVkFSSUFCTEUtTkFNRSBWQUxVRSkuIgogCQkJCSAgICAgICJCSU5EIikKIAkJ CSAgICAgICAocHVzaCAocmVhZCAoZm9ybWF0ICIoJXMpIiB2YWwpKSBhbGlzdCkKIAkJCSAgICAg OzsgRW50ZXIgc2V0dXAgZmlsZS4KLQkJCSAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxlLW5h bWUKLQkJCQkJICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIHZhbCkpKSkKLQkJCSAg ICAgICAodW5sZXNzIChtZW1iZXIgZmlsZSBmaWxlcykKKwkJCSAgICAgKGxldCogKCh1cmkgKG9y Zy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiB2YWwpKQorCQkJCSAgICAodXJpLWlzLXVybCAo b3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICAgKHVyaSAoaWYgdXJpLWlzLXVybAorCQkJCQkg ICAgIHVyaQorCQkJCQkgICAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkpCisJCQkgICAgICAgOzsg QXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCQkJICAgICAgICh1bmxlc3MgKG1lbWJlciB1 cmkgZmlsZXMpCiAJCQkJICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJICAgKHNldHEgZGVmYXVsdC1k aXJlY3RvcnkKLQkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQorCQkJCSAgICh1bmxl c3MgdXJpLWlzLXVybAorCQkJCSAgICAgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKKwkJCQkJICAg KGZpbGUtbmFtZS1kaXJlY3RvcnkgdXJpKSkpCiAJCQkJICAgKGxldCAoKG9yZy1pbmhpYml0LXN0 YXJ0dXAgdCkpIChvcmctbW9kZSkpCi0JCQkJICAgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMg ZmlsZSAnbm9lcnJvcikpCisJCQkJICAgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgdXJpICdu b2Vycm9yKSkKIAkJCQkgICAoc2V0cSBhbGlzdAogCQkJCQkgKGZ1bmNhbGwgY29sbGVjdC1iaW5k Ci0JCQkJCQkgIChjb25zIGZpbGUgZmlsZXMpCisJCQkJCQkgIChjb25zIHVyaSBmaWxlcykKIAkJ CQkJCSAgYWxpc3QpKSkpKSkpKSkpCiAJCSAgIGFsaXN0KSkpKSkKICAgICAgIDs7IFJldHVybiB2 YWx1ZSBpbiBhcHByb3ByaWF0ZSBvcmRlciBvZiBhcHBlYXJhbmNlLgotLSAKMi4xMy4wCgo= --94eb2c19d222ba471805505ab2f4-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Fri, 26 May 2017 09:47:52 +0200 Message-ID: <87o9ug83fb.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:53371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dE9yX-0001qo-8S for emacs-orgmode@gnu.org; Fri, 26 May 2017 03:47:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dE9yW-0004ZS-D7 for emacs-orgmode@gnu.org; Fri, 26 May 2017 03:47:57 -0400 Received: from relay4-d.mail.gandi.net ([2001:4b98:c:538::196]:35104) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dE9yW-0004ZF-6I for emacs-orgmode@gnu.org; Fri, 26 May 2017 03:47:56 -0400 In-Reply-To: (Kaushal Modi's message of "Thu, 25 May 2017 15:15:47 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Hello, Kaushal Modi writes: > I have attached an updated and rebased patch with most of your suggestions > implemented. Thank you. >> Here is my use case for org-file-clear-cache: >> >> Let's say I have a file where I have a SETUPFILE retrieved from a URL. Now >> the upstream version changes but my cache is still on the older version. So >> I need to clear the hash. The org-file-clear-cache simply does that. I understand the use case for `org-file-clear-cache'. My suggestion is to remove that need by clearing cache automatically. Of course, the drawback is the cache is cleared more often than necessary. Users could get very surprising results if they forget to call this function. So it might be a good idea to call it from time to time, on user's behalf. > I grepped org.texi but found no reference of org-file-contents. So may be > we need to add a section for that, and there I can explain > org-file-clear-cache in more detail. What would be a good node for > that? `org-file-contents' is a developer-facing function. I don't really see a good place in the manual for it. That's the problem of `org-file-clear-cache', which is really an implementation detail users shouldn't care about. Here's another idea: call it from `org-mode-restart'. So cache is reset whenever `C-c C-c' is pressed on a keyword. So we don't need to document the function anymore. Instead, we could drop a note about the cache in (info "(org) The very busy C-c C-c key"). >> (if (re-search-forward "HTTP.*\\s-+200\\s-OK" nil t) >>> ;; URL retrieved correctly. Move point to after the >>> ;; url-retrieve header, update the cache `org--file-cache' >>> ;; and return contents. >>> (progn >>> (search-forward "\n\n" nil 'move) >> >> > I have integrated most of your refactored version except for this portion. > Above will do a false match if that "HTTP.." string is present in the FILE > body too! I have retained my version of only that part where the search > happens only inside the url-retrieve header. The search is also faster in > the case of failure as it does not have to search through the whole file > before declaring a fail.. as only the header is searched. OK. Then the following at least doesn't have the overhead of creating a string: (with-current-buffer (url-retrieve-synchronously file) (goto-char (point-min)) ;; Move point to after the url-retrieve header. (search-forward "\n\n" nil 'move) ;; Search for the success code only in the url-retrieve header. (if (save-excursion (re-search-backward "HTTP.*\\s-+200\\s-OK" nil t)) ;; Update the cache `org--file-cache' and return contents. (puthash file (buffer-substring-no-properties (point) (point-max)) org--file-cache) (funcall (if noerror #'message #'user-error) "Unable to fetch file from %S" file))) Also, mind the full stop at the end of the comments. Regards, -- Nicolas Goaziou From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Fri, 26 May 2017 20:24:00 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1140495ec99cdb0550731e7e" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59251) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dELmQ-0006Ls-Ks for emacs-orgmode@gnu.org; Fri, 26 May 2017 16:24:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dELmP-0005g1-H4 for emacs-orgmode@gnu.org; Fri, 26 May 2017 16:24:14 -0400 Received: from mail-lf0-x22a.google.com ([2a00:1450:4010:c07::22a]:35446) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dELmO-0005fk-UM for emacs-orgmode@gnu.org; Fri, 26 May 2017 16:24:13 -0400 Received: by mail-lf0-x22a.google.com with SMTP id a5so11438388lfh.2 for ; Fri, 26 May 2017 13:24:12 -0700 (PDT) In-Reply-To: <87o9ug83fb.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --001a1140495ec99cdb0550731e7e Content-Type: multipart/alternative; boundary="001a1140495ec99cd70550731e7c" --001a1140495ec99cd70550731e7c Content-Type: text/plain; charset="UTF-8" Thanks for another round of review. I have attached a patch, rebased to master and with all suggestions implemented. There are some additional changes in the patch this time: - Prevent org-edit-special from attempting to open the "file" for editing if the value is a URL. - Silence byte-compiler for ffap-url-regexp. We do a require, but the byte-compiler still complains of a free variable. - Update org.texi at few places (first time editing a texi) On Fri, May 26, 2017 at 3:47 AM Nicolas Goaziou wrote: > I understand the use case for `org-file-clear-cache'. My suggestion is > to remove that need by clearing cache automatically. Of course, the > drawback is the cache is cleared more often than necessary. Users could > get very surprising results if they forget to call this function. So it > might be a good idea to call it from time to time, on user's behalf. > I liked your C-c C-c idea below! :) > `org-file-contents' is a developer-facing function. I don't really see > a good place in the manual for it. That's the problem of > `org-file-clear-cache', which is really an implementation detail users > shouldn't care about. > Understood. > Here's another idea: call it from `org-mode-restart'. So cache is reset > whenever `C-c C-c' is pressed on a keyword. So we don't need to document > the function anymore. Instead, we could drop a note about the cache in > (info "(org) The very busy C-c C-c key"). > Done! > OK. Then the following at least doesn't have the overhead of creating > a string: > Integrated. Thanks! Also, mind the full stop at the end of the comments. > Will do. -- Kaushal Modi --001a1140495ec99cd70550731e7c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for another round o= f review.

I have attached a patch, rebased to mast= er and with all suggestions implemented.

There are= some additional changes in the patch this time:
- Prevent org-ed= it-special from attempting to open the "file" for editing if the = value is a URL.
- Silence byte-compiler for ffap-url-regexp. We d= o a require, but the byte-compiler still complains of a free variable.
- Update org.texi at few places (first time editing a texi)

On Fri, May 26, 2017 at 3:47 AM Nicolas Goaziou= <mail@nicolasgoaziou.fr&g= t; wrote:
I understand the use case= for `org-file-clear-cache'. My suggestion is
to remove that need by clearing cache automatically. Of course, the
drawback is the cache is cleared more often than necessary. Users could
get very surprising results if they forget to call this function. So it
might be a good idea to call it from time to time, on user's behalf.

I liked your C-c C-c idea below! :)
=
=C2=A0
`org-file-contents' is = a developer-facing function. I don't really see
a good place in the manual for it. That's the problem of
`org-file-clear-cache', which is really an implementation detail users<= br> shouldn't care about.

Understood.
=C2=A0
Here's another idea= : call it from `org-mode-restart'. So cache is reset
whenever `C-c C-c' is pressed on a keyword. So we don't need to doc= ument
the function anymore. Instead, we could drop a note about the cache in
(info "(org) The very busy C-c C-c key").
Done!
=C2=A0
OK.= Then the following at least doesn't have the overhead of creating
a string:

Integrated. Thanks!

Also, mind the full stop at the end of the comments.
<= br>
Will do.
--

Kaushal Modi

--001a1140495ec99cd70550731e7c-- --001a1140495ec99cdb0550731e7e Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15c46676730ce4967311> X-Attachment-Id: 15c46676730ce4967311 RnJvbSA4MGJiMGY4MWZjNTRlMmJkZDdmMDBjMDNmMGQwY2FlNzg5MjA0ODc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjUgTWF5IDIwMTcgMTE6MDg6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB bGxvdyBvcmctZmlsZS1jb250ZW50cyB0byBmZXRjaCBmaWxlIGNvbnRlbnRzIGZyb20gYSBVUkwK CiogbGlzcC9vcmcuZWwgKG9yZy0tZmlsZS1jYWNoZSk6IE5ldyBpbnRlcm5hbCB2YXJpYWJsZSB0 byBzdG9yZQpkb3dubG9hZGVkIGZpbGVzJyBjYWNoZS4KCiogbGlzcC9vcmcuZWwgKG9yZy1tb2Rl LXJlc3RhcnQpOiBOb3cgYWxzbyBjbGVhcnMgdGhlIGFib3ZlIGZpbGUKICBjYWNoZS4KCiogbGlz cC9vcmcuZWwgKG9yZy1maWxlLXVybC1wKTogTmV3IGZ1bmN0aW9uIHRvIHRlc3QgaWYgdGhlIGlu cHV0CmFyZ3VtZW50IGlzIGEgVVJMLgoKKiBsaXNwL29yZy5lbCAob3JnLWZpbGUtY29udGVudHMp OiBBbGxvdyB0aGUgRklMRSBhcmd1bWVudCB0byBiZSBhClVSTC4gIElmIHRoZSBVUkwgY29udGVu dHMgYXJlIGFscmVhZHkgY2FjaGVkLCByZXR1cm4gdGhlIGNhY2hlCmNvbnRlbnRzLCBlbHNlIGRv d25sb2FkIHRoZSBmaWxlIGFuZCByZXR1cm4gY29udGVudHMgb2YgdGhhdC4gIFRoZQpmaWxlIGlz IGF1dG9tYXRpY2FsbHkgY2FjaGVkIGVhY2ggdGltZSBpdCBpcyBkb3dubG9hZGVkLiAgQWRkIGEg bmV3Cm9wdGlvbmFsIGFyZ3VtZW50IE5PQ0FDSEUuICBJZiB0aGlzIGlzIG5vbi1uaWwsIHRoZSBV UkwgaXMgYWx3YXlzCmRvd25sb2FkZWQgYWZyZXNoLiAgVXNlIGBvcmctLWZpbGUtY2FjaGUnIGFu ZCBgb3JnLWZpbGUtdXJsLXAnLgoKKiBsaXNwL29yZy5lbCAob3JnLWVkaXQtc3BlY2lhbCk6IERv IG5vdCBhbGxvdyBlZGl0aW5nIHRoZSAiZmlsZSIgaWYgYQpVUkwgaXMgc3BlY2lmaWVkIGZvciB0 aGUgIiMrU0VUVVBGSUxFIi4KCiogbGlzcC9veC5lbCAob3JnLWV4cG9ydC0tbGlzdC1ib3VuZC12 YXJpYWJsZXMpCihvcmctZXhwb3J0LS1wcmVwYXJlLWZpbGUtY29udGVudHMpOgoqIGxpc3Avb3Jn LW1hY3JvLmVsIChvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zKSA6IEFkYXB0IHRvIHRoZQpwb3Nz aWJpbGl0eSB0aGF0IHRoZSBpbnB1dCB0byBgb3JnLWZpbGUtY29udGVudHMnIGNhbiBiZSBhIFVS TCB0b28uCgoqIGRvYy9vcmcudGV4aSAoRXhwb3J0IHNldHRpbmdzLCBJbi1idWZmZXIgc2V0dGlu Z3MpCihUaGUgdmVyeSBidXN5IEMtYyBDLWMga2V5KTogTWVudGlvbiB0aGF0ICMrU0VUVVBGSUxF IGtleXdvcmQgY2FuIG5vdwp0YWtlIGEgVVJMIGFzIGEgdmFsdWUsIGFuZCB0aGF0IEMtYyBDLWMg b24gdGhlICMrU0VUVVBGSUxFIGxpbmUgd2lsbApjbGVhciB0aGUgb3JnIGZpbGUgY2FjaGUuCi0t LQogZG9jL29yZy50ZXhpICAgICAgfCAzNyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQog ZXRjL09SRy1ORVdTICAgICAgfCAxMiArKysrKysrKystCiBsaXNwL29yZy1tYWNyby5lbCB8IDIy ICsrKysrKysrKystLS0tLS0tCiBsaXNwL29yZy5lbCAgICAgICB8IDcwICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIGxpc3Avb3guZWwgICAg ICAgIHwgMzggKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQs IDEyNyBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvb3Jn LnRleGkgYi9kb2Mvb3JnLnRleGkKaW5kZXggMTQyZmE5NjI3Li4zZWJjMDFjMGMgMTAwNjQ0Ci0t LSBhL2RvYy9vcmcudGV4aQorKysgYi9kb2Mvb3JnLnRleGkKQEAgLTEwNDA2LDE0ICsxMDQwNiwx NCBAQCBvdmVycmlkZSBvcHRpb25zIHNldCBhdCBhIG1vcmUgZ2VuZXJhbCBsZXZlbC4KIAogQGNp bmRleCAjK1NFVFVQRklMRQogSW4tYnVmZmVyIHNldHRpbmdzIG1heSBhcHBlYXIgYW55d2hlcmUg aW4gdGhlIGZpbGUsIGVpdGhlciBkaXJlY3RseSBvcgotaW5kaXJlY3RseSB0aHJvdWdoIGEgZmls ZSBpbmNsdWRlZCB1c2luZyBAc2FtcHsjK1NFVFVQRklMRTogZmlsZW5hbWV9IHN5bnRheC4KLU9w dGlvbiBrZXl3b3JkIHNldHMgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIGJhY2stZW5kIGNhbiBi ZSBpbnNlcnRlZCBmcm9tCi10aGUgZXhwb3J0IGRpc3BhdGNoZXIgKEBweHJlZntUaGUgZXhwb3J0 IGRpc3BhdGNoZXJ9KSB1c2luZyB0aGUgQGNvZGV7SW5zZXJ0Ci10ZW1wbGF0ZX0gY29tbWFuZCBi eSBwcmVzc2luZyBAa2V5eyN9LiAgVG8gaW5zZXJ0IGtleXdvcmRzIGluZGl2aWR1YWxseSwKLWEg Z29vZCB3YXkgdG8gbWFrZSBzdXJlIHRoZSBrZXl3b3JkIGlzIGNvcnJlY3QgaXMgdG8gdHlwZSBA Y29kZXsjK30gYW5kIHRoZW4KLXRvIHVzZSBAa2Jke00tQGtleXtUQUJ9fUBmb290bm90ZXtNYW55 IGRlc2t0b3BzIGludGVyY2VwdCBAa2Jke00tVEFCfSB0bwotc3dpdGNoIHdpbmRvd3MuICBVc2Ug QGtiZHtDLU0taX0gb3IgQGtiZHtAa2V5e0VTQ30gQGtleXtUQUJ9fSBpbnN0ZWFkLn0gZm9yCi1j b21wbGV0aW9uLgoraW5kaXJlY3RseSB0aHJvdWdoIGEgZmlsZSBpbmNsdWRlZCB1c2luZyBAc2Ft cHsjK1NFVFVQRklMRTogZmlsZW5hbWUvVVJMfQorc3ludGF4LiAgT3B0aW9uIGtleXdvcmQgc2V0 cyB0YWlsb3JlZCB0byBhIHBhcnRpY3VsYXIgYmFjay1lbmQgY2FuIGJlCitpbnNlcnRlZCBmcm9t IHRoZSBleHBvcnQgZGlzcGF0Y2hlciAoQHB4cmVme1RoZSBleHBvcnQgZGlzcGF0Y2hlcn0pIHVz aW5nIHRoZQorQGNvZGV7SW5zZXJ0IHRlbXBsYXRlfSBjb21tYW5kIGJ5IHByZXNzaW5nIEBrZXl7 I30uICBUbyBpbnNlcnQga2V5d29yZHMKK2luZGl2aWR1YWxseSwgYSBnb29kIHdheSB0byBtYWtl IHN1cmUgdGhlIGtleXdvcmQgaXMgY29ycmVjdCBpcyB0byB0eXBlCitAY29kZXsjK30gYW5kIHRo ZW4gdG8gdXNlIEBrYmR7TS1Aa2V5e1RBQn19QGZvb3Rub3Rle01hbnkgZGVza3RvcHMgaW50ZXJj ZXB0CitAa2Jke00tVEFCfSB0byBzd2l0Y2ggd2luZG93cy4gIFVzZSBAa2Jke0MtTS1pfSBvciBA a2Jke0BrZXl7RVNDfSBAa2V5e1RBQn19CitpbnN0ZWFkLn0gZm9yIGNvbXBsZXRpb24uCiAKIFRo ZSBleHBvcnQga2V5d29yZHMgYXZhaWxhYmxlIGZvciBldmVyeSBiYWNrLWVuZCwgYW5kIHRoZWly IGVxdWl2YWxlbnQgZ2xvYmFsCiB2YXJpYWJsZXMsIGluY2x1ZGU6CkBAIC0xNzE0NywxMyArMTcx NDcsMTYgQEAgaGF2ZSBhIGxvd2VyIEFTQ0lJIG51bWJlciB0aGFuIHRoZSBsb3dlc3QgcHJpb3Jp dHkuCiBUaGlzIGxpbmUgc2V0cyBhIGRlZmF1bHQgaW5oZXJpdGFuY2UgdmFsdWUgZm9yIGVudHJp ZXMgaW4gdGhlIGN1cnJlbnQKIGJ1ZmZlciwgbW9zdCB1c2VmdWwgZm9yIHNwZWNpZnlpbmcgdGhl IGFsbG93ZWQgdmFsdWVzIG9mIGEgcHJvcGVydHkuCiBAY2luZGV4ICMrU0VUVVBGSUxFCi1AaXRl bSAjK1NFVFVQRklMRTogZmlsZQotVGhlIHNldHVwIGZpbGUgaXMgZm9yIGFkZGl0aW9uYWwgaW4t YnVmZmVyIHNldHRpbmdzLiAgT3JnIGxvYWRzIHRoaXMgZmlsZSBhbmQKLXBhcnNlcyBpdCBmb3Ig YW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbiBPcmcgb3BlbnMgdGhlIG1haW4gZmlsZS4gIEBr YmR7Qy1jCi1DLWN9IG9uIHRoZSBzZXR0aW5ncyBsaW5lIHdpbGwgYWxzbyBwYXJzZSBhbmQgbG9h ZC4gIE9yZyBhbHNvIHBhcnNlcyBhbmQKLWxvYWRzIHRoZSBmaWxlIGR1cmluZyBub3JtYWwgZXhw b3J0aW5nIHByb2Nlc3MuICBPcmcgcGFyc2VzIHRoZSBjb250ZW50cyBvZgotdGhpcyBmaWxlIGFz IGlmIGl0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYnVmZmVyLiAgSXQgY2FuIGJlIGFub3RoZXIgT3Jn IGZpbGUuCi1UbyB2aXNpdCB0aGUgZmlsZSwgQGtiZHtDLWMgJ30gd2hpbGUgdGhlIGN1cnNvciBp cyBvbiB0aGUgbGluZSB3aXRoIHRoZSBmaWxlCitAaXRlbSAjK1NFVFVQRklMRTogZmlsZS9VUkwK K1RoZSBzZXR1cCBmaWxlIG9yIGEgVVJMIHBvaW50aW5nIHRvIHN1Y2ggZmlsZSBpcyBmb3IgYWRk aXRpb25hbCBpbi1idWZmZXIKK3NldHRpbmdzLiAgT3JnIGxvYWRzIHRoaXMgZmlsZSBhbmQgcGFy c2VzIGl0IGZvciBhbnkgc2V0dGluZ3MgaW4gaXQgb25seSB3aGVuCitPcmcgb3BlbnMgdGhlIG1h aW4gZmlsZS4gIElmIFVSTCBpcyBzcGVjaWZpZWQsIHRoZSBjb250ZW50cyBhcmUgZG93bmxvYWRl ZAorYW5kIHN0b3JlZCBpbiBhIHRlbXBvcmFyeSBjYWNoZS4gIEBrYmR7Qy1jIEMtY30gb24gdGhl IHNldHRpbmdzIGxpbmUgd2lsbAorYWxzbyBwYXJzZSBhbmQgbG9hZC4gIEBrYmR7Qy1jIEMtY30g b24gdGhlIEBjb2RleyMrU0VUVVBGSUxFOn0gbGluZSB3aWxsIGFsc28KK3Jlc2V0IHRoZSB0ZW1w b3JhcnkgZmlsZSBjYWNoZS4gIE9yZyBhbHNvIHBhcnNlcyBhbmQgbG9hZHMgdGhlIGZpbGUvVVJM CitkdXJpbmcgbm9ybWFsIGV4cG9ydGluZyBwcm9jZXNzLiAgT3JnIHBhcnNlcyB0aGUgY29udGVu dHMgb2YgdGhpcyBmaWxlL1VSTCBhcworaWYgaXQgd2FzIGluY2x1ZGVkIGluIHRoZSBidWZmZXIu ICBJdCBjYW4gYmUgYW5vdGhlciBPcmcgZmlsZS4gIFRvIHZpc2l0IHRoZQorZmlsZSAobm90IGEg VVJMKSwgQGtiZHtDLWMgJ30gd2hpbGUgdGhlIGN1cnNvciBpcyBvbiB0aGUgbGluZSB3aXRoIHRo ZSBmaWxlCiBuYW1lLgogQGl0ZW0gIytTVEFSVFVQOgogQGNpbmRleCAjK1NUQVJUVVAKQEAgLTE3 Mzk1LDcgKzE3Mzk4LDkgQEAgSWYgYW55IGhpZ2hsaWdodHMgc2hvd24gaW4gdGhlIGJ1ZmZlciBm cm9tIHRoZSBjcmVhdGlvbiBvZiBhIHNwYXJzZSB0cmVlLCBvcgogZnJvbSBjbG9jayBkaXNwbGF5 LCByZW1vdmUgc3VjaCBoaWdobGlnaHRzLgogQGl0ZW0KIElmIHRoZSBjdXJzb3IgaXMgaW4gb25l IG9mIHRoZSBzcGVjaWFsIEBjb2RleyMrS0VZV09SRH0gbGluZXMsIHNjYW4gdGhlCi1idWZmZXIg Zm9yIHRoZXNlIGxpbmVzIGFuZCB1cGRhdGUgdGhlIGluZm9ybWF0aW9uLgorYnVmZmVyIGZvciB0 aGVzZSBsaW5lcyBhbmQgdXBkYXRlIHRoZSBpbmZvcm1hdGlvbi4gIEFsc28gcmVzZXQgdGhlIG9y ZyBmaWxlCitjYWNoZSB1c2VkIHRvIHRlbXBvcmFyeSBzdG9yZSB0aGUgY29udGVudHMgb2YgVVJM cyB1c2VkIGFzIHZhbHVlcyBmb3IKK2tleXdvcmRzIGxpa2UgQGNvZGV7IytTRVRVUEZJTEV9Lgog QGl0ZW0KIElmIHRoZSBjdXJzb3IgaXMgaW5zaWRlIGEgdGFibGUsIHJlYWxpZ24gdGhlIHRhYmxl LiAgVGhlIHRhYmxlIHJlYWxpZ25zIGV2ZW4KIGlmIGF1dG9tYXRpYyB0YWJsZSBlZGl0b3IgaXMg dHVybmVkIG9mZi4KZGlmZiAtLWdpdCBhL2V0Yy9PUkctTkVXUyBiL2V0Yy9PUkctTkVXUwppbmRl eCAwNDRmMTY3Y2UuLmE4NGViOThjMSAxMDA2NDQKLS0tIGEvZXRjL09SRy1ORVdTCisrKyBiL2V0 Yy9PUkctTkVXUwpAQCAtMjAzLDcgKzIwMyw3IEBAIG1hbnVhbCBmb3IgZGV0YWlscy4KICoqKiog QWRkIGdsb2JhbCBtYWNyb3MgdGhyb3VnaCB+b3JnLWV4cG9ydC1nbG9iYWwtbWFjcm9zfgogV2l0 aCB0aGlzIHZhcmlhYmxlLCBvbmUgY2FuIGRlZmluZSBtYWNyb3MgYXZhaWxhYmxlIGZvciBhbGwg ZG9jdW1lbnRzLgogKioqKiBOZXcga2V5d29yZCB+IytFWFBPUlRfRklMRV9OQU1FfgotU2ltaXJh bHJ5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+IHByb3BlcnR5LCB0aGlzIGtleXdvcmQgYWxsb3dz IHRoZQorU2ltaWxhcmx5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+IHByb3BlcnR5LCB0aGlzIGtl eXdvcmQgYWxsb3dzIHRoZQogdXNlciB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBvdXRwdXQg ZmlsZSB1cG9uIGV4cG9ydGluZyB0aGUKIGRvY3VtZW50LiAgVGhpcyBhbHNvIGhhcyBhbiBlZmZl Y3Qgb24gcHVibGlzaGluZy4KICoqKiogSG9yaXpvbnRhbCBydWxlcyBhcmUgbm8gbG9uZ2VyIGln bm9yZWQgaW4gTGFUZVggdGFibGUgbWF0aCBtb2RlCkBAIC0yMzQsNiArMjM0LDE2IEBAIHdoaWNo IGNhdXNlcyByZWZpbGUgdGFyZ2V0cyB0byBiZSBwcmVmaXhlZCB3aXRoIHRoZSBidWZmZXLigJlz CiBuYW1lLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiB1c2VkIGluIGNvbmp1bmN0 aW9uIHdpdGgKIH51bmlxdWlmeS5lbH4uCiAKKyoqKiB+b3JnLWZpbGUtY29udGVudHN+IG5vdyBh bGxvd3MgdGhlIEZJTEUgYXJndW1lbnQgdG8gYmUgYSBVUkwuCitUaGlzIGFsbG93cyB+IytTRVRV UEZJTEU6fiB0byBhY2NlcHQgYSBVUkwgaW5zdGVhZCBvZiBhIGxvY2FsIGZpbGUKK3BhdGguICBU aGUgVVJMIGNvbnRlbnRzIGFyZSBhdXRvLWRvd25sb2FkZWQgYW5kIHNhdmVkIHRvIGEgdGVtcG9y YXJ5CitjYWNoZSB+b3JnLS1maWxlLWNhY2hlfi4gIEEgbmV3IG9wdGlvbmFsIGFyZ3VtZW50IH5O T0NBQ0hFfiBpcyBhZGRlZAordG8gfm9yZy1maWxlLWNvbnRlbnRzfi4KKworKioqIH5vcmctbW9k ZS1yZXN0YXJ0fiBub3cgcmVzZXRzIHRoZSBuZXdseSBhZGRlZCB+b3JnLS1maWxlLWNhY2hlfi4K K1VzaW5nIH5DLWMgQy1jfiBvbiBhbnkga2V5d29yZCAobGlrZSB+IytTRVRVUEZJTEV+KSB3aWxs IHJlc2V0IHRoZQordGhhdCBmaWxlIGNhY2hlLgorCiAqKiBSZW1vdmVkIGZ1bmN0aW9ucwogCiAq KiogT3JnIFRpbWVsaW5lCmRpZmYgLS1naXQgYS9saXNwL29yZy1tYWNyby5lbCBiL2xpc3Avb3Jn LW1hY3JvLmVsCmluZGV4IGY1ZGRiOTJlNC4uOWY2ZTBlYmFmIDEwMDY0NAotLS0gYS9saXNwL29y Zy1tYWNyby5lbAorKysgYi9saXNwL29yZy1tYWNyby5lbApAQCAtNTksNyArNTksOCBAQAogCQkg ICgmb3B0aW9uYWwgZ3JhbnVsYXJpdHkgdmlzaWJsZS1vbmx5KSkKIChkZWNsYXJlLWZ1bmN0aW9u IG9yZy1lbGVtZW50LXByb3BlcnR5ICJvcmctZWxlbWVudCIgKHByb3BlcnR5IGVsZW1lbnQpKQog KGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1lbnQtdHlwZSAib3JnLWVsZW1lbnQiIChlbGVtZW50 KSkKLShkZWNsYXJlLWZ1bmN0aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRp b25hbCBub2Vycm9yKSkKKyhkZWNsYXJlLWZ1bmN0aW9uIG9yZy1maWxlLXVybC1wICJvcmciIChm aWxlKSkKKyhkZWNsYXJlLWZ1bmN0aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZv cHRpb25hbCBub2Vycm9yIG5vY2FjaGUpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLW1vZGUgIm9y ZyIgKCkpCiAoZGVjbGFyZS1mdW5jdGlvbiB2Yy1iYWNrZW5kICJ2Yy1ob29rcyIgKGYpKQogKGRl Y2xhcmUtZnVuY3Rpb24gdmMtY2FsbCAidmMtaG9va3MiIChmdW4gZmlsZSAmcmVzdCBhcmdzKSB0 KQpAQCAtMTA1LDE2ICsxMDYsMjEgQEAgUmV0dXJuIGFuIGFsaXN0IGNvbnRhaW5pbmcgYWxsIG1h Y3JvIHRlbXBsYXRlcyBmb3VuZC4iCiAJCQkJIChpZiBvbGQtY2VsbCAoc2V0Y2RyIG9sZC1jZWxs IHRlbXBsYXRlKQogCQkJCSAgIChwdXNoIChjb25zIG5hbWUgdGVtcGxhdGUpIHRlbXBsYXRlcykp KSkKIAkJCSAgIDs7IEVudGVyIHNldHVwIGZpbGUuCi0JCQkgICAobGV0ICgoZmlsZSAoZXhwYW5k LWZpbGUtbmFtZQotCQkJCQkob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIHZhbCkpKSkK LQkJCSAgICAgKHVubGVzcyAobWVtYmVyIGZpbGUgZmlsZXMpCisJCQkgICAobGV0KiAoKHVyaSAo b3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIChvcmctdHJpbSB2YWwpKSkKKwkJCQkgICh1 cmktaXMtdXJsIChvcmctZmlsZS11cmwtcCB1cmkpKQorCQkJCSAgKHVyaSAoaWYgdXJpLWlzLXVy bAorCQkJCQkgICB1cmkKKwkJCQkJIChleHBhbmQtZmlsZS1uYW1lIHVyaSkpKSkKKwkJCSAgICAg OzsgQXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCQkJICAgICAodW5sZXNzIChtZW1iZXIg dXJpIGZpbGVzKQogCQkJICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJIChzZXRxIGRlZmF1 bHQtZGlyZWN0b3J5Ci0JCQkJICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQorCQkJ CSAodW5sZXNzIHVyaS1pcy11cmwKKwkJCQkgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJ CQkgKGZpbGUtbmFtZS1kaXJlY3RvcnkgdXJpKSkpCiAJCQkJIChvcmctbW9kZSkKLQkJCQkgKGlu c2VydCAob3JnLWZpbGUtY29udGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJIChpbnNlcnQgKG9y Zy1maWxlLWNvbnRlbnRzIHVyaSAnbm9lcnJvcikpCiAJCQkJIChzZXRxIHRlbXBsYXRlcwotCQkJ CSAgICAgICAoZnVuY2FsbCBjb2xsZWN0LW1hY3JvcyAoY29ucyBmaWxlIGZpbGVzKQorCQkJCSAg ICAgICAoZnVuY2FsbCBjb2xsZWN0LW1hY3JvcyAoY29ucyB1cmkgZmlsZXMpCiAJCQkJCQl0ZW1w bGF0ZXMpKSkpKSkpKSkpKQogCQl0ZW1wbGF0ZXMpKSkpCiAgICAgKGZ1bmNhbGwgY29sbGVjdC1t YWNyb3MgbmlsIG5pbCkpKQpkaWZmIC0tZ2l0IGEvbGlzcC9vcmcuZWwgYi9saXNwL29yZy5lbApp bmRleCAxMDJhOWIyNjUuLjE3MWIxMGNkNyAxMDA2NDQKLS0tIGEvbGlzcC9vcmcuZWwKKysrIGIv bGlzcC9vcmcuZWwKQEAgLTUyNzMsMTcgKzUyNzMsNTkgQEAgYSBzdHJpbmcsIHN1bW1hcml6aW5n IFRBR1MsIGFzIGEgbGlzdCBvZiBzdHJpbmdzLiIKIAkgICAoc2V0cSBjdXJyZW50LWdyb3VwIChs aXN0IHRhZykpKSkKIAkoXyBuaWwpKSkpKQogCi0oZGVmdW4gb3JnLWZpbGUtY29udGVudHMgKGZp bGUgJm9wdGlvbmFsIG5vZXJyb3IpCi0gICJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIEZJTEUsIGFz IGEgc3RyaW5nLiIKLSAgKGlmIChhbmQgZmlsZSAoZmlsZS1yZWFkYWJsZS1wIGZpbGUpKQorKGRl ZnZhciBvcmctLWZpbGUtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKQorICAi SGFzaCB0YWJsZSB0byBzdG9yZSBjb250ZW50cyBvZiBmaWxlcyByZWZlcmVuY2VkIHZpYSBhIFVS TC4KK1RoaXMgaXMgdGhlIGNhY2hlIG9mIGZpbGUgVVJMcyByZWFkIHVzaW5nIGBvcmctZmlsZS1j b250ZW50cycuIikKKworKGRlZnZhciBmZmFwLXVybC1yZWdleHApCQk7U2lsZW5jZSBieXRlLWNv bXBpbGVyCisoZGVmdW4gb3JnLWZpbGUtdXJsLXAgKGZpbGUpCisgICJOb24tbmlsIGlmIEZJTEUg aXMgYSBVUkwuIgorICAocmVxdWlyZSAnZmZhcCkKKyAgKHN0cmluZy1tYXRjaC1wIGZmYXAtdXJs LXJlZ2V4cCBmaWxlKSkKKworKGRlZnVuIG9yZy1maWxlLWNvbnRlbnRzIChmaWxlICZvcHRpb25h bCBub2Vycm9yIG5vY2FjaGUpCisgICJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIEZJTEUsIGFzIGEg c3RyaW5nLgorCitGSUxFIGNhbiBiZSBhIGZpbGUgbmFtZSBvciBVUkwuCisKK0lmIEZJTEUgaXMg YSBVUkwsIGRvd25sb2FkIHRoZSBjb250ZW50cy4gIElmIHRoZSBVUkwgY29udGVudHMgYXJlCith bHJlYWR5IGNhY2hlZCBpbiB0aGUgYG9yZy0tZmlsZS1jYWNoZScgaGFzaCB0YWJsZSwgdGhlIGRv d25sb2FkIHN0ZXAKK2lzIHNraXBwZWQuCisKK0lmIE5PRVJST1IgaXMgbm9uLW5pbCwgaWdub3Jl IHRoZSBlcnJvciB3aGVuIHVuYWJsZSB0byByZWFkIHRoZSBGSUxFCitmcm9tIGZpbGUgb3IgVVJM LgorCitJZiBOT0NBQ0hFIGlzIG5vbi1uaWwsIGRvIGEgZnJlc2ggZmV0Y2ggb2YgRklMRSBldmVu IGlmIGNhY2hlZCB2ZXJzaW9uCitpcyBhdmFpbGFibGUuICBUaGlzIG9wdGlvbiBhcHBsaWVzIG9u bHkgaWYgRklMRSBpcyBhIFVSTC4iCisgIChsZXQqICgoaXMtdXJsIChvcmctZmlsZS11cmwtcCBm aWxlKSkKKyAgICAgICAgIChjYWNoZSAoYW5kIGlzLXVybAorICAgICAgICAgICAgICAgICAgICAg KG5vdCBub2NhY2hlKQorICAgICAgICAgICAgICAgICAgICAgKGdldGhhc2ggZmlsZSBvcmctLWZp bGUtY2FjaGUpKSkpCisgICAgKGNvbmQKKyAgICAgKGNhY2hlKQorICAgICAoaXMtdXJsCisgICAg ICAod2l0aC1jdXJyZW50LWJ1ZmZlciAodXJsLXJldHJpZXZlLXN5bmNocm9ub3VzbHkgZmlsZSkK KwkoZ290by1jaGFyIChwb2ludC1taW4pKQorCTs7IE1vdmUgcG9pbnQgdG8gYWZ0ZXIgdGhlIHVy bC1yZXRyaWV2ZSBoZWFkZXIuCisJKHNlYXJjaC1mb3J3YXJkICJcblxuIiBuaWwgOm1vdmUpCisJ OzsgU2VhcmNoIGZvciB0aGUgc3VjY2VzcyBjb2RlIG9ubHkgaW4gdGhlIHVybC1yZXRyaWV2ZSBo ZWFkZXIuCisJKGlmIChzYXZlLWV4Y3Vyc2lvbiAocmUtc2VhcmNoLWJhY2t3YXJkICJIVFRQLipc XHMtKzIwMFxccy1PSyIgbmlsIDpub2Vycm9yKSkKKwkgICAgOzsgVXBkYXRlIHRoZSBjYWNoZSBg b3JnLS1maWxlLWNhY2hlJyBhbmQgcmV0dXJuIGNvbnRlbnRzLgorCSAgICAocHV0aGFzaCBmaWxl CisJCSAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChwb2ludC1t YXgpKQorCQkgICAgIG9yZy0tZmlsZS1jYWNoZSkKKwkgIChmdW5jYWxsIChpZiBub2Vycm9yICMn bWVzc2FnZSAjJ3VzZXItZXJyb3IpCisJCSAgICJVbmFibGUgdG8gZmV0Y2ggZmlsZSBmcm9tICVT IgorCQkgICBmaWxlKSkpKQorICAgICAodAogICAgICAgKHdpdGgtdGVtcC1idWZmZXIKLQkoaW5z ZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKLQkoYnVmZmVyLXN0cmluZykpCi0gICAgKGZ1bmNhbGwg KGlmIG5vZXJyb3IgJ21lc3NhZ2UgJ2Vycm9yKQotCSAgICAgIkNhbm5vdCByZWFkIGZpbGUgXCIl c1wiJXMiCi0JICAgICBmaWxlCi0JICAgICAobGV0ICgoZnJvbSAoYnVmZmVyLWZpbGUtbmFtZSAo YnVmZmVyLWJhc2UtYnVmZmVyKSkpKQotCSAgICAgICAoaWYgZnJvbSAoY29uY2F0ICIgKHJlZmVy ZW5jZWQgaW4gZmlsZSBcIiIgZnJvbSAiXCIpIikgIiIpKSkpKQorICAgICAgICAoY29uZGl0aW9u LWNhc2UgZXJyCisJICAgIChwcm9nbgorCSAgICAgIChpbnNlcnQtZmlsZS1jb250ZW50cyBmaWxl KQorCSAgICAgIChidWZmZXItc3RyaW5nKSkKKwkgIChmaWxlLWVycm9yCisgICAgICAgICAgIChm dW5jYWxsIChpZiBub2Vycm9yICMnbWVzc2FnZSAjJ3VzZXItZXJyb3IpCisJCSAgICAoZXJyb3It bWVzc2FnZS1zdHJpbmcgZXJyKSkpKSkpKSkpCiAKIChkZWZ1biBvcmctZXh0cmFjdC1sb2ctc3Rh dGUtc2V0dGluZ3MgKHgpCiAgICJFeHRyYWN0IHRoZSBsb2cgc3RhdGUgc2V0dGluZyBmcm9tIGEg VE9ETyBrZXl3b3JkIHN0cmluZy4KQEAgLTIwNjg1LDcgKzIwNzI3LDkgQEAgT3RoZXJ3aXNlLCBy ZXR1cm4gYSB1c2VyIGVycm9yLiIKIAkgICAgKGZvcm1hdCAiW1slc11dIgogCQkgICAgKGV4cGFu ZC1maWxlLW5hbWUKIAkJICAgICAobGV0ICgodmFsdWUgKG9yZy1lbGVtZW50LXByb3BlcnR5IDp2 YWx1ZSBlbGVtZW50KSkpCi0JCSAgICAgICAoY29uZCAoKG5vdCAob3JnLXN0cmluZy1udy1wIHZh bHVlKSkKKwkJICAgICAgIChjb25kICgob3JnLWZpbGUtdXJsLXAgdmFsdWUpCisJCQkgICAgICAo dXNlci1lcnJvciAiVGhlIGZpbGUgaXMgc3BlY2lmaWVkIGFzIGEgVVJMLCBjYW5ub3QgYmUgZWRp dGVkIikpCisJCQkgICAgICgobm90IChvcmctc3RyaW5nLW53LXAgdmFsdWUpKQogCQkJICAgICAg KHVzZXItZXJyb3IgIk5vIGZpbGUgdG8gZWRpdCIpKQogCQkJICAgICAoKHN0cmluZy1tYXRjaCAi XFxgXCJcXCguKj9cXClcIiIgdmFsdWUpCiAJCQkgICAgICAobWF0Y2gtc3RyaW5nIDEgdmFsdWUp KQpAQCAtMjA5NDksNyArMjA5OTMsOSBAQCBVc2UgYFxcW29yZy1lZGl0LXNwZWNpYWxdJyB0byBl ZGl0IHRhYmxlLmVsIHRhYmxlcyIpKQogICAgIChmdW5jYWxsIG1ham9yLW1vZGUpCiAgICAgKGhh Y2stbG9jYWwtdmFyaWFibGVzKQogICAgICh3aGVuIChhbmQgaW5kZW50LXN0YXR1cyAobm90IChi b3VuZC1hbmQtdHJ1ZS1wIG9yZy1pbmRlbnQtbW9kZSkpKQotICAgICAgKG9yZy1pbmRlbnQtbW9k ZSAtMSkpKQorICAgICAgKG9yZy1pbmRlbnQtbW9kZSAtMSkpCisgICAgOzsgUmVzZXQgdGhlIGNh Y2hlIG9mIGZpbGVzIGRvd25sb2FkZWQgYnkgYG9yZy1maWxlLWNvbnRlbnRzJy4KKyAgICAoY2xy aGFzaCBvcmctLWZpbGUtY2FjaGUpKQogICAobWVzc2FnZSAiJXMgcmVzdGFydGVkIiBtYWpvci1t b2RlKSkKIAogKGRlZnVuIG9yZy1raWxsLW5vdGUtb3Itc2hvdy1icmFuY2hlcyAoKQpkaWZmIC0t Z2l0IGEvbGlzcC9veC5lbCBiL2xpc3Avb3guZWwKaW5kZXggYWM4ZDhjZTY4Li43ZDEwMTI5NzQg MTAwNjQ0Ci0tLSBhL2xpc3Avb3guZWwKKysrIGIvbGlzcC9veC5lbApAQCAtMTQ5OSwxNyArMTQ5 OSwyMCBAQCBBc3N1bWUgYnVmZmVyIGlzIGluIE9yZyBtb2RlLiAgTmFycm93aW5nLCBpZiBhbnks IGlzIGlnbm9yZWQuIgogCQkJIChjb25kCiAJCQkgIDs7IE9wdGlvbnMgaW4gYG9yZy1leHBvcnQt c3BlY2lhbC1rZXl3b3JkcycuCiAJCQkgICgoZXF1YWwga2V5ICJTRVRVUEZJTEUiKQotCQkJICAg KGxldCAoKGZpbGUKLQkJCQkgIChleHBhbmQtZmlsZS1uYW1lCi0JCQkJICAgKG9yZy11bmJyYWNr ZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFsKSkpKSkKKwkJCSAgIChsZXQqICgodXJp IChvcmctdW5icmFja2V0LXN0cmluZyAiXCIiICJcIiIgKG9yZy10cmltIHZhbCkpKQorCQkJCSAg KHVyaS1pcy11cmwgKG9yZy1maWxlLXVybC1wIHVyaSkpCisJCQkJICAodXJpIChpZiB1cmktaXMt dXJsCisJCQkJCSAgIHVyaQorCQkJCQkgKGV4cGFuZC1maWxlLW5hbWUgdXJpKSkpKQogCQkJICAg ICA7OyBBdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCi0JCQkgICAgICh1bmxlc3MgKG1lbWJl ciBmaWxlIGZpbGVzKQorCQkJICAgICAodW5sZXNzIChtZW1iZXIgdXJpIGZpbGVzKQogCQkJICAg ICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5Ci0JCQkJ ICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkpCi0JCQkJIChpbnNlcnQgKG9yZy1maWxlLWNv bnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJCSAodW5sZXNzIHVyaS1pcy11cmwKKwkJCQkgICAo c2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJCQkgKGZpbGUtbmFtZS1kaXJlY3RvcnkgdXJpKSkp CisJCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIHVyaSAnbm9lcnJvcikpCiAJCQkJIChs ZXQgKChvcmctaW5oaWJpdC1zdGFydHVwIHQpKSAob3JnLW1vZGUpKQotCQkJCSAoZnVuY2FsbCBn ZXQtb3B0aW9ucyAoY29ucyBmaWxlIGZpbGVzKSkpKSkpCisJCQkJIChmdW5jYWxsIGdldC1vcHRp b25zIChjb25zIHVyaSBmaWxlcykpKSkpKQogCQkJICAoKGVxdWFsIGtleSAiT1BUSU9OUyIpCiAJ CQkgICAoc2V0cSBwbGlzdAogCQkJCSAob3JnLWNvbWJpbmUtcGxpc3RzCkBAIC0xNjQ3LDE3ICsx NjUwLDIyIEBAIGFuIGFsaXN0IHdoZXJlIGFzc29jaWF0aW9ucyBhcmUgKFZBUklBQkxFLU5BTUUg VkFMVUUpLiIKIAkJCQkgICAgICAiQklORCIpCiAJCQkgICAgICAgKHB1c2ggKHJlYWQgKGZvcm1h dCAiKCVzKSIgdmFsKSkgYWxpc3QpCiAJCQkgICAgIDs7IEVudGVyIHNldHVwIGZpbGUuCi0JCQkg ICAgIChsZXQgKChmaWxlIChleHBhbmQtZmlsZS1uYW1lCi0JCQkJCSAgKG9yZy11bmJyYWNrZXQt c3RyaW5nICJcIiIgIlwiIiB2YWwpKSkpCi0JCQkgICAgICAgKHVubGVzcyAobWVtYmVyIGZpbGUg ZmlsZXMpCisJCQkgICAgIChsZXQqICgodXJpIChvcmctdW5icmFja2V0LXN0cmluZyAiXCIiICJc IiIgdmFsKSkKKwkJCQkgICAgKHVyaS1pcy11cmwgKG9yZy1maWxlLXVybC1wIHVyaSkpCisJCQkJ ICAgICh1cmkgKGlmIHVyaS1pcy11cmwKKwkJCQkJICAgICB1cmkKKwkJCQkJICAgKGV4cGFuZC1m aWxlLW5hbWUgdXJpKSkpKQorCQkJICAgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2ll cy4KKwkJCSAgICAgICAodW5sZXNzIChtZW1iZXIgdXJpIGZpbGVzKQogCQkJCSAod2l0aC10ZW1w LWJ1ZmZlcgotCQkJCSAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5Ci0JCQkJCSAoZmlsZS1uYW1l LWRpcmVjdG9yeSBmaWxlKSkKKwkJCQkgICAodW5sZXNzIHVyaS1pcy11cmwKKwkJCQkgICAgIChz ZXRxIGRlZmF1bHQtZGlyZWN0b3J5CisJCQkJCSAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkp KQogCQkJCSAgIChsZXQgKChvcmctaW5oaWJpdC1zdGFydHVwIHQpKSAob3JnLW1vZGUpKQotCQkJ CSAgIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJCSAgIChp bnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIHVyaSAnbm9lcnJvcikpCiAJCQkJICAgKHNldHEgYWxp c3QKIAkJCQkJIChmdW5jYWxsIGNvbGxlY3QtYmluZAotCQkJCQkJICAoY29ucyBmaWxlIGZpbGVz KQorCQkJCQkJICAoY29ucyB1cmkgZmlsZXMpCiAJCQkJCQkgIGFsaXN0KSkpKSkpKSkpKQogCQkg ICBhbGlzdCkpKSkpCiAgICAgICA7OyBSZXR1cm4gdmFsdWUgaW4gYXBwcm9wcmlhdGUgb3JkZXIg b2YgYXBwZWFyYW5jZS4KLS0gCjIuMTMuMAoK --001a1140495ec99cdb0550731e7e-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Sun, 28 May 2017 09:35:57 +0200 Message-ID: <87o9ud77s2.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49140) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dEsk6-0006RG-5x for emacs-orgmode@gnu.org; Sun, 28 May 2017 03:36:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dEsk5-0003uj-6n for emacs-orgmode@gnu.org; Sun, 28 May 2017 03:36:02 -0400 Received: from relay4-d.mail.gandi.net ([2001:4b98:c:538::196]:35379) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dEsk4-0003uX-Vr for emacs-orgmode@gnu.org; Sun, 28 May 2017 03:36:01 -0400 In-Reply-To: (Kaushal Modi's message of "Fri, 26 May 2017 20:24:00 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Hello, Kaushal Modi writes: > I have attached a patch, rebased to master and with all suggestions > implemented. Thank you. > There are some additional changes in the patch this time: > - Prevent org-edit-special from attempting to open the "file" for editing > if the value is a URL. This is a good idea. We could even display a read-only buffer with the contents of the document, using new `org-file-contents'. Anyway, this can be done in a different patch. > I liked your C-c C-c idea below! :) Great! > +indirectly through a file included using @samp{#+SETUPFILE: filename/URL} filename/URL > file name or URL > +@item #+SETUPFILE: file/URL file/URL > file name or URL > +The setup file or a URL pointing to such file is for additional in-buffer > +settings. Org loads this file and parses it for any settings in it only when > +Org opens the main file. If URL is specified, the contents are downloaded > +and stored in a temporary cache. @kbd{C-c C-c} on the settings line will > +also parse and load. @kbd{C-c C-c} on the @code{#+SETUPFILE:} line will also > +reset the temporary file cache. Org also parses and loads the file/URL file/URL > document > +during normal exporting process. Org parses the contents of this > file/URL as file/URL document > +if it was included in the buffer. It can be another Org file. To visit the > +file (not a URL), @kbd{C-c '} while the cursor is on the line with the file > name. > @item #+STARTUP: > @cindex #+STARTUP > @@ -17395,7 +17398,9 @@ If any highlights shown in the buffer from the creation of a sparse tree, or > from clock display, remove such highlights. > @item > If the cursor is in one of the special @code{#+KEYWORD} lines, scan the > -buffer for these lines and update the information. > +buffer for these lines and update the information. Also reset the org file org > Org > +(defvar ffap-url-regexp) ;Silence byte-compiler I think this can go at the beginning of the "org.el". > + ;; Reset the cache of files downloaded by `org-file-contents'. > + (clrhash org--file-cache)) Note that we can still implement a non-interactive `org-reset-setupfile-cache' function and call it here instead. (clrhash org--file-cache) may be a bit low level at this point. Otherwise, LGTM. Would you want to throw in some tests? You can use cl-letf to bind `url-retrieve-synchronously' to a function returning a buffer containing some dumb (valid or invalid) output. Regards, -- Nicolas Goaziou From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Sun, 28 May 2017 10:04:37 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="f403045fb6d66a520b055092b306" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33834) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dEv48-0000V4-Jr for emacs-orgmode@gnu.org; Sun, 28 May 2017 06:04:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dEv47-0006Sl-7D for emacs-orgmode@gnu.org; Sun, 28 May 2017 06:04:52 -0400 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:35330) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dEv46-0006S8-Ro for emacs-orgmode@gnu.org; Sun, 28 May 2017 06:04:51 -0400 Received: by mail-lf0-x22b.google.com with SMTP id a5so22655381lfh.2 for ; Sun, 28 May 2017 03:04:50 -0700 (PDT) In-Reply-To: <87o9ud77s2.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --f403045fb6d66a520b055092b306 Content-Type: text/plain; charset="UTF-8" On Sun, May 28, 2017, 3:36 AM Nicolas Goaziou wrote: > Hello, > > Kaushal Modi writes: > > > I have attached a patch, rebased to master and with all suggestions > > implemented. > > Thank you. > > > There are some additional changes in the patch this time: > > - Prevent org-edit-special from attempting to open the "file" for editing > > if the value is a URL. > > This is a good idea. We could even display a read-only buffer with the > contents of the document, using new `org-file-contents'. > > Anyway, this can be done in a different patch. > > > I liked your C-c C-c idea below! :) > > Great! > > > +indirectly through a file included using @samp{#+SETUPFILE: > filename/URL} > > filename/URL > file name or URL > > > +@item #+SETUPFILE: file/URL > > file/URL > file name or URL > > > +The setup file or a URL pointing to such file is for additional > in-buffer > > +settings. Org loads this file and parses it for any settings in it > only when > > +Org opens the main file. If URL is specified, the contents are > downloaded > > +and stored in a temporary cache. @kbd{C-c C-c} on the settings line > will > > +also parse and load. @kbd{C-c C-c} on the @code{#+SETUPFILE:} line > will also > > +reset the temporary file cache. Org also parses and loads the file/URL > > file/URL > document > > > +during normal exporting process. Org parses the contents of this > > file/URL as > > file/URL document > > > +if it was included in the buffer. It can be another Org file. To > visit the > > +file (not a URL), @kbd{C-c '} while the cursor is on the line with the > file > > name. > > @item #+STARTUP: > > @cindex #+STARTUP > > @@ -17395,7 +17398,9 @@ If any highlights shown in the buffer from the > creation of a sparse tree, or > > from clock display, remove such highlights. > > @item > > If the cursor is in one of the special @code{#+KEYWORD} lines, scan the > > -buffer for these lines and update the information. > > +buffer for these lines and update the information. Also reset the org > file > > org > Org > > > +(defvar ffap-url-regexp) ;Silence byte-compiler > > I think this can go at the beginning of the "org.el". > > > + ;; Reset the cache of files downloaded by `org-file-contents'. > > + (clrhash org--file-cache)) > > Note that we can still implement a non-interactive > `org-reset-setupfile-cache' function and call it here instead. (clrhash > org--file-cache) may be a bit low level at this point. > > Otherwise, LGTM. Would you want to throw in some tests? You can use > cl-letf to bind `url-retrieve-synchronously' to a function returning > a buffer containing some dumb (valid or invalid) output. > Thanks. I'll get back to this in 8 days; I'm going offline (vacation). > -- Kaushal Modi --f403045fb6d66a520b055092b306 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Sun, May 28, 2017, 3:36 AM N= icolas Goaziou <mail@nicolasgo= aziou.fr> wrote:
Hello,

Kaushal Modi <kaushal.modi@gmail.com> writes:

> I have attached a patch, rebased to master and with all suggestions > implemented.

Thank you.

> There are some additional changes in the patch this time:
> - Prevent org-edit-special from attempting to open the "file"= ; for editing
> if the value is a URL.

This is a good idea. We could even display a read-only buffer with the
contents of the document, using new `org-file-contents'.

Anyway, this can be done in a different patch.

> I liked your C-c C-c idea below! :)

Great!

> +indirectly through a file included using @samp{#+SETUPFILE: filename/= URL}

filename/URL > file name or URL

> +@item #+SETUPFILE: file/URL

file/URL > file name or URL

> +The setup file or a URL pointing to such file is for additional in-bu= ffer
> +settings.=C2=A0 Org loads this file and parses it for any settings in= it only when
> +Org opens the main file.=C2=A0 If URL is specified, the contents are = downloaded
> +and stored in a temporary cache.=C2=A0 @kbd{C-c C-c} on the settings = line will
> +also parse and load.=C2=A0 @kbd{C-c C-c} on the @code{#+SETUPFILE:} l= ine will also
> +reset the temporary file cache.=C2=A0 Org also parses and loads the f= ile/URL

file/URL > document

> +during normal exporting process.=C2=A0 Org parses the contents of thi= s
> file/URL as

file/URL document

> +if it was included in the buffer.=C2=A0 It can be another Org file.= =C2=A0 To visit the
> +file (not a URL), @kbd{C-c '} while the cursor is on the line wit= h the file
>=C2=A0 name.
>=C2=A0 @item #+STARTUP:
>=C2=A0 @cindex #+STARTUP
> @@ -17395,7 +17398,9 @@ If any highlights shown in the buffer from the= creation of a sparse tree, or
>=C2=A0 from clock display, remove such highlights.
>=C2=A0 @item
>=C2=A0 If the cursor is in one of the special @code{#+KEYWORD} lines, s= can the
> -buffer for these lines and update the information.
> +buffer for these lines and update the information.=C2=A0 Also reset t= he org file

org > Org

> +(defvar ffap-url-regexp)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0;Silence byte-compiler

I think this can go at the beginning of the "org.el".

> +=C2=A0 =C2=A0 ;; Reset the cache of files downloaded by `org-file-con= tents'.
> +=C2=A0 =C2=A0 (clrhash org--file-cache))

Note that we can still implement a non-interactive
`org-reset-setupfile-cache' function and call it here instead. (clrhash=
org--file-cache) may be a bit low level at this point.

Otherwise, LGTM. Would you want to throw in some tests? You can use
cl-letf to bind `url-retrieve-synchronously' to a function returning a buffer containing some dumb (valid or invalid) output.

Thanks. I'll get back to this in 8 days; I'= m going offline (vacation).
--

Kaushal Modi

--f403045fb6d66a520b055092b306-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Fri, 09 Jun 2017 16:59:43 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="f403045f74b81843d9055189e6dc" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58135) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dJNGR-0004iV-PZ for emacs-orgmode@gnu.org; Fri, 09 Jun 2017 13:00:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dJNGQ-0004QZ-CC for emacs-orgmode@gnu.org; Fri, 09 Jun 2017 12:59:59 -0400 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:36580) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dJNGP-0004Pv-R3 for emacs-orgmode@gnu.org; Fri, 09 Jun 2017 12:59:58 -0400 Received: by mail-lf0-x22b.google.com with SMTP id o83so32104532lff.3 for ; Fri, 09 Jun 2017 09:59:57 -0700 (PDT) In-Reply-To: <87o9ud77s2.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --f403045f74b81843d9055189e6dc Content-Type: multipart/alternative; boundary="f403045f74b81843d2055189e6da" --f403045f74b81843d2055189e6da Content-Type: text/plain; charset="UTF-8" I have attached the updated patch, rebased to master. On Sun, May 28, 2017 at 3:36 AM Nicolas Goaziou wrote: > This is a good idea. We could even display a read-only buffer with the > contents of the document, using new `org-file-contents'. > > Anyway, this can be done in a different patch. > Thanks. I was on the fence about whether I should open the cached file in a read-only buffer.. but then the function was named `org-edit-special'.. the "edit" part. But if you are fine, I can work on that in a different commit. > > +indirectly through a file included using @samp{#+SETUPFILE: > filename/URL} > > filename/URL > file name or URL > > > +@item #+SETUPFILE: file/URL > > file/URL > file name or URL > > > +reset the temporary file cache. Org also parses and loads the file/URL > > file/URL > document > > > +during normal exporting process. Org parses the contents of this > > file/URL as > > file/URL document > > > +buffer for these lines and update the information. Also reset the org > file > > org > Org > Done. > > +(defvar ffap-url-regexp) ;Silence byte-compiler > > I think this can go at the beginning of the "org.el". > Done. > > + ;; Reset the cache of files downloaded by `org-file-contents'. > > + (clrhash org--file-cache)) > > Note that we can still implement a non-interactive > `org-reset-setupfile-cache' function and call it here instead. (clrhash > org--file-cache) may be a bit low level at this point. > Done, except that I named the function org-reset-file-cache as the file cache can be updated by org-file-contents function in general for any file. > Otherwise, LGTM. Would you want to throw in some tests? You can use > cl-letf to bind `url-retrieve-synchronously' to a function returning > a buffer containing some dumb (valid or invalid) output. > Done! I, though used invalid URLs in the test. (If they become valid at some point in distant future (I doubt), then we can update the test :)) -- Kaushal Modi --f403045f74b81843d2055189e6da Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I have attached the update= d patch, rebased to master.


On Sun, May 28, 2017 at 3:36 AM Nicolas Goaziou <mail@nicolasgoaziou.fr> wr= ote:
This is a good idea. We could = even display a read-only buffer with the
contents of the document, using new `org-file-contents'.

Anyway, this can be done in a different patch.

Thanks. I was on = the fence about whether I should open the cached file in a read-only buffer= .. but then the function was named `org-edit-special'.. the "edit&= quot; part. But if you are fine, I can work on that in a different commit.<= /div>
=C2=A0
> +indirectly through a file included using @samp{#+SETUPFILE: filena= me/URL}

filename/URL > file name or URL

> +@item #+SETUPFILE: file/URL

file/URL > file name or URL

> +reset the temporary file cache.=C2=A0 Org also parses and loads t= he file/URL

file/URL > document

> +during normal exporting process.=C2=A0 Org parses the contents of thi= s
> file/URL as

file/URL document

> +buffer for these lines and update the information.=C2=A0 Also res= et the org file

org > Org

D= one.
=C2= =A0
> +(defvar ffap-url-regexp)=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;Silence byte-compiler

I think this can go at the beginning of the "org.el".

Done.
=C2=A0
> +=C2=A0 =C2=A0 ;; Reset = the cache of files downloaded by `org-file-contents'.
> +=C2=A0 =C2=A0 (clrhash org--file-cache))

Note that we can still implement a non-interactive
`org-reset-setupfile-cache' function and call it here instead. (clrhash=
org--file-cache) may be a bit low level at this point.

Don= e, except that I named the function org-reset-file-cache as the file cache = can be updated by org-file-contents function in general for any file.
=
=C2=A0
Otherwise, LGTM. Would you want to throw in so= me tests? You can use
cl-letf to bind `url-retrieve-synchronously' to a function returning a buffer containing some dumb (valid or invalid) output.

Done! I, though used invalid URLs in the test. (If they b= ecome valid at some point in distant future (I doubt), then we can update t= he test :))
--

Kaushal Modi

--f403045f74b81843d2055189e6da-- --f403045f74b81843d9055189e6dc Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15c8dcc0be4ce4967311> X-Attachment-Id: 15c8dcc0be4ce4967311 RnJvbSA3MTFkNzE4OTVjYzNmZWMyM2VlNDY2NTI5OWRmNjY1ODQyZmU5MDY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgOSBKdW4gMjAxNyAxMjo1NjoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEFs bG93IG9yZy1maWxlLWNvbnRlbnRzIHRvIGZldGNoIGZpbGUgY29udGVudHMgZnJvbSBhIFVSTAoK KiBsaXNwL29yZy5lbCAob3JnLS1maWxlLWNhY2hlKTogTmV3IGludGVybmFsIHZhcmlhYmxlIHRv IHN0b3JlCmRvd25sb2FkZWQgZmlsZXMnIGNhY2hlLgoKKiBsaXNwL29yZy5lbCAob3JnLXJlc2V0 LWZpbGUtY2FjaGUpOiBOZXcgZnVuY3Rpb24gdG8gY2xlYXIgdGhlIGFib3ZlCmZpbGUgY2FjaGUu CgoqIGxpc3Avb3JnLmVsIChvcmctbW9kZS1yZXN0YXJ0KTogVXNlIG9yZy1yZXNldC1maWxlLWNh Y2hlIHRvIGNsZWFyCnRoZSBmaWxlIGNhY2hlLgoKKiBsaXNwL29yZy5lbCAob3JnLWZpbGUtdXJs LXApOiBOZXcgZnVuY3Rpb24gdG8gdGVzdCBpZiB0aGUgaW5wdXQKYXJndW1lbnQgaXMgYSBVUkwu CgoqIGxpc3Avb3JnLmVsIChvcmctZmlsZS1jb250ZW50cyk6IEFsbG93IHRoZSBGSUxFIGFyZ3Vt ZW50IHRvIGJlIGEKVVJMLiAgSWYgdGhlIFVSTCBjb250ZW50cyBhcmUgYWxyZWFkeSBjYWNoZWQs IHJldHVybiB0aGUgY2FjaGUKY29udGVudHMsIGVsc2UgZG93bmxvYWQgdGhlIGZpbGUgYW5kIHJl dHVybiBjb250ZW50cyBvZiB0aGF0LiAgVGhlCmZpbGUgaXMgYXV0b21hdGljYWxseSBjYWNoZWQg ZWFjaCB0aW1lIGl0IGlzIGRvd25sb2FkZWQuICBBZGQgYSBuZXcKb3B0aW9uYWwgYXJndW1lbnQg Tk9DQUNIRS4gIElmIHRoaXMgaXMgbm9uLW5pbCwgdGhlIFVSTCBpcyBhbHdheXMKZG93bmxvYWRl ZCBhZnJlc2guICBVc2UgYG9yZy0tZmlsZS1jYWNoZScgYW5kIGBvcmctZmlsZS11cmwtcCcuCgoq IGxpc3Avb3JnLmVsIChvcmctZWRpdC1zcGVjaWFsKTogRG8gbm90IGFsbG93IGVkaXRpbmcgdGhl ICJmaWxlIiBpZiBhClVSTCBpcyBzcGVjaWZpZWQgZm9yIHRoZSAiIytTRVRVUEZJTEUiLgoKKiBs aXNwL294LmVsIChvcmctZXhwb3J0LS1saXN0LWJvdW5kLXZhcmlhYmxlcykKKG9yZy1leHBvcnQt LXByZXBhcmUtZmlsZS1jb250ZW50cyk6CiogbGlzcC9vcmctbWFjcm8uZWwgKG9yZy1tYWNyby0t Y29sbGVjdC1tYWNyb3MpIDogQWRhcHQgdG8gdGhlCnBvc3NpYmlsaXR5IHRoYXQgdGhlIGlucHV0 IHRvIGBvcmctZmlsZS1jb250ZW50cycgY2FuIGJlIGEgVVJMIHRvby4KCiogZG9jL29yZy50ZXhp IChFeHBvcnQgc2V0dGluZ3MsIEluLWJ1ZmZlciBzZXR0aW5ncykKKFRoZSB2ZXJ5IGJ1c3kgQy1j IEMtYyBrZXkpOiBNZW50aW9uIHRoYXQgIytTRVRVUEZJTEUga2V5d29yZCBjYW4gbm93CnRha2Ug YSBVUkwgYXMgYSB2YWx1ZSwgYW5kIHRoYXQgQy1jIEMtYyBvbiB0aGUgIytTRVRVUEZJTEUgbGlu ZSB3aWxsCmNsZWFyIHRoZSBvcmcgZmlsZSBjYWNoZS4KCiogdGVzdGluZy9saXNwL3Rlc3Qtb3Jn LmVsICh0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy11cmwpCih0ZXN0LW9yZy9vcmctZmlsZS1j b250ZW50cy1maWxlKTogQWRkIHRlc3RzIGZvciBvcmctZmlsZS1jb250ZW50cy4KLS0tCiBkb2Mv b3JnLnRleGkgICAgICAgICAgICAgfCAzNyArKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGV0Yy9P UkctTkVXUyAgICAgICAgICAgICB8IDEyICsrKysrKystCiBsaXNwL29yZy1tYWNyby5lbCAgICAg ICAgfCAyMiArKysrKysrKy0tLS0tLQogbGlzcC9vcmcuZWwgICAgICAgICAgICAgIHwgNzQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBsaXNwL294LmVs ICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrKystLS0tLS0tLS0tCiB0ZXN0aW5nL2xp c3AvdGVzdC1vcmcuZWwgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMg Y2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9vcmcudGV4aSBiL2RvYy9vcmcudGV4aQppbmRleCBkZWU0NmQxMDU0Li4xOTVlMzdhZDlm IDEwMDY0NAotLS0gYS9kb2Mvb3JnLnRleGkKKysrIGIvZG9jL29yZy50ZXhpCkBAIC0xMDQwNiwx NCArMTA0MDYsMTQgQEAgb3ZlcnJpZGUgb3B0aW9ucyBzZXQgYXQgYSBtb3JlIGdlbmVyYWwgbGV2 ZWwuCiAKIEBjaW5kZXggIytTRVRVUEZJTEUKIEluLWJ1ZmZlciBzZXR0aW5ncyBtYXkgYXBwZWFy IGFueXdoZXJlIGluIHRoZSBmaWxlLCBlaXRoZXIgZGlyZWN0bHkgb3IKLWluZGlyZWN0bHkgdGhy b3VnaCBhIGZpbGUgaW5jbHVkZWQgdXNpbmcgQHNhbXB7IytTRVRVUEZJTEU6IGZpbGVuYW1lfSBz eW50YXguCi1PcHRpb24ga2V5d29yZCBzZXRzIHRhaWxvcmVkIHRvIGEgcGFydGljdWxhciBiYWNr LWVuZCBjYW4gYmUgaW5zZXJ0ZWQgZnJvbQotdGhlIGV4cG9ydCBkaXNwYXRjaGVyIChAcHhyZWZ7 VGhlIGV4cG9ydCBkaXNwYXRjaGVyfSkgdXNpbmcgdGhlIEBjb2Rle0luc2VydAotdGVtcGxhdGV9 IGNvbW1hbmQgYnkgcHJlc3NpbmcgQGtleXsjfS4gIFRvIGluc2VydCBrZXl3b3JkcyBpbmRpdmlk dWFsbHksCi1hIGdvb2Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGUga2V5d29yZCBpcyBjb3JyZWN0IGlz IHRvIHR5cGUgQGNvZGV7Iyt9IGFuZCB0aGVuCi10byB1c2UgQGtiZHtNLUBrZXl7VEFCfX1AZm9v dG5vdGV7TWFueSBkZXNrdG9wcyBpbnRlcmNlcHQgQGtiZHtNLVRBQn0gdG8KLXN3aXRjaCB3aW5k b3dzLiAgVXNlIEBrYmR7Qy1NLWl9IG9yIEBrYmR7QGtleXtFU0N9IEBrZXl7VEFCfX0gaW5zdGVh ZC59IGZvcgotY29tcGxldGlvbi4KK2luZGlyZWN0bHkgdGhyb3VnaCBhIGZpbGUgaW5jbHVkZWQg dXNpbmcgQHNhbXB7IytTRVRVUEZJTEU6IGZpbGVuYW1lIG9yIFVSTH0KK3N5bnRheC4gIE9wdGlv biBrZXl3b3JkIHNldHMgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIGJhY2stZW5kIGNhbiBiZQor aW5zZXJ0ZWQgZnJvbSB0aGUgZXhwb3J0IGRpc3BhdGNoZXIgKEBweHJlZntUaGUgZXhwb3J0IGRp c3BhdGNoZXJ9KSB1c2luZyB0aGUKK0Bjb2Rle0luc2VydCB0ZW1wbGF0ZX0gY29tbWFuZCBieSBw cmVzc2luZyBAa2V5eyN9LiAgVG8gaW5zZXJ0IGtleXdvcmRzCitpbmRpdmlkdWFsbHksIGEgZ29v ZCB3YXkgdG8gbWFrZSBzdXJlIHRoZSBrZXl3b3JkIGlzIGNvcnJlY3QgaXMgdG8gdHlwZQorQGNv ZGV7Iyt9IGFuZCB0aGVuIHRvIHVzZSBAa2Jke00tQGtleXtUQUJ9fUBmb290bm90ZXtNYW55IGRl c2t0b3BzIGludGVyY2VwdAorQGtiZHtNLVRBQn0gdG8gc3dpdGNoIHdpbmRvd3MuICBVc2UgQGti ZHtDLU0taX0gb3IgQGtiZHtAa2V5e0VTQ30gQGtleXtUQUJ9fQoraW5zdGVhZC59IGZvciBjb21w bGV0aW9uLgogCiBUaGUgZXhwb3J0IGtleXdvcmRzIGF2YWlsYWJsZSBmb3IgZXZlcnkgYmFjay1l bmQsIGFuZCB0aGVpciBlcXVpdmFsZW50IGdsb2JhbAogdmFyaWFibGVzLCBpbmNsdWRlOgpAQCAt MTcxNzQsMTMgKzE3MTc0LDE2IEBAIGhhdmUgYSBsb3dlciBBU0NJSSBudW1iZXIgdGhhbiB0aGUg bG93ZXN0IHByaW9yaXR5LgogVGhpcyBsaW5lIHNldHMgYSBkZWZhdWx0IGluaGVyaXRhbmNlIHZh bHVlIGZvciBlbnRyaWVzIGluIHRoZSBjdXJyZW50CiBidWZmZXIsIG1vc3QgdXNlZnVsIGZvciBz cGVjaWZ5aW5nIHRoZSBhbGxvd2VkIHZhbHVlcyBvZiBhIHByb3BlcnR5LgogQGNpbmRleCAjK1NF VFVQRklMRQotQGl0ZW0gIytTRVRVUEZJTEU6IGZpbGUKLVRoZSBzZXR1cCBmaWxlIGlzIGZvciBh ZGRpdGlvbmFsIGluLWJ1ZmZlciBzZXR0aW5ncy4gIE9yZyBsb2FkcyB0aGlzIGZpbGUgYW5kCi1w YXJzZXMgaXQgZm9yIGFueSBzZXR0aW5ncyBpbiBpdCBvbmx5IHdoZW4gT3JnIG9wZW5zIHRoZSBt YWluIGZpbGUuICBAa2Jke0MtYwotQy1jfSBvbiB0aGUgc2V0dGluZ3MgbGluZSB3aWxsIGFsc28g cGFyc2UgYW5kIGxvYWQuICBPcmcgYWxzbyBwYXJzZXMgYW5kCi1sb2FkcyB0aGUgZmlsZSBkdXJp bmcgbm9ybWFsIGV4cG9ydGluZyBwcm9jZXNzLiAgT3JnIHBhcnNlcyB0aGUgY29udGVudHMgb2YK LXRoaXMgZmlsZSBhcyBpZiBpdCB3YXMgaW5jbHVkZWQgaW4gdGhlIGJ1ZmZlci4gIEl0IGNhbiBi ZSBhbm90aGVyIE9yZyBmaWxlLgotVG8gdmlzaXQgdGhlIGZpbGUsIEBrYmR7Qy1jICd9IHdoaWxl IHRoZSBjdXJzb3IgaXMgb24gdGhlIGxpbmUgd2l0aCB0aGUgZmlsZQorQGl0ZW0gIytTRVRVUEZJ TEU6IGZpbGUgb3IgVVJMCitUaGUgc2V0dXAgZmlsZSBvciBhIFVSTCBwb2ludGluZyB0byBzdWNo IGZpbGUgaXMgZm9yIGFkZGl0aW9uYWwgaW4tYnVmZmVyCitzZXR0aW5ncy4gIE9yZyBsb2FkcyB0 aGlzIGZpbGUgYW5kIHBhcnNlcyBpdCBmb3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbgor T3JnIG9wZW5zIHRoZSBtYWluIGZpbGUuICBJZiBVUkwgaXMgc3BlY2lmaWVkLCB0aGUgY29udGVu dHMgYXJlIGRvd25sb2FkZWQKK2FuZCBzdG9yZWQgaW4gYSB0ZW1wb3JhcnkgY2FjaGUuICBAa2Jk e0MtYyBDLWN9IG9uIHRoZSBzZXR0aW5ncyBsaW5lIHdpbGwKK2Fsc28gcGFyc2UgYW5kIGxvYWQu ICBAa2Jke0MtYyBDLWN9IG9uIHRoZSBAY29kZXsjK1NFVFVQRklMRTp9IGxpbmUgd2lsbCBhbHNv CityZXNldCB0aGUgdGVtcG9yYXJ5IGZpbGUgY2FjaGUuICBPcmcgYWxzbyBwYXJzZXMgYW5kIGxv YWRzIHRoZSBkb2N1bWVudAorZHVyaW5nIG5vcm1hbCBleHBvcnRpbmcgcHJvY2Vzcy4gIE9yZyBw YXJzZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZG9jdW1lbnQgYXMKK2lmIGl0IHdhcyBpbmNsdWRl ZCBpbiB0aGUgYnVmZmVyLiAgSXQgY2FuIGJlIGFub3RoZXIgT3JnIGZpbGUuICBUbyB2aXNpdCB0 aGUKK2ZpbGUgKG5vdCBhIFVSTCksIEBrYmR7Qy1jICd9IHdoaWxlIHRoZSBjdXJzb3IgaXMgb24g dGhlIGxpbmUgd2l0aCB0aGUgZmlsZQogbmFtZS4KIEBpdGVtICMrU1RBUlRVUDoKIEBjaW5kZXgg IytTVEFSVFVQCkBAIC0xNzQyMiw3ICsxNzQyNSw5IEBAIElmIGFueSBoaWdobGlnaHRzIHNob3du IGluIHRoZSBidWZmZXIgZnJvbSB0aGUgY3JlYXRpb24gb2YgYSBzcGFyc2UgdHJlZSwgb3IKIGZy b20gY2xvY2sgZGlzcGxheSwgcmVtb3ZlIHN1Y2ggaGlnaGxpZ2h0cy4KIEBpdGVtCiBJZiB0aGUg Y3Vyc29yIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lhbCBAY29kZXsjK0tFWVdPUkR9IGxpbmVzLCBz Y2FuIHRoZQotYnVmZmVyIGZvciB0aGVzZSBsaW5lcyBhbmQgdXBkYXRlIHRoZSBpbmZvcm1hdGlv bi4KK2J1ZmZlciBmb3IgdGhlc2UgbGluZXMgYW5kIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24uICBB bHNvIHJlc2V0IHRoZSBPcmcgZmlsZQorY2FjaGUgdXNlZCB0byB0ZW1wb3Jhcnkgc3RvcmUgdGhl IGNvbnRlbnRzIG9mIFVSTHMgdXNlZCBhcyB2YWx1ZXMgZm9yCitrZXl3b3JkcyBsaWtlIEBjb2Rl eyMrU0VUVVBGSUxFfS4KIEBpdGVtCiBJZiB0aGUgY3Vyc29yIGlzIGluc2lkZSBhIHRhYmxlLCBy ZWFsaWduIHRoZSB0YWJsZS4gIFRoZSB0YWJsZSByZWFsaWducyBldmVuCiBpZiBhdXRvbWF0aWMg dGFibGUgZWRpdG9yIGlzIHR1cm5lZCBvZmYuCmRpZmYgLS1naXQgYS9ldGMvT1JHLU5FV1MgYi9l dGMvT1JHLU5FV1MKaW5kZXggYjk4NDEwM2UwNC4uN2ExYzY4Y2EyZSAxMDA2NDQKLS0tIGEvZXRj L09SRy1ORVdTCisrKyBiL2V0Yy9PUkctTkVXUwpAQCAtMjAzLDcgKzIwMyw3IEBAIG1hbnVhbCBm b3IgZGV0YWlscy4KICoqKiogQWRkIGdsb2JhbCBtYWNyb3MgdGhyb3VnaCB+b3JnLWV4cG9ydC1n bG9iYWwtbWFjcm9zfgogV2l0aCB0aGlzIHZhcmlhYmxlLCBvbmUgY2FuIGRlZmluZSBtYWNyb3Mg YXZhaWxhYmxlIGZvciBhbGwgZG9jdW1lbnRzLgogKioqKiBOZXcga2V5d29yZCB+IytFWFBPUlRf RklMRV9OQU1FfgotU2ltaXJhbHJ5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+IHByb3BlcnR5LCB0 aGlzIGtleXdvcmQgYWxsb3dzIHRoZQorU2ltaWxhcmx5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+ IHByb3BlcnR5LCB0aGlzIGtleXdvcmQgYWxsb3dzIHRoZQogdXNlciB0byBzcGVjaWZ5IHRoZSBu YW1lIG9mIHRoZSBvdXRwdXQgZmlsZSB1cG9uIGV4cG9ydGluZyB0aGUKIGRvY3VtZW50LiAgVGhp cyBhbHNvIGhhcyBhbiBlZmZlY3Qgb24gcHVibGlzaGluZy4KICoqKiogSG9yaXpvbnRhbCBydWxl cyBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQgaW4gTGFUZVggdGFibGUgbWF0aCBtb2RlCkBAIC0yNDAs NiArMjQwLDE2IEBAIHdoaWNoIGNhdXNlcyByZWZpbGUgdGFyZ2V0cyB0byBiZSBwcmVmaXhlZCB3 aXRoIHRoZSBidWZmZXLigJlzCiBuYW1lLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hl biB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKIH51bmlxdWlmeS5lbH4uCiAKKyoqKiB+b3JnLWZp bGUtY29udGVudHN+IG5vdyBhbGxvd3MgdGhlIEZJTEUgYXJndW1lbnQgdG8gYmUgYSBVUkwuCitU aGlzIGFsbG93cyB+IytTRVRVUEZJTEU6fiB0byBhY2NlcHQgYSBVUkwgaW5zdGVhZCBvZiBhIGxv Y2FsIGZpbGUKK3BhdGguICBUaGUgVVJMIGNvbnRlbnRzIGFyZSBhdXRvLWRvd25sb2FkZWQgYW5k IHNhdmVkIHRvIGEgdGVtcG9yYXJ5CitjYWNoZSB+b3JnLS1maWxlLWNhY2hlfi4gIEEgbmV3IG9w dGlvbmFsIGFyZ3VtZW50IH5OT0NBQ0hFfiBpcyBhZGRlZAordG8gfm9yZy1maWxlLWNvbnRlbnRz fi4KKworKioqIH5vcmctbW9kZS1yZXN0YXJ0fiBub3cgcmVzZXRzIHRoZSBuZXdseSBhZGRlZCB+ b3JnLS1maWxlLWNhY2hlfi4KK1VzaW5nIH5DLWMgQy1jfiBvbiBhbnkga2V5d29yZCAobGlrZSB+ IytTRVRVUEZJTEV+KSB3aWxsIHJlc2V0IHRoZQordGhhdCBmaWxlIGNhY2hlLgorCiAqKiBSZW1v dmVkIGZ1bmN0aW9ucwogCiAqKiogT3JnIFRpbWVsaW5lCmRpZmYgLS1naXQgYS9saXNwL29yZy1t YWNyby5lbCBiL2xpc3Avb3JnLW1hY3JvLmVsCmluZGV4IDk2NDYxZjlhOTUuLmZmYmZhOTFhZGQg MTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLW1hY3JvLmVsCisrKyBiL2xpc3Avb3JnLW1hY3JvLmVsCkBA IC01NSw3ICs1NSw4IEBACiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1tYWNyby1wYXJz ZXIgIm9yZy1lbGVtZW50IiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXByb3Bl cnR5ICJvcmctZWxlbWVudCIgKHByb3BlcnR5IGVsZW1lbnQpKQogKGRlY2xhcmUtZnVuY3Rpb24g b3JnLWVsZW1lbnQtdHlwZSAib3JnLWVsZW1lbnQiIChlbGVtZW50KSkKLShkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRpb25hbCBub2Vycm9yKSkKKyhk ZWNsYXJlLWZ1bmN0aW9uIG9yZy1maWxlLXVybC1wICJvcmciIChmaWxlKSkKKyhkZWNsYXJlLWZ1 bmN0aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRpb25hbCBub2Vycm9yIG5v Y2FjaGUpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLW1vZGUgIm9yZyIgKCkpCiAoZGVjbGFyZS1m dW5jdGlvbiB2Yy1iYWNrZW5kICJ2Yy1ob29rcyIgKGYpKQogKGRlY2xhcmUtZnVuY3Rpb24gdmMt Y2FsbCAidmMtaG9va3MiIChmdW4gZmlsZSAmcmVzdCBhcmdzKSB0KQpAQCAtMTAxLDE2ICsxMDIs MjEgQEAgUmV0dXJuIGFuIGFsaXN0IGNvbnRhaW5pbmcgYWxsIG1hY3JvIHRlbXBsYXRlcyBmb3Vu ZC4iCiAJCQkJIChpZiBvbGQtY2VsbCAoc2V0Y2RyIG9sZC1jZWxsIHRlbXBsYXRlKQogCQkJCSAg IChwdXNoIChjb25zIG5hbWUgdGVtcGxhdGUpIHRlbXBsYXRlcykpKSkKIAkJCSAgIDs7IEVudGVy IHNldHVwIGZpbGUuCi0JCQkgICAobGV0ICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCQko b3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIHZhbCkpKSkKLQkJCSAgICAgKHVubGVzcyAo bWVtYmVyIGZpbGUgZmlsZXMpCisJCQkgICAobGV0KiAoKHVyaSAob3JnLXVuYnJhY2tldC1zdHJp bmcgIlwiIiAiXCIiIChvcmctdHJpbSB2YWwpKSkKKwkJCQkgICh1cmktaXMtdXJsIChvcmctZmls ZS11cmwtcCB1cmkpKQorCQkJCSAgKHVyaSAoaWYgdXJpLWlzLXVybAorCQkJCQkgICB1cmkKKwkJ CQkJIChleHBhbmQtZmlsZS1uYW1lIHVyaSkpKSkKKwkJCSAgICAgOzsgQXZvaWQgY2lyY3VsYXIg ZGVwZW5kZW5jaWVzLgorCQkJICAgICAodW5sZXNzIChtZW1iZXIgdXJpIGZpbGVzKQogCQkJICAg ICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5Ci0JCQkJ ICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQorCQkJCSAodW5sZXNzIHVyaS1pcy11 cmwKKwkJCQkgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJCQkgKGZpbGUtbmFtZS1kaXJl Y3RvcnkgdXJpKSkpCiAJCQkJIChvcmctbW9kZSkKLQkJCQkgKGluc2VydCAob3JnLWZpbGUtY29u dGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIHVy aSAnbm9lcnJvcikpCiAJCQkJIChzZXRxIHRlbXBsYXRlcwotCQkJCSAgICAgICAoZnVuY2FsbCBj b2xsZWN0LW1hY3JvcyAoY29ucyBmaWxlIGZpbGVzKQorCQkJCSAgICAgICAoZnVuY2FsbCBjb2xs ZWN0LW1hY3JvcyAoY29ucyB1cmkgZmlsZXMpCiAJCQkJCQl0ZW1wbGF0ZXMpKSkpKSkpKSkpKQog CQl0ZW1wbGF0ZXMpKSkpCiAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgbmlsIG5pbCkpKQpk aWZmIC0tZ2l0IGEvbGlzcC9vcmcuZWwgYi9saXNwL29yZy5lbAppbmRleCAyMTAxZWM3ZDEzLi4x OTE5OTBkYjc1IDEwMDY0NAotLS0gYS9saXNwL29yZy5lbAorKysgYi9saXNwL29yZy5lbApAQCAt MTgxLDYgKzE4MSw4IEBAIFN0YXJzIGFyZSBwdXQgaW4gZ3JvdXAgMSBhbmQgdGhlIHRyaW1tZWQg Ym9keSBpbiBncm91cCAyLiIpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZXhwb3J0LWdldC1lbnZp cm9ubWVudCAib3giICgmb3B0aW9uYWwgYmFja2VuZCBzdWJ0cmVlcCBleHQtcGxpc3QpKQogKGRl Y2xhcmUtZnVuY3Rpb24gb3JnLWxhdGV4LW1ha2UtcHJlYW1ibGUgIm94LWxhdGV4IiAoaW5mbyAm b3B0aW9uYWwgdGVtcGxhdGUgc25pcHBldD8pKQogCisoZGVmdmFyIGZmYXAtdXJsLXJlZ2V4cCkJ CTtTaWxlbmNlIGJ5dGUtY29tcGlsZXIKKwogKGRlZnN1YnN0IG9yZy11bmlxdWlmeSAobGlzdCkK ICAgIk5vbi1kZXN0cnVjdGl2ZWx5IHJlbW92ZSBkdXBsaWNhdGUgZWxlbWVudHMgZnJvbSBMSVNU LiIKICAgKGxldCAoKHJlcyAoY29weS1zZXF1ZW5jZSBsaXN0KSkpIChkZWxldGUtZHVwcyByZXMp KSkKQEAgLTUyODAsMTcgKzUyODIsNjIgQEAgYSBzdHJpbmcsIHN1bW1hcml6aW5nIFRBR1MsIGFz IGEgbGlzdCBvZiBzdHJpbmdzLiIKIAkgICAoc2V0cSBjdXJyZW50LWdyb3VwIChsaXN0IHRhZykp KSkKIAkoXyBuaWwpKSkpKQogCi0oZGVmdW4gb3JnLWZpbGUtY29udGVudHMgKGZpbGUgJm9wdGlv bmFsIG5vZXJyb3IpCi0gICJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIEZJTEUsIGFzIGEgc3RyaW5n LiIKLSAgKGlmIChhbmQgZmlsZSAoZmlsZS1yZWFkYWJsZS1wIGZpbGUpKQorKGRlZnZhciBvcmct LWZpbGUtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKQorICAiSGFzaCB0YWJs ZSB0byBzdG9yZSBjb250ZW50cyBvZiBmaWxlcyByZWZlcmVuY2VkIHZpYSBhIFVSTC4KK1RoaXMg aXMgdGhlIGNhY2hlIG9mIGZpbGUgVVJMcyByZWFkIHVzaW5nIGBvcmctZmlsZS1jb250ZW50cycu IikKKworKGRlZnVuIG9yZy1yZXNldC1maWxlLWNhY2hlICgpCisgICJSZXNldCB0aGUgY2FjaGUg b2YgZmlsZXMgZG93bmxvYWRlZCBieSBgb3JnLWZpbGUtY29udGVudHMnLiIKKyAgKGNscmhhc2gg b3JnLS1maWxlLWNhY2hlKSkKKworKGRlZnVuIG9yZy1maWxlLXVybC1wIChmaWxlKQorICAiTm9u LW5pbCBpZiBGSUxFIGlzIGEgVVJMLiIKKyAgKHJlcXVpcmUgJ2ZmYXApCisgIChzdHJpbmctbWF0 Y2gtcCBmZmFwLXVybC1yZWdleHAgZmlsZSkpCisKKyhkZWZ1biBvcmctZmlsZS1jb250ZW50cyAo ZmlsZSAmb3B0aW9uYWwgbm9lcnJvciBub2NhY2hlKQorICAiUmV0dXJuIHRoZSBjb250ZW50cyBv ZiBGSUxFLCBhcyBhIHN0cmluZy4KKworRklMRSBjYW4gYmUgYSBmaWxlIG5hbWUgb3IgVVJMLgor CitJZiBGSUxFIGlzIGEgVVJMLCBkb3dubG9hZCB0aGUgY29udGVudHMuICBJZiB0aGUgVVJMIGNv bnRlbnRzIGFyZQorYWxyZWFkeSBjYWNoZWQgaW4gdGhlIGBvcmctLWZpbGUtY2FjaGUnIGhhc2gg dGFibGUsIHRoZSBkb3dubG9hZCBzdGVwCitpcyBza2lwcGVkLgorCitJZiBOT0VSUk9SIGlzIG5v bi1uaWwsIGlnbm9yZSB0aGUgZXJyb3Igd2hlbiB1bmFibGUgdG8gcmVhZCB0aGUgRklMRQorZnJv bSBmaWxlIG9yIFVSTC4KKworSWYgTk9DQUNIRSBpcyBub24tbmlsLCBkbyBhIGZyZXNoIGZldGNo IG9mIEZJTEUgZXZlbiBpZiBjYWNoZWQgdmVyc2lvbgoraXMgYXZhaWxhYmxlLiAgVGhpcyBvcHRp b24gYXBwbGllcyBvbmx5IGlmIEZJTEUgaXMgYSBVUkwuIgorICAobGV0KiAoKGlzLXVybCAob3Jn LWZpbGUtdXJsLXAgZmlsZSkpCisgICAgICAgICAoY2FjaGUgKGFuZCBpcy11cmwKKyAgICAgICAg ICAgICAgICAgICAgIChub3Qgbm9jYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgIChnZXRoYXNo IGZpbGUgb3JnLS1maWxlLWNhY2hlKSkpKQorICAgIChjb25kCisgICAgIChjYWNoZSkKKyAgICAg KGlzLXVybAorICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHVybC1yZXRyaWV2ZS1zeW5jaHJv bm91c2x5IGZpbGUpCisJKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKwk7OyBNb3ZlIHBvaW50IHRv IGFmdGVyIHRoZSB1cmwtcmV0cmlldmUgaGVhZGVyLgorCShzZWFyY2gtZm9yd2FyZCAiXG5cbiIg bmlsIDptb3ZlKQorCTs7IFNlYXJjaCBmb3IgdGhlIHN1Y2Nlc3MgY29kZSBvbmx5IGluIHRoZSB1 cmwtcmV0cmlldmUgaGVhZGVyLgorCShpZiAoc2F2ZS1leGN1cnNpb24gKHJlLXNlYXJjaC1iYWNr d2FyZCAiSFRUUC4qXFxzLSsyMDBcXHMtT0siIG5pbCA6bm9lcnJvcikpCisJICAgIDs7IFVwZGF0 ZSB0aGUgY2FjaGUgYG9yZy0tZmlsZS1jYWNoZScgYW5kIHJldHVybiBjb250ZW50cy4KKwkgICAg KHB1dGhhc2ggZmlsZQorCQkgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBv aW50KSAocG9pbnQtbWF4KSkKKwkJICAgICBvcmctLWZpbGUtY2FjaGUpCisJICAoZnVuY2FsbCAo aWYgbm9lcnJvciAjJ21lc3NhZ2UgIyd1c2VyLWVycm9yKQorCQkgICAiVW5hYmxlIHRvIGZldGNo IGZpbGUgZnJvbSAlUyIKKwkJICAgZmlsZSkpKSkKKyAgICAgKHQKICAgICAgICh3aXRoLXRlbXAt YnVmZmVyCi0JKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCi0JKGJ1ZmZlci1zdHJpbmcpKQot ICAgIChmdW5jYWxsIChpZiBub2Vycm9yICdtZXNzYWdlICdlcnJvcikKLQkgICAgICJDYW5ub3Qg cmVhZCBmaWxlIFwiJXNcIiVzIgotCSAgICAgZmlsZQotCSAgICAgKGxldCAoKGZyb20gKGJ1ZmZl ci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpKSkKLQkgICAgICAgKGlmIGZyb20gKGNv bmNhdCAiIChyZWZlcmVuY2VkIGluIGZpbGUgXCIiIGZyb20gIlwiKSIpICIiKSkpKSkKKyAgICAg ICAgKGNvbmRpdGlvbi1jYXNlIGVycgorCSAgICAocHJvZ24KKwkgICAgICAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZmlsZSkKKwkgICAgICAoYnVmZmVyLXN0cmluZykpCisJICAoZmlsZS1lcnJvcgor ICAgICAgICAgICAoZnVuY2FsbCAoaWYgbm9lcnJvciAjJ21lc3NhZ2UgIyd1c2VyLWVycm9yKQor CQkgICAgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikpKSkpKSkpKQogCiAoZGVmdW4gb3JnLWV4 dHJhY3QtbG9nLXN0YXRlLXNldHRpbmdzICh4KQogICAiRXh0cmFjdCB0aGUgbG9nIHN0YXRlIHNl dHRpbmcgZnJvbSBhIFRPRE8ga2V5d29yZCBzdHJpbmcuCkBAIC0yMDY4Nyw3ICsyMDczNCw5IEBA IE90aGVyd2lzZSwgcmV0dXJuIGEgdXNlciBlcnJvci4iCiAJICAgIChmb3JtYXQgIltbJXNdXSIK IAkJICAgIChleHBhbmQtZmlsZS1uYW1lCiAJCSAgICAgKGxldCAoKHZhbHVlIChvcmctZWxlbWVu dC1wcm9wZXJ0eSA6dmFsdWUgZWxlbWVudCkpKQotCQkgICAgICAgKGNvbmQgKChub3QgKG9yZy1z dHJpbmctbnctcCB2YWx1ZSkpCisJCSAgICAgICAoY29uZCAoKG9yZy1maWxlLXVybC1wIHZhbHVl KQorCQkJICAgICAgKHVzZXItZXJyb3IgIlRoZSBmaWxlIGlzIHNwZWNpZmllZCBhcyBhIFVSTCwg Y2Fubm90IGJlIGVkaXRlZCIpKQorCQkJICAgICAoKG5vdCAob3JnLXN0cmluZy1udy1wIHZhbHVl KSkKIAkJCSAgICAgICh1c2VyLWVycm9yICJObyBmaWxlIHRvIGVkaXQiKSkKIAkJCSAgICAgKChz dHJpbmctbWF0Y2ggIlxcYFwiXFwoLio/XFwpXCIiIHZhbHVlKQogCQkJICAgICAgKG1hdGNoLXN0 cmluZyAxIHZhbHVlKSkKQEAgLTIwOTUxLDcgKzIxMDAwLDggQEAgVXNlIGBcXFtvcmctZWRpdC1z cGVjaWFsXScgdG8gZWRpdCB0YWJsZS5lbCB0YWJsZXMiKSkKICAgICAoZnVuY2FsbCBtYWpvci1t b2RlKQogICAgIChoYWNrLWxvY2FsLXZhcmlhYmxlcykKICAgICAod2hlbiAoYW5kIGluZGVudC1z dGF0dXMgKG5vdCAoYm91bmQtYW5kLXRydWUtcCBvcmctaW5kZW50LW1vZGUpKSkKLSAgICAgIChv cmctaW5kZW50LW1vZGUgLTEpKSkKKyAgICAgIChvcmctaW5kZW50LW1vZGUgLTEpKQorICAgIChv cmctcmVzZXQtZmlsZS1jYWNoZSkpCiAgIChtZXNzYWdlICIlcyByZXN0YXJ0ZWQiIG1ham9yLW1v ZGUpKQogCiAoZGVmdW4gb3JnLWtpbGwtbm90ZS1vci1zaG93LWJyYW5jaGVzICgpCmRpZmYgLS1n aXQgYS9saXNwL294LmVsIGIvbGlzcC9veC5lbAppbmRleCA1M2QzNWJiYThmLi4zYjc5M2EwMGYy IDEwMDY0NAotLS0gYS9saXNwL294LmVsCisrKyBiL2xpc3Avb3guZWwKQEAgLTE0OTksMTcgKzE0 OTksMjAgQEAgQXNzdW1lIGJ1ZmZlciBpcyBpbiBPcmcgbW9kZS4gIE5hcnJvd2luZywgaWYgYW55 LCBpcyBpZ25vcmVkLiIKIAkJCSAoY29uZAogCQkJICA7OyBPcHRpb25zIGluIGBvcmctZXhwb3J0 LXNwZWNpYWwta2V5d29yZHMnLgogCQkJICAoKGVxdWFsIGtleSAiU0VUVVBGSUxFIikKLQkJCSAg IChsZXQgKChmaWxlCi0JCQkJICAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCSAgIChvcmctdW5icmFj a2V0LXN0cmluZyAiXCIiICJcIiIgKG9yZy10cmltIHZhbCkpKSkpCisJCQkgICAobGV0KiAoKHVy aSAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIChvcmctdHJpbSB2YWwpKSkKKwkJCQkg ICh1cmktaXMtdXJsIChvcmctZmlsZS11cmwtcCB1cmkpKQorCQkJCSAgKHVyaSAoaWYgdXJpLWlz LXVybAorCQkJCQkgICB1cmkKKwkJCQkJIChleHBhbmQtZmlsZS1uYW1lIHVyaSkpKSkKIAkJCSAg ICAgOzsgQXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgotCQkJICAgICAodW5sZXNzIChtZW1i ZXIgZmlsZSBmaWxlcykKKwkJCSAgICAgKHVubGVzcyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCSAg ICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCQkJCSAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJ CSAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQotCQkJCSAoaW5zZXJ0IChvcmctZmlsZS1j b250ZW50cyBmaWxlICdub2Vycm9yKSkKKwkJCQkgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAg KHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKKwkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkp KQorCQkJCSAoaW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAo bGV0ICgob3JnLWluaGliaXQtc3RhcnR1cCB0KSkgKG9yZy1tb2RlKSkKLQkJCQkgKGZ1bmNhbGwg Z2V0LW9wdGlvbnMgKGNvbnMgZmlsZSBmaWxlcykpKSkpKQorCQkJCSAoZnVuY2FsbCBnZXQtb3B0 aW9ucyAoY29ucyB1cmkgZmlsZXMpKSkpKSkKIAkJCSAgKChlcXVhbCBrZXkgIk9QVElPTlMiKQog CQkJICAgKHNldHEgcGxpc3QKIAkJCQkgKG9yZy1jb21iaW5lLXBsaXN0cwpAQCAtMTY0NywxNyAr MTY1MCwyMiBAQCBhbiBhbGlzdCB3aGVyZSBhc3NvY2lhdGlvbnMgYXJlIChWQVJJQUJMRS1OQU1F IFZBTFVFKS4iCiAJCQkJICAgICAgIkJJTkQiKQogCQkJICAgICAgIChwdXNoIChyZWFkIChmb3Jt YXQgIiglcykiIHZhbCkpIGFsaXN0KQogCQkJICAgICA7OyBFbnRlciBzZXR1cCBmaWxlLgotCQkJ ICAgICAobGV0ICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCQkgIChvcmctdW5icmFja2V0 LXN0cmluZyAiXCIiICJcIiIgdmFsKSkpKQotCQkJICAgICAgICh1bmxlc3MgKG1lbWJlciBmaWxl IGZpbGVzKQorCQkJICAgICAobGV0KiAoKHVyaSAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAi XCIiIHZhbCkpCisJCQkJICAgICh1cmktaXMtdXJsIChvcmctZmlsZS11cmwtcCB1cmkpKQorCQkJ CSAgICAodXJpIChpZiB1cmktaXMtdXJsCisJCQkJCSAgICAgdXJpCisJCQkJCSAgIChleHBhbmQt ZmlsZS1uYW1lIHVyaSkpKSkKKwkJCSAgICAgICA7OyBBdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNp ZXMuCisJCQkgICAgICAgKHVubGVzcyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCQkgKHdpdGgtdGVt cC1idWZmZXIKLQkJCQkgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJCQkgKGZpbGUtbmFt ZS1kaXJlY3RvcnkgZmlsZSkpCisJCQkJICAgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAgICAo c2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJCQkgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSB1cmkp KSkKIAkJCQkgICAobGV0ICgob3JnLWluaGliaXQtc3RhcnR1cCB0KSkgKG9yZy1tb2RlKSkKLQkJ CQkgICAoaW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyBmaWxlICdub2Vycm9yKSkKKwkJCQkgICAo aW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAgIChzZXRxIGFs aXN0CiAJCQkJCSAoZnVuY2FsbCBjb2xsZWN0LWJpbmQKLQkJCQkJCSAgKGNvbnMgZmlsZSBmaWxl cykKKwkJCQkJCSAgKGNvbnMgdXJpIGZpbGVzKQogCQkJCQkJICBhbGlzdCkpKSkpKSkpKSkKIAkJ ICAgYWxpc3QpKSkpKQogICAgICAgOzsgUmV0dXJuIHZhbHVlIGluIGFwcHJvcHJpYXRlIG9yZGVy IG9mIGFwcGVhcmFuY2UuCmRpZmYgLS1naXQgYS90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgYi90 ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKaW5kZXggZTU1ZWUwNzdiOC4uMzFiZGE4NjA3MyAxMDA2 NDQKLS0tIGEvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsCisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0 LW9yZy5lbApAQCAtNjQ5OCw2ICs2NDk4LDQ3IEBAIFBhcmFncmFwaDxwb2ludD4iCiAgICAgIChv cmctc2hvdy1zZXQtdmlzaWJpbGl0eSAnbWluaW1hbCkKICAgICAgKG9yZy1pbnZpc2libGUtcDIp KSkpCiAKKyhlcnQtZGVmdGVzdCB0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy1maWxlICgpCisg ICJUZXN0IGBvcmctZmlsZS1jb250ZW50cycgd2l0aCBhIGZpbGUgYXMgaW5wdXQuIgorICAoc2hv dWxkCisgICAoc3RyaW5nPSAiIytCSU5EOiB2YXJpYWJsZSB2YWx1ZQorIytERVNDUklQVElPTjog bDIKKyMrTEFOR1VBR0U6IGVuCisjK1NFTEVDVF9UQUdTOiBiCisjK1RJVExFOiBiCisjK1BST1BF UlRZOiBhIDEKKyIgKG9yZy1maWxlLWNvbnRlbnRzIChleHBhbmQtZmlsZS1uYW1lICJzZXR1cGZp bGUzLm9yZyIKKwkJCQkgICAgICAgKGNvbmNhdCBvcmctdGVzdC1kaXIgImV4YW1wbGVzLyIpKSkp KQorICAKKyAgKGxldCAoKGludmFsaWQtZmlsZSAidGhpcy1maWxlLW11c3Qtbm90LWV4aXN0Iikp CisgICAgOzsgVGhyb3cgZXJyb3Igd2hlbiB0cnlpbmcgdG8gYWNjZXNzIGFuIGludmFsaWQgZmls ZS4KKyAgICAoc2hvdWxkLWVycm9yCisgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLWZp bGUpKQorICAgIDs7IFRyeSB0byBhY2Nlc3MgYW4gaW52YWxpZCBmaWxlLCBidXQgZG8gbm90IHRo cm93IGFuIGVycm9yLgorICAgIChzaG91bGQKKyAgICAgKHN0cmluZy1tYXRjaC1wICJcXGBPcGVu aW5nIGlucHV0IGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCisJCSAgICAgKG9yZy1m aWxlLWNvbnRlbnRzIGludmFsaWQtZmlsZSA6bm9lcnJvcikpKSkpCisKKyhlcnQtZGVmdGVzdCB0 ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy11cmwgKCkKKyAgIlRlc3QgYG9yZy1maWxlLWNvbnRl bnRzJyB3aXRoIGEgVVJMIGFzIGlucHV0LiIKKyAgKHNob3VsZAorICAgKHN0cmluZz0gIiMrQklO RDogdmFyaWFibGUgdmFsdWUKKyMrREVTQ1JJUFRJT046IGwyCisjK0xBTkdVQUdFOiBlbgorIytT RUxFQ1RfVEFHUzogYgorIytUSVRMRTogYgorIytQUk9QRVJUWTogYSAxCisiIChvcmctZmlsZS1j b250ZW50cyAiaHR0cDovL29yZ21vZGUub3JnL2NnaXQuY2dpL29yZy1tb2RlLmdpdC9wbGFpbi90 ZXN0aW5nL2V4YW1wbGVzL3NldHVwZmlsZTMub3JnIikpKQorCisgIChsZXQgKChpbnZhbGlkLXVy bCAiaHR0cDovL3RoaXMtdXJsLW11c3Qtbm90LWV4aXN0IikpCisgICAgOzsgVGhyb3cgZXJyb3Ig d2hlbiB0cnlpbmcgdG8gYWNjZXNzIGFuIGludmFsaWQgVVJMLgorICAgIChzaG91bGQtZXJyb3IK KyAgICAgKG9yZy1maWxlLWNvbnRlbnRzIGludmFsaWQtdXJsKSkKKyAgICA7OyBUcnkgdG8gYWNj ZXNzIGFuIGludmFsaWQgVVJMLCBidXQgZG8gbm90IHRocm93IGFuIGVycm9yLgorICAgIChzaG91 bGQKKyAgICAgKHN0cmluZz0gKGZvcm1hdCAiVW5hYmxlIHRvIGZldGNoIGZpbGUgZnJvbSBcIiVz XCIiIGludmFsaWQtdXJsKQorCSAgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLXVybCA6 bm9lcnJvcikpKSkpCisKIAogKHByb3ZpZGUgJ3Rlc3Qtb3JnKQogCi0tIAoyLjEzLjAKCg== --f403045f74b81843d9055189e6dc-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Mon, 12 Jun 2017 19:32:28 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1142c222d916d30551c861d2" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52494) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKV4t-000645-MK for emacs-orgmode@gnu.org; Mon, 12 Jun 2017 15:32:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKV4s-0005E2-R6 for emacs-orgmode@gnu.org; Mon, 12 Jun 2017 15:32:43 -0400 Received: from mail-lf0-x22d.google.com ([2a00:1450:4010:c07::22d]:33871) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKV4s-0005Dk-91 for emacs-orgmode@gnu.org; Mon, 12 Jun 2017 15:32:42 -0400 Received: by mail-lf0-x22d.google.com with SMTP id v20so56855598lfa.1 for ; Mon, 12 Jun 2017 12:32:42 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --001a1142c222d916d30551c861d2 Content-Type: multipart/alternative; boundary="001a1142c222d916d00551c861d0" --001a1142c222d916d00551c861d0 Content-Type: text/plain; charset="UTF-8" I have attached the same patch with one more test; rebased to master. On Fri, Jun 9, 2017 at 12:59 PM Kaushal Modi wrote: > I have attached the updated patch, rebased to master. > -- Kaushal Modi --001a1142c222d916d00551c861d0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I have attached the same patch=C2=A0with one more test; re= based to master.

On Fri= , Jun 9, 2017 at 12:59 PM Kaushal Modi <kaushal.modi@gmail.com> wrote:
I have attac= hed the updated patch, rebased to master.
--

Kaushal Modi

--001a1142c222d916d00551c861d0-- --001a1142c222d916d30551c861d2 Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15c9dcabf27ce4967311> X-Attachment-Id: 15c9dcabf27ce4967311 RnJvbSBlNjQ0MWQ0OGM5NzBhYmQ3Njk1MDkyMjAxNTZkMmM1OTAyOGJhYzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMTI6MTA6MjUgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB bGxvdyBvcmctZmlsZS1jb250ZW50cyB0byBmZXRjaCBmaWxlIGNvbnRlbnRzIGZyb20gYSBVUkwK CiogbGlzcC9vcmcuZWwgKG9yZy0tZmlsZS1jYWNoZSk6IE5ldyBpbnRlcm5hbCB2YXJpYWJsZSB0 byBzdG9yZQpkb3dubG9hZGVkIGZpbGVzJyBjYWNoZS4KCiogbGlzcC9vcmcuZWwgKG9yZy1yZXNl dC1maWxlLWNhY2hlKTogTmV3IGZ1bmN0aW9uIHRvIGNsZWFyIHRoZSBhYm92ZQpmaWxlIGNhY2hl LgoKKiBsaXNwL29yZy5lbCAob3JnLW1vZGUtcmVzdGFydCk6IFVzZSBvcmctcmVzZXQtZmlsZS1j YWNoZSB0byBjbGVhcgp0aGUgZmlsZSBjYWNoZS4KCiogbGlzcC9vcmcuZWwgKG9yZy1maWxlLXVy bC1wKTogTmV3IGZ1bmN0aW9uIHRvIHRlc3QgaWYgdGhlIGlucHV0CmFyZ3VtZW50IGlzIGEgVVJM LgoKKiBsaXNwL29yZy5lbCAob3JnLWZpbGUtY29udGVudHMpOiBBbGxvdyB0aGUgRklMRSBhcmd1 bWVudCB0byBiZSBhClVSTC4gIElmIHRoZSBVUkwgY29udGVudHMgYXJlIGFscmVhZHkgY2FjaGVk LCByZXR1cm4gdGhlIGNhY2hlCmNvbnRlbnRzLCBlbHNlIGRvd25sb2FkIHRoZSBmaWxlIGFuZCBy ZXR1cm4gY29udGVudHMgb2YgdGhhdC4gIFRoZQpmaWxlIGlzIGF1dG9tYXRpY2FsbHkgY2FjaGVk IGVhY2ggdGltZSBpdCBpcyBkb3dubG9hZGVkLiAgQWRkIGEgbmV3Cm9wdGlvbmFsIGFyZ3VtZW50 IE5PQ0FDSEUuICBJZiB0aGlzIGlzIG5vbi1uaWwsIHRoZSBVUkwgaXMgYWx3YXlzCmRvd25sb2Fk ZWQgYWZyZXNoLiAgVXNlIGBvcmctLWZpbGUtY2FjaGUnIGFuZCBgb3JnLWZpbGUtdXJsLXAnLgoK KiBsaXNwL29yZy5lbCAob3JnLWVkaXQtc3BlY2lhbCk6IERvIG5vdCBhbGxvdyBlZGl0aW5nIHRo ZSAiZmlsZSIgaWYgYQpVUkwgaXMgc3BlY2lmaWVkIGZvciB0aGUgIiMrU0VUVVBGSUxFIi4KCiog bGlzcC9veC5lbCAob3JnLWV4cG9ydC0tbGlzdC1ib3VuZC12YXJpYWJsZXMpCihvcmctZXhwb3J0 LS1wcmVwYXJlLWZpbGUtY29udGVudHMpOgoqIGxpc3Avb3JnLW1hY3JvLmVsIChvcmctbWFjcm8t LWNvbGxlY3QtbWFjcm9zKSA6IEFkYXB0IHRvIHRoZQpwb3NzaWJpbGl0eSB0aGF0IHRoZSBpbnB1 dCB0byBgb3JnLWZpbGUtY29udGVudHMnIGNhbiBiZSBhIFVSTCB0b28uCgoqIGRvYy9vcmcudGV4 aSAoRXhwb3J0IHNldHRpbmdzLCBJbi1idWZmZXIgc2V0dGluZ3MpCihUaGUgdmVyeSBidXN5IEMt YyBDLWMga2V5KTogTWVudGlvbiB0aGF0ICMrU0VUVVBGSUxFIGtleXdvcmQgY2FuIG5vdwp0YWtl IGEgVVJMIGFzIGEgdmFsdWUsIGFuZCB0aGF0IEMtYyBDLWMgb24gdGhlICMrU0VUVVBGSUxFIGxp bmUgd2lsbApjbGVhciB0aGUgb3JnIGZpbGUgY2FjaGUuCgoqIHRlc3RpbmcvbGlzcC90ZXN0LW9y Zy5lbCAodGVzdC1vcmcvb3JnLWZpbGUtY29udGVudHMtdXJsKQoodGVzdC1vcmcvb3JnLWZpbGUt Y29udGVudHMtZmlsZSk6IEFkZCB0ZXN0cyBmb3Igb3JnLWZpbGUtY29udGVudHMuCgoqIHRlc3Rp bmcvbGlzcC90ZXN0LW94LmVsICh0ZXN0LW9yZy1leHBvcnQvZ2V0LWluYnVmZmVyLW9wdGlvbnMp OiBBZGQKdGVzdCBmb3IgcmVhZGluZyBzZXR1cGZpbGUgc3BlY2lmaWVkIHZpYSBhIFVSTC4KLS0t CiBkb2Mvb3JnLnRleGkgICAgICAgICAgICAgfCAzNyArKysrKysrKysrKysrLS0tLS0tLS0tLS0K IGV0Yy9PUkctTkVXUyAgICAgICAgICAgICB8IDEyICsrKysrKystCiBsaXNwL29yZy1tYWNyby5l bCAgICAgICAgfCAyMiArKysrKysrKy0tLS0tLQogbGlzcC9vcmcuZWwgICAgICAgICAgICAgIHwg NzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBsaXNw L294LmVsICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrKystLS0tLS0tLS0tCiB0ZXN0 aW5nL2xpc3AvdGVzdC1vcmcuZWwgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRl c3RpbmcvbGlzcC90ZXN0LW94LmVsICB8IDE1ICsrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwg MTg3IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9vcmcu dGV4aSBiL2RvYy9vcmcudGV4aQppbmRleCA4MzAxNjI4MmNhLi5hNjI1ZmFjOGZiIDEwMDY0NAot LS0gYS9kb2Mvb3JnLnRleGkKKysrIGIvZG9jL29yZy50ZXhpCkBAIC0xMDQwNiwxNCArMTA0MDYs MTQgQEAgb3ZlcnJpZGUgb3B0aW9ucyBzZXQgYXQgYSBtb3JlIGdlbmVyYWwgbGV2ZWwuCiAKIEBj aW5kZXggIytTRVRVUEZJTEUKIEluLWJ1ZmZlciBzZXR0aW5ncyBtYXkgYXBwZWFyIGFueXdoZXJl IGluIHRoZSBmaWxlLCBlaXRoZXIgZGlyZWN0bHkgb3IKLWluZGlyZWN0bHkgdGhyb3VnaCBhIGZp bGUgaW5jbHVkZWQgdXNpbmcgQHNhbXB7IytTRVRVUEZJTEU6IGZpbGVuYW1lfSBzeW50YXguCi1P cHRpb24ga2V5d29yZCBzZXRzIHRhaWxvcmVkIHRvIGEgcGFydGljdWxhciBiYWNrLWVuZCBjYW4g YmUgaW5zZXJ0ZWQgZnJvbQotdGhlIGV4cG9ydCBkaXNwYXRjaGVyIChAcHhyZWZ7VGhlIGV4cG9y dCBkaXNwYXRjaGVyfSkgdXNpbmcgdGhlIEBjb2Rle0luc2VydAotdGVtcGxhdGV9IGNvbW1hbmQg YnkgcHJlc3NpbmcgQGtleXsjfS4gIFRvIGluc2VydCBrZXl3b3JkcyBpbmRpdmlkdWFsbHksCi1h IGdvb2Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGUga2V5d29yZCBpcyBjb3JyZWN0IGlzIHRvIHR5cGUg QGNvZGV7Iyt9IGFuZCB0aGVuCi10byB1c2UgQGtiZHtNLUBrZXl7VEFCfX1AZm9vdG5vdGV7TWFu eSBkZXNrdG9wcyBpbnRlcmNlcHQgQGtiZHtNLVRBQn0gdG8KLXN3aXRjaCB3aW5kb3dzLiAgVXNl IEBrYmR7Qy1NLWl9IG9yIEBrYmR7QGtleXtFU0N9IEBrZXl7VEFCfX0gaW5zdGVhZC59IGZvcgot Y29tcGxldGlvbi4KK2luZGlyZWN0bHkgdGhyb3VnaCBhIGZpbGUgaW5jbHVkZWQgdXNpbmcgQHNh bXB7IytTRVRVUEZJTEU6IGZpbGVuYW1lIG9yIFVSTH0KK3N5bnRheC4gIE9wdGlvbiBrZXl3b3Jk IHNldHMgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIGJhY2stZW5kIGNhbiBiZQoraW5zZXJ0ZWQg ZnJvbSB0aGUgZXhwb3J0IGRpc3BhdGNoZXIgKEBweHJlZntUaGUgZXhwb3J0IGRpc3BhdGNoZXJ9 KSB1c2luZyB0aGUKK0Bjb2Rle0luc2VydCB0ZW1wbGF0ZX0gY29tbWFuZCBieSBwcmVzc2luZyBA a2V5eyN9LiAgVG8gaW5zZXJ0IGtleXdvcmRzCitpbmRpdmlkdWFsbHksIGEgZ29vZCB3YXkgdG8g bWFrZSBzdXJlIHRoZSBrZXl3b3JkIGlzIGNvcnJlY3QgaXMgdG8gdHlwZQorQGNvZGV7Iyt9IGFu ZCB0aGVuIHRvIHVzZSBAa2Jke00tQGtleXtUQUJ9fUBmb290bm90ZXtNYW55IGRlc2t0b3BzIGlu dGVyY2VwdAorQGtiZHtNLVRBQn0gdG8gc3dpdGNoIHdpbmRvd3MuICBVc2UgQGtiZHtDLU0taX0g b3IgQGtiZHtAa2V5e0VTQ30gQGtleXtUQUJ9fQoraW5zdGVhZC59IGZvciBjb21wbGV0aW9uLgog CiBUaGUgZXhwb3J0IGtleXdvcmRzIGF2YWlsYWJsZSBmb3IgZXZlcnkgYmFjay1lbmQsIGFuZCB0 aGVpciBlcXVpdmFsZW50IGdsb2JhbAogdmFyaWFibGVzLCBpbmNsdWRlOgpAQCAtMTcxNzQsMTMg KzE3MTc0LDE2IEBAIGhhdmUgYSBsb3dlciBBU0NJSSBudW1iZXIgdGhhbiB0aGUgbG93ZXN0IHBy aW9yaXR5LgogVGhpcyBsaW5lIHNldHMgYSBkZWZhdWx0IGluaGVyaXRhbmNlIHZhbHVlIGZvciBl bnRyaWVzIGluIHRoZSBjdXJyZW50CiBidWZmZXIsIG1vc3QgdXNlZnVsIGZvciBzcGVjaWZ5aW5n IHRoZSBhbGxvd2VkIHZhbHVlcyBvZiBhIHByb3BlcnR5LgogQGNpbmRleCAjK1NFVFVQRklMRQot QGl0ZW0gIytTRVRVUEZJTEU6IGZpbGUKLVRoZSBzZXR1cCBmaWxlIGlzIGZvciBhZGRpdGlvbmFs IGluLWJ1ZmZlciBzZXR0aW5ncy4gIE9yZyBsb2FkcyB0aGlzIGZpbGUgYW5kCi1wYXJzZXMgaXQg Zm9yIGFueSBzZXR0aW5ncyBpbiBpdCBvbmx5IHdoZW4gT3JnIG9wZW5zIHRoZSBtYWluIGZpbGUu ICBAa2Jke0MtYwotQy1jfSBvbiB0aGUgc2V0dGluZ3MgbGluZSB3aWxsIGFsc28gcGFyc2UgYW5k IGxvYWQuICBPcmcgYWxzbyBwYXJzZXMgYW5kCi1sb2FkcyB0aGUgZmlsZSBkdXJpbmcgbm9ybWFs IGV4cG9ydGluZyBwcm9jZXNzLiAgT3JnIHBhcnNlcyB0aGUgY29udGVudHMgb2YKLXRoaXMgZmls ZSBhcyBpZiBpdCB3YXMgaW5jbHVkZWQgaW4gdGhlIGJ1ZmZlci4gIEl0IGNhbiBiZSBhbm90aGVy IE9yZyBmaWxlLgotVG8gdmlzaXQgdGhlIGZpbGUsIEBrYmR7Qy1jICd9IHdoaWxlIHRoZSBjdXJz b3IgaXMgb24gdGhlIGxpbmUgd2l0aCB0aGUgZmlsZQorQGl0ZW0gIytTRVRVUEZJTEU6IGZpbGUg b3IgVVJMCitUaGUgc2V0dXAgZmlsZSBvciBhIFVSTCBwb2ludGluZyB0byBzdWNoIGZpbGUgaXMg Zm9yIGFkZGl0aW9uYWwgaW4tYnVmZmVyCitzZXR0aW5ncy4gIE9yZyBsb2FkcyB0aGlzIGZpbGUg YW5kIHBhcnNlcyBpdCBmb3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbgorT3JnIG9wZW5z IHRoZSBtYWluIGZpbGUuICBJZiBVUkwgaXMgc3BlY2lmaWVkLCB0aGUgY29udGVudHMgYXJlIGRv d25sb2FkZWQKK2FuZCBzdG9yZWQgaW4gYSB0ZW1wb3JhcnkgY2FjaGUuICBAa2Jke0MtYyBDLWN9 IG9uIHRoZSBzZXR0aW5ncyBsaW5lIHdpbGwKK2Fsc28gcGFyc2UgYW5kIGxvYWQuICBAa2Jke0Mt YyBDLWN9IG9uIHRoZSBAY29kZXsjK1NFVFVQRklMRTp9IGxpbmUgd2lsbCBhbHNvCityZXNldCB0 aGUgdGVtcG9yYXJ5IGZpbGUgY2FjaGUuICBPcmcgYWxzbyBwYXJzZXMgYW5kIGxvYWRzIHRoZSBk b2N1bWVudAorZHVyaW5nIG5vcm1hbCBleHBvcnRpbmcgcHJvY2Vzcy4gIE9yZyBwYXJzZXMgdGhl IGNvbnRlbnRzIG9mIHRoaXMgZG9jdW1lbnQgYXMKK2lmIGl0IHdhcyBpbmNsdWRlZCBpbiB0aGUg YnVmZmVyLiAgSXQgY2FuIGJlIGFub3RoZXIgT3JnIGZpbGUuICBUbyB2aXNpdCB0aGUKK2ZpbGUg KG5vdCBhIFVSTCksIEBrYmR7Qy1jICd9IHdoaWxlIHRoZSBjdXJzb3IgaXMgb24gdGhlIGxpbmUg d2l0aCB0aGUgZmlsZQogbmFtZS4KIEBpdGVtICMrU1RBUlRVUDoKIEBjaW5kZXggIytTVEFSVFVQ CkBAIC0xNzQyMiw3ICsxNzQyNSw5IEBAIElmIGFueSBoaWdobGlnaHRzIHNob3duIGluIHRoZSBi dWZmZXIgZnJvbSB0aGUgY3JlYXRpb24gb2YgYSBzcGFyc2UgdHJlZSwgb3IKIGZyb20gY2xvY2sg ZGlzcGxheSwgcmVtb3ZlIHN1Y2ggaGlnaGxpZ2h0cy4KIEBpdGVtCiBJZiB0aGUgY3Vyc29yIGlz IGluIG9uZSBvZiB0aGUgc3BlY2lhbCBAY29kZXsjK0tFWVdPUkR9IGxpbmVzLCBzY2FuIHRoZQot YnVmZmVyIGZvciB0aGVzZSBsaW5lcyBhbmQgdXBkYXRlIHRoZSBpbmZvcm1hdGlvbi4KK2J1ZmZl ciBmb3IgdGhlc2UgbGluZXMgYW5kIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24uICBBbHNvIHJlc2V0 IHRoZSBPcmcgZmlsZQorY2FjaGUgdXNlZCB0byB0ZW1wb3Jhcnkgc3RvcmUgdGhlIGNvbnRlbnRz IG9mIFVSTHMgdXNlZCBhcyB2YWx1ZXMgZm9yCitrZXl3b3JkcyBsaWtlIEBjb2RleyMrU0VUVVBG SUxFfS4KIEBpdGVtCiBJZiB0aGUgY3Vyc29yIGlzIGluc2lkZSBhIHRhYmxlLCByZWFsaWduIHRo ZSB0YWJsZS4gIFRoZSB0YWJsZSByZWFsaWducyBldmVuCiBpZiBhdXRvbWF0aWMgdGFibGUgZWRp dG9yIGlzIHR1cm5lZCBvZmYuCmRpZmYgLS1naXQgYS9ldGMvT1JHLU5FV1MgYi9ldGMvT1JHLU5F V1MKaW5kZXggZWIwZTExYzRhYS4uODM5NzJkNGU5NCAxMDA2NDQKLS0tIGEvZXRjL09SRy1ORVdT CisrKyBiL2V0Yy9PUkctTkVXUwpAQCAtMjAzLDcgKzIwMyw3IEBAIG1hbnVhbCBmb3IgZGV0YWls cy4KICoqKiogQWRkIGdsb2JhbCBtYWNyb3MgdGhyb3VnaCB+b3JnLWV4cG9ydC1nbG9iYWwtbWFj cm9zfgogV2l0aCB0aGlzIHZhcmlhYmxlLCBvbmUgY2FuIGRlZmluZSBtYWNyb3MgYXZhaWxhYmxl IGZvciBhbGwgZG9jdW1lbnRzLgogKioqKiBOZXcga2V5d29yZCB+IytFWFBPUlRfRklMRV9OQU1F fgotU2ltaXJhbHJ5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+IHByb3BlcnR5LCB0aGlzIGtleXdv cmQgYWxsb3dzIHRoZQorU2ltaWxhcmx5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+IHByb3BlcnR5 LCB0aGlzIGtleXdvcmQgYWxsb3dzIHRoZQogdXNlciB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRo ZSBvdXRwdXQgZmlsZSB1cG9uIGV4cG9ydGluZyB0aGUKIGRvY3VtZW50LiAgVGhpcyBhbHNvIGhh cyBhbiBlZmZlY3Qgb24gcHVibGlzaGluZy4KICoqKiogSG9yaXpvbnRhbCBydWxlcyBhcmUgbm8g bG9uZ2VyIGlnbm9yZWQgaW4gTGFUZVggdGFibGUgbWF0aCBtb2RlCkBAIC0yNDAsNiArMjQwLDE2 IEBAIHdoaWNoIGNhdXNlcyByZWZpbGUgdGFyZ2V0cyB0byBiZSBwcmVmaXhlZCB3aXRoIHRoZSBi dWZmZXLigJlzCiBuYW1lLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiB1c2VkIGlu IGNvbmp1bmN0aW9uIHdpdGgKIH51bmlxdWlmeS5lbH4uCiAKKyoqKiB+b3JnLWZpbGUtY29udGVu dHN+IG5vdyBhbGxvd3MgdGhlIEZJTEUgYXJndW1lbnQgdG8gYmUgYSBVUkwuCitUaGlzIGFsbG93 cyB+IytTRVRVUEZJTEU6fiB0byBhY2NlcHQgYSBVUkwgaW5zdGVhZCBvZiBhIGxvY2FsIGZpbGUK K3BhdGguICBUaGUgVVJMIGNvbnRlbnRzIGFyZSBhdXRvLWRvd25sb2FkZWQgYW5kIHNhdmVkIHRv IGEgdGVtcG9yYXJ5CitjYWNoZSB+b3JnLS1maWxlLWNhY2hlfi4gIEEgbmV3IG9wdGlvbmFsIGFy Z3VtZW50IH5OT0NBQ0hFfiBpcyBhZGRlZAordG8gfm9yZy1maWxlLWNvbnRlbnRzfi4KKworKioq IH5vcmctbW9kZS1yZXN0YXJ0fiBub3cgcmVzZXRzIHRoZSBuZXdseSBhZGRlZCB+b3JnLS1maWxl LWNhY2hlfi4KK1VzaW5nIH5DLWMgQy1jfiBvbiBhbnkga2V5d29yZCAobGlrZSB+IytTRVRVUEZJ TEV+KSB3aWxsIHJlc2V0IHRoZQordGhhdCBmaWxlIGNhY2hlLgorCiAqKiBSZW1vdmVkIGZ1bmN0 aW9ucwogCiAqKiogT3JnIFRpbWVsaW5lCmRpZmYgLS1naXQgYS9saXNwL29yZy1tYWNyby5lbCBi L2xpc3Avb3JnLW1hY3JvLmVsCmluZGV4IDY3NThkMzFmMDYuLjgyOGM1ZTllM2QgMTAwNjQ0Ci0t LSBhL2xpc3Avb3JnLW1hY3JvLmVsCisrKyBiL2xpc3Avb3JnLW1hY3JvLmVsCkBAIC01NSw3ICs1 NSw4IEBACiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1tYWNyby1wYXJzZXIgIm9yZy1l bGVtZW50IiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXByb3BlcnR5ICJvcmct ZWxlbWVudCIgKHByb3BlcnR5IGVsZW1lbnQpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1l bnQtdHlwZSAib3JnLWVsZW1lbnQiIChlbGVtZW50KSkKLShkZWNsYXJlLWZ1bmN0aW9uIG9yZy1m aWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRpb25hbCBub2Vycm9yKSkKKyhkZWNsYXJlLWZ1 bmN0aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRpb25hbCBub2Vycm9yIG5v Y2FjaGUpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWZpbGUtdXJsLXAgIm9yZyIgKGZpbGUpKQog KGRlY2xhcmUtZnVuY3Rpb24gb3JnLWluLWNvbW1lbnRlZC1oZWFkaW5nLXAgIm9yZyIgKCZvcHRp b25hbCBuby1pbmhlcml0YW5jZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbW9kZSAib3JnIiAo KSkKIChkZWNsYXJlLWZ1bmN0aW9uIHZjLWJhY2tlbmQgInZjLWhvb2tzIiAoZikpCkBAIC0xMDIs MTYgKzEwMywyMSBAQCBSZXR1cm4gYW4gYWxpc3QgY29udGFpbmluZyBhbGwgbWFjcm8gdGVtcGxh dGVzIGZvdW5kLiIKIAkJCQkgKGlmIG9sZC1jZWxsIChzZXRjZHIgb2xkLWNlbGwgdGVtcGxhdGUp CiAJCQkJICAgKHB1c2ggKGNvbnMgbmFtZSB0ZW1wbGF0ZSkgdGVtcGxhdGVzKSkpKQogCQkJICAg OzsgRW50ZXIgc2V0dXAgZmlsZS4KLQkJCSAgIChsZXQgKChmaWxlIChleHBhbmQtZmlsZS1uYW1l Ci0JCQkJCShvcmctdW5icmFja2V0LXN0cmluZyAiXCIiICJcIiIgdmFsKSkpKQotCQkJICAgICAo dW5sZXNzIChtZW1iZXIgZmlsZSBmaWxlcykKKwkJCSAgIChsZXQqICgodXJpIChvcmctdW5icmFj a2V0LXN0cmluZyAiXCIiICJcIiIgKG9yZy10cmltIHZhbCkpKQorCQkJCSAgKHVyaS1pcy11cmwg KG9yZy1maWxlLXVybC1wIHVyaSkpCisJCQkJICAodXJpIChpZiB1cmktaXMtdXJsCisJCQkJCSAg IHVyaQorCQkJCQkgKGV4cGFuZC1maWxlLW5hbWUgdXJpKSkpKQorCQkJICAgICA7OyBBdm9pZCBj aXJjdWxhciBkZXBlbmRlbmNpZXMuCisJCQkgICAgICh1bmxlc3MgKG1lbWJlciB1cmkgZmlsZXMp CiAJCQkgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKLQkJCQkgKHNldHEgZGVmYXVsdC1kaXJlY3Rv cnkKLQkJCQkgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkpCisJCQkJICh1bmxlc3Mg dXJpLWlzLXVybAorCQkJCSAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5CisJCQkJCSAoZmlsZS1u YW1lLWRpcmVjdG9yeSB1cmkpKSkKIAkJCQkgKG9yZy1tb2RlKQotCQkJCSAoaW5zZXJ0IChvcmct ZmlsZS1jb250ZW50cyBmaWxlICdub2Vycm9yKSkKKwkJCQkgKGluc2VydCAob3JnLWZpbGUtY29u dGVudHMgdXJpICdub2Vycm9yKSkKIAkJCQkgKHNldHEgdGVtcGxhdGVzCi0JCQkJICAgICAgIChm dW5jYWxsIGNvbGxlY3QtbWFjcm9zIChjb25zIGZpbGUgZmlsZXMpCisJCQkJICAgICAgIChmdW5j YWxsIGNvbGxlY3QtbWFjcm9zIChjb25zIHVyaSBmaWxlcykKIAkJCQkJCXRlbXBsYXRlcykpKSkp KSkpKSkpCiAJCXRlbXBsYXRlcykpKSkKICAgICAoZnVuY2FsbCBjb2xsZWN0LW1hY3JvcyBuaWwg bmlsKSkpCmRpZmYgLS1naXQgYS9saXNwL29yZy5lbCBiL2xpc3Avb3JnLmVsCmluZGV4IDIxMDFl YzdkMTMuLjE5MTk5MGRiNzUgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLmVsCisrKyBiL2xpc3Avb3Jn LmVsCkBAIC0xODEsNiArMTgxLDggQEAgU3RhcnMgYXJlIHB1dCBpbiBncm91cCAxIGFuZCB0aGUg dHJpbW1lZCBib2R5IGluIGdyb3VwIDIuIikKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1leHBvcnQt Z2V0LWVudmlyb25tZW50ICJveCIgKCZvcHRpb25hbCBiYWNrZW5kIHN1YnRyZWVwIGV4dC1wbGlz dCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbGF0ZXgtbWFrZS1wcmVhbWJsZSAib3gtbGF0ZXgi IChpbmZvICZvcHRpb25hbCB0ZW1wbGF0ZSBzbmlwcGV0PykpCiAKKyhkZWZ2YXIgZmZhcC11cmwt cmVnZXhwKQkJO1NpbGVuY2UgYnl0ZS1jb21waWxlcgorCiAoZGVmc3Vic3Qgb3JnLXVuaXF1aWZ5 IChsaXN0KQogICAiTm9uLWRlc3RydWN0aXZlbHkgcmVtb3ZlIGR1cGxpY2F0ZSBlbGVtZW50cyBm cm9tIExJU1QuIgogICAobGV0ICgocmVzIChjb3B5LXNlcXVlbmNlIGxpc3QpKSkgKGRlbGV0ZS1k dXBzIHJlcykpKQpAQCAtNTI4MCwxNyArNTI4Miw2MiBAQCBhIHN0cmluZywgc3VtbWFyaXppbmcg VEFHUywgYXMgYSBsaXN0IG9mIHN0cmluZ3MuIgogCSAgIChzZXRxIGN1cnJlbnQtZ3JvdXAgKGxp c3QgdGFnKSkpKQogCShfIG5pbCkpKSkpCiAKLShkZWZ1biBvcmctZmlsZS1jb250ZW50cyAoZmls ZSAmb3B0aW9uYWwgbm9lcnJvcikKLSAgIlJldHVybiB0aGUgY29udGVudHMgb2YgRklMRSwgYXMg YSBzdHJpbmcuIgotICAoaWYgKGFuZCBmaWxlIChmaWxlLXJlYWRhYmxlLXAgZmlsZSkpCisoZGVm dmFyIG9yZy0tZmlsZS1jYWNoZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwpCisgICJI YXNoIHRhYmxlIHRvIHN0b3JlIGNvbnRlbnRzIG9mIGZpbGVzIHJlZmVyZW5jZWQgdmlhIGEgVVJM LgorVGhpcyBpcyB0aGUgY2FjaGUgb2YgZmlsZSBVUkxzIHJlYWQgdXNpbmcgYG9yZy1maWxlLWNv bnRlbnRzJy4iKQorCisoZGVmdW4gb3JnLXJlc2V0LWZpbGUtY2FjaGUgKCkKKyAgIlJlc2V0IHRo ZSBjYWNoZSBvZiBmaWxlcyBkb3dubG9hZGVkIGJ5IGBvcmctZmlsZS1jb250ZW50cycuIgorICAo Y2xyaGFzaCBvcmctLWZpbGUtY2FjaGUpKQorCisoZGVmdW4gb3JnLWZpbGUtdXJsLXAgKGZpbGUp CisgICJOb24tbmlsIGlmIEZJTEUgaXMgYSBVUkwuIgorICAocmVxdWlyZSAnZmZhcCkKKyAgKHN0 cmluZy1tYXRjaC1wIGZmYXAtdXJsLXJlZ2V4cCBmaWxlKSkKKworKGRlZnVuIG9yZy1maWxlLWNv bnRlbnRzIChmaWxlICZvcHRpb25hbCBub2Vycm9yIG5vY2FjaGUpCisgICJSZXR1cm4gdGhlIGNv bnRlbnRzIG9mIEZJTEUsIGFzIGEgc3RyaW5nLgorCitGSUxFIGNhbiBiZSBhIGZpbGUgbmFtZSBv ciBVUkwuCisKK0lmIEZJTEUgaXMgYSBVUkwsIGRvd25sb2FkIHRoZSBjb250ZW50cy4gIElmIHRo ZSBVUkwgY29udGVudHMgYXJlCithbHJlYWR5IGNhY2hlZCBpbiB0aGUgYG9yZy0tZmlsZS1jYWNo ZScgaGFzaCB0YWJsZSwgdGhlIGRvd25sb2FkIHN0ZXAKK2lzIHNraXBwZWQuCisKK0lmIE5PRVJS T1IgaXMgbm9uLW5pbCwgaWdub3JlIHRoZSBlcnJvciB3aGVuIHVuYWJsZSB0byByZWFkIHRoZSBG SUxFCitmcm9tIGZpbGUgb3IgVVJMLgorCitJZiBOT0NBQ0hFIGlzIG5vbi1uaWwsIGRvIGEgZnJl c2ggZmV0Y2ggb2YgRklMRSBldmVuIGlmIGNhY2hlZCB2ZXJzaW9uCitpcyBhdmFpbGFibGUuICBU aGlzIG9wdGlvbiBhcHBsaWVzIG9ubHkgaWYgRklMRSBpcyBhIFVSTC4iCisgIChsZXQqICgoaXMt dXJsIChvcmctZmlsZS11cmwtcCBmaWxlKSkKKyAgICAgICAgIChjYWNoZSAoYW5kIGlzLXVybAor ICAgICAgICAgICAgICAgICAgICAgKG5vdCBub2NhY2hlKQorICAgICAgICAgICAgICAgICAgICAg KGdldGhhc2ggZmlsZSBvcmctLWZpbGUtY2FjaGUpKSkpCisgICAgKGNvbmQKKyAgICAgKGNhY2hl KQorICAgICAoaXMtdXJsCisgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAodXJsLXJldHJpZXZl LXN5bmNocm9ub3VzbHkgZmlsZSkKKwkoZ290by1jaGFyIChwb2ludC1taW4pKQorCTs7IE1vdmUg cG9pbnQgdG8gYWZ0ZXIgdGhlIHVybC1yZXRyaWV2ZSBoZWFkZXIuCisJKHNlYXJjaC1mb3J3YXJk ICJcblxuIiBuaWwgOm1vdmUpCisJOzsgU2VhcmNoIGZvciB0aGUgc3VjY2VzcyBjb2RlIG9ubHkg aW4gdGhlIHVybC1yZXRyaWV2ZSBoZWFkZXIuCisJKGlmIChzYXZlLWV4Y3Vyc2lvbiAocmUtc2Vh cmNoLWJhY2t3YXJkICJIVFRQLipcXHMtKzIwMFxccy1PSyIgbmlsIDpub2Vycm9yKSkKKwkgICAg OzsgVXBkYXRlIHRoZSBjYWNoZSBgb3JnLS1maWxlLWNhY2hlJyBhbmQgcmV0dXJuIGNvbnRlbnRz LgorCSAgICAocHV0aGFzaCBmaWxlCisJCSAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVy dGllcyAocG9pbnQpIChwb2ludC1tYXgpKQorCQkgICAgIG9yZy0tZmlsZS1jYWNoZSkKKwkgIChm dW5jYWxsIChpZiBub2Vycm9yICMnbWVzc2FnZSAjJ3VzZXItZXJyb3IpCisJCSAgICJVbmFibGUg dG8gZmV0Y2ggZmlsZSBmcm9tICVTIgorCQkgICBmaWxlKSkpKQorICAgICAodAogICAgICAgKHdp dGgtdGVtcC1idWZmZXIKLQkoaW5zZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKLQkoYnVmZmVyLXN0 cmluZykpCi0gICAgKGZ1bmNhbGwgKGlmIG5vZXJyb3IgJ21lc3NhZ2UgJ2Vycm9yKQotCSAgICAg IkNhbm5vdCByZWFkIGZpbGUgXCIlc1wiJXMiCi0JICAgICBmaWxlCi0JICAgICAobGV0ICgoZnJv bSAoYnVmZmVyLWZpbGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkpKQotCSAgICAgICAoaWYg ZnJvbSAoY29uY2F0ICIgKHJlZmVyZW5jZWQgaW4gZmlsZSBcIiIgZnJvbSAiXCIpIikgIiIpKSkp KQorICAgICAgICAoY29uZGl0aW9uLWNhc2UgZXJyCisJICAgIChwcm9nbgorCSAgICAgIChpbnNl cnQtZmlsZS1jb250ZW50cyBmaWxlKQorCSAgICAgIChidWZmZXItc3RyaW5nKSkKKwkgIChmaWxl LWVycm9yCisgICAgICAgICAgIChmdW5jYWxsIChpZiBub2Vycm9yICMnbWVzc2FnZSAjJ3VzZXIt ZXJyb3IpCisJCSAgICAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkpKSkpKSkpCiAKIChkZWZ1 biBvcmctZXh0cmFjdC1sb2ctc3RhdGUtc2V0dGluZ3MgKHgpCiAgICJFeHRyYWN0IHRoZSBsb2cg c3RhdGUgc2V0dGluZyBmcm9tIGEgVE9ETyBrZXl3b3JkIHN0cmluZy4KQEAgLTIwNjg3LDcgKzIw NzM0LDkgQEAgT3RoZXJ3aXNlLCByZXR1cm4gYSB1c2VyIGVycm9yLiIKIAkgICAgKGZvcm1hdCAi W1slc11dIgogCQkgICAgKGV4cGFuZC1maWxlLW5hbWUKIAkJICAgICAobGV0ICgodmFsdWUgKG9y Zy1lbGVtZW50LXByb3BlcnR5IDp2YWx1ZSBlbGVtZW50KSkpCi0JCSAgICAgICAoY29uZCAoKG5v dCAob3JnLXN0cmluZy1udy1wIHZhbHVlKSkKKwkJICAgICAgIChjb25kICgob3JnLWZpbGUtdXJs LXAgdmFsdWUpCisJCQkgICAgICAodXNlci1lcnJvciAiVGhlIGZpbGUgaXMgc3BlY2lmaWVkIGFz IGEgVVJMLCBjYW5ub3QgYmUgZWRpdGVkIikpCisJCQkgICAgICgobm90IChvcmctc3RyaW5nLW53 LXAgdmFsdWUpKQogCQkJICAgICAgKHVzZXItZXJyb3IgIk5vIGZpbGUgdG8gZWRpdCIpKQogCQkJ ICAgICAoKHN0cmluZy1tYXRjaCAiXFxgXCJcXCguKj9cXClcIiIgdmFsdWUpCiAJCQkgICAgICAo bWF0Y2gtc3RyaW5nIDEgdmFsdWUpKQpAQCAtMjA5NTEsNyArMjEwMDAsOCBAQCBVc2UgYFxcW29y Zy1lZGl0LXNwZWNpYWxdJyB0byBlZGl0IHRhYmxlLmVsIHRhYmxlcyIpKQogICAgIChmdW5jYWxs IG1ham9yLW1vZGUpCiAgICAgKGhhY2stbG9jYWwtdmFyaWFibGVzKQogICAgICh3aGVuIChhbmQg aW5kZW50LXN0YXR1cyAobm90IChib3VuZC1hbmQtdHJ1ZS1wIG9yZy1pbmRlbnQtbW9kZSkpKQot ICAgICAgKG9yZy1pbmRlbnQtbW9kZSAtMSkpKQorICAgICAgKG9yZy1pbmRlbnQtbW9kZSAtMSkp CisgICAgKG9yZy1yZXNldC1maWxlLWNhY2hlKSkKICAgKG1lc3NhZ2UgIiVzIHJlc3RhcnRlZCIg bWFqb3ItbW9kZSkpCiAKIChkZWZ1biBvcmcta2lsbC1ub3RlLW9yLXNob3ctYnJhbmNoZXMgKCkK ZGlmZiAtLWdpdCBhL2xpc3Avb3guZWwgYi9saXNwL294LmVsCmluZGV4IDUzZDM1YmJhOGYuLjNi NzkzYTAwZjIgMTAwNjQ0Ci0tLSBhL2xpc3Avb3guZWwKKysrIGIvbGlzcC9veC5lbApAQCAtMTQ5 OSwxNyArMTQ5OSwyMCBAQCBBc3N1bWUgYnVmZmVyIGlzIGluIE9yZyBtb2RlLiAgTmFycm93aW5n LCBpZiBhbnksIGlzIGlnbm9yZWQuIgogCQkJIChjb25kCiAJCQkgIDs7IE9wdGlvbnMgaW4gYG9y Zy1leHBvcnQtc3BlY2lhbC1rZXl3b3JkcycuCiAJCQkgICgoZXF1YWwga2V5ICJTRVRVUEZJTEUi KQotCQkJICAgKGxldCAoKGZpbGUKLQkJCQkgIChleHBhbmQtZmlsZS1uYW1lCi0JCQkJICAgKG9y Zy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFsKSkpKSkKKwkJCSAgIChs ZXQqICgodXJpIChvcmctdW5icmFja2V0LXN0cmluZyAiXCIiICJcIiIgKG9yZy10cmltIHZhbCkp KQorCQkJCSAgKHVyaS1pcy11cmwgKG9yZy1maWxlLXVybC1wIHVyaSkpCisJCQkJICAodXJpIChp ZiB1cmktaXMtdXJsCisJCQkJCSAgIHVyaQorCQkJCQkgKGV4cGFuZC1maWxlLW5hbWUgdXJpKSkp KQogCQkJICAgICA7OyBBdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCi0JCQkgICAgICh1bmxl c3MgKG1lbWJlciBmaWxlIGZpbGVzKQorCQkJICAgICAodW5sZXNzIChtZW1iZXIgdXJpIGZpbGVz KQogCQkJICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJIChzZXRxIGRlZmF1bHQtZGlyZWN0 b3J5Ci0JCQkJICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkpCi0JCQkJIChpbnNlcnQgKG9y Zy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJCSAodW5sZXNzIHVyaS1pcy11cmwK KwkJCQkgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJCQkgKGZpbGUtbmFtZS1kaXJlY3Rv cnkgdXJpKSkpCisJCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIHVyaSAnbm9lcnJvcikp CiAJCQkJIChsZXQgKChvcmctaW5oaWJpdC1zdGFydHVwIHQpKSAob3JnLW1vZGUpKQotCQkJCSAo ZnVuY2FsbCBnZXQtb3B0aW9ucyAoY29ucyBmaWxlIGZpbGVzKSkpKSkpCisJCQkJIChmdW5jYWxs IGdldC1vcHRpb25zIChjb25zIHVyaSBmaWxlcykpKSkpKQogCQkJICAoKGVxdWFsIGtleSAiT1BU SU9OUyIpCiAJCQkgICAoc2V0cSBwbGlzdAogCQkJCSAob3JnLWNvbWJpbmUtcGxpc3RzCkBAIC0x NjQ3LDE3ICsxNjUwLDIyIEBAIGFuIGFsaXN0IHdoZXJlIGFzc29jaWF0aW9ucyBhcmUgKFZBUklB QkxFLU5BTUUgVkFMVUUpLiIKIAkJCQkgICAgICAiQklORCIpCiAJCQkgICAgICAgKHB1c2ggKHJl YWQgKGZvcm1hdCAiKCVzKSIgdmFsKSkgYWxpc3QpCiAJCQkgICAgIDs7IEVudGVyIHNldHVwIGZp bGUuCi0JCQkgICAgIChsZXQgKChmaWxlIChleHBhbmQtZmlsZS1uYW1lCi0JCQkJCSAgKG9yZy11 bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiB2YWwpKSkpCi0JCQkgICAgICAgKHVubGVzcyAobWVt YmVyIGZpbGUgZmlsZXMpCisJCQkgICAgIChsZXQqICgodXJpIChvcmctdW5icmFja2V0LXN0cmlu ZyAiXCIiICJcIiIgdmFsKSkKKwkJCQkgICAgKHVyaS1pcy11cmwgKG9yZy1maWxlLXVybC1wIHVy aSkpCisJCQkJICAgICh1cmkgKGlmIHVyaS1pcy11cmwKKwkJCQkJICAgICB1cmkKKwkJCQkJICAg KGV4cGFuZC1maWxlLW5hbWUgdXJpKSkpKQorCQkJICAgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRl cGVuZGVuY2llcy4KKwkJCSAgICAgICAodW5sZXNzIChtZW1iZXIgdXJpIGZpbGVzKQogCQkJCSAo d2l0aC10ZW1wLWJ1ZmZlcgotCQkJCSAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5Ci0JCQkJCSAo ZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlKSkKKwkJCQkgICAodW5sZXNzIHVyaS1pcy11cmwKKwkJ CQkgICAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5CisJCQkJCSAgIChmaWxlLW5hbWUtZGlyZWN0 b3J5IHVyaSkpKQogCQkJCSAgIChsZXQgKChvcmctaW5oaWJpdC1zdGFydHVwIHQpKSAob3JnLW1v ZGUpKQotCQkJCSAgIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQor CQkJCSAgIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIHVyaSAnbm9lcnJvcikpCiAJCQkJICAg KHNldHEgYWxpc3QKIAkJCQkJIChmdW5jYWxsIGNvbGxlY3QtYmluZAotCQkJCQkJICAoY29ucyBm aWxlIGZpbGVzKQorCQkJCQkJICAoY29ucyB1cmkgZmlsZXMpCiAJCQkJCQkgIGFsaXN0KSkpKSkp KSkpKQogCQkgICBhbGlzdCkpKSkpCiAgICAgICA7OyBSZXR1cm4gdmFsdWUgaW4gYXBwcm9wcmlh dGUgb3JkZXIgb2YgYXBwZWFyYW5jZS4KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9y Zy5lbCBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9yZy5lbAppbmRleCBlNTVlZTA3N2I4Li4zMWJkYTg2 MDczIDEwMDY0NAotLS0gYS90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKKysrIGIvdGVzdGluZy9s aXNwL3Rlc3Qtb3JnLmVsCkBAIC02NDk4LDYgKzY0OTgsNDcgQEAgUGFyYWdyYXBoPHBvaW50PiIK ICAgICAgKG9yZy1zaG93LXNldC12aXNpYmlsaXR5ICdtaW5pbWFsKQogICAgICAob3JnLWludmlz aWJsZS1wMikpKSkKIAorKGVydC1kZWZ0ZXN0IHRlc3Qtb3JnL29yZy1maWxlLWNvbnRlbnRzLWZp bGUgKCkKKyAgIlRlc3QgYG9yZy1maWxlLWNvbnRlbnRzJyB3aXRoIGEgZmlsZSBhcyBpbnB1dC4i CisgIChzaG91bGQKKyAgIChzdHJpbmc9ICIjK0JJTkQ6IHZhcmlhYmxlIHZhbHVlCisjK0RFU0NS SVBUSU9OOiBsMgorIytMQU5HVUFHRTogZW4KKyMrU0VMRUNUX1RBR1M6IGIKKyMrVElUTEU6IGIK KyMrUFJPUEVSVFk6IGEgMQorIiAob3JnLWZpbGUtY29udGVudHMgKGV4cGFuZC1maWxlLW5hbWUg InNldHVwZmlsZTMub3JnIgorCQkJCSAgICAgICAoY29uY2F0IG9yZy10ZXN0LWRpciAiZXhhbXBs ZXMvIikpKSkpCisgIAorICAobGV0ICgoaW52YWxpZC1maWxlICJ0aGlzLWZpbGUtbXVzdC1ub3Qt ZXhpc3QiKSkKKyAgICA7OyBUaHJvdyBlcnJvciB3aGVuIHRyeWluZyB0byBhY2Nlc3MgYW4gaW52 YWxpZCBmaWxlLgorICAgIChzaG91bGQtZXJyb3IKKyAgICAgKG9yZy1maWxlLWNvbnRlbnRzIGlu dmFsaWQtZmlsZSkpCisgICAgOzsgVHJ5IHRvIGFjY2VzcyBhbiBpbnZhbGlkIGZpbGUsIGJ1dCBk byBub3QgdGhyb3cgYW4gZXJyb3IuCisgICAgKHNob3VsZAorICAgICAoc3RyaW5nLW1hdGNoLXAg IlxcYE9wZW5pbmcgaW5wdXQgZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKwkJICAg ICAob3JnLWZpbGUtY29udGVudHMgaW52YWxpZC1maWxlIDpub2Vycm9yKSkpKSkKKworKGVydC1k ZWZ0ZXN0IHRlc3Qtb3JnL29yZy1maWxlLWNvbnRlbnRzLXVybCAoKQorICAiVGVzdCBgb3JnLWZp bGUtY29udGVudHMnIHdpdGggYSBVUkwgYXMgaW5wdXQuIgorICAoc2hvdWxkCisgICAoc3RyaW5n PSAiIytCSU5EOiB2YXJpYWJsZSB2YWx1ZQorIytERVNDUklQVElPTjogbDIKKyMrTEFOR1VBR0U6 IGVuCisjK1NFTEVDVF9UQUdTOiBiCisjK1RJVExFOiBiCisjK1BST1BFUlRZOiBhIDEKKyIgKG9y Zy1maWxlLWNvbnRlbnRzICJodHRwOi8vb3JnbW9kZS5vcmcvY2dpdC5jZ2kvb3JnLW1vZGUuZ2l0 L3BsYWluL3Rlc3RpbmcvZXhhbXBsZXMvc2V0dXBmaWxlMy5vcmciKSkpCisKKyAgKGxldCAoKGlu dmFsaWQtdXJsICJodHRwOi8vdGhpcy11cmwtbXVzdC1ub3QtZXhpc3QiKSkKKyAgICA7OyBUaHJv dyBlcnJvciB3aGVuIHRyeWluZyB0byBhY2Nlc3MgYW4gaW52YWxpZCBVUkwuCisgICAgKHNob3Vs ZC1lcnJvcgorICAgICAob3JnLWZpbGUtY29udGVudHMgaW52YWxpZC11cmwpKQorICAgIDs7IFRy eSB0byBhY2Nlc3MgYW4gaW52YWxpZCBVUkwsIGJ1dCBkbyBub3QgdGhyb3cgYW4gZXJyb3IuCisg ICAgKHNob3VsZAorICAgICAoc3RyaW5nPSAoZm9ybWF0ICJVbmFibGUgdG8gZmV0Y2ggZmlsZSBm cm9tIFwiJXNcIiIgaW52YWxpZC11cmwpCisJICAgICAgKG9yZy1maWxlLWNvbnRlbnRzIGludmFs aWQtdXJsIDpub2Vycm9yKSkpKSkKKwogCiAocHJvdmlkZSAndGVzdC1vcmcpCiAKZGlmZiAtLWdp dCBhL3Rlc3RpbmcvbGlzcC90ZXN0LW94LmVsIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3guZWwKaW5k ZXggNjlhNzc4YmJiMy4uZTQzOTY1MTEyOSAxMDA2NDQKLS0tIGEvdGVzdGluZy9saXNwL3Rlc3Qt b3guZWwKKysrIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3guZWwKQEAgLTIyOCw2ICsyMjgsMjEgQEAg bnVtOjIgPDphY3RpdmUiKSkpCiAjK1NFVFVQRklMRTogXCIlcy9leGFtcGxlcy9zZXR1cGZpbGUu b3JnXCIKICMrTEFOR1VBR0U6IGZyCiAjK1NFTEVDVF9UQUdTOiBjCisjK1RJVExFOiBjIgorCQlv cmctdGVzdC1kaXIpCisgICAgICAob3JnLWV4cG9ydC0tZ2V0LWluYnVmZmVyLW9wdGlvbnMpKQor ICAgICcoOmxhbmd1YWdlICJmciIgOnNlbGVjdC10YWdzICgiYSIgImIiICJjIikgOnRpdGxlICgi YSBiIGMiKSkpKQorICA7OyBPcHRpb25zIHNldCB0aHJvdWdoIFNFVFVQRklMRSBzcGVjaWZpZWQg dXNpbmcgYSBVUkwuCisgIChzaG91bGQKKyAgIChlcXVhbAorICAgIChvcmctdGVzdC13aXRoLXRl bXAtdGV4dAorCShmb3JtYXQgIiMrREVTQ1JJUFRJT046IGwxCisjK0xBTkdVQUdFOiBlcworIytT RUxFQ1RfVEFHUzogYQorIytUSVRMRTogYQorIytTRVRVUEZJTEU6IFwiaHR0cDovL29yZ21vZGUu b3JnL2NnaXQuY2dpL29yZy1tb2RlLmdpdC9wbGFpbi90ZXN0aW5nL2V4YW1wbGVzL3NldHVwZmls ZTMub3JnXCIKKyMrTEFOR1VBR0U6IGZyCisjK1NFTEVDVF9UQUdTOiBjCiAjK1RJVExFOiBjIgog CQlvcmctdGVzdC1kaXIpCiAgICAgICAob3JnLWV4cG9ydC0tZ2V0LWluYnVmZmVyLW9wdGlvbnMp KQotLSAKMi4xMy4wCgo= --001a1142c222d916d30551c861d2-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Tue, 13 Jun 2017 14:43:10 +0200 Message-ID: <877f0grrc1.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38072) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKlAB-0001TM-38 for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 08:43:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKlA9-00071Y-Sr for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 08:43:15 -0400 Received: from relay4-d.mail.gandi.net ([2001:4b98:c:538::196]:38057) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dKlA9-0006zr-MP for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 08:43:13 -0400 In-Reply-To: (Kaushal Modi's message of "Mon, 12 Jun 2017 19:32:28 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list Hello, Kaushal Modi writes: > I have attached the same patch with one more test; rebased to master. Great. Thank you. > * lisp/org.el (org--file-cache): New internal variable to store > downloaded files' cache. > > * lisp/org.el (org-reset-file-cache): New function to clear the above > file cache. > > * lisp/org.el (org-mode-restart): Use org-reset-file-cache to clear > the file cache. > > * lisp/org.el (org-file-url-p): New function to test if the input > argument is a URL. It should be something like * lisp/org.el (org--file-cache): New variable (org-reset-file-cache): (org-file-url-p): New function. (org-mode-restart): Use new function. The purpose is to know in what commit the function was introduced, not what it does. > +Org opens the main file. If URL is specified, the contents are downloaded > +and stored in a temporary cache. @kbd{C-c C-c} on the settings line will > +also parse and load. @kbd{C-c C-c} on the @code{#+SETUPFILE:} line will also > +reset the temporary file cache. The last sentence is not correct. C-c C-c on any settings line resets the cache, not specifically on "#+SETUPFILE". > +(ert-deftest test-org/org-file-contents-url () > + "Test `org-file-contents' with a URL as input." > + (should > + (string= "#+BIND: variable value > +#+DESCRIPTION: l2 > +#+LANGUAGE: en > +#+SELECT_TAGS: b > +#+TITLE: b > +#+PROPERTY: a 1 > +" (org-file-contents "http://orgmode.org/cgit.cgi/org-mode.git/plain/testing/examples/setupfile3.org"))) I'm worried about this test, and some other below. They require a proper internet access. Couldn't we fake `url-retrieve-synchronously' using `cl-letf' so as to produce a buffer with appropriate contents and return it? Something (untested) like (should (string= "foo" (let ((buffer (generate-new-buffer "test-ox"))) (unwind-protect (cl-letf (((symbol-function 'url-retrieve-synchronously) (lambda (&rest _) (with-current-buffer buffer (insert "HTTP 200 OK\n\nfoo")) buffer))) (org-file-contents "http://whatever")) (kill-buffer buffer))))) Regards, -- Nicolas Goaziou From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Tue, 13 Jun 2017 15:45:35 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> <877f0grrc1.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1141156c4ed2dc0551d95455" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34172) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKo0v-00043E-UB for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 11:45:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKo0u-0001AW-Eh for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 11:45:53 -0400 Received: from mail-lf0-x235.google.com ([2a00:1450:4010:c07::235]:36793) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKo0t-00018W-G4 for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 11:45:52 -0400 Received: by mail-lf0-x235.google.com with SMTP id o83so75039079lff.3 for ; Tue, 13 Jun 2017 08:45:49 -0700 (PDT) In-Reply-To: <877f0grrc1.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --001a1141156c4ed2dc0551d95455 Content-Type: multipart/alternative; boundary="001a1141156c4ed2d60551d95453" --001a1141156c4ed2d60551d95453 Content-Type: text/plain; charset="UTF-8" Hi Nicolas, Thanks for one more round of detailed feedback. I have attached the revised patch. On Tue, Jun 13, 2017 at 8:43 AM Nicolas Goaziou wrote: > It should be something like > > * lisp/org.el (org--file-cache): New variable > (org-reset-file-cache): > (org-file-url-p): New function. > (org-mode-restart): Use new function. > > The purpose is to know in what commit the function was introduced, not > what it does. > OK. Done. > The last sentence is not correct. C-c C-c on any settings line resets > the cache, not specifically on "#+SETUPFILE". > I have rephrased it. > I'm worried about this test, and some other below. They require a proper > internet access. Makes sense.. While this feature does need internet access, running 'make test' shouldn't. > Couldn't we fake `url-retrieve-synchronously' using > `cl-letf' so as to produce a buffer with appropriate contents and return > it? Something (untested) like > > (should > (string= > "foo" > (let ((buffer (generate-new-buffer "test-ox"))) > (unwind-protect > (cl-letf (((symbol-function 'url-retrieve-synchronously) > (lambda (&rest _) > (with-current-buffer buffer (insert "HTTP 200 > OK\n\nfoo")) > buffer))) > (org-file-contents "http://whatever")) > (kill-buffer buffer))))) > Thanks. I have used that snippet at applicable places. -- Kaushal Modi --001a1141156c4ed2d60551d95453 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Nicolas,

=
Thanks for one more round of detailed feedback.

I have attached the revised patch.

On Tue, Jun 13, 2017 at 8:43 AM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
It should be something like

=C2=A0 * lisp/org.el (org--file-cache): New variable
=C2=A0 (org-reset-file-cache):
=C2=A0 (org-file-url-p): New function.
=C2=A0 (org-mode-restart): Use new function.

The purpose is to know in what commit the function was introduced, not
what it does.

OK. Done.
=C2= =A0
The last sentence is not correct. C= -c C-c on any settings line resets
the cache, not specifically on "#+SETUPFILE".

I have rephrased it.=C2=A0
=C2=A0
I'm worried about this test, and some other below= . They require a proper
internet access.

Makes sense.. While this = feature does need internet access, running 'make test' shouldn'= t.
=C2=A0
Couldn't we fak= e `url-retrieve-synchronously' using
`cl-letf' so as to produce a buffer with appropriate contents and retur= n
it? Something (untested) like

=C2=A0 (should
=C2=A0 =C2=A0(string=3D
=C2=A0 =C2=A0 "foo"
=C2=A0 =C2=A0 (let ((buffer (generate-new-buffer "test-ox")))
=C2=A0 =C2=A0 =C2=A0 (unwind-protect
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cl-letf (((symbol-function 'url-ret= rieve-synchronously)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(lambda (&rest _)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(with-current-buffer buffer (insert "HTTP 200 OK\n\nfoo"= ;))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0buffer)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (org-file-contents "http://whatever"))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (kill-buffer buffer)))))
<= /div>
--001a1141156c4ed2d60551d95453-- --001a1141156c4ed2dc0551d95455 Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15ca22025b9ce4967311> X-Attachment-Id: 15ca22025b9ce4967311 RnJvbSAxZTkyZjVlZDM5NTQxYTQ3M2YyOTViNDE0ZThjODlmNmIwMzkwZjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTMgSnVuIDIwMTcgMTE6NDE6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB bGxvdyBvcmctZmlsZS1jb250ZW50cyB0byBmZXRjaCBmaWxlIGNvbnRlbnRzIGZyb20gYSBVUkwK CiogbGlzcC9vcmcuZWwgKG9yZy0tZmlsZS1jYWNoZSk6IE5ldyB2YXJpYWJsZS4KKG9yZy1yZXNl dC1maWxlLWNhY2hlKToKKG9yZy1maWxlLXVybC1wKTogTmV3IGZ1bmN0aW9uLgoob3JnLW1vZGUt cmVzdGFydCk6IFVzZSBuZXcgZnVuY3Rpb24uCgoqIGxpc3Avb3JnLmVsIChvcmctZmlsZS1jb250 ZW50cyk6IEFsbG93IHRoZSBGSUxFIGFyZ3VtZW50IHRvIGJlIGEKVVJMLiAgSWYgdGhlIFVSTCBj b250ZW50cyBhcmUgYWxyZWFkeSBjYWNoZWQsIHJldHVybiB0aGUgY2FjaGUKY29udGVudHMsIGVs c2UgZG93bmxvYWQgdGhlIGZpbGUgYW5kIHJldHVybiBjb250ZW50cyBvZiB0aGF0LiAgVGhlCmZp bGUgaXMgYXV0b21hdGljYWxseSBjYWNoZWQgZWFjaCB0aW1lIGl0IGlzIGRvd25sb2FkZWQuICBB ZGQgYSBuZXcKb3B0aW9uYWwgYXJndW1lbnQgTk9DQUNIRS4gIElmIHRoaXMgaXMgbm9uLW5pbCwg dGhlIFVSTCBpcyBhbHdheXMKZG93bmxvYWRlZCBhZnJlc2guICBVc2UgYG9yZy0tZmlsZS1jYWNo ZScgYW5kIGBvcmctZmlsZS11cmwtcCcuCgoqIGxpc3Avb3JnLmVsIChvcmctZWRpdC1zcGVjaWFs KTogRG8gbm90IGFsbG93IGVkaXRpbmcgdGhlICJmaWxlIiBpZiBhClVSTCBpcyBzcGVjaWZpZWQg Zm9yIHRoZSAiIytTRVRVUEZJTEUiLgoKKiBsaXNwL294LmVsIChvcmctZXhwb3J0LS1saXN0LWJv dW5kLXZhcmlhYmxlcykKKG9yZy1leHBvcnQtLXByZXBhcmUtZmlsZS1jb250ZW50cyk6CiogbGlz cC9vcmctbWFjcm8uZWwgKG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3MpIDogQWRhcHQgdG8gdGhl CnBvc3NpYmlsaXR5IHRoYXQgdGhlIGlucHV0IHRvIGBvcmctZmlsZS1jb250ZW50cycgY2FuIGJl IGEgVVJMIHRvby4KCiogZG9jL29yZy50ZXhpIChFeHBvcnQgc2V0dGluZ3MsIEluLWJ1ZmZlciBz ZXR0aW5ncykKKFRoZSB2ZXJ5IGJ1c3kgQy1jIEMtYyBrZXkpOiBNZW50aW9uIHRoYXQgIytTRVRV UEZJTEUga2V5d29yZCBjYW4gbm93CnRha2UgYSBVUkwgYXMgYSB2YWx1ZSwgYW5kIHRoYXQgQy1j IEMtYyBvbiB0aGUgIytTRVRVUEZJTEUgbGluZSB3aWxsCmNsZWFyIHRoZSBvcmcgZmlsZSBjYWNo ZS4KCiogdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsICh0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50 cy11cmwpCih0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy1maWxlKTogQWRkIHRlc3RzIGZvciBv cmctZmlsZS1jb250ZW50cy4KCiogdGVzdGluZy9saXNwL3Rlc3Qtb3guZWwgKHRlc3Qtb3JnLWV4 cG9ydC9nZXQtaW5idWZmZXItb3B0aW9ucyk6IEFkZAp0ZXN0IGZvciByZWFkaW5nIHNldHVwZmls ZSBzcGVjaWZpZWQgdmlhIGEgVVJMLgotLS0KIGRvYy9vcmcudGV4aSAgICAgICAgICAgICB8IDM4 ICsrKysrKysrKysrKystLS0tLS0tLS0tLQogZXRjL09SRy1ORVdTICAgICAgICAgICAgIHwgMTIg KysrKysrKy0KIGxpc3Avb3JnLW1hY3JvLmVsICAgICAgICB8IDIyICsrKysrKysrLS0tLS0tCiBs aXNwL29yZy5lbCAgICAgICAgICAgICAgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQogbGlzcC9veC5lbCAgICAgICAgICAgICAgIHwgMzggKysrKysr KysrKysrKystLS0tLS0tLS0tCiB0ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgfCA3NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RpbmcvbGlzcC90 ZXN0LW94LmVsICB8IDMyICsrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAy MzggaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL29yZy50 ZXhpIGIvZG9jL29yZy50ZXhpCmluZGV4IDgzMDE2MjgyY2EuLjM2ZDZhYTdhYTMgMTAwNjQ0Ci0t LSBhL2RvYy9vcmcudGV4aQorKysgYi9kb2Mvb3JnLnRleGkKQEAgLTEwNDA2LDE0ICsxMDQwNiwx NCBAQCBvdmVycmlkZSBvcHRpb25zIHNldCBhdCBhIG1vcmUgZ2VuZXJhbCBsZXZlbC4KIAogQGNp bmRleCAjK1NFVFVQRklMRQogSW4tYnVmZmVyIHNldHRpbmdzIG1heSBhcHBlYXIgYW55d2hlcmUg aW4gdGhlIGZpbGUsIGVpdGhlciBkaXJlY3RseSBvcgotaW5kaXJlY3RseSB0aHJvdWdoIGEgZmls ZSBpbmNsdWRlZCB1c2luZyBAc2FtcHsjK1NFVFVQRklMRTogZmlsZW5hbWV9IHN5bnRheC4KLU9w dGlvbiBrZXl3b3JkIHNldHMgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIGJhY2stZW5kIGNhbiBi ZSBpbnNlcnRlZCBmcm9tCi10aGUgZXhwb3J0IGRpc3BhdGNoZXIgKEBweHJlZntUaGUgZXhwb3J0 IGRpc3BhdGNoZXJ9KSB1c2luZyB0aGUgQGNvZGV7SW5zZXJ0Ci10ZW1wbGF0ZX0gY29tbWFuZCBi eSBwcmVzc2luZyBAa2V5eyN9LiAgVG8gaW5zZXJ0IGtleXdvcmRzIGluZGl2aWR1YWxseSwKLWEg Z29vZCB3YXkgdG8gbWFrZSBzdXJlIHRoZSBrZXl3b3JkIGlzIGNvcnJlY3QgaXMgdG8gdHlwZSBA Y29kZXsjK30gYW5kIHRoZW4KLXRvIHVzZSBAa2Jke00tQGtleXtUQUJ9fUBmb290bm90ZXtNYW55 IGRlc2t0b3BzIGludGVyY2VwdCBAa2Jke00tVEFCfSB0bwotc3dpdGNoIHdpbmRvd3MuICBVc2Ug QGtiZHtDLU0taX0gb3IgQGtiZHtAa2V5e0VTQ30gQGtleXtUQUJ9fSBpbnN0ZWFkLn0gZm9yCi1j b21wbGV0aW9uLgoraW5kaXJlY3RseSB0aHJvdWdoIGEgZmlsZSBpbmNsdWRlZCB1c2luZyBAc2Ft cHsjK1NFVFVQRklMRTogZmlsZW5hbWUgb3IgVVJMfQorc3ludGF4LiAgT3B0aW9uIGtleXdvcmQg c2V0cyB0YWlsb3JlZCB0byBhIHBhcnRpY3VsYXIgYmFjay1lbmQgY2FuIGJlCitpbnNlcnRlZCBm cm9tIHRoZSBleHBvcnQgZGlzcGF0Y2hlciAoQHB4cmVme1RoZSBleHBvcnQgZGlzcGF0Y2hlcn0p IHVzaW5nIHRoZQorQGNvZGV7SW5zZXJ0IHRlbXBsYXRlfSBjb21tYW5kIGJ5IHByZXNzaW5nIEBr ZXl7I30uICBUbyBpbnNlcnQga2V5d29yZHMKK2luZGl2aWR1YWxseSwgYSBnb29kIHdheSB0byBt YWtlIHN1cmUgdGhlIGtleXdvcmQgaXMgY29ycmVjdCBpcyB0byB0eXBlCitAY29kZXsjK30gYW5k IHRoZW4gdG8gdXNlIEBrYmR7TS1Aa2V5e1RBQn19QGZvb3Rub3Rle01hbnkgZGVza3RvcHMgaW50 ZXJjZXB0CitAa2Jke00tVEFCfSB0byBzd2l0Y2ggd2luZG93cy4gIFVzZSBAa2Jke0MtTS1pfSBv ciBAa2Jke0BrZXl7RVNDfSBAa2V5e1RBQn19CitpbnN0ZWFkLn0gZm9yIGNvbXBsZXRpb24uCiAK IFRoZSBleHBvcnQga2V5d29yZHMgYXZhaWxhYmxlIGZvciBldmVyeSBiYWNrLWVuZCwgYW5kIHRo ZWlyIGVxdWl2YWxlbnQgZ2xvYmFsCiB2YXJpYWJsZXMsIGluY2x1ZGU6CkBAIC0xNzE3NCwxNCAr MTcxNzQsMTYgQEAgaGF2ZSBhIGxvd2VyIEFTQ0lJIG51bWJlciB0aGFuIHRoZSBsb3dlc3QgcHJp b3JpdHkuCiBUaGlzIGxpbmUgc2V0cyBhIGRlZmF1bHQgaW5oZXJpdGFuY2UgdmFsdWUgZm9yIGVu dHJpZXMgaW4gdGhlIGN1cnJlbnQKIGJ1ZmZlciwgbW9zdCB1c2VmdWwgZm9yIHNwZWNpZnlpbmcg dGhlIGFsbG93ZWQgdmFsdWVzIG9mIGEgcHJvcGVydHkuCiBAY2luZGV4ICMrU0VUVVBGSUxFCi1A aXRlbSAjK1NFVFVQRklMRTogZmlsZQotVGhlIHNldHVwIGZpbGUgaXMgZm9yIGFkZGl0aW9uYWwg aW4tYnVmZmVyIHNldHRpbmdzLiAgT3JnIGxvYWRzIHRoaXMgZmlsZSBhbmQKLXBhcnNlcyBpdCBm b3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbiBPcmcgb3BlbnMgdGhlIG1haW4gZmlsZS4g IEBrYmR7Qy1jCi1DLWN9IG9uIHRoZSBzZXR0aW5ncyBsaW5lIHdpbGwgYWxzbyBwYXJzZSBhbmQg bG9hZC4gIE9yZyBhbHNvIHBhcnNlcyBhbmQKLWxvYWRzIHRoZSBmaWxlIGR1cmluZyBub3JtYWwg ZXhwb3J0aW5nIHByb2Nlc3MuICBPcmcgcGFyc2VzIHRoZSBjb250ZW50cyBvZgotdGhpcyBmaWxl IGFzIGlmIGl0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYnVmZmVyLiAgSXQgY2FuIGJlIGFub3RoZXIg T3JnIGZpbGUuCi1UbyB2aXNpdCB0aGUgZmlsZSwgQGtiZHtDLWMgJ30gd2hpbGUgdGhlIGN1cnNv ciBpcyBvbiB0aGUgbGluZSB3aXRoIHRoZSBmaWxlCi1uYW1lLgorQGl0ZW0gIytTRVRVUEZJTEU6 IGZpbGUgb3IgVVJMCitUaGUgc2V0dXAgZmlsZSBvciBhIFVSTCBwb2ludGluZyB0byBzdWNoIGZp bGUgaXMgZm9yIGFkZGl0aW9uYWwgaW4tYnVmZmVyCitzZXR0aW5ncy4gIE9yZyBsb2FkcyB0aGlz IGZpbGUgYW5kIHBhcnNlcyBpdCBmb3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbgorT3Jn IG9wZW5zIHRoZSBtYWluIGZpbGUuICBJZiBVUkwgaXMgc3BlY2lmaWVkLCB0aGUgY29udGVudHMg YXJlIGRvd25sb2FkZWQKK2FuZCBzdG9yZWQgaW4gYSB0ZW1wb3JhcnkgZmlsZSBjYWNoZS4gIEBr YmR7Qy1jIEMtY30gb24gdGhlIHNldHRpbmdzIGxpbmUKK3dpbGwgcGFyc2UgYW5kIGxvYWQgdGhl IGZpbGUsIGFuZCBhbHNvIHJlc2V0IHRoZSB0ZW1wb3JhcnkgZmlsZSBjYWNoZS4gIE9yZworYWxz byBwYXJzZXMgYW5kIGxvYWRzIHRoZSBkb2N1bWVudCBkdXJpbmcgbm9ybWFsIGV4cG9ydGluZyBw cm9jZXNzLiAgT3JnCitwYXJzZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZG9jdW1lbnQgYXMgaWYg aXQgd2FzIGluY2x1ZGVkIGluIHRoZSBidWZmZXIuICBJdAorY2FuIGJlIGFub3RoZXIgT3JnIGZp bGUuICBUbyB2aXNpdCB0aGUgZmlsZSAobm90IGEgVVJMKSwgQGtiZHtDLWMgJ30gd2hpbGUKK3Ro ZSBjdXJzb3IgaXMgb24gdGhlIGxpbmUgd2l0aCB0aGUgZmlsZSBuYW1lLgogQGl0ZW0gIytTVEFS VFVQOgogQGNpbmRleCAjK1NUQVJUVVAKIFN0YXJ0dXAgb3B0aW9ucyBPcmcgdXNlcyB3aGVuIGZp cnN0IHZpc2l0aW5nIGEgZmlsZS4KQEAgLTE3NDIyLDcgKzE3NDI0LDkgQEAgSWYgYW55IGhpZ2hs aWdodHMgc2hvd24gaW4gdGhlIGJ1ZmZlciBmcm9tIHRoZSBjcmVhdGlvbiBvZiBhIHNwYXJzZSB0 cmVlLCBvcgogZnJvbSBjbG9jayBkaXNwbGF5LCByZW1vdmUgc3VjaCBoaWdobGlnaHRzLgogQGl0 ZW0KIElmIHRoZSBjdXJzb3IgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWFsIEBjb2RleyMrS0VZV09S RH0gbGluZXMsIHNjYW4gdGhlCi1idWZmZXIgZm9yIHRoZXNlIGxpbmVzIGFuZCB1cGRhdGUgdGhl IGluZm9ybWF0aW9uLgorYnVmZmVyIGZvciB0aGVzZSBsaW5lcyBhbmQgdXBkYXRlIHRoZSBpbmZv cm1hdGlvbi4gIEFsc28gcmVzZXQgdGhlIE9yZyBmaWxlCitjYWNoZSB1c2VkIHRvIHRlbXBvcmFy eSBzdG9yZSB0aGUgY29udGVudHMgb2YgVVJMcyB1c2VkIGFzIHZhbHVlcyBmb3IKK2tleXdvcmRz IGxpa2UgQGNvZGV7IytTRVRVUEZJTEV9LgogQGl0ZW0KIElmIHRoZSBjdXJzb3IgaXMgaW5zaWRl IGEgdGFibGUsIHJlYWxpZ24gdGhlIHRhYmxlLiAgVGhlIHRhYmxlIHJlYWxpZ25zIGV2ZW4KIGlm IGF1dG9tYXRpYyB0YWJsZSBlZGl0b3IgaXMgdHVybmVkIG9mZi4KZGlmZiAtLWdpdCBhL2V0Yy9P UkctTkVXUyBiL2V0Yy9PUkctTkVXUwppbmRleCBlYjBlMTFjNGFhLi44Mzk3MmQ0ZTk0IDEwMDY0 NAotLS0gYS9ldGMvT1JHLU5FV1MKKysrIGIvZXRjL09SRy1ORVdTCkBAIC0yMDMsNyArMjAzLDcg QEAgbWFudWFsIGZvciBkZXRhaWxzLgogKioqKiBBZGQgZ2xvYmFsIG1hY3JvcyB0aHJvdWdoIH5v cmctZXhwb3J0LWdsb2JhbC1tYWNyb3N+CiBXaXRoIHRoaXMgdmFyaWFibGUsIG9uZSBjYW4gZGVm aW5lIG1hY3JvcyBhdmFpbGFibGUgZm9yIGFsbCBkb2N1bWVudHMuCiAqKioqIE5ldyBrZXl3b3Jk IH4jK0VYUE9SVF9GSUxFX05BTUV+Ci1TaW1pcmFscnkgdG8gfjpFWFBPUlRfRklMRV9OQU1FOn4g cHJvcGVydHksIHRoaXMga2V5d29yZCBhbGxvd3MgdGhlCitTaW1pbGFybHkgdG8gfjpFWFBPUlRf RklMRV9OQU1FOn4gcHJvcGVydHksIHRoaXMga2V5d29yZCBhbGxvd3MgdGhlCiB1c2VyIHRvIHNw ZWNpZnkgdGhlIG5hbWUgb2YgdGhlIG91dHB1dCBmaWxlIHVwb24gZXhwb3J0aW5nIHRoZQogZG9j dW1lbnQuICBUaGlzIGFsc28gaGFzIGFuIGVmZmVjdCBvbiBwdWJsaXNoaW5nLgogKioqKiBIb3Jp em9udGFsIHJ1bGVzIGFyZSBubyBsb25nZXIgaWdub3JlZCBpbiBMYVRlWCB0YWJsZSBtYXRoIG1v ZGUKQEAgLTI0MCw2ICsyNDAsMTYgQEAgd2hpY2ggY2F1c2VzIHJlZmlsZSB0YXJnZXRzIHRvIGJl IHByZWZpeGVkIHdpdGggdGhlIGJ1ZmZlcuKAmXMKIG5hbWUuIFRoaXMgaXMgcGFydGljdWxhcmx5 IHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAogfnVuaXF1aWZ5LmVsfi4KIAor KioqIH5vcmctZmlsZS1jb250ZW50c34gbm93IGFsbG93cyB0aGUgRklMRSBhcmd1bWVudCB0byBi ZSBhIFVSTC4KK1RoaXMgYWxsb3dzIH4jK1NFVFVQRklMRTp+IHRvIGFjY2VwdCBhIFVSTCBpbnN0 ZWFkIG9mIGEgbG9jYWwgZmlsZQorcGF0aC4gIFRoZSBVUkwgY29udGVudHMgYXJlIGF1dG8tZG93 bmxvYWRlZCBhbmQgc2F2ZWQgdG8gYSB0ZW1wb3JhcnkKK2NhY2hlIH5vcmctLWZpbGUtY2FjaGV+ LiAgQSBuZXcgb3B0aW9uYWwgYXJndW1lbnQgfk5PQ0FDSEV+IGlzIGFkZGVkCit0byB+b3JnLWZp bGUtY29udGVudHN+LgorCisqKiogfm9yZy1tb2RlLXJlc3RhcnR+IG5vdyByZXNldHMgdGhlIG5l d2x5IGFkZGVkIH5vcmctLWZpbGUtY2FjaGV+LgorVXNpbmcgfkMtYyBDLWN+IG9uIGFueSBrZXl3 b3JkIChsaWtlIH4jK1NFVFVQRklMRX4pIHdpbGwgcmVzZXQgdGhlCit0aGF0IGZpbGUgY2FjaGUu CisKICoqIFJlbW92ZWQgZnVuY3Rpb25zCiAKICoqKiBPcmcgVGltZWxpbmUKZGlmZiAtLWdpdCBh L2xpc3Avb3JnLW1hY3JvLmVsIGIvbGlzcC9vcmctbWFjcm8uZWwKaW5kZXggNjc1OGQzMWYwNi4u ODI4YzVlOWUzZCAxMDA2NDQKLS0tIGEvbGlzcC9vcmctbWFjcm8uZWwKKysrIGIvbGlzcC9vcmct bWFjcm8uZWwKQEAgLTU1LDcgKzU1LDggQEAKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50 LW1hY3JvLXBhcnNlciAib3JnLWVsZW1lbnQiICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVs ZW1lbnQtcHJvcGVydHkgIm9yZy1lbGVtZW50IiAocHJvcGVydHkgZWxlbWVudCkpCiAoZGVjbGFy ZS1mdW5jdGlvbiBvcmctZWxlbWVudC10eXBlICJvcmctZWxlbWVudCIgKGVsZW1lbnQpKQotKGRl Y2xhcmUtZnVuY3Rpb24gb3JnLWZpbGUtY29udGVudHMgIm9yZyIgKGZpbGUgJm9wdGlvbmFsIG5v ZXJyb3IpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWZpbGUtY29udGVudHMgIm9yZyIgKGZpbGUg Jm9wdGlvbmFsIG5vZXJyb3Igbm9jYWNoZSkpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS11 cmwtcCAib3JnIiAoZmlsZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctaW4tY29tbWVudGVkLWhl YWRpbmctcCAib3JnIiAoJm9wdGlvbmFsIG5vLWluaGVyaXRhbmNlKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1tb2RlICJvcmciICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gdmMtYmFja2VuZCAidmMt aG9va3MiIChmKSkKQEAgLTEwMiwxNiArMTAzLDIxIEBAIFJldHVybiBhbiBhbGlzdCBjb250YWlu aW5nIGFsbCBtYWNybyB0ZW1wbGF0ZXMgZm91bmQuIgogCQkJCSAoaWYgb2xkLWNlbGwgKHNldGNk ciBvbGQtY2VsbCB0ZW1wbGF0ZSkKIAkJCQkgICAocHVzaCAoY29ucyBuYW1lIHRlbXBsYXRlKSB0 ZW1wbGF0ZXMpKSkpCiAJCQkgICA7OyBFbnRlciBzZXR1cCBmaWxlLgotCQkJICAgKGxldCAoKGZp bGUgKGV4cGFuZC1maWxlLW5hbWUKLQkJCQkJKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwi IiB2YWwpKSkpCi0JCQkgICAgICh1bmxlc3MgKG1lbWJlciBmaWxlIGZpbGVzKQorCQkJICAgKGxl dCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFsKSkp CisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICh1cmkgKGlm IHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkp CisJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKwkJCSAgICAgKHVubGVz cyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCSAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCQkJCSAo c2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJCSAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBm aWxlKSkKKwkJCQkgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAgKHNldHEgZGVmYXVsdC1kaXJl Y3RvcnkKKwkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkpKQogCQkJCSAob3JnLW1vZGUp Ci0JCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJCSAo aW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAoc2V0cSB0ZW1w bGF0ZXMKLQkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgZmlsZSBmaWxl cykKKwkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgdXJpIGZpbGVzKQog CQkJCQkJdGVtcGxhdGVzKSkpKSkpKSkpKSkKIAkJdGVtcGxhdGVzKSkpKQogICAgIChmdW5jYWxs IGNvbGxlY3QtbWFjcm9zIG5pbCBuaWwpKSkKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLmVsIGIvbGlz cC9vcmcuZWwKaW5kZXggMjEwMWVjN2QxMy4uMTkxOTkwZGI3NSAxMDA2NDQKLS0tIGEvbGlzcC9v cmcuZWwKKysrIGIvbGlzcC9vcmcuZWwKQEAgLTE4MSw2ICsxODEsOCBAQCBTdGFycyBhcmUgcHV0 IGluIGdyb3VwIDEgYW5kIHRoZSB0cmltbWVkIGJvZHkgaW4gZ3JvdXAgMi4iKQogKGRlY2xhcmUt ZnVuY3Rpb24gb3JnLWV4cG9ydC1nZXQtZW52aXJvbm1lbnQgIm94IiAoJm9wdGlvbmFsIGJhY2tl bmQgc3VidHJlZXAgZXh0LXBsaXN0KSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1sYXRleC1tYWtl LXByZWFtYmxlICJveC1sYXRleCIgKGluZm8gJm9wdGlvbmFsIHRlbXBsYXRlIHNuaXBwZXQ/KSkK IAorKGRlZnZhciBmZmFwLXVybC1yZWdleHApCQk7U2lsZW5jZSBieXRlLWNvbXBpbGVyCisKIChk ZWZzdWJzdCBvcmctdW5pcXVpZnkgKGxpc3QpCiAgICJOb24tZGVzdHJ1Y3RpdmVseSByZW1vdmUg ZHVwbGljYXRlIGVsZW1lbnRzIGZyb20gTElTVC4iCiAgIChsZXQgKChyZXMgKGNvcHktc2VxdWVu Y2UgbGlzdCkpKSAoZGVsZXRlLWR1cHMgcmVzKSkpCkBAIC01MjgwLDE3ICs1MjgyLDYyIEBAIGEg c3RyaW5nLCBzdW1tYXJpemluZyBUQUdTLCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4iCiAJICAgKHNl dHEgY3VycmVudC1ncm91cCAobGlzdCB0YWcpKSkpCiAJKF8gbmlsKSkpKSkKIAotKGRlZnVuIG9y Zy1maWxlLWNvbnRlbnRzIChmaWxlICZvcHRpb25hbCBub2Vycm9yKQotICAiUmV0dXJuIHRoZSBj b250ZW50cyBvZiBGSUxFLCBhcyBhIHN0cmluZy4iCi0gIChpZiAoYW5kIGZpbGUgKGZpbGUtcmVh ZGFibGUtcCBmaWxlKSkKKyhkZWZ2YXIgb3JnLS1maWxlLWNhY2hlIChtYWtlLWhhc2gtdGFibGUg OnRlc3QgIydlcXVhbCkKKyAgIkhhc2ggdGFibGUgdG8gc3RvcmUgY29udGVudHMgb2YgZmlsZXMg cmVmZXJlbmNlZCB2aWEgYSBVUkwuCitUaGlzIGlzIHRoZSBjYWNoZSBvZiBmaWxlIFVSTHMgcmVh ZCB1c2luZyBgb3JnLWZpbGUtY29udGVudHMnLiIpCisKKyhkZWZ1biBvcmctcmVzZXQtZmlsZS1j YWNoZSAoKQorICAiUmVzZXQgdGhlIGNhY2hlIG9mIGZpbGVzIGRvd25sb2FkZWQgYnkgYG9yZy1m aWxlLWNvbnRlbnRzJy4iCisgIChjbHJoYXNoIG9yZy0tZmlsZS1jYWNoZSkpCisKKyhkZWZ1biBv cmctZmlsZS11cmwtcCAoZmlsZSkKKyAgIk5vbi1uaWwgaWYgRklMRSBpcyBhIFVSTC4iCisgIChy ZXF1aXJlICdmZmFwKQorICAoc3RyaW5nLW1hdGNoLXAgZmZhcC11cmwtcmVnZXhwIGZpbGUpKQor CisoZGVmdW4gb3JnLWZpbGUtY29udGVudHMgKGZpbGUgJm9wdGlvbmFsIG5vZXJyb3Igbm9jYWNo ZSkKKyAgIlJldHVybiB0aGUgY29udGVudHMgb2YgRklMRSwgYXMgYSBzdHJpbmcuCisKK0ZJTEUg Y2FuIGJlIGEgZmlsZSBuYW1lIG9yIFVSTC4KKworSWYgRklMRSBpcyBhIFVSTCwgZG93bmxvYWQg dGhlIGNvbnRlbnRzLiAgSWYgdGhlIFVSTCBjb250ZW50cyBhcmUKK2FscmVhZHkgY2FjaGVkIGlu IHRoZSBgb3JnLS1maWxlLWNhY2hlJyBoYXNoIHRhYmxlLCB0aGUgZG93bmxvYWQgc3RlcAoraXMg c2tpcHBlZC4KKworSWYgTk9FUlJPUiBpcyBub24tbmlsLCBpZ25vcmUgdGhlIGVycm9yIHdoZW4g dW5hYmxlIHRvIHJlYWQgdGhlIEZJTEUKK2Zyb20gZmlsZSBvciBVUkwuCisKK0lmIE5PQ0FDSEUg aXMgbm9uLW5pbCwgZG8gYSBmcmVzaCBmZXRjaCBvZiBGSUxFIGV2ZW4gaWYgY2FjaGVkIHZlcnNp b24KK2lzIGF2YWlsYWJsZS4gIFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSBpZiBGSUxFIGlzIGEg VVJMLiIKKyAgKGxldCogKChpcy11cmwgKG9yZy1maWxlLXVybC1wIGZpbGUpKQorICAgICAgICAg KGNhY2hlIChhbmQgaXMtdXJsCisgICAgICAgICAgICAgICAgICAgICAobm90IG5vY2FjaGUpCisg ICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaCBmaWxlIG9yZy0tZmlsZS1jYWNoZSkpKSkKKyAg ICAoY29uZAorICAgICAoY2FjaGUpCisgICAgIChpcy11cmwKKyAgICAgICh3aXRoLWN1cnJlbnQt YnVmZmVyICh1cmwtcmV0cmlldmUtc3luY2hyb25vdXNseSBmaWxlKQorCShnb3RvLWNoYXIgKHBv aW50LW1pbikpCisJOzsgTW92ZSBwb2ludCB0byBhZnRlciB0aGUgdXJsLXJldHJpZXZlIGhlYWRl ci4KKwkoc2VhcmNoLWZvcndhcmQgIlxuXG4iIG5pbCA6bW92ZSkKKwk7OyBTZWFyY2ggZm9yIHRo ZSBzdWNjZXNzIGNvZGUgb25seSBpbiB0aGUgdXJsLXJldHJpZXZlIGhlYWRlci4KKwkoaWYgKHNh dmUtZXhjdXJzaW9uIChyZS1zZWFyY2gtYmFja3dhcmQgIkhUVFAuKlxccy0rMjAwXFxzLU9LIiBu aWwgOm5vZXJyb3IpKQorCSAgICA7OyBVcGRhdGUgdGhlIGNhY2hlIGBvcmctLWZpbGUtY2FjaGUn IGFuZCByZXR1cm4gY29udGVudHMuCisJICAgIChwdXRoYXNoIGZpbGUKKwkJICAgICAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgKHBvaW50LW1heCkpCisJCSAgICAgb3Jn LS1maWxlLWNhY2hlKQorCSAgKGZ1bmNhbGwgKGlmIG5vZXJyb3IgIydtZXNzYWdlICMndXNlci1l cnJvcikKKwkJICAgIlVuYWJsZSB0byBmZXRjaCBmaWxlIGZyb20gJVMiCisJCSAgIGZpbGUpKSkp CisgICAgICh0CiAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCShpbnNlcnQtZmlsZS1jb250ZW50 cyBmaWxlKQotCShidWZmZXItc3RyaW5nKSkKLSAgICAoZnVuY2FsbCAoaWYgbm9lcnJvciAnbWVz c2FnZSAnZXJyb3IpCi0JICAgICAiQ2Fubm90IHJlYWQgZmlsZSBcIiVzXCIlcyIKLQkgICAgIGZp bGUKLQkgICAgIChsZXQgKChmcm9tIChidWZmZXItZmlsZS1uYW1lIChidWZmZXItYmFzZS1idWZm ZXIpKSkpCi0JICAgICAgIChpZiBmcm9tIChjb25jYXQgIiAocmVmZXJlbmNlZCBpbiBmaWxlIFwi IiBmcm9tICJcIikiKSAiIikpKSkpCisgICAgICAgIChjb25kaXRpb24tY2FzZSBlcnIKKwkgICAg KHByb2duCisJICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCisJICAgICAgKGJ1ZmZl ci1zdHJpbmcpKQorCSAgKGZpbGUtZXJyb3IKKyAgICAgICAgICAgKGZ1bmNhbGwgKGlmIG5vZXJy b3IgIydtZXNzYWdlICMndXNlci1lcnJvcikKKwkJICAgIChlcnJvci1tZXNzYWdlLXN0cmluZyBl cnIpKSkpKSkpKSkKIAogKGRlZnVuIG9yZy1leHRyYWN0LWxvZy1zdGF0ZS1zZXR0aW5ncyAoeCkK ICAgIkV4dHJhY3QgdGhlIGxvZyBzdGF0ZSBzZXR0aW5nIGZyb20gYSBUT0RPIGtleXdvcmQgc3Ry aW5nLgpAQCAtMjA2ODcsNyArMjA3MzQsOSBAQCBPdGhlcndpc2UsIHJldHVybiBhIHVzZXIgZXJy b3IuIgogCSAgICAoZm9ybWF0ICJbWyVzXV0iCiAJCSAgICAoZXhwYW5kLWZpbGUtbmFtZQogCQkg ICAgIChsZXQgKCh2YWx1ZSAob3JnLWVsZW1lbnQtcHJvcGVydHkgOnZhbHVlIGVsZW1lbnQpKSkK LQkJICAgICAgIChjb25kICgobm90IChvcmctc3RyaW5nLW53LXAgdmFsdWUpKQorCQkgICAgICAg KGNvbmQgKChvcmctZmlsZS11cmwtcCB2YWx1ZSkKKwkJCSAgICAgICh1c2VyLWVycm9yICJUaGUg ZmlsZSBpcyBzcGVjaWZpZWQgYXMgYSBVUkwsIGNhbm5vdCBiZSBlZGl0ZWQiKSkKKwkJCSAgICAg KChub3QgKG9yZy1zdHJpbmctbnctcCB2YWx1ZSkpCiAJCQkgICAgICAodXNlci1lcnJvciAiTm8g ZmlsZSB0byBlZGl0IikpCiAJCQkgICAgICgoc3RyaW5nLW1hdGNoICJcXGBcIlxcKC4qP1xcKVwi IiB2YWx1ZSkKIAkJCSAgICAgIChtYXRjaC1zdHJpbmcgMSB2YWx1ZSkpCkBAIC0yMDk1MSw3ICsy MTAwMCw4IEBAIFVzZSBgXFxbb3JnLWVkaXQtc3BlY2lhbF0nIHRvIGVkaXQgdGFibGUuZWwgdGFi bGVzIikpCiAgICAgKGZ1bmNhbGwgbWFqb3ItbW9kZSkKICAgICAoaGFjay1sb2NhbC12YXJpYWJs ZXMpCiAgICAgKHdoZW4gKGFuZCBpbmRlbnQtc3RhdHVzIChub3QgKGJvdW5kLWFuZC10cnVlLXAg b3JnLWluZGVudC1tb2RlKSkpCi0gICAgICAob3JnLWluZGVudC1tb2RlIC0xKSkpCisgICAgICAo b3JnLWluZGVudC1tb2RlIC0xKSkKKyAgICAob3JnLXJlc2V0LWZpbGUtY2FjaGUpKQogICAobWVz c2FnZSAiJXMgcmVzdGFydGVkIiBtYWpvci1tb2RlKSkKIAogKGRlZnVuIG9yZy1raWxsLW5vdGUt b3Itc2hvdy1icmFuY2hlcyAoKQpkaWZmIC0tZ2l0IGEvbGlzcC9veC5lbCBiL2xpc3Avb3guZWwK aW5kZXggNTNkMzViYmE4Zi4uM2I3OTNhMDBmMiAxMDA2NDQKLS0tIGEvbGlzcC9veC5lbAorKysg Yi9saXNwL294LmVsCkBAIC0xNDk5LDE3ICsxNDk5LDIwIEBAIEFzc3VtZSBidWZmZXIgaXMgaW4g T3JnIG1vZGUuICBOYXJyb3dpbmcsIGlmIGFueSwgaXMgaWdub3JlZC4iCiAJCQkgKGNvbmQKIAkJ CSAgOzsgT3B0aW9ucyBpbiBgb3JnLWV4cG9ydC1zcGVjaWFsLWtleXdvcmRzJy4KIAkJCSAgKChl cXVhbCBrZXkgIlNFVFVQRklMRSIpCi0JCQkgICAobGV0ICgoZmlsZQotCQkJCSAgKGV4cGFuZC1m aWxlLW5hbWUKLQkJCQkgICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIChvcmctdHJp bSB2YWwpKSkpKQorCQkJICAgKGxldCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIg IlwiIiAob3JnLXRyaW0gdmFsKSkpCisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAg dXJpKSkKKwkJCQkgICh1cmkgKGlmIHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhw YW5kLWZpbGUtbmFtZSB1cmkpKSkpCiAJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVu Y2llcy4KLQkJCSAgICAgKHVubGVzcyAobWVtYmVyIGZpbGUgZmlsZXMpCisJCQkgICAgICh1bmxl c3MgKG1lbWJlciB1cmkgZmlsZXMpCiAJCQkgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKLQkJCQkg KHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKLQkJCQkgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxl KSkKLQkJCQkgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJ ICh1bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5CisJCQkJ CSAoZmlsZS1uYW1lLWRpcmVjdG9yeSB1cmkpKSkKKwkJCQkgKGluc2VydCAob3JnLWZpbGUtY29u dGVudHMgdXJpICdub2Vycm9yKSkKIAkJCQkgKGxldCAoKG9yZy1pbmhpYml0LXN0YXJ0dXAgdCkp IChvcmctbW9kZSkpCi0JCQkJIChmdW5jYWxsIGdldC1vcHRpb25zIChjb25zIGZpbGUgZmlsZXMp KSkpKSkKKwkJCQkgKGZ1bmNhbGwgZ2V0LW9wdGlvbnMgKGNvbnMgdXJpIGZpbGVzKSkpKSkpCiAJ CQkgICgoZXF1YWwga2V5ICJPUFRJT05TIikKIAkJCSAgIChzZXRxIHBsaXN0CiAJCQkJIChvcmct Y29tYmluZS1wbGlzdHMKQEAgLTE2NDcsMTcgKzE2NTAsMjIgQEAgYW4gYWxpc3Qgd2hlcmUgYXNz b2NpYXRpb25zIGFyZSAoVkFSSUFCTEUtTkFNRSBWQUxVRSkuIgogCQkJCSAgICAgICJCSU5EIikK IAkJCSAgICAgICAocHVzaCAocmVhZCAoZm9ybWF0ICIoJXMpIiB2YWwpKSBhbGlzdCkKIAkJCSAg ICAgOzsgRW50ZXIgc2V0dXAgZmlsZS4KLQkJCSAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxl LW5hbWUKLQkJCQkJICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIHZhbCkpKSkKLQkJ CSAgICAgICAodW5sZXNzIChtZW1iZXIgZmlsZSBmaWxlcykKKwkJCSAgICAgKGxldCogKCh1cmkg KG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiB2YWwpKQorCQkJCSAgICAodXJpLWlzLXVy bCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICAgKHVyaSAoaWYgdXJpLWlzLXVybAorCQkJ CQkgICAgIHVyaQorCQkJCQkgICAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkpCisJCQkgICAgICAg OzsgQXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCQkJICAgICAgICh1bmxlc3MgKG1lbWJl ciB1cmkgZmlsZXMpCiAJCQkJICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJICAgKHNldHEgZGVmYXVs dC1kaXJlY3RvcnkKLQkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQorCQkJCSAgICh1 bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgICAgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKKwkJCQkJ ICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgdXJpKSkpCiAJCQkJICAgKGxldCAoKG9yZy1pbmhpYml0 LXN0YXJ0dXAgdCkpIChvcmctbW9kZSkpCi0JCQkJICAgKGluc2VydCAob3JnLWZpbGUtY29udGVu dHMgZmlsZSAnbm9lcnJvcikpCisJCQkJICAgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgdXJp ICdub2Vycm9yKSkKIAkJCQkgICAoc2V0cSBhbGlzdAogCQkJCQkgKGZ1bmNhbGwgY29sbGVjdC1i aW5kCi0JCQkJCQkgIChjb25zIGZpbGUgZmlsZXMpCisJCQkJCQkgIChjb25zIHVyaSBmaWxlcykK IAkJCQkJCSAgYWxpc3QpKSkpKSkpKSkpCiAJCSAgIGFsaXN0KSkpKSkKICAgICAgIDs7IFJldHVy biB2YWx1ZSBpbiBhcHByb3ByaWF0ZSBvcmRlciBvZiBhcHBlYXJhbmNlLgpkaWZmIC0tZ2l0IGEv dGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsCmluZGV4 IGU1NWVlMDc3YjguLjM1Njc0YmFmNGEgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9y Zy5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKQEAgLTY0OTgsNiArNjQ5OCw4MSBA QCBQYXJhZ3JhcGg8cG9pbnQ+IgogICAgICAob3JnLXNob3ctc2V0LXZpc2liaWxpdHkgJ21pbmlt YWwpCiAgICAgIChvcmctaW52aXNpYmxlLXAyKSkpKQogCisoZXJ0LWRlZnRlc3QgdGVzdC1vcmcv b3JnLWZpbGUtY29udGVudHMtZmlsZSAoKQorICAiVGVzdCBgb3JnLWZpbGUtY29udGVudHMnIHdp dGggYSBmaWxlIGFzIGlucHV0LiIKKyAgKHNob3VsZAorICAgKHN0cmluZz0gIiMrQklORDogdmFy aWFibGUgdmFsdWUKKyMrREVTQ1JJUFRJT046IGwyCisjK0xBTkdVQUdFOiBlbgorIytTRUxFQ1Rf VEFHUzogYgorIytUSVRMRTogYgorIytQUk9QRVJUWTogYSAxCisiIChvcmctZmlsZS1jb250ZW50 cyAoZXhwYW5kLWZpbGUtbmFtZSAic2V0dXBmaWxlMy5vcmciCisJCQkJICAgICAgIChjb25jYXQg b3JnLXRlc3QtZGlyICJleGFtcGxlcy8iKSkpKSkKKyAgCisgIChsZXQgKChpbnZhbGlkLWZpbGUg InRoaXMtZmlsZS1tdXN0LW5vdC1leGlzdCIpKQorICAgIDs7IFRocm93IGVycm9yIHdoZW4gdHJ5 aW5nIHRvIGFjY2VzcyBhbiBpbnZhbGlkIGZpbGUuCisgICAgKHNob3VsZC1lcnJvcgorICAgICAo b3JnLWZpbGUtY29udGVudHMgaW52YWxpZC1maWxlKSkKKyAgICA7OyBUcnkgdG8gYWNjZXNzIGFu IGludmFsaWQgZmlsZSwgYnV0IGRvIG5vdCB0aHJvdyBhbiBlcnJvci4KKyAgICAoc2hvdWxkCisg ICAgIChzdHJpbmctbWF0Y2gtcCAiXFxgT3BlbmluZyBpbnB1dCBmaWxlOiBObyBzdWNoIGZpbGUg b3IgZGlyZWN0b3J5IgorCQkgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLWZpbGUgOm5v ZXJyb3IpKSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1vcmcvb3JnLWZpbGUtY29udGVudHMtdXJs ICgpCisgICJUZXN0IGBvcmctZmlsZS1jb250ZW50cycgd2l0aCBhIFVSTCBhcyBpbnB1dC4iCisg IChzaG91bGQKKyAgIChzdHJpbmc9ICJmb28iCisJICAgIChsZXQgKChidWZmZXIgKGdlbmVyYXRl LW5ldy1idWZmZXIgInVybC1yZXRyaWV2ZS1vdXRwdXQiKSkpCisJICAgICAgKHVud2luZC1wcm90 ZWN0CisJCSAgOzsgU2ltdWxhdGUgc3VjY2Vzc2Z1bCByZXRyaWV2YWwgb2YgYSBVUkwuCisJCSAg KGNsLWxldGYgKCgoc3ltYm9sLWZ1bmN0aW9uICd1cmwtcmV0cmlldmUtc3luY2hyb25vdXNseSkK KwkJCSAgICAgKGxhbWJkYSAoJnJlc3RfKQorCQkJICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IGJ1ZmZlcgorCQkJCSAoaW5zZXJ0ICJIVFRQLzEuMSAyMDAgT0tcblxuZm9vIikpCisJCQkgICAg ICAgYnVmZmVyKSkpCisJCSAgICAob3JnLWZpbGUtY29udGVudHMgImh0dHA6Ly9zb21lLXZhbGlk LXVybCIpKQorCQkoa2lsbC1idWZmZXIgYnVmZmVyKSkpKSkKKworICAobGV0ICgoaW52YWxpZC11 cmwgImh0dHA6Ly90aGlzLXVybC1tdXN0LW5vdC1leGlzdCIpKQorICAgIDs7IFRocm93IGVycm9y IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyBhbiBpbnZhbGlkIFVSTC4KKyAgICAoc2hvdWxkLWVycm9y CisgICAgIChsZXQgKChidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgInVybC1yZXRyaWV2ZS1v dXRwdXQiKSkpCisgICAgICAgKHVud2luZC1wcm90ZWN0CisJICAgOzsgU2ltdWxhdGUgdW5zdWNj ZXNzZnVsIHJldHJpZXZhbCBvZiBhIFVSTC4KKwkgICAoY2wtbGV0ZiAoKChzeW1ib2wtZnVuY3Rp b24gJ3VybC1yZXRyaWV2ZS1zeW5jaHJvbm91c2x5KQorCQkgICAgICAobGFtYmRhICgmcmVzdF8p CisJCQkod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKKwkJCSAgKGluc2VydCAiSFRUUC8xLjEg NDA0IE5vdCBmb3VuZFxuXG5kb2VzIG5vdCBtYXR0ZXIiKSkKKwkJCWJ1ZmZlcikpKQorCSAgICAg KG9yZy1maWxlLWNvbnRlbnRzIGludmFsaWQtdXJsKSkKKwkgKGtpbGwtYnVmZmVyIGJ1ZmZlcikp KSkKKyAgICA7OyBUcnkgdG8gYWNjZXNzIGFuIGludmFsaWQgVVJMLCBidXQgZG8gbm90IHRocm93 IGFuIGVycm9yLgorICAgIChzaG91bGQtZXJyb3IKKyAgICAgKGxldCAoKGJ1ZmZlciAoZ2VuZXJh dGUtbmV3LWJ1ZmZlciAidXJsLXJldHJpZXZlLW91dHB1dCIpKSkKKyAgICAgICAodW53aW5kLXBy b3RlY3QKKwkgICA7OyBTaW11bGF0ZSB1bnN1Y2Nlc3NmdWwgcmV0cmlldmFsIG9mIGEgVVJMLgor CSAgIChjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAndXJsLXJldHJpZXZlLXN5bmNocm9ub3Vz bHkpCisJCSAgICAgIChsYW1iZGEgKCZyZXN0XykKKwkJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1 ZmZlcgorCQkJICAoaW5zZXJ0ICJIVFRQLzEuMSA0MDQgTm90IGZvdW5kXG5cbmRvZXMgbm90IG1h dHRlciIpKQorCQkJYnVmZmVyKSkpCisJICAgICAob3JnLWZpbGUtY29udGVudHMgaW52YWxpZC11 cmwpKQorCSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpKQorICAgIChzaG91bGQKKyAgICAgKHN0cmlu Zz0KKyAgICAgIChmb3JtYXQgIlVuYWJsZSB0byBmZXRjaCBmaWxlIGZyb20gXCIlc1wiIiBpbnZh bGlkLXVybCkKKyAgICAgIChsZXQgKChidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgInVybC1y ZXRyaWV2ZS1vdXRwdXQiKSkpCisJKHVud2luZC1wcm90ZWN0CisJICAgIDs7IFNpbXVsYXRlIHVu c3VjY2Vzc2Z1bCByZXRyaWV2YWwgb2YgYSBVUkwuCisJICAgIChjbC1sZXRmICgoKHN5bWJvbC1m dW5jdGlvbiAndXJsLXJldHJpZXZlLXN5bmNocm9ub3VzbHkpCisJCSAgICAgICAobGFtYmRhICgm cmVzdF8pCisJCQkgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCisJCQkgICAoaW5zZXJ0ICJI VFRQLzEuMSA0MDQgTm90IGZvdW5kXG5cbmRvZXMgbm90IG1hdHRlciIpKQorCQkJIGJ1ZmZlcikp KQorCSAgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLXVybCA6bm9lcnJvcikpCisJICAo a2lsbC1idWZmZXIgYnVmZmVyKSkpKSkpKQorCiAKIChwcm92aWRlICd0ZXN0LW9yZykKIApkaWZm IC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb3guZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1veC5l bAppbmRleCA2OWE3NzhiYmIzLi43MmI2YzhjY2QxIDEwMDY0NAotLS0gYS90ZXN0aW5nL2xpc3Av dGVzdC1veC5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1veC5lbApAQCAtMjMyLDYgKzIzMiwz OCBAQCBudW06MiA8OmFjdGl2ZSIpKSkKIAkJb3JnLXRlc3QtZGlyKQogICAgICAgKG9yZy1leHBv cnQtLWdldC1pbmJ1ZmZlci1vcHRpb25zKSkKICAgICAnKDpsYW5ndWFnZSAiZnIiIDpzZWxlY3Qt dGFncyAoImEiICJiIiAiYyIpIDp0aXRsZSAoImEgYiBjIikpKSkKKyAgOzsgT3B0aW9ucyBzZXQg dGhyb3VnaCBTRVRVUEZJTEUgc3BlY2lmaWVkIHVzaW5nIGEgVVJMLgorICAobGV0ICgoYnVmZmVy IChnZW5lcmF0ZS1uZXctYnVmZmVyICJ1cmwtcmV0cmlldmUtb3V0cHV0IikpKQorICAgICh1bndp bmQtcHJvdGVjdAorCTs7IFNpbXVsYXRlIHN1Y2Nlc3NmdWwgcmV0cmlldmFsIG9mIGEgc2V0dXBm aWxlIGZyb20gVVJMLgorCShjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAndXJsLXJldHJpZXZl LXN5bmNocm9ub3VzbHkpCisJCSAgIChsYW1iZGEgKCZyZXN0XykKKwkJICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWZmZXIKKwkJICAgICAgIChpbnNlcnQgIkhUVFAvMS4xIDIwMCBPSworCisj IENvbnRlbnRzIG9mIGh0dHA6Ly9saW5rLXRvLW15LXNldHVwZmlsZS5vcmcKKyMrQklORDogdmFy aWFibGUgdmFsdWUKKyMrREVTQ1JJUFRJT046IGwyCisjK0xBTkdVQUdFOiBlbgorIytTRUxFQ1Rf VEFHUzogYgorIytUSVRMRTogYgorIytQUk9QRVJUWTogYSAxCisiKSkKKwkJICAgICBidWZmZXIp KSkKKwkgIChzaG91bGQKKwkgICAoZXF1YWwKKwkgICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0 CisJCSIjK0RFU0NSSVBUSU9OOiBsMQorIytMQU5HVUFHRTogZXMKKyMrU0VMRUNUX1RBR1M6IGEK KyMrVElUTEU6IGEKKyMrU0VUVVBGSUxFOiBcImh0dHA6Ly9saW5rLXRvLW15LXNldHVwZmlsZS5v cmdcIgorIytMQU5HVUFHRTogZnIKKyMrU0VMRUNUX1RBR1M6IGMKKyMrVElUTEU6IGMiCisJICAg ICAgKG9yZy1leHBvcnQtLWdldC1pbmJ1ZmZlci1vcHRpb25zKSkKKwkgICAgJyg6bGFuZ3VhZ2Ug ImZyIiA6c2VsZWN0LXRhZ3MgKCJhIiAiYiIgImMiKSA6dGl0bGUgKCJhIGIgYyIpKSkpKQorICAg ICAgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpKQogICA7OyBNb3JlIHRoYW4gb25lIHByb3BlcnR5IGNh biByZWZlciB0byB0aGUgc2FtZSBidWZmZXIga2V5d29yZC4KICAgKHNob3VsZAogICAgKGVxdWFs ICcoOmsyICJ2YWx1ZSIgOmsxICJ2YWx1ZSIpCi0tIAoyLjEzLjAKCg== --001a1141156c4ed2dc0551d95455-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Tue, 13 Jun 2017 23:32:48 +0200 Message-ID: <87y3svr2tb.fsf@nicolasgoaziou.fr> References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> <877f0grrc1.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55621) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKtQl-0001kO-K9 for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 17:32:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKtQi-0007E3-Iv for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 17:32:55 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:53079) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dKtQi-0007D6-DO for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 17:32:52 -0400 In-Reply-To: (Kaushal Modi's message of "Tue, 13 Jun 2017 15:45:35 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Kaushal Modi Cc: emacs-org list > I have attached the revised patch. LGTM. Thank you for the work! Regards, From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Tue, 13 Jun 2017 21:42:10 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> <877f0grrc1.fsf@nicolasgoaziou.fr> <87y3svr2tb.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="f403045ea2b675c2840551de4fd5" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57168) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKtZv-00053K-UL for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 17:42:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKtZv-0002FC-2v for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 17:42:24 -0400 Received: from mail-lf0-x236.google.com ([2a00:1450:4010:c07::236]:35793) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKtZu-0002Eq-Qi for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 17:42:23 -0400 Received: by mail-lf0-x236.google.com with SMTP id p189so80465528lfe.2 for ; Tue, 13 Jun 2017 14:42:22 -0700 (PDT) In-Reply-To: <87y3svr2tb.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --f403045ea2b675c2840551de4fd5 Content-Type: text/plain; charset="UTF-8" On Tue, Jun 13, 2017 at 5:32 PM Nicolas Goaziou wrote: > > I have attached the revised patch. > > LGTM. Thank you for the work! > Yay! Pushed to master. Thanks for the super reviews. It was a great learning experience. -- Kaushal Modi --f403045ea2b675c2840551de4fd5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
> I have attached the revised patch.

LGTM. Thank you for the work!

Yay! Push= ed to master.

Thanks for the super reviews. It was= a great learning experience.=C2=A0
--

Kaushal Modi=

--f403045ea2b675c2840551de4fd5--