diff options
Diffstat (limited to 'gramscii.c')
-rw-r--r-- | gramscii.c | 28 |
1 files changed, 18 insertions, 10 deletions
@@ -35,11 +35,12 @@ char *argv0; void cleanup(int s){ - if (!silent) + if (!script){ printf("\033[;H\033[2J"); + tcsetattr(0, TCSANOW, &t1); + } else dump_lines(screen, stdout); - tcsetattr(0, TCSANOW, &t1); fflush(stdout); exit(s); } @@ -53,11 +54,12 @@ void init(){ signal(SIGTERM, cleanup); signal(SIGQUIT, cleanup); - tcgetattr(0, &t1); - t2 = t1; - t2.c_lflag &= ~(ICANON | ECHO); - tcsetattr(0, TCSANOW, &t2); - + if (!script){ + tcgetattr(0, &t1); + t2 = t1; + t2.c_lflag &= ~(ICANON | ECHO); + tcsetattr(0, TCSANOW, &t2); + } init_screen(); x = 0; y = 0; @@ -72,9 +74,12 @@ void init(){ void commands(FILE *fc){ - char c; + int c; while((c=fgetc(fc))!=EOF){ if (!change_style(c) && !move_around(c, fc, 1)){ +#ifdef DEBUG + fprintf(stderr, "got command: %c\n", c); +#endif switch(c){ case 'i': mode = TEXT; @@ -156,7 +161,7 @@ int main(int argc, char *argv[]){ ARGBEGIN { case 's': - silent = 1; + script = 1; break; case 'h': /* FALLTHROUGH */ default: @@ -171,12 +176,15 @@ int main(int argc, char *argv[]){ } else { commands(fc); + fflush(fc); fclose(fc); redraw(); } argv++; argc--; } - commands(stdin); + if (!script) + commands(stdin); + cleanup(0); return 0; } |