https://en.wikipedia.org/wiki/Box-drawing_character
- Overwrite/clear selections before freeing them
- ≣ † ☆ ツ ⌘›🍺∴ ( ͡° ͜ʖ ͡°) ƒ ︵ ₂ 😈 θ ƒ › ʼ ƒ ∂ ʻ μ › ∫ ◇ ♪
- ► ə β ə ſ ρ ə ∴ ♪ 😱 † 😳 › ▛ ᵗ * ‽ ℣ Ω ⌘
+ ► ə β ə ſ ρ ə ∴ ♪ 😱 † 😳 › ▛ ᵗ * ‽ ℣ Ω ⌘ ❇
- Verify if dead key support is incomplete for ISO-8859-4 and ISO-8859-10.
There were special characters that were unicode since the start but also
could have punctuation. And others that used two at a time... It might
map_reset();
}
-#define CLEANUP_NSIZE 64
+#define CLEANUP_NSIZE 16
void
font_cleanup(state_t *state)
raw:
- /* Contiguous character blocks */
+ /* Contiguous character blocks */
for (font = state->font; font != NULL; font = font->next) {
if (c < font->end && c >= font->start) {
glyph = font->glyphs[c - font->start];
switch (sig) {
case SIGTERM: /* FALLTHROUGH */
case SIGINT:
- exit(EXIT_SUCCESS);
- /* NOTREACHED */
+ shell_done = true;
break;
case SIGCHLD:
/* Our shell subprocess died */
break;
if (!WIFEXITED(status))
continue;
- if (WEXITSTATUS(status) != 0)
- warn("Shell subprocess %d exit status: %d %s",
- (int)pid, WEXITSTATUS(status),
- strerror(WEXITSTATUS(status)));
- if (ttys != NULL && pid == ttys->shell_pid)
+ if (ttys != NULL && pid == ttys->shell_pid) {
+ ttys->exitpid = pid;
ttys->shell_pid = -1;
+ if (WEXITSTATUS(status) != 0)
+ ttys->exitstatus = WEXITSTATUS(status);
+ }
}
- if (ttys != NULL && ttys->shell_pid == -1) {
- warn("Shell subprocess gone.");
+ if (ttys != NULL && ttys->shell_pid == -1)
shell_done = true;
- }
break;
- default:
- warn("sighandler() - Unexpected signal %d\n", sig);
}
}
s->ttyname = ptsname(s->ptyfd);
s->winsize = *winsize;
s->command = command;
+ s->exitpid = -1;
+ s->exitstatus = 0;
sighandler_setup();
tty_cleanup(tty_t *s)
{
+ if (s->shell_pid == -1 && s->exitpid != -1)
+ warn("Shell subprocess %d gone, exit status: %d %s",
+ s->exitpid, s->exitstatus, strerror(s->exitstatus));
+
/* Kill child process if still exists */
- if (s->shell_pid != -1)
- (void)kill(s->shell_pid, SIGKILL);
+ if (s->shell_pid > 0)
+ (void)kill(-(s->shell_pid), SIGHUP);
(void)close(s->ptyfd);