iremove atexit and replace exit() with cleanup() - 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 9127db5e322c1b0cd57adf90e8cfefad66020fe2 /scm/gramscii/commit/9127db5e322c1b0cd57adf90e8cfefad66020fe2.gph bitreich.org 70 1parent 6bf74b8e63315aeeac6fe4307e9e2679d334aca3 /scm/gramscii/commit/6bf74b8e63315aeeac6fe4307e9e2679d334aca3.gph bitreich.org 70 hAuthor: KatolaZ URL:mailto:katolaz@freaknet.org bitreich.org 70 iDate: Mon, 5 Aug 2019 08:06:19 +0100 Err bitreich.org 70 i Err bitreich.org 70 iremove atexit and replace exit() with cleanup() Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M gramscii.c | 11 +++-------- Err bitreich.org 70 i M gramscii.h | 2 ++ Err bitreich.org 70 i M lineset.c | 8 ++++---- Err bitreich.org 70 i M screen.c | 2 +- Err bitreich.org 70 i Err bitreich.org 70 i4 files changed, 10 insertions(+), 13 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/gramscii.c b/gramscii.c /scm/gramscii/file/gramscii.c.gph bitreich.org 70 i@@ -39,11 +39,7 @@ void cleanup(int s){ 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(0); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-void exit_cleanup(void){ Err bitreich.org 70 i- cleanup(0); Err bitreich.org 70 i+ exit(s); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i /*** Initialisation ***/ Err bitreich.org 70 i@@ -54,7 +50,6 @@ void init(){ Err bitreich.org 70 i signal(SIGINT, cleanup); Err bitreich.org 70 i signal(SIGTERM, cleanup); Err bitreich.org 70 i signal(SIGQUIT, cleanup); Err bitreich.org 70 i- atexit(exit_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@@ -132,7 +127,7 @@ void commands(FILE *fc){ Err bitreich.org 70 i case 'q': Err bitreich.org 70 i check_modified(fc);/** FALLTHROUGH **/ Err bitreich.org 70 i case 'Q': Err bitreich.org 70 i- exit(0); Err bitreich.org 70 i+ cleanup(0); Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i@@ -147,7 +142,7 @@ void commands(FILE *fc){ Err bitreich.org 70 i Err bitreich.org 70 i void usage(){ Err bitreich.org 70 i fprintf(stderr, "Usage: %s [-s] [-h] [file ...]\n", argv0); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i+ cleanup(1); Err bitreich.org 70 i } Err bitreich.org 70 i 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@@ -193,4 +193,6 @@ void copy_lines_to_ring(int y1, int y2, int which); Err bitreich.org 70 i void invalidate_undo(); Err bitreich.org 70 i /**/ Err bitreich.org 70 i Err bitreich.org 70 i+void cleanup(int); Err bitreich.org 70 i+ Err bitreich.org 70 i #endif Err bitreich.org 70 1diff --git a/lineset.c b/lineset.c /scm/gramscii/file/lineset.c.gph bitreich.org 70 i@@ -14,7 +14,7 @@ void ensure_line_length(line_t *l, int len){ Err bitreich.org 70 i tmp = realloc(l->s, (len+1) * 2 * sizeof(char)); Err bitreich.org 70 i if (!tmp){ Err bitreich.org 70 i fprintf(stderr, "Unable to allocate string\n"); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i+ cleanup(-1); Err bitreich.org 70 i } Err bitreich.org 70 i l->s = tmp; Err bitreich.org 70 i l->sz = (len + 1) * 2; Err bitreich.org 70 i@@ -29,7 +29,7 @@ void alloc_line(line_t *l){ Err bitreich.org 70 i tmp = malloc((l->sz) * sizeof(char)); Err bitreich.org 70 i if (tmp == NULL){ Err bitreich.org 70 i fprintf(stderr, "unable to allocate line\n"); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i+ cleanup(-1); Err bitreich.org 70 i } Err bitreich.org 70 i l->s = tmp; Err bitreich.org 70 i memset(l->s, BG, l->sz); Err bitreich.org 70 i@@ -46,7 +46,7 @@ void ensure_num_lines(lineset_t *ls, int n){ Err bitreich.org 70 i tmp = realloc(ls->l, (n + LONG_STEP) * sizeof(line_t)); Err bitreich.org 70 i if (tmp == NULL){ Err bitreich.org 70 i fprintf(stderr, "Unable to allocate memory for more lines"); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i+ cleanup(-1); Err bitreich.org 70 i } Err bitreich.org 70 i else { Err bitreich.org 70 i ls->l = tmp; Err bitreich.org 70 i@@ -147,7 +147,7 @@ void copy_lines_to_ring(int y1, int y2, int which){ 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+ cleanup(-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 1diff --git a/screen.c b/screen.c /scm/gramscii/file/screen.c.gph bitreich.org 70 i@@ -400,7 +400,7 @@ void init_screen(){ Err bitreich.org 70 i screen.num = HEIGHT; Err bitreich.org 70 i if (screen.l == NULL){ Err bitreich.org 70 i perror("allocating screen"); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i+ cleanup(-1); Err bitreich.org 70 i } Err bitreich.org 70 i for (i=0; i