[BACK]Return to screen-write.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/screen-write.c between version 1.147 and 1.148

version 1.147, 2019/03/12 20:02:47 version 1.148, 2019/03/14 09:53:52
Line 327 
Line 327 
 screen_write_cnputs(struct screen_write_ctx *ctx, ssize_t maxlen,  screen_write_cnputs(struct screen_write_ctx *ctx, ssize_t maxlen,
     const struct grid_cell *gcp, const char *fmt, ...)      const struct grid_cell *gcp, const char *fmt, ...)
 {  {
         struct grid_cell         gc;          struct style             sy;
         struct utf8_data        *ud = &gc.data;          struct utf8_data        *ud = &sy.gc.data;
         va_list                  ap;          va_list                  ap;
         char                    *msg;          char                    *msg;
         u_char                  *ptr, *last;          u_char                  *ptr, *last;
         size_t                   left, size = 0;          size_t                   left, size = 0;
         enum utf8_state          more;          enum utf8_state          more;
   
         memcpy(&gc, gcp, sizeof gc);          style_set(&sy, gcp);
   
         va_start(ap, fmt);          va_start(ap, fmt);
         xvasprintf(&msg, fmt, ap);          xvasprintf(&msg, fmt, ap);
Line 352 
Line 352 
                         }                          }
                         *last = '\0';                          *last = '\0';
   
                         style_parse(gcp, &gc, ptr);                          style_parse(&sy, gcp, ptr);
                         ptr = last + 1;                          ptr = last + 1;
                         continue;                          continue;
                 }                  }
Line 370 
Line 370 
                                 continue;                                  continue;
                         if (maxlen > 0 && size + ud->width > (size_t)maxlen) {                          if (maxlen > 0 && size + ud->width > (size_t)maxlen) {
                                 while (size < (size_t)maxlen) {                                  while (size < (size_t)maxlen) {
                                         screen_write_putc(ctx, &gc, ' ');                                          screen_write_putc(ctx, &sy.gc, ' ');
                                         size++;                                          size++;
                                 }                                  }
                                 break;                                  break;
                         }                          }
                         size += ud->width;                          size += ud->width;
                         screen_write_cell(ctx, &gc);                          screen_write_cell(ctx, &sy.gc);
                 } else {                  } else {
                         if (maxlen > 0 && size + 1 > (size_t)maxlen)                          if (maxlen > 0 && size + 1 > (size_t)maxlen)
                                 break;                                  break;
   
                         if (*ptr == '\001')                          if (*ptr == '\001')
                                 gc.attr ^= GRID_ATTR_CHARSET;                                  sy.gc.attr ^= GRID_ATTR_CHARSET;
                         else if (*ptr > 0x1f && *ptr < 0x7f) {                          else if (*ptr > 0x1f && *ptr < 0x7f) {
                                 size++;                                  size++;
                                 screen_write_putc(ctx, &gc, *ptr);                                  screen_write_putc(ctx, &sy.gc, *ptr);
                         }                          }
                         ptr++;                          ptr++;
                 }                  }

Legend:
Removed from v.1.147  
changed lines
  Added in v.1.148