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

Diff for /src/usr.bin/tmux/format.c between version 1.85 and 1.86

version 1.85, 2015/10/23 16:02:21 version 1.86, 2015/10/25 08:59:26
Line 39 
Line 39 
 typedef void (*format_cb)(struct format_tree *, struct format_entry *);  typedef void (*format_cb)(struct format_tree *, struct format_entry *);
   
 void     format_job_callback(struct job *);  void     format_job_callback(struct job *);
 const char *format_job_get(struct format_tree *, const char *);  char    *format_job_get(struct format_tree *, const char *);
 void     format_job_timer(int, short, void *);  void     format_job_timer(int, short, void *);
   
 void     format_cb_host(struct format_tree *, struct format_entry *);  void     format_cb_host(struct format_tree *, struct format_entry *);
Line 212 
Line 212 
 }  }
   
 /* Find a job. */  /* Find a job. */
 const char *  char *
 format_job_get(struct format_tree *ft, const char *cmd)  format_job_get(struct format_tree *ft, const char *cmd)
 {  {
         struct format_job       fj0, *fj;          struct format_job       fj0, *fj;
Line 242 
Line 242 
         if (ft->flags & FORMAT_STATUS)          if (ft->flags & FORMAT_STATUS)
                 fj->status = 1;                  fj->status = 1;
   
         return (fj->out);          return (format_expand(ft, fj->out));
 }  }
   
 /* Remove old jobs. */  /* Remove old jobs. */
Line 709 
Line 709 
 char *  char *
 format_expand(struct format_tree *ft, const char *fmt)  format_expand(struct format_tree *ft, const char *fmt)
 {  {
         char            *buf, *tmp, *cmd;          char            *buf, *tmp, *cmd, *out;
         const char      *ptr, *s, *saved = fmt;          const char      *ptr, *s, *saved = fmt;
         size_t           off, len, n, slen;          size_t           off, len, n, outlen;
         int              ch, brackets;          int              ch, brackets;
   
         if (fmt == NULL)          if (fmt == NULL)
Line 751 
Line 751 
                         tmp[n] = '\0';                          tmp[n] = '\0';
                         cmd = format_expand(ft, tmp);                          cmd = format_expand(ft, tmp);
   
                         s = format_job_get(ft, cmd);                          out = format_job_get(ft, cmd);
                         slen = strlen(s);                          outlen = strlen(out);
   
                         free(cmd);                          free(cmd);
                         free(tmp);                          free(tmp);
   
                         while (len - off < slen + 1) {                          while (len - off < outlen + 1) {
                                 buf = xreallocarray(buf, 2, len);                                  buf = xreallocarray(buf, 2, len);
                                 len *= 2;                                  len *= 2;
                         }                          }
                         memcpy(buf + off, s, slen);                          memcpy(buf + off, out, outlen);
                         off += slen;                          off += outlen;
   
                           free(out);
   
                         fmt += n + 1;                          fmt += n + 1;
                         continue;                          continue;

Legend:
Removed from v.1.85  
changed lines
  Added in v.1.86