SMOLNET PORTAL home about changes
ifix read of command scripts and script-mode - 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 0522ef659553292f546fb1f3af43cfd2f4b07bb2	/scm/gramscii/commit/0522ef659553292f546fb1f3af43cfd2f4b07bb2.gph	bitreich.org	70
1parent a46183e96042cf751199f0a06d437a599f7f5bf8	/scm/gramscii/commit/a46183e96042cf751199f0a06d437a599f7f5bf8.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Mon, 12 Aug 2019 09:02:50 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ifix read of command scripts and script-mode	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |       2 +-	Err	bitreich.org	70
i  M gramscii.1                          |       4 ----	Err	bitreich.org	70
i  M gramscii.c                          |      28 ++++++++++++++++++----------	Err	bitreich.org	70
i  M gramscii.h                          |       2 +-	Err	bitreich.org	70
i  M lineset.c                           |       2 +-	Err	bitreich.org	70
i  M screen.c                            |      34 +++++++++++++++++--------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i6 files changed, 40 insertions(+), 32 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/TODO b/TODO	/scm/gramscii/file/TODO.gph	bitreich.org	70
i@@ -1,5 +1,4 @@	Err	bitreich.org	70
i + optimize redraws (redraw only the modified rectangle)	Err	bitreich.org	70
i-- fix bug in reading commands from files	Err	bitreich.org	70
i - add screen geometry option (-g 25x80?)	Err	bitreich.org	70
i - maybe move "text" mode to "t"	Err	bitreich.org	70
i - implement ellipse	Err	bitreich.org	70
i@@ -15,6 +14,7 @@	Err	bitreich.org	70
i - allow scrolling (both vertical and horizontal)	Err	bitreich.org	70
i - catch SIGWINCH and react appropriately (after scrolling is 	Err	bitreich.org	70
i   enabled)	Err	bitreich.org	70
i+* fix bug in reading commands from files	Err	bitreich.org	70
i * fix bug in visual crop	Err	bitreich.org	70
i * read file at point	Err	bitreich.org	70
i   * read output of command (!)	Err	bitreich.org	70
1diff --git a/gramscii.1 b/gramscii.1	/scm/gramscii/file/gramscii.1.gph	bitreich.org	70
i@@ -575,10 +575,6 @@ would automatically save the screen into "filename".	Err	bitreich.org	70
i gramscii currently manages only a fixed screen of the same size of the	Err	bitreich.org	70
i screen where it starts from. This will be changed in a future release to	Err	bitreich.org	70
i support scrolling and "virtual" screens of any (reasonable) size.	Err	bitreich.org	70
i-.PP	Err	bitreich.org	70
i-There is currently a bug with files read before accepting commands: the	Err	bitreich.org	70
i-result of the commands read from the files is not show immediately, and not	Err	bitreich.org	70
i-shown correctly.	Err	bitreich.org	70
i .SH AUTHORS	Err	bitreich.org	70
i gramscii is written and maintained by Vincenzo "KatolaZ" Nicosia	Err	bitreich.org	70
i <katolaz@freaknet.org>. You can use, copy, modify, and redistribute	Err	bitreich.org	70
1diff --git a/gramscii.c b/gramscii.c	/scm/gramscii/file/gramscii.c.gph	bitreich.org	70
i@@ -35,11 +35,12 @@ char *argv0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void cleanup(int s){	Err	bitreich.org	70
i         	Err	bitreich.org	70
i-        if (!silent)	Err	bitreich.org	70
i+        if (!script){	Err	bitreich.org	70
i                 printf("\033[;H\033[2J");	Err	bitreich.org	70
i+                tcsetattr(0, TCSANOW, &t1);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i                 dump_lines(screen, stdout);	Err	bitreich.org	70
i-        tcsetattr(0, TCSANOW, &t1);	Err	bitreich.org	70
i         fflush(stdout);	Err	bitreich.org	70
i         exit(s);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -53,11 +54,12 @@ void init(){	Err	bitreich.org	70
i         signal(SIGTERM, cleanup);	Err	bitreich.org	70
i         signal(SIGQUIT, cleanup);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        tcgetattr(0, &t1);	Err	bitreich.org	70
i-        t2 = t1;	Err	bitreich.org	70
i-        t2.c_lflag &= ~(ICANON | ECHO);	Err	bitreich.org	70
i-        tcsetattr(0, TCSANOW, &t2);	Err	bitreich.org	70
i-	Err	bitreich.org	70
i+        if (!script){	Err	bitreich.org	70
i+                tcgetattr(0, &t1);	Err	bitreich.org	70
i+                t2 = t1;	Err	bitreich.org	70
i+                t2.c_lflag &= ~(ICANON | ECHO);	Err	bitreich.org	70
i+                tcsetattr(0, TCSANOW, &t2);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i         init_screen();	Err	bitreich.org	70
i         x = 0;	Err	bitreich.org	70
i         y = 0;	Err	bitreich.org	70
i@@ -72,9 +74,12 @@ void init(){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void commands(FILE *fc){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        char c;	Err	bitreich.org	70
i+        int c;	Err	bitreich.org	70
i         while((c=fgetc(fc))!=EOF){	Err	bitreich.org	70
i                 if (!change_style(c) && !move_around(c, fc, 1)){	Err	bitreich.org	70
i+#ifdef DEBUG	Err	bitreich.org	70
i+                        fprintf(stderr, "got command: %c\n", c);	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i                         switch(c){	Err	bitreich.org	70
i                                 case 'i':	Err	bitreich.org	70
i                                         mode = TEXT;	Err	bitreich.org	70
i@@ -156,7 +161,7 @@ int main(int argc, char *argv[]){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         ARGBEGIN {	Err	bitreich.org	70
i                 case 's':	Err	bitreich.org	70
i-                        silent = 1;	Err	bitreich.org	70
i+                        script = 1;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i                 case 'h': /* FALLTHROUGH */	Err	bitreich.org	70
i                 default:	Err	bitreich.org	70
i@@ -171,12 +176,15 @@ int main(int argc, char *argv[]){	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 else {	Err	bitreich.org	70
i                         commands(fc);	Err	bitreich.org	70
i+                        fflush(fc);	Err	bitreich.org	70
i                         fclose(fc);	Err	bitreich.org	70
i                         redraw();	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 argv++;	Err	bitreich.org	70
i                 argc--;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        commands(stdin);	Err	bitreich.org	70
i+        if (!script)	Err	bitreich.org	70
i+                commands(stdin);	Err	bitreich.org	70
i+        cleanup(0);	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
1diff --git a/gramscii.h b/gramscii.h	/scm/gramscii/file/gramscii.h.gph	bitreich.org	70
i@@ -129,7 +129,7 @@ char modified; /* set to 1 if screen modified since last save */	Err	bitreich.org	70
i char fname[256];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-char silent; /* set to 1 in script-mode */	Err	bitreich.org	70
i+char script; /* set to 1 in script-mode */	Err	bitreich.org	70
i char autoend; /* set to 1 in auto-arrow mode */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /* Used by draw_arrow to identify the bounding box */	Err	bitreich.org	70
1diff --git a/lineset.c b/lineset.c	/scm/gramscii/file/lineset.c.gph	bitreich.org	70
i@@ -62,7 +62,7 @@ void ensure_num_lines(lineset_t *ls, int n){	Err	bitreich.org	70
i void dump_lines(lineset_t ls, FILE *f){	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i         for (i=0; i<ls.num ;i++){	Err	bitreich.org	70
i-                fprintf(f, "%d:%s\n", i, ls.l[i].s);	Err	bitreich.org	70
i+                fprintf(f, "%s\n", ls.l[i].s);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         fflush(f);	Err	bitreich.org	70
i }	Err	bitreich.org	70
1diff --git a/screen.c b/screen.c	/scm/gramscii/file/screen.c.gph	bitreich.org	70
i@@ -58,7 +58,7 @@ char get_mark(char dir){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void status_bar(){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         printf("\033[%d;1f\033[7m", HEIGHT+1);	Err	bitreich.org	70
i         printf("%*s", WIDTH-1, "");	Err	bitreich.org	70
i@@ -78,7 +78,7 @@ void status_bar(){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i char get_key(FILE *fc, char *msg){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return 0;	Err	bitreich.org	70
i         printf("\033[%d;1f\033[7m", HEIGHT+1);	Err	bitreich.org	70
i         printf("%*s", WIDTH, "");	Err	bitreich.org	70
i@@ -92,7 +92,7 @@ char get_key(FILE *fc, char *msg){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void get_string(FILE *fc, char *msg, char *s, int sz){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (!silent){	Err	bitreich.org	70
i+        if (!script){	Err	bitreich.org	70
i                 printf("\033[%d;1f\033[7m", HEIGHT+1);	Err	bitreich.org	70
i                 printf("%*s", WIDTH, "");	Err	bitreich.org	70
i                 printf("\033[%d;1f\033[7m", HEIGHT+1);	Err	bitreich.org	70
i@@ -106,9 +106,10 @@ void get_string(FILE *fc, char *msg, char *s, int sz){	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         fgets(s, sz, fc);	Err	bitreich.org	70
i         s[strlen(s)-1] = '\0';	Err	bitreich.org	70
i-        tcsetattr(0, TCSANOW, &t2);	Err	bitreich.org	70
i-        if (!silent)	Err	bitreich.org	70
i+        if (!script){	Err	bitreich.org	70
i+                tcsetattr(0, TCSANOW, &t2);	Err	bitreich.org	70
i                 fflush(stdout);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i int is_yes(char c){	Err	bitreich.org	70
i@@ -119,7 +120,7 @@ int is_yes(char c){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void show_cursor(){	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         printf("\033[%d;%df", y+1, x+1);	Err	bitreich.org	70
i         fflush(stdout);	Err	bitreich.org	70
i@@ -144,7 +145,7 @@ void set_cur(char c){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void draw_xy(int x, int y, char c){	Err	bitreich.org	70
i         /* FIXME: check if x and y are valid!!!! */	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         printf("\033[%d;%df",y+1,x+1);	Err	bitreich.org	70
i         putchar(c);	Err	bitreich.org	70
i@@ -152,7 +153,7 @@ void draw_xy(int x, int y, char c){	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void update_current(){	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         printf("\033[%d;%df",y+1,x+1);	Err	bitreich.org	70
i         putchar(screen.l[y].s[x]);	Err	bitreich.org	70
i@@ -226,7 +227,7 @@ void reset_styles(){	Err	bitreich.org	70
i void redraw(){	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         printf("\033[2J\033[1;1H");	Err	bitreich.org	70
i         for (i=0;i<HEIGHT;i++){	Err	bitreich.org	70
i@@ -254,9 +255,9 @@ void go_to(int where){	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-void handle_goto(char global){	Err	bitreich.org	70
i+void handle_goto(FILE *fc, char global){	Err	bitreich.org	70
i         char c;        	Err	bitreich.org	70
i-        c=getchar();	Err	bitreich.org	70
i+        c=fgetc(fc);	Err	bitreich.org	70
i         switch(c){	Err	bitreich.org	70
i                 case 'h':	Err	bitreich.org	70
i                         dir = DIR_L;	Err	bitreich.org	70
i@@ -348,6 +349,9 @@ int move_around(char c, FILE *fc, char global){	Err	bitreich.org	70
i                 mult += c - '0';	Err	bitreich.org	70
i                 return 0;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i+#ifdef DEBUG	Err	bitreich.org	70
i+        fprintf(stderr, "got char: %c\n", c);	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i         switch(c){	Err	bitreich.org	70
i                 case 27: /* control sequence? */	Err	bitreich.org	70
i                         c = get_escape(fc);	Err	bitreich.org	70
i@@ -382,11 +386,11 @@ int move_around(char c, FILE *fc, char global){	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i                 case 'g':	Err	bitreich.org	70
i #ifdef DEBUG	Err	bitreich.org	70
i-                        fprintf(stderr, "before global: step: %d x: %d y: %d\n", step, x, y);	Err	bitreich.org	70
i+                        fprintf(stderr, "before handle_goto: step: %d x: %d y: %d global: %d\n", step, x, y, global);	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
i-                        handle_goto(global);	Err	bitreich.org	70
i+                        handle_goto(fc, global);	Err	bitreich.org	70
i #ifdef DEBUG	Err	bitreich.org	70
i-                        fprintf(stderr, "after global: step: %d x: %d y: %d\n", step, x, y);	Err	bitreich.org	70
i+                        fprintf(stderr, "after handle_goto: step: %d x: %d y: %d global: %d\n", step, x, y, global);	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i                 default:	Err	bitreich.org	70
i@@ -398,7 +402,7 @@ int move_around(char c, FILE *fc, char global){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void set_video(int v){	Err	bitreich.org	70
i-        if (silent)	Err	bitreich.org	70
i+        if (script)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         printf("\033[%dm", v);	Err	bitreich.org	70
i         fflush(stdout);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/0522ef6595532...
Content-Typetext/plain; charset=utf-8