summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatolaZ <katolaz@freaknet.org>2019-07-22 18:14:51 +0100
committerKatolaZ <katolaz@freaknet.org>2019-07-22 18:14:51 +0100
commita64ca9d14f8c197398badad39148b794757742b2 (patch)
tree2c74bc4a510a9142ccda4f5c2d0b8e6c86e690e9
parentc9a6b0faecb76984eb51754f6d188a87be025e8f (diff)
fix bug in screen init
-rw-r--r--gramscii.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/gramscii.c b/gramscii.c
index 1223a76..24841f3 100644
--- 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();
}