From ab85f11693311048c414ef4d8f9fdd3ff79b4ae6 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Mon, 28 Dec 2015 19:33:53 +0330 Subject: [PATCH] mk: print fields inside square brackets --- mk.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mk.c b/mk.c index 736648f..f011ad1 100644 --- a/mk.c +++ b/mk.c @@ -56,12 +56,11 @@ static int msg_stat(char *msg, long msz) return val[0]; } -static char *fieldformat(char *msg, long msz, char *hdr, int wid, int lev) +static char *fieldformat(char *msg, long msz, char *hdr, int wid) { struct sbuf *dst; int dst_wid; char *val, *val0, *end; - int i; val = msg_dec(msg, msz, hdr[0] == '~' ? hdr + 1 : hdr); if (!val) { val = malloc(1); @@ -75,14 +74,13 @@ static char *fieldformat(char *msg, long msz, char *hdr, int wid, int lev) val++; dst_wid = 0; if (!strcmp("~subject:", hdr)) { - if (lev && startswith(val, "re:")) { - val += 3; + while (startswith(val, "re:") || startswith(val, "fwd:")) { + sbuf_chr(dst, '+'); + dst_wid++; + val = strchr(val, ':') + 1; while (val < end && isspace((unsigned char) *val)) val++; } - dst_wid += lev; - for (i = 0; i < lev; i++) - sbuf_chr(dst, '.'); } while (val < end && (wid <= 0 || dst_wid < wid)) { int l = uc_len(val); @@ -127,7 +125,7 @@ int mk(char *argv[]) int *mids, *levs; struct mbox *mbox; char *ln[4] = {NULL}; - int i, j; + int i, j, k; int first = 0; int sort = 0; for (i = 0; argv[i] && argv[i][0] == '-'; i++) { @@ -177,12 +175,15 @@ int mk(char *argv[]) char *fmt = tok; char *hdr = tok; char *val; + int wid = atoi(fmt); while (isdigit((unsigned char) *hdr)) hdr++; printf("\t"); - val = fieldformat(msg, msz, hdr, - atoi(fmt), levs[i]); - printf("%s", val); + if (!strcmp("~subject:", hdr)) + for (k = 0; k < levs[i]; k++, wid--) + printf(" "); + val = fieldformat(msg, msz, hdr, wid); + printf("[%s]", val); free(val); } free(tok); -- 2.11.4.GIT