[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.62 and 1.63

version 1.62, 2019/04/17 14:37:48 version 1.63, 2019/04/26 11:38:51
Line 98 
Line 98 
         } while (item != NULL);          } while (item != NULL);
 }  }
   
   
   /* Insert a hook. */
   void
   cmdq_insert_hook(struct session *s, struct cmdq_item *item,
       struct cmd_find_state *fs, const char *fmt, ...)
   {
           struct options                  *oo;
           va_list                          ap;
           char                            *name;
           struct cmdq_item                *new_item;
           struct options_entry            *o;
           struct options_array_item       *a;
           struct cmd_list                 *cmdlist;
   
           if (item->flags & CMDQ_NOHOOKS)
                   return;
           if (s == NULL)
                   oo = global_s_options;
           else
                   oo = s->options;
   
           va_start(ap, fmt);
           xvasprintf(&name, fmt, ap);
           va_end(ap);
   
           o = options_get(oo, name);
           if (o == NULL) {
                   free(name);
                   return;
           }
           log_debug("running hook %s (parent %p)", name, item);
   
           a = options_array_first(o);
           while (a != NULL) {
                   cmdlist = options_array_item_value(a)->cmdlist;
                   if (cmdlist == NULL) {
                           a = options_array_next(a);
                           continue;
                   }
   
                   new_item = cmdq_get_command(cmdlist, fs, NULL, CMDQ_NOHOOKS);
                   cmdq_format(new_item, "hook", "%s", name);
                   if (item != NULL) {
                           cmdq_insert_after(item, new_item);
                           item = new_item;
                   } else
                           cmdq_append(NULL, new_item);
   
                   a = options_array_next(a);
           }
   
           free(name);
   }
   
 /* Remove an item. */  /* Remove an item. */
 static void  static void
 cmdq_remove(struct cmdq_item *item)  cmdq_remove(struct cmdq_item *item)
Line 245 
Line 299 
                         fsp = &fs;                          fsp = &fs;
                 else                  else
                         goto out;                          goto out;
                 hooks_insert(fsp->s->hooks, item, fsp, "after-%s", entry->name);                  cmdq_insert_hook(fsp->s, item, fsp, "after-%s", entry->name);
         }          }
   
 out:  out:

Legend:
Removed from v.1.62  
changed lines
  Added in v.1.63