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

Diff for /src/usr.bin/tmux/options.c between version 1.41 and 1.42

version 1.41, 2019/04/23 20:36:55 version 1.42, 2019/04/25 18:18:55
Line 110 
Line 110 
                 free(ov->string);                  free(ov->string);
 }  }
   
 static const char *  static char *
 options_value_tostring(struct options_entry *o, union options_value *ov,  options_value_tostring(struct options_entry *o, union options_value *ov,
     int numeric)      int numeric)
 {  {
         static char      s[1024];          char    *s;
         const char      *tmp;  
   
         if (OPTIONS_IS_STYLE(o))          if (OPTIONS_IS_STYLE(o))
                 return (style_tostring(&ov->style));                  return (xstrdup(style_tostring(&ov->style)));
         if (OPTIONS_IS_NUMBER(o)) {          if (OPTIONS_IS_NUMBER(o)) {
                 tmp = NULL;  
                 switch (o->tableentry->type) {                  switch (o->tableentry->type) {
                 case OPTIONS_TABLE_NUMBER:                  case OPTIONS_TABLE_NUMBER:
                         xsnprintf(s, sizeof s, "%lld", ov->number);                          xasprintf(&s, "%lld", ov->number);
                         break;                          break;
                 case OPTIONS_TABLE_KEY:                  case OPTIONS_TABLE_KEY:
                         tmp = key_string_lookup_key(ov->number);                          s = xstrdup(key_string_lookup_key(ov->number));
                         break;                          break;
                 case OPTIONS_TABLE_COLOUR:                  case OPTIONS_TABLE_COLOUR:
                         tmp = colour_tostring(ov->number);                          s = xstrdup(colour_tostring(ov->number));
                         break;                          break;
                 case OPTIONS_TABLE_FLAG:                  case OPTIONS_TABLE_FLAG:
                         if (numeric)                          if (numeric)
                                 xsnprintf(s, sizeof s, "%lld", ov->number);                                  xasprintf(&s, "%lld", ov->number);
                         else                          else
                                 tmp = (ov->number ? "on" : "off");                                  s = xstrdup(ov->number ? "on" : "off");
                         break;                          break;
                 case OPTIONS_TABLE_CHOICE:                  case OPTIONS_TABLE_CHOICE:
                         tmp = o->tableentry->choices[ov->number];                          s = xstrdup(o->tableentry->choices[ov->number]);
                         break;                          break;
                 case OPTIONS_TABLE_STRING:                  case OPTIONS_TABLE_STRING:
                 case OPTIONS_TABLE_STYLE:                  case OPTIONS_TABLE_STYLE:
                         break;                          fatalx("not a number option type");
                 }                  }
                 if (tmp != NULL)  
                         xsnprintf(s, sizeof s, "%s", tmp);  
                 return (s);                  return (s);
         }          }
         if (OPTIONS_IS_STRING(o))          if (OPTIONS_IS_STRING(o))
                 return (ov->string);                  return (xstrdup(ov->string));
         return ("");          return (xstrdup(""));
 }  }
   
 struct options *  struct options *
Line 218 
Line 214 
         o = options_add(oo, oe->name);          o = options_add(oo, oe->name);
         o->tableentry = oe;          o->tableentry = oe;
   
         if (oe->flags & OPTIONS_TABLE_IS_ARRAY) {          if (oe->flags & OPTIONS_TABLE_IS_ARRAY)
                 if (oe->type != OPTIONS_TABLE_STRING)  
                         fatalx("arrays can only be strings");  
                 RB_INIT(&o->value.array);                  RB_INIT(&o->value.array);
         }  
   
         return (o);          return (o);
 }  }
Line 443 
Line 436 
         return (OPTIONS_IS_STRING(o));          return (OPTIONS_IS_STRING(o));
 }  }
   
 const char *  char *
 options_tostring(struct options_entry *o, int idx, int numeric)  options_tostring(struct options_entry *o, int idx, int numeric)
 {  {
         struct options_array_item       *a;          struct options_array_item       *a;
   
         if (OPTIONS_IS_ARRAY(o)) {          if (OPTIONS_IS_ARRAY(o)) {
                 if (idx == -1)                  if (idx == -1)
                         return (NULL);                          return (xstrdup(""));
                 a = options_array_item(o, idx);                  a = options_array_item(o, idx);
                 if (a == NULL)                  if (a == NULL)
                         return ("");                          return (xstrdup(""));
                 return (options_value_tostring(o, &a->value, numeric));                  return (options_value_tostring(o, &a->value, numeric));
         }          }
         return (options_value_tostring(o, &o->value, numeric));          return (options_value_tostring(o, &o->value, numeric));

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.42