Changeset 5137:0c47f7b06158

Show
Ignore:
Timestamp:
2007-04-11 22:36:24 (20 months ago)
Author:
Michael Elkins <me@…>
Branch:
HEAD
Message:

Pass column value recursively when expanding format strings (bug #2840).

Files:
11 modified

Legend:

Unmodified
Added
Removed
  • addrbook.c

    r5010 r5137  
    4444 
    4545static const char * 
    46 alias_format_str (char *dest, size_t destlen, char op, const char *src, 
     46alias_format_str (char *dest, size_t destlen, size_t col, char op, const char *src, 
    4747                  const char *fmt, const char *ifstring, const char *elsestring, 
    4848                  unsigned long data, format_flag flags) 
     
    8181static void alias_entry (char *s, size_t slen, MUTTMENU *m, int num) 
    8282{ 
    83   mutt_FormatString (s, slen, NONULL (AliasFmt), alias_format_str, (unsigned long) ((ALIAS **) m->data)[num], M_FORMAT_ARROWCURSOR); 
     83  mutt_FormatString (s, slen, 0, NONULL (AliasFmt), alias_format_str, (unsigned long) ((ALIAS **) m->data)[num], M_FORMAT_ARROWCURSOR); 
    8484} 
    8585 
  • browser.c

    r5104 r5137  
    142142 
    143143static const char * 
    144 folder_format_str (char *dest, size_t destlen, char op, const char *src, 
     144folder_format_str (char *dest, size_t destlen, size_t col, char op, const char *src, 
    145145                   const char *fmt, const char *ifstring, const char *elsestring, 
    146146                   unsigned long data, format_flag flags) 
     
    301301 
    302302  if (optional) 
    303     mutt_FormatString (dest, destlen, ifstring, folder_format_str, data, 0); 
     303    mutt_FormatString (dest, destlen, col, ifstring, folder_format_str, data, 0); 
    304304  else if (flags & M_FORMAT_OPTIONAL) 
    305     mutt_FormatString (dest, destlen, elsestring, folder_format_str, data, 0); 
     305    mutt_FormatString (dest, destlen, col, elsestring, folder_format_str, data, 0); 
    306306 
    307307  return (src); 
     
    484484  folder.num = num; 
    485485   
    486   mutt_FormatString (s, slen, NONULL(FolderFormat), folder_format_str,  
     486  mutt_FormatString (s, slen, 0, NONULL(FolderFormat), folder_format_str,  
    487487      (unsigned long) &folder, M_FORMAT_ARROWCURSOR); 
    488488} 
  • compose.c

    r5010 r5137  
    100100static void snd_entry (char *b, size_t blen, MUTTMENU *menu, int num) 
    101101{ 
    102     mutt_FormatString (b, blen, NONULL (AttachFormat), mutt_attach_fmt, 
     102    mutt_FormatString (b, blen, 0, NONULL (AttachFormat), mutt_attach_fmt, 
    103103            (unsigned long)(((ATTACHPTR **) menu->data)[num]), 
    104104            M_FORMAT_STAT_FILE | M_FORMAT_ARROWCURSOR); 
     
    407407 
    408408/* prototype for use below */ 
    409 static void compose_status_line (char *buf, size_t buflen, MUTTMENU *menu,  
     409static void compose_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu,  
    410410      const char *p); 
    411411 
     
    423423 
    424424static const char * 
    425 compose_format_str (char *buf, size_t buflen, char op, const char *src, 
     425compose_format_str (char *buf, size_t buflen, size_t col, char op, const char *src, 
    426426                   const char *prefix, const char *ifstring, 
    427427                   const char *elsestring, 
     
    466466 
    467467  if (optional) 
    468     compose_status_line (buf, buflen, menu, ifstring); 
     468    compose_status_line (buf, buflen, col, menu, ifstring); 
    469469  else if (flags & M_FORMAT_OPTIONAL) 
    470     compose_status_line (buf, buflen, menu, elsestring); 
     470    compose_status_line (buf, buflen, col, menu, elsestring); 
    471471 
    472472  return (src); 
    473473} 
    474474 
    475 static void compose_status_line (char *buf, size_t buflen, MUTTMENU *menu,  
     475static void compose_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu,  
    476476      const char *p) 
    477477{ 
    478   mutt_FormatString (buf, buflen, p, compose_format_str,  
     478  mutt_FormatString (buf, buflen, col, p, compose_format_str,  
    479479        (unsigned long) menu, 0); 
    480480} 
     
    12761276    if (menu->redraw & REDRAW_STATUS)  
    12771277    { 
    1278         compose_status_line (buf, sizeof (buf), menu, NONULL(ComposeFormat)); 
     1278        compose_status_line (buf, sizeof (buf), 0, menu, NONULL(ComposeFormat)); 
    12791279        CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES-2); 
    12801280        SETCOLOR (MT_COLOR_STATUS); 
  • hdrline.c

    r5058 r5137  
    237237hdr_format_str (char *dest, 
    238238                size_t destlen, 
     239                size_t col, 
    239240                char op, 
    240241                const char *src, 
     
    716717 
    717718  if (optional) 
    718     mutt_FormatString (dest, destlen, ifstring, hdr_format_str, (unsigned long) hfi, flags); 
     719    mutt_FormatString (dest, destlen, col, ifstring, hdr_format_str, (unsigned long) hfi, flags); 
    719720  else if (flags & M_FORMAT_OPTIONAL) 
    720     mutt_FormatString (dest, destlen, elsestring, hdr_format_str, (unsigned long) hfi, flags); 
     721    mutt_FormatString (dest, destlen, col, elsestring, hdr_format_str, (unsigned long) hfi, flags); 
    721722 
    722723  return (src); 
     
    733734  hfi.ctx = ctx; 
    734735 
    735   mutt_FormatString (dest, destlen, s, hdr_format_str, (unsigned long) &hfi, flags); 
    736 } 
     736  mutt_FormatString (dest, destlen, 0, s, hdr_format_str, (unsigned long) &hfi, flags); 
     737} 
  • muttlib.c

    r5098 r5137  
    992992void mutt_FormatString (char *dest,             /* output buffer */ 
    993993                        size_t destlen,         /* output buffer len */ 
     994                        size_t col,             /* starting column (nonzero when called recursively) */ 
    994995                        const char *src,        /* template string */ 
    995996                        format_t *callback,     /* callback for processing */ 
     
    9991000  char prefix[SHORT_STRING], buf[LONG_STRING], *cp, *wptr = dest, ch; 
    10001001  char ifstring[SHORT_STRING], elsestring[SHORT_STRING]; 
    1001   size_t wlen, count, len, col, wid; 
     1002  size_t wlen, count, len, wid; 
    10021003  pid_t pid; 
    10031004  FILE *filter; 
     
    10081009  destlen--; /* save room for the terminal \0 */ 
    10091010  wlen = (flags & M_FORMAT_ARROWCURSOR && option (OPTARROWCURSOR)) ? 3 : 0; 
    1010   col = wlen; 
     1011  col += wlen; 
    10111012 
    10121013  if ((flags & M_FORMAT_NOFILTER) == 0) 
     
    10561057        dprint(3, (debugfile, "fmtpipe %2d: %s\n", i++, word->data)); 
    10571058        mutt_buffer_addch(command, '\''); 
    1058         mutt_FormatString(buf, sizeof(buf), word->data, callback, data, 
     1059        mutt_FormatString(buf, sizeof(buf), 0, word->data, callback, data, 
    10591060                          flags | M_FORMAT_NOFILTER); 
    10601061        for (p = buf; p && *p; p++) 
     
    10751076      dprint(3, (debugfile, "fmtpipe > %s\n", command->data)); 
    10761077 
     1078      col -= wlen;      /* reset to passed in value */ 
    10771079      wptr = dest;      /* reset write ptr */ 
    10781080      wlen = (flags & M_FORMAT_ARROWCURSOR && option (OPTARROWCURSOR)) ? 3 : 0; 
     
    11011103            if (recycler) 
    11021104            { 
    1103               mutt_FormatString(dest, destlen++, recycler, callback, data, flags); 
     1105              mutt_FormatString(dest, destlen++, col, recycler, callback, data, flags); 
    11041106              FREE(&recycler); 
    11051107            } 
     
    12041206        { 
    12051207          count -= col; /* how many columns left on this line */ 
    1206           mutt_FormatString (buf, sizeof (buf), src, callback, data, flags); 
     1208          mutt_FormatString (buf, sizeof (buf), 0, src, callback, data, flags); 
    12071209          len = mutt_strlen (buf); 
    12081210          wid = mutt_strwidth (buf); 
     
    12541256         
    12551257        /* use callback function to handle this case */ 
    1256         src = callback (buf, sizeof (buf), ch, src, prefix, ifstring, elsestring, data, flags); 
     1258        src = callback (buf, sizeof (buf), col, ch, src, prefix, ifstring, elsestring, data, flags); 
    12571259 
    12581260        if (tolower) 
  • pgpinvoke.c

    r4343 r5137  
    5959const char *_mutt_fmt_pgp_command (char *dest, 
    6060                                   size_t destlen, 
     61                                   size_t col, 
    6162                                   char op, 
    6263                                   const char *src, 
     
    140141 
    141142  if (optional) 
    142     mutt_FormatString (dest, destlen, ifstring, _mutt_fmt_pgp_command, data, 0); 
     143    mutt_FormatString (dest, destlen, col, ifstring, _mutt_fmt_pgp_command, data, 0); 
    143144  else if (flags & M_FORMAT_OPTIONAL) 
    144     mutt_FormatString (dest, destlen, elsestring, _mutt_fmt_pgp_command, data, 0); 
     145    mutt_FormatString (dest, destlen, col, elsestring, _mutt_fmt_pgp_command, data, 0); 
    145146 
    146147  return (src); 
     
    149150void mutt_pgp_command (char *d, size_t dlen, struct pgp_command_context *cctx, const char *fmt) 
    150151{ 
    151   mutt_FormatString (d, dlen, NONULL (fmt), _mutt_fmt_pgp_command, (unsigned long) cctx, 0); 
     152  mutt_FormatString (d, dlen, 0, NONULL (fmt), _mutt_fmt_pgp_command, (unsigned long) cctx, 0); 
    152153  dprint (2, (debugfile, "mutt_pgp_command: %s\n", d)); 
    153154} 
  • pgpkey.c

    r5010 r5137  
    122122static const char *pgp_entry_fmt (char *dest, 
    123123                                  size_t destlen, 
     124                                  size_t col, 
    124125                                  char op, 
    125126                                  const char *src, 
     
    278279 
    279280  if (optional) 
    280     mutt_FormatString (dest, destlen, ifstring, mutt_attach_fmt, data, 0); 
     281    mutt_FormatString (dest, destlen, col, ifstring, mutt_attach_fmt, data, 0); 
    281282  else if (flags & M_FORMAT_OPTIONAL) 
    282     mutt_FormatString (dest, destlen, elsestring, mutt_attach_fmt, data, 0); 
     283    mutt_FormatString (dest, destlen, col, elsestring, mutt_attach_fmt, data, 0); 
    283284  return (src); 
    284285} 
     
    292293  entry.num = num + 1; 
    293294 
    294   mutt_FormatString (s, l, NONULL (PgpEntryFormat), pgp_entry_fmt,  
     295  mutt_FormatString (s, l, 0, NONULL (PgpEntryFormat), pgp_entry_fmt,  
    295296                     (unsigned long) &entry, M_FORMAT_ARROWCURSOR); 
    296297} 
  • protos.h

    r4955 r5137  
    6262#define mutt_new_enter_state() safe_calloc (1, sizeof (ENTER_STATE)) 
    6363 
    64 typedef const char * format_t (char *, size_t, char, const char *, const char *, const char *, const char *, unsigned long, format_flag); 
    65  
    66 void mutt_FormatString (char *, size_t, const char *, format_t *, unsigned long, format_flag); 
     64typedef const char * format_t (char *, size_t, size_t, char, const char *, const char *, const char *, const char *, unsigned long, format_flag); 
     65 
     66void mutt_FormatString (char *, size_t, size_t, const char *, format_t *, unsigned long, format_flag); 
    6767void mutt_parse_content_type (char *, BODY *); 
    6868void mutt_generate_boundary (PARAMETER **); 
     
    120120        char *dest, 
    121121        size_t destlen, 
     122        size_t col, 
    122123        char op, 
    123124        const char *src, 
  • recvattach.c

    r5010 r5137  
    174174const char *mutt_attach_fmt (char *dest, 
    175175    size_t destlen, 
     176    size_t col, 
    176177    char op, 
    177178    const char *src, 
     
    357358   
    358359  if (optional) 
    359     mutt_FormatString (dest, destlen, ifstring, mutt_attach_fmt, data, 0); 
     360    mutt_FormatString (dest, destlen, col, ifstring, mutt_attach_fmt, data, 0); 
    360361  else if (flags & M_FORMAT_OPTIONAL) 
    361     mutt_FormatString (dest, destlen, elsestring, mutt_attach_fmt, data, 0); 
     362    mutt_FormatString (dest, destlen, col, elsestring, mutt_attach_fmt, data, 0); 
    362363  return (src); 
    363364} 
     
    365366void attach_entry (char *b, size_t blen, MUTTMENU *menu, int num) 
    366367{ 
    367   mutt_FormatString (b, blen, NONULL (AttachFormat), mutt_attach_fmt, (unsigned long) (((ATTACHPTR **)menu->data)[num]), M_FORMAT_ARROWCURSOR); 
     368  mutt_FormatString (b, blen, 0, NONULL (AttachFormat), mutt_attach_fmt, (unsigned long) (((ATTACHPTR **)menu->data)[num]), M_FORMAT_ARROWCURSOR); 
    368369} 
    369370 
  • smime.c

    r4490 r5137  
    129129static const char *_mutt_fmt_smime_command (char *dest, 
    130130                                            size_t destlen, 
     131                                            size_t col, 
    131132                                            char op, 
    132133                                            const char *src, 
     
    243244 
    244245  if (optional) 
    245     mutt_FormatString (dest, destlen, ifstring, _mutt_fmt_smime_command, 
     246    mutt_FormatString (dest, destlen, col, ifstring, _mutt_fmt_smime_command, 
    246247                       data, 0); 
    247248  else if (flags & M_FORMAT_OPTIONAL) 
    248     mutt_FormatString (dest, destlen, elsestring, _mutt_fmt_smime_command, 
     249    mutt_FormatString (dest, destlen, col, elsestring, _mutt_fmt_smime_command, 
    249250                       data, 0); 
    250251 
     
    257258                                struct smime_command_context *cctx, const char *fmt) 
    258259{ 
    259   mutt_FormatString (d, dlen, NONULL(fmt), _mutt_fmt_smime_command, 
     260  mutt_FormatString (d, dlen, 0, NONULL(fmt), _mutt_fmt_smime_command, 
    260261                    (unsigned long) cctx, 0); 
    261262  dprint (2,(debugfile, "mutt_smime_command: %s\n", d)); 
  • status.c

    r4343 r5137  
    4040  return buf; 
    4141} 
     42 
     43static void _menu_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu, const char *p); 
    4244 
    4345/* %b = number of incoming folders with unread messages [option] 
     
    5961 * %V = currently active limit pattern [option] */ 
    6062static const char * 
    61 status_format_str (char *buf, size_t buflen, char op, const char *src, 
     63status_format_str (char *buf, size_t buflen, size_t col, char op, const char *src, 
    6264                   const char *prefix, const char *ifstring, 
    6365                   const char *elsestring, 
     
    287289 
    288290  if (optional) 
    289     menu_status_line (buf, buflen, menu, ifstring); 
     291    _menu_status_line (buf, buflen, col, menu, ifstring); 
    290292  else if (flags & M_FORMAT_OPTIONAL) 
    291     menu_status_line (buf, buflen, menu, elsestring); 
     293    _menu_status_line (buf, buflen, col, menu, elsestring); 
    292294 
    293295  return (src); 
    294296} 
    295297 
     298static void _menu_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu, const char *p) 
     299{ 
     300  mutt_FormatString (buf, buflen, col, p, status_format_str, (unsigned long) menu, 0); 
     301} 
     302 
    296303void menu_status_line (char *buf, size_t buflen, MUTTMENU *menu, const char *p) 
    297304{ 
    298   mutt_FormatString (buf, buflen, p, status_format_str, (unsigned long) menu, 0); 
     305  mutt_FormatString (buf, buflen, 0, p, status_format_str, (unsigned long) menu, 0); 
    299306}