fix bug in screen init - gramscii - A simple editor for ASCII box-and-arrow cha… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit a64ca9d14f8c197398badad39148b794757742b2 | |
parent c9a6b0faecb76984eb51754f6d188a87be025e8f | |
Author: KatolaZ <[email protected]> | |
Date: Mon, 22 Jul 2019 18:14:51 +0100 | |
fix bug in screen init | |
Diffstat: | |
M gramscii.c | 34 ++++++++++++++++++++---------… | |
1 file changed, 22 insertions(+), 12 deletions(-) | |
--- | |
diff --git a/gramscii.c b/gramscii.c | |
@@ -51,6 +51,8 @@ | |
#define MIN(x,y) (x) < (y) ? (x) : (y) | |
#define MAX(x,y) (x) > (y) ? (x) : (y) | |
+#define DEBUG 1 | |
+ | |
char **screen; | |
int WIDTH, HEIGHT; | |
@@ -129,6 +131,9 @@ void status_bar(){ | |
printf(" [%s]", fname ); | |
else | |
printf(" *%s*", fname ); | |
+#ifdef DEBUG | |
+ printf(" '%d' ", screen[y][x]); | |
+#endif | |
printf("\033[0m"); | |
} | |
@@ -168,7 +173,7 @@ void show_cursor(){ | |
printf("\033[%d;%df", y+1, x+1); | |
} | |
-void set(char c){ | |
+void set_cur(char c){ | |
screen[y][x] = c; | |
} | |
@@ -190,7 +195,8 @@ void update_current(){ | |
void erase_line(char *s){ | |
while(*s){ | |
- *s++ = BG; | |
+ *s = BG; | |
+ s++; | |
} | |
} | |
@@ -214,7 +220,6 @@ void erase_screen(){ | |
erase_line(screen[i]); | |
} | |
- | |
void check_bound(){ | |
if (x<0) x=0; | |
else if (x>=WIDTH) x = WIDTH-1; | |
@@ -232,10 +237,8 @@ void reset_styles(){ | |
line_v = vlines[cur_vl]; | |
mark_st = st_marks[cur_start]; | |
mark_end = end_marks[cur_end]; | |
- | |
} | |
- | |
void redraw(){ | |
int i; | |
@@ -302,7 +305,6 @@ void handle_goto(){ | |
show_cursor(); | |
} | |
- | |
int move_around(char c){ | |
switch(c){ | |
@@ -421,12 +423,12 @@ void get_text(){ | |
redraw(); | |
while((c=getchar())!=EOF && c != 27){ | |
if(c=='\n'){ | |
- set(BG); | |
+ set_cur(BG); | |
y += 1; | |
x = orig_x; | |
} | |
else { | |
- set(c); | |
+ set_cur(c); | |
update_current(); | |
modified = 1; | |
x += 1; | |
@@ -735,18 +737,26 @@ void init_screen(){ | |
struct winsize wsz; | |
if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &wsz)){ | |
- WIDTH=wsz.ws_col; | |
+ WIDTH=wsz.ws_col - 2; | |
HEIGHT=wsz.ws_row - 1; | |
} | |
else { | |
- WIDTH=8; | |
+ WIDTH=80; | |
HEIGHT=24; | |
} | |
screen = malloc(HEIGHT * sizeof(char *)); | |
+ if (screen == NULL){ | |
+ perror("allocating screen"); | |
+ exit(1); | |
+ } | |
for (i=0; i<HEIGHT; i++){ | |
screen[i] = malloc((WIDTH+1) * sizeof(char)); | |
- memset(screen[i], 32, WIDTH); | |
- screen[WIDTH]='\0'; | |
+ if (screen[i] == NULL){ | |
+ perror("allocating screen[i]"); | |
+ exit(1); | |
+ } | |
+ memset(screen[i], ' ', WIDTH * sizeof(char)); | |
+ screen[i][WIDTH]='\0'; | |
} | |
reset_styles(); | |
} |