ATTR_ITALIC = 4,
ATTR_UNDERLINE = 8,
ATTR_BLINK = 16,
- ATTR_FASTBLINK = 32,
- ATTR_REVERSE = 64,
- ATTR_INVISIBLE = 128,
- ATTR_STRUCK = 256,
- ATTR_WRAP = 512,
- ATTR_WIDE = 1024,
- ATTR_WDUMMY = 2048,
+ ATTR_REVERSE = 32,
+ ATTR_INVISIBLE = 64,
+ ATTR_STRUCK = 128,
+ ATTR_WRAP = 256,
+ ATTR_WIDE = 512,
+ ATTR_WDUMMY = 1024,
};
enum cursor_movement {
void
sigchld(int a) {
- int stat = 0;
+ int stat, ret;
if(waitpid(pid, &stat, 0) < 0)
die("Waiting for pid %hd failed: %s\n", pid, strerror(errno));
- if(WIFEXITED(stat)) {
- exit(WEXITSTATUS(stat));
- } else {
- exit(EXIT_FAILURE);
- }
+ ret = WIFEXITED(stat) ? WEXITSTATUS(stat) : EXIT_FAILURE;
+ if (ret != EXIT_SUCCESS)
+ die("child finished with error '%d'\n", stat);
+ exit(EXIT_SUCCESS);
}
void
void
tclearregion(int x1, int y1, int x2, int y2) {
int x, y, temp;
+ Glyph *gp;
if(x1 > x2)
temp = x1, x1 = x2, x2 = temp;
for(y = y1; y <= y2; y++) {
term.dirty[y] = 1;
for(x = x1; x <= x2; x++) {
+ gp = &term.line[y][x];
if(selected(x, y))
selclear(NULL);
- term.line[y][x] = term.c.attr;
- memcpy(term.line[y][x].c, " ", 2);
+ gp->fg = term.c.attr.fg;
+ gp->bg = term.c.attr.bg;
+ gp->mode = 0;
+ memcpy(gp->c, " ", 2);
}
}
}
ATTR_ITALIC |
ATTR_UNDERLINE |
ATTR_BLINK |
- ATTR_FASTBLINK |
ATTR_REVERSE |
ATTR_INVISIBLE |
ATTR_STRUCK );
term.c.attr.mode |= ATTR_UNDERLINE;
break;
case 5: /* slow blink */
- term.c.attr.mode |= ATTR_BLINK;
- break;
+ /* FALLTHROUGH */
case 6: /* rapid blink */
- term.c.attr.mode |= ATTR_FASTBLINK;
+ term.c.attr.mode |= ATTR_BLINK;
break;
case 7:
term.c.attr.mode |= ATTR_REVERSE;
term.c.attr.mode &= ~ATTR_UNDERLINE;
break;
case 25:
- term.c.attr.mode &= ~(ATTR_BLINK | ATTR_FASTBLINK);
+ term.c.attr.mode &= ~ATTR_BLINK;
break;
case 27:
term.c.attr.mode &= ~ATTR_REVERSE;