AmendHub

Download:

jcs

/

amend

/

amendments

/

148

committer: Use panic and warn, make diff_line a normal allocation

We were not gaining anything by making it a Handle

jcs made amendment 148 over 2 years ago
--- committer.c Fri Feb 16 14:09:58 2024 +++ committer.c Mon Mar 25 15:53:32 2024 @@ -86,7 +86,7 @@ committer_init(struct browser *browser) committer->win = NewWindow(0L, &bounds, CtoPstr(title), false, noGrowDocProc, (WindowPtr)-1L, true, 0); if (!committer) - err(1, "Can't create committer window"); + panic("Can't create committer window"); SetPort(committer->win); /* log message */ @@ -171,11 +171,8 @@ committer_close(struct focusable *focusable) committer->browser->committer = NULL; - if (committer->diff_line != NULL) { - DisposHandle(committer->diff_line); - committer->diff_line = NULL; - } - + if (committer->diff_line != NULL) + xfree(&committer->diff_line); if (committer->diffed_files != NULL) xfree(&committer->diffed_files); @@ -465,7 +462,7 @@ committer_generate_diff(struct committer *committer) file = repo_file_with_id(committer->browser->repo, selected_files[i]); if (file == NULL) - err(1, "Failed to find file in repo with id %d", + panic("Failed to find file in repo with id %d", selected_files[i]); if (all_files && !repo_file_changed(committer->browser->repo, @@ -511,7 +508,7 @@ done_diffing: if (committer->diff_adds == 0 && committer->diff_subs == 0) { if (!committer->canceled) - warnx("No changes detected"); + warn("No changes detected"); browser_close_committer(committer->browser); } } @@ -598,9 +595,8 @@ diff_output(const char *format, ...) panic("diff_output without committer_diffing"); if (committer_diffing->diff_line == NULL) { - committer_diffing->diff_line = xNewHandle(DIFF_LINE_SIZE); + committer_diffing->diff_line = xmalloc(DIFF_LINE_SIZE); committer_diffing->diff_line_pos = 0; - HLock(committer_diffing->diff_line); } last_pos = committer_diffing->diff_line_pos; @@ -610,24 +606,24 @@ diff_output(const char *format, ...) if (format[0] == '%' && format[1] == 'c' && format[2] == '\0') { /* avoid having to vsprintf just to append 1 character */ - (*(committer_diffing->diff_line))[last_pos] = va_arg(argptr, int); + committer_diffing->diff_line[last_pos] = va_arg(argptr, int); len = 1; } else - len = vsprintf(*(committer_diffing->diff_line) + last_pos, format, + len = vsprintf(committer_diffing->diff_line + last_pos, format, argptr); va_end(argptr); committer_diffing->diff_line_pos += len; if (committer_diffing->diff_line_pos >= DIFF_LINE_SIZE) - err(1, "diff line overflow!"); + panic("diff line overflow!"); - if (len == 1 && (*(committer_diffing->diff_line))[last_pos] != '\r') + if (len == 1 && committer_diffing->diff_line[last_pos] != '\r') return 1; for (i = last_pos; i < committer_diffing->diff_line_pos; i++) { - if (((char *)*(committer_diffing->diff_line))[i] == '\r') { - diff_append_line(*(committer_diffing->diff_line) + last_line, + if (committer_diffing->diff_line[i] == '\r') { + diff_append_line(committer_diffing->diff_line + last_line, i - last_line + 1, false); last_line = i + 1; } @@ -636,8 +632,8 @@ diff_output(const char *format, ...) if (last_line == committer_diffing->diff_line_pos) { committer_diffing->diff_line_pos = 0; } else if (last_line > 0) { - memmove(*(committer_diffing->diff_line), - *(committer_diffing->diff_line) + last_line, + memmove(committer_diffing->diff_line, + committer_diffing->diff_line + last_line, committer_diffing->diff_line_pos - last_line); committer_diffing->diff_line_pos -= last_line; } @@ -692,7 +688,7 @@ diff_chunk_write(void) committer_diffing->diff_te_len + committer_diffing->diff_chunk_pos); if (MemError()) - err(1, "Out of memory! Can't expand diff TE by %lu bytes.", + panic("Out of memory! Can't expand diff TE by %lu bytes.", committer_diffing->diff_chunk_pos); HLock((*(committer_diffing->diff_te))->hText); memcpy(*(*(committer_diffing->diff_te))->hText + @@ -718,11 +714,10 @@ diff_finish(void) if (committer_diffing->diff_line != NULL) { if (committer_diffing->diff_line_pos) - diff_append_line(*(committer_diffing->diff_line), + diff_append_line(committer_diffing->diff_line, committer_diffing->diff_line_pos, true); - DisposHandle(committer_diffing->diff_line); - committer_diffing->diff_line = NULL; + xfree(&committer_diffing->diff_line); } if (committer_diffing->diff_chunk != NULL) { --- committer.h Thu Jan 11 13:11:24 2024 +++ committer.h Thu Mar 21 09:27:25 2024 @@ -46,7 +46,7 @@ struct committer { short diff_subs; bool diff_too_big; #define DIFF_LINE_SIZE 512 - Handle diff_line; + char *diff_line; size_t diff_line_pos; #define DIFF_CHUNK_SIZE (1024 * 4) Handle diff_chunk;