ifixes for escaping and printing - stagit-gopher - A git gopher frontend. (mirror) Err bitreich.org 70 hgit clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ URL:git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ bitreich.org 70 1Log /scm/stagit-gopher/log.gph bitreich.org 70 1Files /scm/stagit-gopher/files.gph bitreich.org 70 1Refs /scm/stagit-gopher/refs.gph bitreich.org 70 1Tags /scm/stagit-gopher/tag bitreich.org 70 1README /scm/stagit-gopher/file/README.gph bitreich.org 70 1LICENSE /scm/stagit-gopher/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit e46c746c435114ae3e7541ca93ffa7aacf4aaff3 /scm/stagit-gopher/commit/e46c746c435114ae3e7541ca93ffa7aacf4aaff3.gph bitreich.org 70 1parent daa814e5c59ef7dcadfe779b46bd305e0d93f7a1 /scm/stagit-gopher/commit/daa814e5c59ef7dcadfe779b46bd305e0d93f7a1.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Fri, 17 Nov 2017 16:06:51 +0100 Err bitreich.org 70 i Err bitreich.org 70 ifixes for escaping and printing Err bitreich.org 70 i Err bitreich.org 70 i- if the index or project description is empty don't print an empty line. Err bitreich.org 70 i- escape | in gph links. Err bitreich.org 70 i- when a column is not set / empty print it aligned. Err bitreich.org 70 i- pad text, then print it escaped. Err bitreich.org 70 i- print left-aligned headers of last column in a simpler way. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M stagit-gopher-index.c | 107 ++++++++++++++++++++----------- Err bitreich.org 70 i M stagit-gopher.c | 130 ++++++++++++++----------------- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 127 insertions(+), 110 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/stagit-gopher-index.c b/stagit-gopher-index.c /scm/stagit-gopher/file/stagit-gopher-index.c.gph bitreich.org 70 i@@ -25,17 +25,17 @@ static char *name = ""; Err bitreich.org 70 i #define pledge(p1,p2) 0 Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i-/* print `len' columns of characters. If string is shorter pad the rest Err bitreich.org 70 i+/* format `len' columns of characters. If string is shorter pad the rest Err bitreich.org 70 i * with characters `pad`. */ Err bitreich.org 70 i-void Err bitreich.org 70 i-printutf8pad(FILE *fp, const char *s, size_t len, int pad) Err bitreich.org 70 i+int Err bitreich.org 70 i+utf8pad(char *buf, size_t bufsiz, const char *s, size_t len, int pad) Err bitreich.org 70 i { Err bitreich.org 70 i wchar_t w; Err bitreich.org 70 i- size_t col = 0, i, slen; Err bitreich.org 70 i+ size_t col = 0, i, slen, siz = 0; Err bitreich.org 70 i int rl, wc; Err bitreich.org 70 i Err bitreich.org 70 i if (!len) Err bitreich.org 70 i- return; Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i Err bitreich.org 70 i slen = strlen(s); Err bitreich.org 70 i for (i = 0; i < slen && col < len + 1; i += rl) { Err bitreich.org 70 i@@ -43,43 +43,74 @@ printutf8pad(FILE *fp, const char *s, size_t len, int pad) Err bitreich.org 70 i break; Err bitreich.org 70 i if ((wc = wcwidth(w)) == -1) Err bitreich.org 70 i wc = 1; Err bitreich.org 70 i- col += (size_t)wc; Err bitreich.org 70 i+ col += wc; Err bitreich.org 70 i if (col >= len && s[i + rl]) { Err bitreich.org 70 i- fputs("\xe2\x80\xa6", fp); Err bitreich.org 70 i+ if (siz + 4 >= bufsiz) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ memcpy(&buf[siz], "\xe2\x80\xa6", 4); Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ if (siz + rl + 1 >= bufsiz) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ memcpy(&buf[siz], &s[i], rl); Err bitreich.org 70 i+ siz += rl; Err bitreich.org 70 i+ buf[siz] = '\0'; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ len -= col; Err bitreich.org 70 i+ if (siz + len + 1 >= bufsiz) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ memset(&buf[siz], pad, len); Err bitreich.org 70 i+ siz += len; Err bitreich.org 70 i+ buf[siz] = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Escape characters in text in geomyidae .gph format, Err bitreich.org 70 i+ newlines are ignored */ Err bitreich.org 70 i+void Err bitreich.org 70 i+gphtext(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ size_t i; Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (i = 0; *s && i < len; i++) { Err bitreich.org 70 i+ switch (s[i]) { Err bitreich.org 70 i+ case '\r': /* ignore CR */ Err bitreich.org 70 i+ case '\n': /* ignore LF */ Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '\t': Err bitreich.org 70 i+ fputs(" ", fp); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ fputc(s[i], fp); Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i- fwrite(&s[i], 1, rl, fp); Err bitreich.org 70 i } Err bitreich.org 70 i- for (; col < len; col++) Err bitreich.org 70 i- putc(pad, fp); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+/* Escape characters in links in geomyidae .gph format */ Err bitreich.org 70 i void Err bitreich.org 70 i-trim(char *buf, size_t bufsiz, const char *src) Err bitreich.org 70 i+gphlink(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i { Err bitreich.org 70 i- size_t d = 0, i, len, s; Err bitreich.org 70 i+ size_t i; Err bitreich.org 70 i Err bitreich.org 70 i- len = strlen(src); Err bitreich.org 70 i- for (s = 0; s < len && d < bufsiz - 1; s++) { Err bitreich.org 70 i- switch (src[s]) { Err bitreich.org 70 i+ for (i = 0; *s && i < len; i++) { Err bitreich.org 70 i+ switch (s[i]) { Err bitreich.org 70 i+ case '\r': /* ignore CR */ Err bitreich.org 70 i+ case '\n': /* ignore LF */ Err bitreich.org 70 i+ break; Err bitreich.org 70 i case '\t': Err bitreich.org 70 i- if (d + 8 >= bufsiz - 1) Err bitreich.org 70 i- goto end; Err bitreich.org 70 i- for (i = 0; i < 8; i++) Err bitreich.org 70 i- buf[d++] = ' '; Err bitreich.org 70 i+ fputs(" ", fp); Err bitreich.org 70 i break; Err bitreich.org 70 i- case '|': Err bitreich.org 70 i- case '\n': Err bitreich.org 70 i- case '\r': Err bitreich.org 70 i- buf[d++] = ' '; Err bitreich.org 70 i+ case '|': /* escape separators */ Err bitreich.org 70 i+ fputs("\\|", fp); Err bitreich.org 70 i break; Err bitreich.org 70 i default: Err bitreich.org 70 i- buf[d++] = src[s]; Err bitreich.org 70 i+ fputc(s[i], fp); Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i-end: Err bitreich.org 70 i- buf[d] = '\0'; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i@@ -111,16 +142,15 @@ printtimeshort(FILE *fp, const git_time *intime) Err bitreich.org 70 i void Err bitreich.org 70 i writeheader(FILE *fp) Err bitreich.org 70 i { Err bitreich.org 70 i- char buf[256]; Err bitreich.org 70 i- Err bitreich.org 70 i- trim(buf, sizeof(buf), description); Err bitreich.org 70 i- if (buf[0] == 't' || buf[0] == '[') Err bitreich.org 70 i- fputc('t', fp); Err bitreich.org 70 i- fprintf(fp, "%s\n\n", buf); Err bitreich.org 70 i+ if (description[0]) { Err bitreich.org 70 i+ putchar('t'); Err bitreich.org 70 i+ gphtext(fp, description, strlen(description)); Err bitreich.org 70 i+ fputs("\n\n", fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i fprintf(fp, "%-20.20s ", "Name"); Err bitreich.org 70 i fprintf(fp, "%-50.50s ", "Description"); Err bitreich.org 70 i- fprintf(fp, "%-16.16s\n", "Last commit"); Err bitreich.org 70 i+ fprintf(fp, "%s\n", "Last commit"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i@@ -155,16 +185,15 @@ writelog(FILE *fp) Err bitreich.org 70 i *p = '\0'; Err bitreich.org 70 i Err bitreich.org 70 i fputs("[1|", fp); Err bitreich.org 70 i- trim(buf, sizeof(buf), stripped_name); Err bitreich.org 70 i- printutf8pad(fp, buf, 20, ' '); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), stripped_name, 20, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i- trim(buf, sizeof(buf), description); Err bitreich.org 70 i- printutf8pad(fp, buf, 50, ' '); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), description, 50, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i if (author) Err bitreich.org 70 i printtimeshort(fp, &(author->when)); Err bitreich.org 70 i- trim(buf, sizeof(buf), stripped_name); Err bitreich.org 70 i- fprintf(fp, "|%s/%s/log.gph|server|port]\n", relpath, buf); Err bitreich.org 70 i+ fprintf(fp, "|%s/%s/log.gph|server|port]\n", relpath, stripped_name); Err bitreich.org 70 i Err bitreich.org 70 i git_commit_free(commit); Err bitreich.org 70 i err: Err bitreich.org 70 1diff --git a/stagit-gopher.c b/stagit-gopher.c /scm/stagit-gopher/file/stagit-gopher.c.gph bitreich.org 70 i@@ -69,17 +69,17 @@ static const char *cachefile; Err bitreich.org 70 i #define pledge(p1,p2) 0 Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i-/* print `len' columns of characters. If string is shorter pad the rest Err bitreich.org 70 i+/* format `len' columns of characters. If string is shorter pad the rest Err bitreich.org 70 i * with characters `pad`. */ Err bitreich.org 70 i-void Err bitreich.org 70 i-printutf8pad(FILE *fp, const char *s, size_t len, int pad) Err bitreich.org 70 i+int Err bitreich.org 70 i+utf8pad(char *buf, size_t bufsiz, const char *s, size_t len, int pad) Err bitreich.org 70 i { Err bitreich.org 70 i wchar_t w; Err bitreich.org 70 i- size_t col = 0, i, slen; Err bitreich.org 70 i+ size_t col = 0, i, slen, siz = 0; Err bitreich.org 70 i int rl, wc; Err bitreich.org 70 i Err bitreich.org 70 i if (!len) Err bitreich.org 70 i- return; Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i Err bitreich.org 70 i slen = strlen(s); Err bitreich.org 70 i for (i = 0; i < slen && col < len + 1; i += rl) { Err bitreich.org 70 i@@ -87,15 +87,28 @@ printutf8pad(FILE *fp, const char *s, size_t len, int pad) Err bitreich.org 70 i break; Err bitreich.org 70 i if ((wc = wcwidth(w)) == -1) Err bitreich.org 70 i wc = 1; Err bitreich.org 70 i- col += (size_t)wc; Err bitreich.org 70 i+ col += wc; Err bitreich.org 70 i if (col >= len && s[i + rl]) { Err bitreich.org 70 i- fputs("\xe2\x80\xa6", fp); Err bitreich.org 70 i- break; Err bitreich.org 70 i+ if (siz + 4 >= bufsiz) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ memcpy(&buf[siz], "\xe2\x80\xa6", 4); Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i } Err bitreich.org 70 i- fwrite(&s[i], 1, rl, fp); Err bitreich.org 70 i+ if (siz + rl + 1 >= bufsiz) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ memcpy(&buf[siz], &s[i], rl); Err bitreich.org 70 i+ siz += rl; Err bitreich.org 70 i+ buf[siz] = '\0'; Err bitreich.org 70 i } Err bitreich.org 70 i- for (; col < len; col++) Err bitreich.org 70 i- putc(pad, fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ len -= col; Err bitreich.org 70 i+ if (siz + len + 1 >= bufsiz) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ memset(&buf[siz], pad, len); Err bitreich.org 70 i+ siz += len; Err bitreich.org 70 i+ buf[siz] = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i@@ -277,35 +290,6 @@ xmlencode(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-void Err bitreich.org 70 i-trim(char *buf, size_t bufsiz, const char *src) Err bitreich.org 70 i-{ Err bitreich.org 70 i- size_t d = 0, i, len, s; Err bitreich.org 70 i- Err bitreich.org 70 i- len = strlen(src); Err bitreich.org 70 i- for (s = 0; s < len && d < bufsiz - 1; s++) { Err bitreich.org 70 i- switch (src[s]) { Err bitreich.org 70 i- case '\t': Err bitreich.org 70 i- if (d + 8 >= bufsiz - 1) Err bitreich.org 70 i- goto end; Err bitreich.org 70 i- for (i = 0; i < 8; i++) Err bitreich.org 70 i- buf[d++] = ' '; Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '\r': /* ignore CR */ Err bitreich.org 70 i- case '|': /* ignore separators here */ Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '\n': Err bitreich.org 70 i- buf[d++] = ' '; Err bitreich.org 70 i- break; Err bitreich.org 70 i- default: Err bitreich.org 70 i- buf[d++] = src[s]; Err bitreich.org 70 i- break; Err bitreich.org 70 i- } Err bitreich.org 70 i- } Err bitreich.org 70 i-end: Err bitreich.org 70 i- buf[d] = '\0'; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i /* Escape characters in text in geomyidae .gph format, with newlines */ Err bitreich.org 70 i void Err bitreich.org 70 i gphtextnl(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i@@ -316,7 +300,7 @@ gphtextnl(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i if (s[i] == '\n') Err bitreich.org 70 i n = 0; Err bitreich.org 70 i Err bitreich.org 70 i- /* escape 't' at the start of a line */ Err bitreich.org 70 i+ /* escape with 't' at the start of a line */ Err bitreich.org 70 i if (!n && (s[i] == 't' || s[i] == '[')) { Err bitreich.org 70 i fputc('t', fp); Err bitreich.org 70 i n = 1; Err bitreich.org 70 i@@ -340,10 +324,15 @@ gphtext(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i Err bitreich.org 70 i for (i = 0; *s && i < len; i++) { Err bitreich.org 70 i switch (s[i]) { Err bitreich.org 70 i- case '\r': Err bitreich.org 70 i- case '\n': break; Err bitreich.org 70 i- case '\t': fputs(" ", fp); break; Err bitreich.org 70 i- default: fputc(s[i], fp); Err bitreich.org 70 i+ case '\r': /* ignore CR */ Err bitreich.org 70 i+ case '\n': /* ignore LF */ Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '\t': Err bitreich.org 70 i+ fputs(" ", fp); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ fputc(s[i], fp); Err bitreich.org 70 i+ break; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i@@ -356,16 +345,15 @@ gphlink(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i Err bitreich.org 70 i for (i = 0; *s && i < len; i++) { Err bitreich.org 70 i switch (s[i]) { Err bitreich.org 70 i- case '\n': Err bitreich.org 70 i- /* in this context replace newline with space */ Err bitreich.org 70 i- fputc(' ', fp); Err bitreich.org 70 i- break; Err bitreich.org 70 i case '\r': /* ignore CR */ Err bitreich.org 70 i- case '|': /* ignore separators here */ Err bitreich.org 70 i+ case '\n': /* ignore LF */ Err bitreich.org 70 i break; Err bitreich.org 70 i case '\t': Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i break; Err bitreich.org 70 i+ case '|': /* escape separators */ Err bitreich.org 70 i+ fputs("\\|", fp); Err bitreich.org 70 i+ break; Err bitreich.org 70 i default: Err bitreich.org 70 i fputc(s[i], fp); Err bitreich.org 70 i break; Err bitreich.org 70 i@@ -575,12 +563,12 @@ printshowfile(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i if (strcmp(delta->old_file.path, delta->new_file.path)) { Err bitreich.org 70 i snprintf(filename, sizeof(filename), "%s -> %s", Err bitreich.org 70 i delta->old_file.path, delta->new_file.path); Err bitreich.org 70 i- trim(buf, sizeof(buf), filename); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), filename, 35, ' '); Err bitreich.org 70 i } else { Err bitreich.org 70 i- trim(buf, sizeof(buf), delta->old_file.path); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), delta->old_file.path, 35, ' '); Err bitreich.org 70 i } Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i- printutf8pad(fp, buf, 35, ' '); Err bitreich.org 70 i+ gphtext(fp, buf, strlen(buf)); Err bitreich.org 70 i Err bitreich.org 70 i add = ci->deltas[i]->addcount; Err bitreich.org 70 i del = ci->deltas[i]->delcount; Err bitreich.org 70 i@@ -655,16 +643,14 @@ writelogline(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i fputs("[1|", fp); Err bitreich.org 70 i if (ci->author) Err bitreich.org 70 i printtimeshort(fp, &(ci->author->when)); Err bitreich.org 70 i+ else Err bitreich.org 70 i+ fputs(" ", fp); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i- if (ci->summary) { Err bitreich.org 70 i- trim(buf, sizeof(buf), ci->summary); Err bitreich.org 70 i- printutf8pad(fp, buf, 50, ' '); Err bitreich.org 70 i- } Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), ci->summary ? ci->summary : "", 50, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i- if (ci->author) { Err bitreich.org 70 i- trim(buf, sizeof(buf), ci->author->name); Err bitreich.org 70 i- printutf8pad(fp, buf, 25, ' '); Err bitreich.org 70 i- } Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), ci->author ? ci->author->name : "", 25, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fprintf(fp, "|%s/commit/%s.gph", relpath, ci->oid); Err bitreich.org 70 i fputs("|server|port]\n", fp); Err bitreich.org 70 i } Err bitreich.org 70 i@@ -926,8 +912,8 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) Err bitreich.org 70 i fputs("[1|", fp); Err bitreich.org 70 i fputs(filemode(git_tree_entry_filemode(entry)), fp); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i- trim(buf, sizeof(buf), entrypath); Err bitreich.org 70 i- printutf8pad(fp, buf, 50, ' '); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), entrypath, 50, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i if (lc > 0) Err bitreich.org 70 i fprintf(fp, "%7dL", lc); Err bitreich.org 70 i@@ -938,8 +924,8 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) Err bitreich.org 70 i git_object_free(obj); Err bitreich.org 70 i } else if (!git_submodule_lookup(&module, repo, entryname)) { Err bitreich.org 70 i fputs("[1|m--------- ", fp); Err bitreich.org 70 i- trim(buf, sizeof(buf), entrypath); Err bitreich.org 70 i- printutf8pad(fp, buf, 50, ' '); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), entrypath, 50, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fprintf(fp, "|%s/file/.gitmodules.gph|server|port]\n", relpath); Err bitreich.org 70 i /* NOTE: linecount omitted */ Err bitreich.org 70 i git_submodule_free(module); Err bitreich.org 70 i@@ -1042,21 +1028,23 @@ writerefs(FILE *fp) Err bitreich.org 70 i fprintf(fp, "%s\n", titles[j]); Err bitreich.org 70 i fprintf(fp, " %-20.20s", "Name"); Err bitreich.org 70 i fprintf(fp, " %-16.16s", "Last commit date"); Err bitreich.org 70 i- fprintf(fp, " %-25.25s\n", "Author"); Err bitreich.org 70 i+ fprintf(fp, " %s\n", "Author"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i name = git_reference_shorthand(r); Err bitreich.org 70 i Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i- trim(buf, sizeof(buf), name); Err bitreich.org 70 i- printutf8pad(fp, buf, 20, ' '); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), name, 20, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i if (ci->author) Err bitreich.org 70 i printtimeshort(fp, &(ci->author->when)); Err bitreich.org 70 i+ else Err bitreich.org 70 i+ fputs(" ", fp); Err bitreich.org 70 i fputs(" ", fp); Err bitreich.org 70 i if (ci->author) { Err bitreich.org 70 i- trim(buf, sizeof(buf), ci->author->name); Err bitreich.org 70 i- printutf8pad(fp, buf, 25, ' '); Err bitreich.org 70 i+ utf8pad(buf, sizeof(buf), ci->author->name, 25, ' '); Err bitreich.org 70 i+ gphlink(fp, buf, strlen(buf)); Err bitreich.org 70 i } Err bitreich.org 70 i fputs("\n", fp); Err bitreich.org 70 i Err bitreich.org 70 i@@ -1204,7 +1192,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i Err bitreich.org 70 i fprintf(fp, "%-16.16s ", "Date"); Err bitreich.org 70 i fprintf(fp, "%-50.50s ", "Commit message"); Err bitreich.org 70 i- fprintf(fp, "%-25.25s\n", "Author"); Err bitreich.org 70 i+ fprintf(fp, "%s\n", "Author"); Err bitreich.org 70 i Err bitreich.org 70 i if (cachefile) { Err bitreich.org 70 i /* read from cache file (does not need to exist) */ Err bitreich.org 70 .