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

Diff for /src/usr.bin/tmux/cmd-show-options.c between version 1.17 and 1.18

version 1.17, 2013/03/21 16:15:52 version 1.18, 2013/03/21 16:17:01
Line 29 
Line 29 
   
 enum cmd_retval  cmd_show_options_exec(struct cmd *, struct cmd_ctx *);  enum cmd_retval  cmd_show_options_exec(struct cmd *, struct cmd_ctx *);
   
   enum cmd_retval cmd_show_options_one(struct cmd *, struct cmd_ctx *,
                       struct options *);
   enum cmd_retval cmd_show_options_all(struct cmd *, struct cmd_ctx *,
                       const struct options_table_entry *, struct options *);
   
 const struct cmd_entry cmd_show_options_entry = {  const struct cmd_entry cmd_show_options_entry = {
         "show-options", "show",          "show-options", "show",
         "gst:vw", 0, 1,          "gst:vw", 0, 1,
Line 53 
Line 58 
 cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)
 {  {
         struct args                             *args = self->args;          struct args                             *args = self->args;
         const struct options_table_entry        *table, *oe;  
         struct session                          *s;          struct session                          *s;
         struct winlink                          *wl;          struct winlink                          *wl;
           const struct options_table_entry        *table;
         struct options                          *oo;          struct options                          *oo;
         struct options_entry                    *o;  
         const char                              *optval;  
   
         if (args_has(self->args, 's')) {          if (args_has(self->args, 's')) {
                 oo = &global_options;                  oo = &global_options;
Line 86 
Line 89 
                 }                  }
         }          }
   
         if (args->argc != 0) {          if (args->argc != 0)
                 table = oe = NULL;                  return (cmd_show_options_one(self, ctx, oo));
                 if (options_table_find(args->argv[0], &table, &oe) != 0) {          else
                         ctx->error(ctx, "ambiguous option: %s", args->argv[0]);                  return (cmd_show_options_all(self, ctx, table, oo));
                         return (CMD_RETURN_ERROR);  }
                 }  
                 if (oe == NULL) {  enum cmd_retval
   cmd_show_options_one(struct cmd *self, struct cmd_ctx *ctx,
       struct options *oo)
   {
           struct args                             *args = self->args;
           const struct options_table_entry        *table, *oe;
           struct options_entry                    *o;
           const char                              *optval;
   
           if (*args->argv[0] == '@') {
                   if ((o = options_find1(oo, args->argv[0])) == NULL) {
                         ctx->error(ctx, "unknown option: %s", args->argv[0]);                          ctx->error(ctx, "unknown option: %s", args->argv[0]);
                         return (CMD_RETURN_ERROR);                          return (CMD_RETURN_ERROR);
                 }                  }
                   if (args_has(self->args, 'v'))
                           ctx->print(ctx, "%s", o->str);
                   else
                           ctx->print(ctx, "%s \"%s\"", o->name, o->str);
                   return (CMD_RETURN_NORMAL);
           }
   
           table = oe = NULL;
           if (options_table_find(args->argv[0], &table, &oe) != 0) {
                   ctx->error(ctx, "ambiguous option: %s", args->argv[0]);
                   return (CMD_RETURN_ERROR);
           }
           if (oe == NULL) {
                   ctx->error(ctx, "unknown option: %s", args->argv[0]);
                   return (CMD_RETURN_ERROR);
           }
           if ((o = options_find1(oo, oe->name)) == NULL)
                   return (CMD_RETURN_NORMAL);
           optval = options_table_print_entry(oe, o, args_has(self->args, 'v'));
           if (args_has(self->args, 'v'))
                   ctx->print(ctx, "%s", optval);
           else
                   ctx->print(ctx, "%s %s", oe->name, optval);
           return (CMD_RETURN_NORMAL);
   }
   
   enum cmd_retval
   cmd_show_options_all(struct cmd *self, struct cmd_ctx *ctx,
       const struct options_table_entry *table, struct options *oo)
   {
           const struct options_table_entry        *oe;
           struct options_entry                    *o;
           const char                              *optval;
   
           RB_FOREACH(o, options_tree, &oo->tree) {
                   if (*o->name == '@') {
                           if (args_has(self->args, 'v'))
                                   ctx->print(ctx, "%s", o->str);
                           else
                                   ctx->print(ctx, "%s \"%s\"", o->name, o->str);
                   }
           }
   
           for (oe = table; oe->name != NULL; oe++) {
                 if ((o = options_find1(oo, oe->name)) == NULL)                  if ((o = options_find1(oo, oe->name)) == NULL)
                         return (CMD_RETURN_NORMAL);                          continue;
                 optval = options_table_print_entry(oe, o,                  optval = options_table_print_entry(oe, o,
                     args_has(self->args, 'v'));                      args_has(self->args, 'v'));
                 if (args_has(self->args, 'v'))                  if (args_has(self->args, 'v'))
                         ctx->print(ctx, "%s", optval);                          ctx->print(ctx, "%s", optval);
                 else                  else
                         ctx->print(ctx, "%s %s", oe->name, optval);                          ctx->print(ctx, "%s %s", oe->name, optval);
         } else {  
                 for (oe = table; oe->name != NULL; oe++) {  
                         if ((o = options_find1(oo, oe->name)) == NULL)  
                                 continue;  
                         optval = options_table_print_entry(oe, o,  
                             args_has(self->args, 'v'));  
                         if (args_has(self->args, 'v'))  
                                 ctx->print(ctx, "%s", optval);  
                         else  
                                 ctx->print(ctx, "%s %s", oe->name, optval);  
                 }  
         }          }
   
         return (CMD_RETURN_NORMAL);          return (CMD_RETURN_NORMAL);

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18