<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rc/edit-editline.c, branch master</title>
<subtitle>Byron Rakitzis' rc(1) port, with a few modifications
</subtitle>
<link rel='alternate' type='text/html' href='http://src.hhvn.uk/rc/'/>
<entry>
<title>whitespace cleanups</title>
<updated>2018-03-26T17:20:39+00:00</updated>
<author>
<name>Toby Goodwin</name>
<email>toby@paccrat.org</email>
</author>
<published>2018-03-26T17:20:39+00:00</published>
<link rel='alternate' type='text/html' href='http://src.hhvn.uk/rc/commit/?id=969af168ea450bf79f800da620efefa91ed1f174'/>
<id>969af168ea450bf79f800da620efefa91ed1f174</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Restore signal handlers when catching signals in edit_alloc()</title>
<updated>2015-11-28T15:15:48+00:00</updated>
<author>
<name>Bert Münnich</name>
<email>ber.t@posteo.de</email>
</author>
<published>2015-11-28T14:48:46+00:00</published>
<link rel='alternate' type='text/html' href='http://src.hhvn.uk/rc/commit/?id=a5faae14cd81c019b8757c2f263799d19a2218e0'/>
<id>a5faae14cd81c019b8757c2f263799d19a2218e0</id>
<content type='text'>
edit_catcher() performs a longjmp via rc_raise() to the matching setjmp in
doit(). The latter does the same as before, so that edit_alloc() gets called
again, but this time the installation of the signal handlers trashes the old
handlers saved in the last call. Once readline() returns normally to
edit_alloc() the wrong signal handlers get restored.

The simplified call hierarchy looks like this:

doit();
  sigsetjmp();
    edit_alloc();
      oldint = sys_signal(SIGINT, edit_catcher);
      readline();
        SIGINT -&gt; edit_catcher();
          siglongjmp();
      sys_signal(SIGINT, oldint);

Restoring the old signal handlers in edit_catcher() solves this.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
edit_catcher() performs a longjmp via rc_raise() to the matching setjmp in
doit(). The latter does the same as before, so that edit_alloc() gets called
again, but this time the installation of the signal handlers trashes the old
handlers saved in the last call. Once readline() returns normally to
edit_alloc() the wrong signal handlers get restored.

The simplified call hierarchy looks like this:

doit();
  sigsetjmp();
    edit_alloc();
      oldint = sys_signal(SIGINT, edit_catcher);
      readline();
        SIGINT -&gt; edit_catcher();
          siglongjmp();
      sys_signal(SIGINT, oldint);

Restoring the old signal handlers in edit_catcher() solves this.
</pre>
</div>
</content>
</entry>
<entry>
<title>edit shims: better naming, editline and vrl added</title>
<updated>2015-05-16T20:23:25+00:00</updated>
<author>
<name>Toby Goodwin</name>
<email>toby@paccrat.org</email>
</author>
<published>2015-04-07T21:22:56+00:00</published>
<link rel='alternate' type='text/html' href='http://src.hhvn.uk/rc/commit/?id=8ca9f57a797e425205e08bce8355cf953d6be16b'/>
<id>8ca9f57a797e425205e08bce8355cf953d6be16b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
