Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Remove ul capability
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
0c917fd
..
e0aae9d
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-95,13
+95,12
@@
enum glyph_attribute {
ATTR_ITALIC = 4,
ATTR_UNDERLINE = 8,
ATTR_BLINK = 16,
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 {
};
enum cursor_movement {
@@
-1177,16
+1176,15
@@
execsh(void) {
void
sigchld(int a) {
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(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
@@
-1555,6
+1553,7
@@
tsetchar(char *c, Glyph *attr, int x, int y) {
void
tclearregion(int x1, int y1, int x2, int y2) {
int x, y, temp;
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;
if(x1 > x2)
temp = x1, x1 = x2, x2 = temp;
@@
-1569,10
+1568,13
@@
tclearregion(int x1, int y1, int x2, int y2) {
for(y = y1; y <= y2; y++) {
term.dirty[y] = 1;
for(x = x1; x <= x2; x++) {
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);
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);
}
}
}
}
}
}
@@
-1684,7
+1686,6
@@
tsetattr(int *attr, int l) {
ATTR_ITALIC |
ATTR_UNDERLINE |
ATTR_BLINK |
ATTR_ITALIC |
ATTR_UNDERLINE |
ATTR_BLINK |
- ATTR_FASTBLINK |
ATTR_REVERSE |
ATTR_INVISIBLE |
ATTR_STRUCK );
ATTR_REVERSE |
ATTR_INVISIBLE |
ATTR_STRUCK );
@@
-1704,10
+1705,9
@@
tsetattr(int *attr, int l) {
term.c.attr.mode |= ATTR_UNDERLINE;
break;
case 5: /* slow blink */
term.c.attr.mode |= ATTR_UNDERLINE;
break;
case 5: /* slow blink */
- term.c.attr.mode |= ATTR_BLINK;
- break;
+ /* FALLTHROUGH */
case 6: /* rapid blink */
case 6: /* rapid blink */
- term.c.attr.mode |= ATTR_
FAST
BLINK;
+ term.c.attr.mode |= ATTR_BLINK;
break;
case 7:
term.c.attr.mode |= ATTR_REVERSE;
break;
case 7:
term.c.attr.mode |= ATTR_REVERSE;
@@
-1728,7
+1728,7
@@
tsetattr(int *attr, int l) {
term.c.attr.mode &= ~ATTR_UNDERLINE;
break;
case 25:
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;
break;
case 27:
term.c.attr.mode &= ~ATTR_REVERSE;