Ran Benita d480ec1030 pty: unblock all signals before exec'ing the child
When we register signals in the eloop we also block them in our signal
mask. The signal mask is inherited by the child. Therefore, if the child
does not reset its mask (e.g. bash and most normal processes), it will
not receive any of the signals that we handle. So for example C-c
(SIGINT) does nothing in the child process.

We now unblock all signals before we exec the child.

It's also worth noting that if we _ignore_ a signal -
sigaction(SIG_IGN) - this is also inherited and we must reset it to
default. However, we do not ignore signals so this is unneeded.

Here is some more discussion on signalfd and this problem:
https://lwn.net/Articles/415684/

Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-01-28 12:54:22 +01:00
2012-01-22 22:44:12 +01:00
2012-01-24 15:29:55 +01:00
2012-01-22 22:44:12 +01:00
2012-01-22 22:44:12 +01:00
2012-01-28 12:28:19 +01:00
2012-01-01 23:04:13 +01:00

= KMSCON =
Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS).
It is an attempt to replace the in-kernel VT implementation with a userspace
console.

== Requirements ==
  Kmscon requires the following software:
    - libdrm: accessing the kernel graphics layer
    - mesa: providing an OpenGL implementation (must be compiled with EGL, gbm
            and GL libraries)
    - udev: providing input device hotplug
    - xproto (build time dependency): definition of key symbols
    - libxkbcommon: keyboard handling (optional but strongly recommended)
                    Without libxkbcommon, basic US-ASCII input is provided.
    - glib: only for Unicode handling
    - One of:
      - freetype2: drawing generic text
      - pango: drawing text with pango (use --enable-pango)
               Pango requires: glib, cairo, pangocairo, pango and freetype2

== Install ==
  To compile the kmscon binary, run the standard autotools commands:
    $ ./configure [--enable-debug] [--enable-pango]
    $ make
    $ make install
  To compile the test applications, run:
    $ make check

== License ==
  This software is licensed under the terms of the MIT license. Please see
  ./COPYING for further information.

== FAQ ==
  === Why didn't you use libvte or similar terminal emulators? ===
  All existing terminal emulators I found highly depend on X. Also, their code
  base often is a horrible mess. I haven't had the time to convert them to use
  other drawing functions than Xlib, yet.
  If you feel like doing this work, please notify me. I would be glad to adjust
  my code to work with other terminal emulators.

== Contact ==
  This software is maintained by:
    David Herrmann <dh.herrmann@googlemail.com>
  If you have any questions, do not hesitate to contact one of the maintainers.

== Code Base ==
  The kmscon code is split into several independent subsystems:
    - output:
      This code manages the KMS/DRI output and provides OpenGL framebuffers.
    - console:
      This draws the text on the screen and provides an API for any terminal
      emulator to visualize its contents.
    - eloop:
      Main loop implementation.
    - log:
      Log file handling.
    - unicode:
      Provides basic Unicode handling.
    - font:
      Font loading, caching and drawing operations.
    - input:
      All linux input events are captured here and converted to Unicode
      characters for input handling.
    - vt:
      The linux VT subsystem integration. This allows to run the application in
      a classic linux VT like X does.
    - vte:
      The terminal emulator library.
    - terminal:
      Connects the console, output, input and vte handling into a real terminal.
    - main:
      This connects all subsystems into a usable console application.
Languages
C 93.4%
M4 2.9%
Makefile 1.6%
GLSL 1.3%
C++ 0.7%
Other 0.1%