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 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 . 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