diff -Naur tweak-3.02/actions.c tweak-3.02.patched/actions.c --- tweak-3.02/actions.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/actions.c 2021-09-07 14:21:21.913810300 -0400 @@ -112,11 +112,11 @@ display_write_str (question); display_refresh(); } - safe_update = TRUE; + safe_update = true; #endif c = display_getkey(); #if defined(unix) && !defined(GO32) - safe_update = FALSE; + safe_update = false; #endif if (c >= 'a' && c <= 'z') c += 'A'-'a'; @@ -130,32 +130,43 @@ return; /* don't even quit */ } } - finished = TRUE; + finished = true; } -static void act_save(void) { - static int backed_up = FALSE; +static bool act_save_internal(void) { + static bool backed_up = false; + if (look_mode) { + display_beep(); + strcpy (message, "Cannot save in LOOK mode!"); + return false; + } if (!backed_up) { if (!backup_file()) { display_beep(); strcpy (message, "Unable to back up file!"); - return; + return false; } - backed_up = TRUE; + backed_up = true; } if (!save_file()) { display_beep(); strcpy (message, "Unable to save file!"); - return; + return false; } - modified = FALSE; + modified = false; + return true; +} + +static void act_save(void) { + act_save_internal(); /* just discard the bool return value */ } static void act_exitsave(void) { - act_save(); - draw_scr(); /* update ** on status line */ - act_exit(); + if (act_save_internal()) { + draw_scr(); /* update ** on status line */ + act_exit(); + } } static void act_top (void) { @@ -294,7 +305,7 @@ display_beep(); sprintf(message, "Can't engage Insert mode when in %s mode", (look_mode ? "LOOK" : "FIX")); - insert_mode = FALSE; /* safety! */ + insert_mode = false; /* safety! */ } else insert_mode = !insert_mode; } @@ -307,7 +318,7 @@ } void act_self_ins(void) { - int insert = insert_mode; + bool insert = insert_mode; unsigned char c; if (look_mode) { @@ -352,17 +363,17 @@ buf_fetch_data(filedata, &c, 1, cur_pos); c &= 0xF0; c |= last_char; - insert = FALSE; + insert = false; break; } if (insert) { buf_insert_data(filedata, &c, 1, cur_pos); file_size++; - modified = TRUE; + modified = true; } else if (cur_pos < file_size) { buf_overwrite_data(filedata, &c, 1, cur_pos); - modified = TRUE; + modified = true; } else { display_beep(); strcpy(message, "End of file reached"); @@ -379,7 +390,7 @@ buf_delete (filedata, 1, cur_pos); file_size--; edit_type = !!edit_type; - modified = TRUE; + modified = true; } } @@ -391,7 +402,7 @@ buf_delete (filedata, 1, cur_pos); file_size--; edit_type = !!edit_type; - modified = TRUE; + modified = true; } } @@ -399,7 +410,7 @@ if (look_mode) { display_beep(); strcpy (message, "Can't cut or paste in LOOK mode"); - marking = FALSE; /* safety */ + marking = false; /* safety */ return; } marking = !marking; @@ -435,8 +446,8 @@ if (top_pos > cur_pos) top_pos = begline(cur_pos); edit_type = !!edit_type; - modified = TRUE; - marking = FALSE; + modified = true; + marking = false; } static void act_copy (void) { @@ -456,7 +467,7 @@ if (cutbuffer) buf_free (cutbuffer); cutbuffer = buf_copy (filedata, marksize, marktop); - marking = FALSE; + marking = false; } static void act_paste (void) { @@ -475,7 +486,7 @@ file_size -= cutsize; } buf_paste (filedata, cutbuffer, cur_pos); - modified = TRUE; + modified = true; cur_pos += cutsize; file_size += cutsize; edit_type = !!edit_type; @@ -494,9 +505,9 @@ static void act_goto (void) { char buffer[80]; fileoffset_t position, new_top; - int error; + bool error; - if (!get_str("Enter position to go to: ", buffer, FALSE)) + if (!get_str("Enter position to go to: ", buffer, false)) return; /* user break */ position = parse_num (buffer, &error); @@ -531,16 +542,16 @@ statfmt = decstatus; } -static int search_prompt(char *withdef, char *withoutdef) +static bool search_prompt(char *withdef, char *withoutdef) { char buffer[80]; int len; - if (!get_str(last_search ? withdef : withoutdef, buffer, TRUE)) - return 0; /* user break */ + if (!get_str(last_search ? withdef : withoutdef, buffer, true)) + return false; /* user break */ if (!last_search && !*buffer) { strcpy (message, "Search aborted."); - return 0; + return false; } if (!*buffer) { @@ -550,14 +561,14 @@ if (len == -1) { display_beep(); strcpy (message, "Invalid escape sequence in search string"); - return 0; + return false; } if (last_search) free_search(last_search); last_search = build_search (buffer, len); } - return 1; + return true; } static void act_search (void) { @@ -660,10 +671,10 @@ char prompt[80]; fileoffset_t w; fileoffset_t new_top; - int error; + bool error; sprintf (prompt, "Enter screen width in bytes (now %"OFF"d): ", width); - if (!get_str (prompt, buffer, FALSE)) + if (!get_str (prompt, buffer, false)) return; w = parse_num (buffer, &error); if (error) { @@ -686,11 +697,11 @@ char prompt[80]; fileoffset_t o; fileoffset_t new_top; - int error; + bool error; sprintf (prompt, "Enter start-of-file offset in bytes (now %"OFF"d): ", realoffset); - if (!get_str (prompt, buffer, FALSE)) + if (!get_str (prompt, buffer, false)) return; o = parse_num (buffer, &error); if (error) { diff -Naur tweak-3.02/btree.c tweak-3.02.patched/btree.c --- tweak-3.02/btree.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/btree.c 2021-09-07 14:21:21.902810301 -0400 @@ -47,7 +47,7 @@ * - user-supplied copy function. * - bt_add when element already exists. * - bt_del when element doesn't. - * - splitpos with before==TRUE. + * - splitpos with before==true. * - split() on sorted elements (but it should be fine). * - bt_replace, at all (it won't be useful until we get user read * properties). @@ -162,13 +162,6 @@ free(p); } -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - /* We could probably do with more compiler-specific branches of this #if. */ #if defined(__GNUC__) #define INLINE __inline @@ -274,7 +267,7 @@ /* * Determine whether a node is a leaf node or not. */ -static INLINE int bt_is_leaf(btree *bt, nodeptr n) +static INLINE bool bt_is_leaf(btree *bt, nodeptr n) { return n[0].na.p == NULL; } @@ -292,7 +285,7 @@ #else memset((char *)ret + bt->propoffset, 0, bt->propsize); #endif - testlock(TRUE, TRUE, ret); + testlock(true, true, ret); return ret; } @@ -301,7 +294,7 @@ */ static INLINE void bt_destroy_node(btree *bt, nodeptr n) { - testlock(TRUE, FALSE, n); + testlock(true, false, n); /* Free the property. */ bt->propmerge(bt->userstate, NULL, NULL, n + bt->maxdegree * 2 + 2); sfree(n); @@ -312,8 +305,8 @@ */ static INLINE nodeptr bt_reuse_node(btree *bt, nodeptr n, int nsubtrees) { - testlock(TRUE, FALSE, n); - testlock(TRUE, TRUE, n); + testlock(true, false, n); + testlock(true, true, n); n[bt->maxdegree*2-1].i = nsubtrees; return n; } @@ -405,10 +398,10 @@ if (addr.p && addr.p[bt->maxdegree*2+1].i > 1) { nodeptr clone = bt_clone_node(bt, addr.p); bt_set_child(bt, a, index, bt_node_addr(bt, clone)); - testlock(TRUE, TRUE, clone); + testlock(true, true, clone); return clone; } - testlock(TRUE, TRUE, addr.p); + testlock(true, true, addr.p); return addr.p; } static INLINE nodeptr bt_write_lock_root(btree *bt) @@ -417,21 +410,21 @@ if (addr.p && addr.p[bt->maxdegree*2+1].i > 1) { nodeptr clone = bt_clone_node(bt, addr.p); bt->root = bt_node_addr(bt, clone); - testlock(TRUE, TRUE, clone); + testlock(true, true, clone); return clone; } - testlock(TRUE, TRUE, addr.p); + testlock(true, true, addr.p); return addr.p; } static INLINE nodeptr bt_read_lock(btree *bt, node_addr a) { - testlock(FALSE, TRUE, a.p); + testlock(false, true, a.p); return a.p; } #define bt_read_lock_root(bt) (bt_read_lock(bt, (bt)->root)) #define bt_read_lock_child(bt,a,index) (bt_read_lock(bt,bt_child(bt,a,index))) -static INLINE void bt_write_relock(btree *bt, nodeptr n, int props) +static INLINE void bt_write_relock(btree *bt, nodeptr n, bool props) { int i, ns, count; @@ -443,8 +436,8 @@ for (i = 0; i < ns; i++) count += bt_child_count(bt, n, i); n[bt->maxdegree*2].i = count; - testlock(TRUE, FALSE, n); - testlock(TRUE, TRUE, n); + testlock(true, false, n); + testlock(true, true, n); /* * Update user read properties. @@ -477,13 +470,13 @@ } static INLINE node_addr bt_write_unlock_internal(btree *bt, nodeptr n, - int props) + bool props) { node_addr ret; bt_write_relock(bt, n, props); - testlock(TRUE, FALSE, n); + testlock(true, false, n); ret.p = n; return ret; @@ -491,7 +484,7 @@ static INLINE node_addr bt_write_unlock(btree *bt, nodeptr n) { - return bt_write_unlock_internal(bt, n, TRUE); + return bt_write_unlock_internal(bt, n, true); } static INLINE void bt_read_unlock(btree *bt, nodeptr n) @@ -500,7 +493,7 @@ * For trees in memory, we do nothing here, except run some * optional testing. */ - testlock(FALSE, FALSE, n); + testlock(false, false, n); } /* ---------------------------------------------------------------------- @@ -594,14 +587,14 @@ * searching for that element. * * Return value is either the index of the element, or the index of - * the subtree (both 0 upwards). `is_elt' returns FALSE or TRUE + * the subtree (both 0 upwards). `is_elt' returns false or true * respectively. * * Since this may be used by bt_find() with an alternative cmpfn_t, * we always pass the input element as the first argument to cmp. */ static int bt_lookup_cmp(btree *bt, nodeptr n, bt_element_t element, - cmpfn_t cmp, int *is_elt) + cmpfn_t cmp, bool *is_elt) { int mintree = 0, maxtree = bt_subtrees(bt, n)-1; @@ -610,7 +603,7 @@ int c = cmp(bt->userstate, element, bt_element(bt, n, elt)); if (c == 0) { - *is_elt = TRUE; + *is_elt = true; return elt; } else if (c < 0) { /* @@ -634,7 +627,7 @@ * to search next. */ assert(mintree == maxtree); - *is_elt = FALSE; + *is_elt = false; return mintree; } @@ -986,7 +979,8 @@ int relation, int *index) { nodeptr n, n2; - int child, is_elt; + int child; + bool is_elt; bt_element_t gotit; int pos = 0; @@ -1083,7 +1077,8 @@ int *index) { nodeptr n, n2; - int i, j, count, is_elt; + int i, j, count; + bool is_elt; void **props; int *counts; bt_element_t *elts; @@ -1294,7 +1289,8 @@ bt_element_t bt_add(btree *bt, bt_element_t element) { nodeptr n, n2; - int child, is_elt; + int child; + bool is_elt; int pos = 0; n = bt_read_lock_root(bt); @@ -1322,7 +1318,8 @@ { nodeptr n, c, c2, saved_n; nodeptr *nodes; - int nnodes, child, nroot, pos2, ends, st, splitpoint, saved_pos; + int nnodes, child, pos2, ends, st, splitpoint, saved_pos; + bool nroot; bt_element_t e, ret; /* @@ -1334,7 +1331,7 @@ nnodes = 0; n = bt_write_lock_root(bt); - nroot = TRUE; + nroot = true; saved_n = NULL; if (!n || pos < 0 || pos >= bt_node_count(bt, n)) { @@ -1405,7 +1402,7 @@ bt_shift_root(bt, n, bt_node_addr(bt, c)); nnodes--; /* don't leave it in nodes[]! */ n = NULL; - bt_write_relock(bt, c, TRUE); + bt_write_relock(bt, c, true); } else bt_write_unlock(bt, c); } else { @@ -1422,7 +1419,7 @@ if (n) { /* Recompute the counts in n so we can do lookups again. */ - bt_write_relock(bt, n, TRUE); + bt_write_relock(bt, n, true); /* Having done the transform, redo the position lookup. */ pos = pos2; @@ -1485,7 +1482,7 @@ /* Descend to the child and go round again. */ n = c; - nroot = FALSE; + nroot = false; } /* @@ -1725,7 +1722,7 @@ * Perform the healing process after a tree has been split. `rhs' * is set if the cut edge is the one on the right. */ -static void bt_split_heal(btree *bt, int rhs) +static void bt_split_heal(btree *bt, bool rhs) { nodeptr n; nodeptr *nodes; @@ -1881,15 +1878,15 @@ * which will sort all that out for us. */ while (nnodes-- > 0) { - bt_write_unlock_internal(bt1, lnodes[nnodes], FALSE); - bt_write_unlock_internal(bt2, rnodes[nnodes], FALSE); + bt_write_unlock_internal(bt1, lnodes[nnodes], false); + bt_write_unlock_internal(bt2, rnodes[nnodes], false); } /* * Then we make a healing pass down each side of the tree. */ - bt_split_heal(bt1, TRUE); - bt_split_heal(bt2, FALSE); + bt_split_heal(bt1, true); + bt_split_heal(bt2, false); ifree(lnodes); ifree(rnodes); @@ -1900,7 +1897,7 @@ /* * Split a tree at a numeric index. */ -btree *bt_splitpos(btree *bt, int index, int before) +btree *bt_splitpos(btree *bt, int index, bool before) { btree *ret; node_addr na; @@ -1932,15 +1929,16 @@ */ btree *bt_split(btree *bt, bt_element_t element, cmpfn_t cmp, int rel) { - int before, index; + bool before; + int index; assert(rel != BT_REL_EQ); /* has to be an inequality */ if (rel == BT_REL_GT || rel == BT_REL_GE) { - before = TRUE; + before = true; rel = (rel == BT_REL_GT ? BT_REL_LE : BT_REL_LT); } else { - before = FALSE; + before = false; } if (!bt_findrelpos(bt, element, cmp, rel, &index)) index = -1; @@ -1979,7 +1977,7 @@ n = bt_read_lock_root(bt); i = bt_subtrees(bt, n); bt_read_unlock(bt, n); - return (i == 2 ? TRUE : FALSE); + return (i == 2 ? true : false); } /* @@ -2394,7 +2392,7 @@ printf("splittest: %d\n", i); tree3 = BT_COPY(tree); testlock(-1, 0, NULL); - tree4 = bt_splitpos(tree3, i, 0); + tree4 = bt_splitpos(tree3, i, false); testlock(-1, 0, NULL); verifytree(tree3, array, i); verifytree(tree4, array+i, arraylen-i); diff -Naur tweak-3.02/btree.h tweak-3.02.patched/btree.h --- tweak-3.02/btree.h 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/btree.h 2021-09-07 14:21:21.903810301 -0400 @@ -31,6 +31,7 @@ #define BTREE_H #include /* for offsetof */ +#include #ifndef alignof #define alignof(typ) ( offsetof(struct { char c; typ t; }, t) ) @@ -47,7 +48,7 @@ typedef void (*propmergefn_t)(void *state, void *s1, void *s2, void *dest); typedef int (*searchfn_t)(void *tstate, void *sstate, int ntrees, void **props, int *counts, - bt_element_t *elts, int *is_elt); + bt_element_t *elts, bool *is_elt); enum { BT_REL_EQ, BT_REL_LT, BT_REL_LE, BT_REL_GT, BT_REL_GE @@ -77,7 +78,7 @@ bt_element_t bt_del(btree *bt, bt_element_t element); btree *bt_join(btree *bt1, btree *bt2); btree *bt_joinr(btree *bt1, btree *bt2); -btree *bt_splitpos(btree *bt, int index, int before); +btree *bt_splitpos(btree *bt, int index, bool before); btree *bt_split(btree *bt, bt_element_t element, cmpfn_t cmp, int rel); #endif /* BTREE_H */ diff -Naur tweak-3.02/buffer.c tweak-3.02.patched/buffer.c --- tweak-3.02/buffer.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/buffer.c 2021-09-07 14:21:21.917810299 -0400 @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -112,7 +113,7 @@ static int bufblksearch(void *tstate, void *sstate, int ntrees, void **props, int *counts, - bt_element_t *elts, int *is_elt) + bt_element_t *elts, bool *is_elt) { fileoffset_t *disttogo = (fileoffset_t *)sstate; fileoffset_t distsofar = 0; @@ -128,7 +129,7 @@ /* * Descend into this subtree. */ - *is_elt = FALSE; + *is_elt = false; return i; } @@ -142,7 +143,7 @@ * Select this element. */ *disttogo -= distsofar; - *is_elt = TRUE; + *is_elt = true; return i; } @@ -164,6 +165,16 @@ return index; } +static void fread_check(void *buf, size_t size, FILE *fp) +{ + if (fread(buf, 1, size, fp) != size) { + display_cleanup(); + fprintf(stderr, "Fatal error reading from file: %s\n", + strerror(errno)); + exit(1); + } +} + /* * Convert a file-data block of size at most BUFMAX into a * literal-data block. Returns the replacement block (the old one @@ -179,7 +190,7 @@ ret->filepos = 0; ret->len = blk->len; fseeko(blk->file->fp, blk->filepos, SEEK_SET); - fread(ret->data, blk->len, 1, blk->file->fp); + fread_check(ret->data, blk->len, blk->file->fp); return ret; } @@ -298,7 +309,7 @@ return index + 1; } -static btree *buf_bt_split(btree *bt, fileoffset_t pos, int before) +static btree *buf_bt_split(btree *bt, fileoffset_t pos, bool before) { int index = buf_bt_splitpoint(bt, pos); return bt_splitpos(bt, index, before); @@ -318,14 +329,14 @@ static void buf_insert_bt(buffer *buf, btree *bt, fileoffset_t pos) { - btree *right = buf_bt_split(buf->bt, pos, FALSE); + btree *right = buf_bt_split(buf->bt, pos, false); buf->bt = buf_bt_join(buf->bt, bt); buf->bt = buf_bt_join(buf->bt, right); } static int bufblklensearch(void *tstate, void *sstate, int ntrees, void **props, int *counts, - bt_element_t *elts, int *is_elt) + bt_element_t *elts, bool *is_elt) { fileoffset_t *output = (fileoffset_t *)sstate; fileoffset_t size = 0; @@ -347,7 +358,7 @@ *output = size; /* Actual return value doesn't matter */ - *is_elt = TRUE; + *is_elt = true; return 1; } @@ -417,7 +428,7 @@ if (blk->file) { fseeko(blk->file->fp, blk->filepos + poswithin, SEEK_SET); - fread(data, thislen, 1, blk->file->fp); + fread_check(data, thislen, blk->file->fp); } else { memcpy(data, blk->data + poswithin, thislen); } @@ -473,8 +484,8 @@ extern void buf_delete(buffer *buf, fileoffset_t len, fileoffset_t pos) { - btree *left = buf_bt_split(buf->bt, pos, TRUE); - btree *right = buf_bt_split(buf->bt, len, FALSE); + btree *left = buf_bt_split(buf->bt, pos, true); + btree *right = buf_bt_split(buf->bt, len, false); bt_free(buf->bt); @@ -490,8 +501,8 @@ extern buffer *buf_cut(buffer *buf, fileoffset_t len, fileoffset_t pos) { - btree *left = buf_bt_split(buf->bt, pos, TRUE); - btree *right = buf_bt_split(buf->bt, len, FALSE); + btree *left = buf_bt_split(buf->bt, pos, true); + btree *right = buf_bt_split(buf->bt, len, false); btree *ret = buf->bt; buf->bt = buf_bt_join(left, right); @@ -501,8 +512,8 @@ extern buffer *buf_copy(buffer *buf, fileoffset_t len, fileoffset_t pos) { - btree *left = buf_bt_split(buf->bt, pos, TRUE); - btree *right = buf_bt_split(buf->bt, len, FALSE); + btree *left = buf_bt_split(buf->bt, pos, true); + btree *right = buf_bt_split(buf->bt, len, false); btree *ret = bt_clone(buf->bt); buf->bt = buf_bt_join(left, buf->bt); diff -Naur tweak-3.02/curses.c tweak-3.02.patched/curses.c --- tweak-3.02/curses.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/curses.c 2021-09-07 14:21:21.918810299 -0400 @@ -61,7 +61,7 @@ #define MAXCOLOURS 32 int attrs[MAXCOLOURS]; -void display_define_colour(int colour, int fg, int bg, int reverse) +void display_define_colour(int colour, int fg, int bg, bool reverse) { static int colours[8] = { COLOR_BLACK, @@ -117,24 +117,28 @@ schedule_update(); continue; } + if (ret == ERR) { + /* A failure to read from standard input is fatal */ + exit(1); + } return ret; } } -int display_input_to_flush(void) +bool display_input_to_flush(void) { int ret; if (last_getch != ERR) - return TRUE; + return true; nodelay(stdscr, 1); ret = getch(); nodelay(stdscr, 0); if (ret == ERR) - return FALSE; + return false; last_getch = ret; - return TRUE; + return true; } void display_post_error(void) diff -Naur tweak-3.02/keytab.c tweak-3.02.patched/keytab.c --- tweak-3.02/keytab.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/keytab.c 2021-09-07 14:21:21.920810299 -0400 @@ -61,16 +61,33 @@ /* * Format an ASCII code into a printable description of the key stroke. */ -static void strkey (char *s, int k) { - k &= 255; /* force unsigned */ - if (k==27) - strcpy(s, " ESC"); - else if (k<32 || k==127) - sprintf(s, " ^%c", k ^ 64); - else if (k<127) - sprintf(s, " %c", k); - else - sprintf(s, " <0x%2X>", k); +struct strkey_state { + char *s, *end; + bool truncated; +}; +static void strkey (struct strkey_state *sks, int k) { + char thisbuf[32]; + + if (sks->truncated) + return; + + if (sks->end - sks->s < 16) { + sks->truncated = true; + strcpy(thisbuf, " ..."); + } else { + k &= 255; /* force unsigned */ + if (k==27) + strcpy(thisbuf, " ESC"); + else if (k<32 || k==127) + sprintf(thisbuf, " ^%c", k ^ 64); + else if (k<127) + sprintf(thisbuf, " %c", k); + else + sprintf(thisbuf, " <0x%2X>", k); + } + + strcpy(sks->s, thisbuf); + sks->s += strlen(sks->s); } /* @@ -82,19 +99,25 @@ #if defined(unix) && !defined(GO32) if (update_required) update(); - safe_update = TRUE; + safe_update = true; #endif last_char = display_getkey(); #if defined(unix) && !defined(GO32) - safe_update = FALSE; + safe_update = false; #endif strcpy(message, "Unknown key sequence"); - strkey(message+strlen(message), last_char); + + struct strkey_state sks; + sks.s = message + strlen(message); + sks.end = message + sizeof(message); + sks.truncated = false; + + strkey(&sks, last_char); kt = base[(unsigned char) last_char]; if (!kt) { display_beep(); while (display_input_to_flush()) - strkey(message+strlen(message), display_getkey()); + strkey(&sks, display_getkey()); return; } @@ -102,18 +125,18 @@ #if defined(unix) && !defined(GO32) if (update_required) update(); - safe_update = TRUE; + safe_update = true; #endif last_char = display_getkey(); #if defined(unix) && !defined(GO32) - safe_update = FALSE; + safe_update = false; #endif - strkey(message+strlen(message), last_char); + strkey(&sks, last_char); kt = kt->e.extended[(unsigned char) last_char]; if (!kt) { display_beep(); while (display_input_to_flush()) - strkey(message+strlen(message), display_getkey()); + strkey(&sks, display_getkey()); return; } } diff -Naur tweak-3.02/main.c tweak-3.02.patched/main.c --- tweak-3.02/main.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/main.c 2021-09-07 14:21:21.903810301 -0400 @@ -200,20 +200,20 @@ char *pname; char *filename = NULL; buffer *filedata, *cutbuffer = NULL; -int fix_mode = FALSE; -int look_mode = FALSE; -int eager_mode = FALSE; -int insert_mode = FALSE; +bool fix_mode = false; +bool look_mode = false; +bool eager_mode = false; +bool insert_mode = false; int edit_type = 1; /* 1,2 are hex digits, 0=ascii */ -int finished = FALSE; -int marking = FALSE; -int modified = FALSE; -int new_file = FALSE; /* shouldn't need initialisation - +bool finished = false; +bool marking = false; +bool modified = false; +bool new_file = false; /* shouldn't need initialisation - * but let's not take chances :-) */ fileoffset_t width = 16; fileoffset_t realoffset = 0, offset = 16; -int ascii_enabled = TRUE; +bool ascii_enabled = true; fileoffset_t file_size = 0, top_pos = 0, cur_pos = 0, mark_point = 0; @@ -284,13 +284,13 @@ } break; case 'f': case 'F': - fix_mode = TRUE; + fix_mode = true; break; case 'l': case 'L': - look_mode = TRUE; + look_mode = true; break; case 'e': case 'E': - eager_mode = TRUE; + eager_mode = true; break; case 'D': write_default_rc(); @@ -339,11 +339,11 @@ "Width reduced to %"OFF"d to fit on the screen", width); } if (4*width+14 > display_cols) { - ascii_enabled = FALSE; + ascii_enabled = false; if (edit_type == 0) edit_type = 1; /* force to hex mode */ } else - ascii_enabled = TRUE; + ascii_enabled = true; offset = realoffset % width; if (!offset) offset = width; @@ -358,11 +358,11 @@ display_setup(); - display_define_colour(COL_BUFFER, -1, -1, FALSE); - display_define_colour(COL_SELECT, 0, 7, TRUE); - display_define_colour(COL_STATUS, 11, 4, TRUE); - display_define_colour(COL_ESCAPE, 9, 0, FALSE); - display_define_colour(COL_INVALID, 11, 0, FALSE); + display_define_colour(COL_BUFFER, -1, -1, false); + display_define_colour(COL_SELECT, 0, 7, true); + display_define_colour(COL_STATUS, 11, 4, true); + display_define_colour(COL_ESCAPE, 9, 0, false); + display_define_colour(COL_INVALID, 11, 0, false); for (i=0; i<256; i++) { sprintf(hex[i], "%02X", i); @@ -412,7 +412,7 @@ "opened %s (size %"OFF"d == 0x%"OFF"X).", fname, file_size, file_size); } - new_file = FALSE; + new_file = false; } else { if (look_mode || fix_mode) { fprintf(stderr, "%s: file %s not found, and %s mode active\n", @@ -421,19 +421,19 @@ } filedata = buf_new_empty(); snprintf(message, sizeof(message), "New file %s.", fname); - new_file = TRUE; + new_file = true; } } /* - * Save the file. Return TRUE on success, FALSE on error. + * Save the file. Return true on success, false on error. */ -int save_file (void) { +bool save_file (void) { FILE *fp; fileoffset_t pos = 0; if (look_mode) - return FALSE; /* do nothing! */ + return false; /* do nothing! */ if ( (fp = fopen (filename, "wb")) ) { static char buffer[SAVE_BLKSIZ]; @@ -446,25 +446,25 @@ buf_fetch_data (filedata, buffer, size, pos); if (size != fwrite (buffer, 1, size, fp)) { fclose (fp); - return FALSE; + return false; } pos += size; } } else - return FALSE; + return false; fclose (fp); - return TRUE; + return true; } /* * Make a backup of the file, if such has not already been done. - * Return TRUE on success, FALSE on error. + * Return true on success, false on error. */ -int backup_file (void) { +bool backup_file (void) { char backup_name[FILENAME_MAX]; if (new_file) - return TRUE; /* unnecessary - pretend it's done */ + return true; /* unnecessary - pretend it's done */ strcpy (backup_name, filename); #if defined(unix) && !defined(GO32) strcat (backup_name, ".bak"); @@ -498,7 +498,7 @@ int scrsize, scroff, llen, i, j; fileoffset_t currpos; fileoffset_t marktop, markbot; - int mark; + bool mark; char *p; unsigned char c, *q; char *linebuf; @@ -657,15 +657,15 @@ display_refresh (); } -volatile int safe_update, update_required; +volatile bool safe_update, update_required; void update (void); /* - * Get a string, in the "minibuffer". Return TRUE on success, FALSE + * Get a string, in the "minibuffer". Return true on success, false * on break. Possibly syntax-highlight the entered string for * backslash-escapes, depending on the "highlight" parameter. */ -int get_str (char *prompt, char *buf, int highlight) { +bool get_str (char *prompt, char *buf, bool highlight) { int maxlen = 79 - strlen(prompt); /* limit to 80 - who cares? :) */ int len = 0; int c; @@ -702,17 +702,17 @@ display_refresh(); if (update_required) update(); - safe_update = TRUE; + safe_update = true; c = display_getkey(); - safe_update = FALSE; + safe_update = false; if (c == 13 || c == 10) { buf[len] = '\0'; - return TRUE; + return true; } else if (c == 27 || c == 7) { display_beep(); display_post_error(); snprintf(message, sizeof(message), "User Break!"); - return FALSE; + return false; } if (c >= 32 && c <= 126) { @@ -794,12 +794,12 @@ if (safe_update) update(); else - update_required = TRUE; + update_required = true; } -fileoffset_t parse_num (char *buffer, int *error) { +fileoffset_t parse_num (char *buffer, bool *error) { if (error) - *error = FALSE; + *error = false; if (!buffer[strspn(buffer, "0123456789")]) { /* interpret as decimal */ return ATOOFF(buffer); @@ -812,6 +812,6 @@ } else { return 0; if (error) - *error = TRUE; + *error = true; } } diff -Naur tweak-3.02/rcfile.c tweak-3.02.patched/rcfile.c --- tweak-3.02/rcfile.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/rcfile.c 2021-09-07 14:21:21.903810301 -0400 @@ -146,7 +146,7 @@ char rcbuffer[256]; char rcname[FILENAME_MAX]; int lineno = 0; - int errors = FALSE, errors_here; + bool errors = false, errors_here; #if defined(unix) && !defined(GO32) rcname[0] = '\0'; @@ -200,7 +200,7 @@ strcpy (rcbuffer, *p++); } lineno++; - errors_here = FALSE; + errors_here = false; /* * Now we have a line from the .rc file, wherever it's @@ -242,7 +242,7 @@ else { fprintf(stderr, "%s: no key sequence after \"bind\" command" " on line %d of "RCNAME, pname, lineno); - errors = TRUE; + errors = true; continue; } @@ -255,8 +255,8 @@ if (!*++q) { fprintf(stderr, "%s: nothing follows `^' on line %d" " of "RCNAME, pname, lineno); - errors = TRUE; - errors_here = TRUE; + errors = true; + errors_here = true; } else { *s++ = *q++ ^ 0x40; } @@ -264,8 +264,8 @@ if (!*++q) { fprintf(stderr, "%s: nothing follows `\\' on line %d" " of "RCNAME, pname, lineno); - errors = TRUE; - errors_here = TRUE; + errors = true; + errors_here = true; } else if (*q == '\\' || *q == '^') { *s++ = *q++; } else if (isxdigit((unsigned char)*q) && @@ -278,8 +278,8 @@ } else { fprintf(stderr, "%s: badly formed `\\' sequence on" " line %d of "RCNAME, pname, lineno); - errors = TRUE; - errors_here = TRUE; + errors = true; + errors_here = true; } } else *s++ = *q++; @@ -307,7 +307,7 @@ fprintf(stderr, "%s: unrecognised key action \"%s\"" " at line %d of "RCNAME"\n", pname, r, lineno); - errors = TRUE; + errors = true; } } else if (!strcmp(q, "width")) { width = atoi(r); @@ -317,7 +317,7 @@ fprintf(stderr, "%s: unrecognised "RCNAME" directive \"%s\"" " at line %d of "RCNAME"\n", pname, q, lineno); - errors = TRUE; + errors = true; } } if (errors) diff -Naur tweak-3.02/slang.c tweak-3.02.patched/slang.c --- tweak-3.02/slang.c 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/slang.c 2021-09-07 14:21:21.918810299 -0400 @@ -69,7 +69,7 @@ exit (1); } SLang_set_abort_signal (NULL); - SLtt_Use_Ansi_Colors = TRUE; + SLtt_Use_Ansi_Colors = true; get_screen_size (); if (SLsmg_init_smg () < 0) { @@ -109,7 +109,7 @@ SLsmg_write_nchars(str, len); } -void display_define_colour(int colour, int fg, int bg, int reverse) +void display_define_colour(int colour, int fg, int bg, bool reverse) { static char *colours[16] = { "black", "red", "green", "brown", @@ -142,10 +142,15 @@ int display_getkey(void) { - return SLang_getkey(); + int key = SLang_getkey(); + if (key == SLANG_GETKEY_ERROR) { + /* A failure to read from standard input is fatal */ + exit(1); + } + return key; } -int display_input_to_flush(void) +bool display_input_to_flush(void) { return SLang_input_pending(0); } @@ -153,7 +158,7 @@ void display_post_error(void) { SLKeyBoard_Quit = 0; - SLang_Error = 0; + SLang_set_error (0); } void display_recheck_size(void) diff -Naur tweak-3.02/tweak.h tweak-3.02.patched/tweak.h --- tweak-3.02/tweak.h 2016-03-22 17:12:51.000000000 -0400 +++ tweak-3.02.patched/tweak.h 2021-09-07 14:21:21.903810301 -0400 @@ -16,12 +16,7 @@ #endif -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif +#include #define EVER ;; @@ -80,23 +75,25 @@ extern char decstatus[], hexstatus[], *statfmt; extern char last_char, *pname, *filename; extern buffer *filedata, *cutbuffer; -extern int fix_mode, look_mode, insert_mode, edit_type, finished, marking; +extern bool fix_mode, look_mode, insert_mode, finished, marking; +extern int edit_type; extern fileoffset_t file_size, top_pos, cur_pos, mark_point; -extern int scrlines, modified, new_file; +extern int scrlines; +extern bool modified, new_file; extern fileoffset_t width, offset, realoffset; -extern int ascii_enabled; +extern bool ascii_enabled; #ifdef unix -extern volatile int safe_update, update_required; +extern volatile bool safe_update, update_required; extern void update (void); #endif extern void fix_offset(void); -extern fileoffset_t parse_num (char *buffer, int *error); +extern fileoffset_t parse_num (char *buffer, bool *error); extern void draw_scr (void); -extern int backup_file (void); -extern int save_file (void); +extern bool backup_file (void); +extern bool save_file (void); extern void act_self_ins (void); extern keyact parse_action (char *); @@ -107,7 +104,7 @@ extern Search *build_search (char *, int); void free_search(Search *s); -extern int get_str (char *, char *, int); +extern bool get_str (char *, char *, bool); extern int parse_quoted (char *); extern void suspend (void); @@ -137,11 +134,11 @@ extern void display_refresh(void); extern void display_write_str(char *str); extern void display_write_chars(char *str, int len); -extern void display_define_colour(int colour, int fg, int bg, int reverse); +extern void display_define_colour(int colour, int fg, int bg, bool reverse); extern void display_set_colour(int colour); extern void display_clear_to_eol(void); extern int display_getkey(void); -extern int display_input_to_flush(void); +extern bool display_input_to_flush(void); extern void display_post_error(void); extern void display_recheck_size(void);