SMOLNET PORTAL home about changes
iremove trailing blank lines in write_file - change check_bound - gramscii - A simple editor for ASCII box-and-arrow charts	Err	bitreich.org	70
1Log	/scm/gramscii/log.gph	bitreich.org	70
1Files	/scm/gramscii/files.gph	bitreich.org	70
1Refs	/scm/gramscii/refs.gph	bitreich.org	70
1Tags	/scm/gramscii/tag	bitreich.org	70
1README	/scm/gramscii/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/gramscii/file/COPYING.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 82a7c12e8338288ccb40d213fcc9e15d102aa968	/scm/gramscii/commit/82a7c12e8338288ccb40d213fcc9e15d102aa968.gph	bitreich.org	70
1parent 62713aaf65264950aecad9237d50e911d7dad893	/scm/gramscii/commit/62713aaf65264950aecad9237d50e911d7dad893.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Thu,  1 Aug 2019 16:42:36 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iremove trailing blank lines in write_file - change check_bound	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M draw.c                              |      33 ++++++++++++++++---------------	Err	bitreich.org	70
i  M files.c                             |      14 +++++++++++---	Err	bitreich.org	70
i  M gramscii.h                          |       6 ++++--	Err	bitreich.org	70
i  M lineset.c                           |       9 +++++++--	Err	bitreich.org	70
i  M main.c                              |       2 +-	Err	bitreich.org	70
i  M screen.c                            |      14 +++++++-------	Err	bitreich.org	70
i	Err	bitreich.org	70
i6 files changed, 47 insertions(+), 31 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/draw.c b/draw.c	/scm/gramscii/file/draw.c.gph	bitreich.org	70
i@@ -94,7 +94,7 @@ void get_text(FILE *fc){	Err	bitreich.org	70
i                         if (x >= WIDTH)	Err	bitreich.org	70
i                                 x = orig_x;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i-                check_bound();	Err	bitreich.org	70
i+                check_bound(&x, &y);	Err	bitreich.org	70
i                 status_bar();	Err	bitreich.org	70
i                 show_cursor();	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i@@ -150,7 +150,7 @@ void get_box(FILE *fc){	Err	bitreich.org	70
i                         goto update_box;	Err	bitreich.org	70
i                 if (!move_around(c, fc)) 	Err	bitreich.org	70
i                         continue;	Err	bitreich.org	70
i-                check_bound();	Err	bitreich.org	70
i+                check_bound(&x, &y);	Err	bitreich.org	70
i                 redraw();	Err	bitreich.org	70
i                 step = 1;	Err	bitreich.org	70
i update_box:	Err	bitreich.org	70
i@@ -166,19 +166,19 @@ update_box:	Err	bitreich.org	70
i         mode = MOVE;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-void draw_arrow(int x, int y, char *a, int a_len, int fix){	Err	bitreich.org	70
i+void draw_arrow(int xl, int yl, char *a, int a_len, int fix){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         int i, j, cur_dir;	Err	bitreich.org	70
i         char line;	Err	bitreich.org	70
i         void (*f)(int, int, char);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        a_miny = a_maxy = y;	Err	bitreich.org	70
i+        a_miny = a_maxy = yl;	Err	bitreich.org	70
i         if (fix == FIX)	Err	bitreich.org	70
i                 f = set_xy;	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i                 f = draw_xy;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        f(x,y,mark_st);	Err	bitreich.org	70
i+        f(xl, yl, mark_st);	Err	bitreich.org	70
i         if (!a_len){	Err	bitreich.org	70
i                 show_cursor();	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i@@ -189,27 +189,28 @@ void draw_arrow(int x, int y, char *a, int a_len, int fix){	Err	bitreich.org	70
i                         /* If we are switching between horizontal and vertical, put a "corner" */	Err	bitreich.org	70
i                         if (((cur_dir & DIR_HOR) && (a[i] & DIR_VER)) ||	Err	bitreich.org	70
i                             ((cur_dir & DIR_VER) && (a[i] & DIR_HOR))){	Err	bitreich.org	70
i-                                f(x,y,corner);	Err	bitreich.org	70
i+                                f(xl, yl, corner);	Err	bitreich.org	70
i                                 show_cursor();	Err	bitreich.org	70
i                         }	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 for(j=0; j<a[i+1]; j++){	Err	bitreich.org	70
i                         line = (a[i] & DIR_L) || (a[i] & DIR_R) ? line_h : line_v;	Err	bitreich.org	70
i-                        x += progr_x(a[i]);	Err	bitreich.org	70
i-                        y += progr_y(a[i]);	Err	bitreich.org	70
i-                        if (y < a_miny) a_miny = y;	Err	bitreich.org	70
i-                        if (y > a_maxy) a_maxy = y;	Err	bitreich.org	70
i-                        f(x, y, line);	Err	bitreich.org	70
i+                        xl += progr_x(a[i]);	Err	bitreich.org	70
i+                        yl += progr_y(a[i]);	Err	bitreich.org	70
i+                        check_bound(&xl, &yl);	Err	bitreich.org	70
i+                        if (yl < a_miny) a_miny = yl;	Err	bitreich.org	70
i+                        if (yl > a_maxy) a_maxy = yl;	Err	bitreich.org	70
i+                        f(xl, yl, line);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 /* f(x,y,mark_end);*/	Err	bitreich.org	70
i                 cur_dir = a[i];	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         if (autoend){	Err	bitreich.org	70
i                 if (cur_dir != DIR_N)	Err	bitreich.org	70
i-                        f(x,y, get_mark(cur_dir));	Err	bitreich.org	70
i+                        f(xl,yl, get_mark(cur_dir));	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         else 	Err	bitreich.org	70
i-                f(x,y,mark_end);	Err	bitreich.org	70
i+                f(xl,yl,mark_end);	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -235,7 +236,7 @@ void get_arrow(FILE *fc){	Err	bitreich.org	70
i                         goto update_arrow;	Err	bitreich.org	70
i                 if (!move_around(c, fc))	Err	bitreich.org	70
i                         continue;	Err	bitreich.org	70
i-                check_bound();	Err	bitreich.org	70
i+                check_bound(&x, &y);	Err	bitreich.org	70
i                 /* FIXME: if we are out of bound, do nothing? */	Err	bitreich.org	70
i                 if (arrow_len == arrow_sz){	Err	bitreich.org	70
i                         arrow_sz *=2;	Err	bitreich.org	70
i@@ -289,7 +290,7 @@ void erase(FILE *fc){	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i         while((c=fgetc(fc))!=EOF && c!=27 && c!= 'x' && c != '\n'){	Err	bitreich.org	70
i                 if (!move_around(c, fc)) continue;	Err	bitreich.org	70
i-                check_bound();	Err	bitreich.org	70
i+                check_bound(&x, &y);	Err	bitreich.org	70
i                 if (first || 	Err	bitreich.org	70
i                     (y != orig_y && ! opened) ||	Err	bitreich.org	70
i                     (y == orig_y && x != orig_x && !opened) ){	Err	bitreich.org	70
i@@ -354,7 +355,7 @@ void visual_box(FILE *fc){	Err	bitreich.org	70
i                                 goto vis_exit;	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i                 } 	Err	bitreich.org	70
i-                check_bound();	Err	bitreich.org	70
i+                check_bound(&x, &y);	Err	bitreich.org	70
i                 set_video(VIDEO_NRM);	Err	bitreich.org	70
i                 redraw();	Err	bitreich.org	70
i                 step = 1;	Err	bitreich.org	70
1diff --git a/files.c b/files.c	/scm/gramscii/file/files.c.gph	bitreich.org	70
i@@ -7,7 +7,7 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void write_file(FILE *fc){	Err	bitreich.org	70
i         FILE *fout;	Err	bitreich.org	70
i-        int i;	Err	bitreich.org	70
i+        int i, ne;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (!fname[0] || force_new){	Err	bitreich.org	70
i                 get_string(fc, "Write to: ", fname, 255);	Err	bitreich.org	70
i@@ -23,8 +23,16 @@ void write_file(FILE *fc){	Err	bitreich.org	70
i                 get_key(fc, "Error opening file.");	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i+        ne = 0;	Err	bitreich.org	70
i         for (i=0; i<HEIGHT; i++){	Err	bitreich.org	70
i-                fprintf(fout, "%s\n", screen.l[i].s);	Err	bitreich.org	70
i+                if (strlen(screen.l[i].s)){/* remove trailing blank lines */	Err	bitreich.org	70
i+                        /* put the empty lines preceeding the current non-empty one */	Err	bitreich.org	70
i+                        while (ne--)	Err	bitreich.org	70
i+                                fprintf(fout, "\n");	Err	bitreich.org	70
i+                        fprintf(fout, "%s\n", screen.l[i].s);	Err	bitreich.org	70
i+                        ne = 0;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                else ne++;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         fclose(fout);	Err	bitreich.org	70
i         modified = 0;	Err	bitreich.org	70
i@@ -51,7 +59,7 @@ void load_file(FILE *fc){	Err	bitreich.org	70
i         if ((fin=fopen(newfname, "r")) != NULL){	Err	bitreich.org	70
i                 i = 0;	Err	bitreich.org	70
i                 while((fgets(screen.l[i].s, WIDTH+1, fin)) != NULL && i<HEIGHT){	Err	bitreich.org	70
i-                        screen.l[i].lst = strlen(screen.l[i].s) - 1;	Err	bitreich.org	70
i+                        screen.l[i].lst = strlen(screen.l[i].s) - 2;	Err	bitreich.org	70
i                         screen.l[i].n = i;	Err	bitreich.org	70
i                         screen.l[i].s[strlen(screen.l[i].s)-1]='\0';	Err	bitreich.org	70
i                         i++;	Err	bitreich.org	70
1diff --git a/gramscii.h b/gramscii.h	/scm/gramscii/file/gramscii.h.gph	bitreich.org	70
i@@ -82,7 +82,9 @@ typedef struct{	Err	bitreich.org	70
i #define progr_x(d) ((d) == DIR_L ? -1 : (d) == DIR_R ? 1 : 0)	Err	bitreich.org	70
i #define progr_y(d) ((d) == DIR_U ? -1 : (d) == DIR_D ? 1 : 0)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#define DEBUG 1	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * #define DEBUG 1	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** global variables **/ 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -139,7 +141,7 @@ struct termios t1, t2, t3;	Err	bitreich.org	70
i void reset_styles();	Err	bitreich.org	70
i void redraw();	Err	bitreich.org	70
i int move_around(char c, FILE *fc);	Err	bitreich.org	70
i-void check_bound();	Err	bitreich.org	70
i+void check_bound(int *x, int *y);	Err	bitreich.org	70
i void status_bar();	Err	bitreich.org	70
i void show_cursor();	Err	bitreich.org	70
i void set_cur(char c);	Err	bitreich.org	70
1diff --git a/lineset.c b/lineset.c	/scm/gramscii/file/lineset.c.gph	bitreich.org	70
i@@ -144,13 +144,18 @@ void copy_lines_to_ring(int y1, int y2, int which){	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i                 idx = undo_cur + 1;	Err	bitreich.org	70
i         if (idx >= undo_sz - 1){	Err	bitreich.org	70
i-                undo_sz += 10;	Err	bitreich.org	70
i-                tmp = realloc(undo, undo_sz * sizeof(lineset_t));	Err	bitreich.org	70
i+                tmp = realloc(undo, (undo_sz + 10) * sizeof(lineset_t));	Err	bitreich.org	70
i                 if (tmp == NULL){	Err	bitreich.org	70
i                         fprintf(stderr, "Error allocating undo buffer");	Err	bitreich.org	70
i                         exit(1);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 undo = tmp;	Err	bitreich.org	70
i+                for (i=0; i<10; i++){	Err	bitreich.org	70
i+                        undo[undo_sz + i].sz = 0;	Err	bitreich.org	70
i+                        undo[undo_sz + i].l = NULL;	Err	bitreich.org	70
i+                        undo[undo_sz + i].num = 0;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                undo_sz += 10;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         ensure_num_lines(&(undo[idx]), y2 - y1 + 1);	Err	bitreich.org	70
i         for(i=y1; i<=y2; i++){	Err	bitreich.org	70
1diff --git a/main.c b/main.c	/scm/gramscii/file/main.c.gph	bitreich.org	70
i@@ -135,7 +135,7 @@ void commands(FILE *fc){	Err	bitreich.org	70
i                                         break;	Err	bitreich.org	70
i                         }	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i-                check_bound();	Err	bitreich.org	70
i+                check_bound(&x, &y);	Err	bitreich.org	70
i                 status_bar();	Err	bitreich.org	70
i                 show_cursor();	Err	bitreich.org	70
i                 step = 1;	Err	bitreich.org	70
1diff --git a/screen.c b/screen.c	/scm/gramscii/file/screen.c.gph	bitreich.org	70
i@@ -196,11 +196,11 @@ void erase_screen(){	Err	bitreich.org	70
i                 erase_line(i);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-void check_bound(){	Err	bitreich.org	70
i-        if (x<0) x=0;	Err	bitreich.org	70
i-        else if (x>=WIDTH) x = WIDTH-1;	Err	bitreich.org	70
i-        if (y<0) y=0;	Err	bitreich.org	70
i-        else if (y>=HEIGHT) y = HEIGHT -1;	Err	bitreich.org	70
i+void check_bound(int *x, int *y){	Err	bitreich.org	70
i+        if (*x<0) *x=0;	Err	bitreich.org	70
i+        else if (*x>=WIDTH) *x = WIDTH-1;	Err	bitreich.org	70
i+        if (*y<0) *y=0;	Err	bitreich.org	70
i+        else if (*y>=HEIGHT) *y = HEIGHT -1;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void reset_styles(){	Err	bitreich.org	70
i@@ -242,7 +242,7 @@ void go_to(int where){	Err	bitreich.org	70
i                         y = HEIGHT/2;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        check_bound();	Err	bitreich.org	70
i+        check_bound(&x, &y);	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -279,7 +279,7 @@ void handle_goto(){	Err	bitreich.org	70
i                         go_to(MIDDLE);	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        check_bound();	Err	bitreich.org	70
i+        check_bound(&x, &y);	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/82a7c12e83382...
Content-Typetext/plain; charset=utf-8