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

Diff for /src/usr.bin/tmux/cmd-queue.c between version 1.53 and 1.54

version 1.53, 2017/04/21 22:23:24 version 1.54, 2017/04/22 10:22:39
Line 189 
Line 189 
         return (first);          return (first);
 }  }
   
   /* Fill in flag for a command. */
   static enum cmd_retval
   cmdq_find_flag(struct cmdq_item *item, struct cmd_find_state *fs,
       const struct cmd_entry_flag *flag)
   {
           const char      *value;
   
           if (flag->flag == 0) {
                   cmd_find_clear_state(fs, 0);
                   return (CMD_RETURN_NORMAL);
           }
   
           value = args_get(item->cmd->args, flag->flag);
           if (cmd_find_target(fs, item, value, flag->type, flag->flags) != 0) {
                   cmd_find_clear_state(fs, 0);
                   return (CMD_RETURN_ERROR);
           }
           return (CMD_RETURN_NORMAL);
   }
   
 /* Fire command on command queue. */  /* Fire command on command queue. */
 static enum cmd_retval  static enum cmd_retval
 cmdq_fire_command(struct cmdq_item *item)  cmdq_fire_command(struct cmdq_item *item)
 {  {
         struct client           *c = item->client;          struct client           *c = item->client;
         struct cmd              *cmd = item->cmd;          struct cmd              *cmd = item->cmd;
           const struct cmd_entry  *entry = cmd->entry;
         enum cmd_retval          retval;          enum cmd_retval          retval;
         const char              *name;  
         struct cmd_find_state   *fsp, fs;          struct cmd_find_state   *fsp, fs;
         int                      flags;          int                      flags;
   
Line 205 
Line 225 
   
         if (item->client == NULL)          if (item->client == NULL)
                 item->client = cmd_find_client(item, NULL, 1);                  item->client = cmd_find_client(item, NULL, 1);
           retval = cmdq_find_flag(item, &item->source, &entry->source);
         if (cmd_prepare_state(cmd, item) != 0) {          if (retval == CMD_RETURN_ERROR)
                 retval = CMD_RETURN_ERROR;  
                 goto out;                  goto out;
         }          retval = cmdq_find_flag(item, &item->target, &entry->target);
           if (retval == CMD_RETURN_ERROR)
                   goto out;
   
         retval = cmd->entry->exec(cmd, item);          retval = entry->exec(cmd, item);
         if (retval == CMD_RETURN_ERROR)          if (retval == CMD_RETURN_ERROR)
                 goto out;                  goto out;
   
         if (cmd->entry->flags & CMD_AFTERHOOK) {          if (entry->flags & CMD_AFTERHOOK) {
                 name = cmd->entry->name;                  if (cmd_find_valid_state(&item->target))
                 if (cmd_find_valid_state(&item->state.tflag))                          fsp = &item->target;
                         fsp = &item->state.tflag;  
                 else if (cmd_find_valid_state(&item->shared->current))                  else if (cmd_find_valid_state(&item->shared->current))
                         fsp = &item->shared->current;                          fsp = &item->shared->current;
                 else if (cmd_find_from_client(&fs, item->client) == 0)                  else if (cmd_find_from_client(&fs, item->client) == 0)
                         fsp = &fs;                          fsp = &fs;
                 else                  else
                         goto out;                          goto out;
                 hooks_insert(fsp->s->hooks, item, fsp, "after-%s", name);                  hooks_insert(fsp->s->hooks, item, fsp, "after-%s", entry->name);
         }          }
   
 out:  out:

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.54