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

Diff for /src/usr.bin/tmux/notify.c between version 1.37 and 1.38

version 1.37, 2021/03/16 09:14:58 version 1.38, 2021/08/12 08:05:11
Line 26 
Line 26 
   
 struct notify_entry {  struct notify_entry {
         const char              *name;          const char              *name;
           struct cmd_find_state    fs;
           struct format_tree      *formats;
   
         struct client           *client;          struct client           *client;
         struct session          *session;          struct session          *session;
         struct window           *window;          struct window           *window;
         int                      pane;          int                      pane;
   
         struct cmd_find_state    fs;  
 };  };
   
 static void  static void
 notify_hook_formats(struct cmdq_state *state, struct session *s,  
     struct window *w, int pane)  
 {  
         if (s != NULL) {  
                 cmdq_add_format(state, "hook_session", "$%u", s->id);  
                 cmdq_add_format(state, "hook_session_name", "%s", s->name);  
         }  
         if (w != NULL) {  
                 cmdq_add_format(state, "hook_window", "@%u", w->id);  
                 cmdq_add_format(state, "hook_window_name", "%s", w->name);  
         }  
         if (pane != -1)  
                 cmdq_add_format(state, "hook_pane", "%%%d", pane);  
 }  
   
 static void  
 notify_insert_hook(struct cmdq_item *item, struct notify_entry *ne)  notify_insert_hook(struct cmdq_item *item, struct notify_entry *ne)
 {  {
         struct cmd_find_state            fs;          struct cmd_find_state            fs;
         struct options                  *oo;          struct options                  *oo;
         struct cmdq_item                *new_item;          struct cmdq_item                *new_item;
         struct cmdq_state               *new_state;          struct cmdq_state               *new_state;
         struct session                  *s = ne->session;  
         struct window                   *w = ne->window;  
         struct options_entry            *o;          struct options_entry            *o;
         struct options_array_item       *a;          struct options_array_item       *a;
         struct cmd_list                 *cmdlist;          struct cmd_list                 *cmdlist;
Line 89 
Line 71 
                 return;                  return;
   
         new_state = cmdq_new_state(&fs, NULL, CMDQ_STATE_NOHOOKS);          new_state = cmdq_new_state(&fs, NULL, CMDQ_STATE_NOHOOKS);
         cmdq_add_format(new_state, "hook", "%s", ne->name);          cmdq_add_formats(new_state, ne->formats);
         notify_hook_formats(new_state, s, w, ne->pane);  
   
         a = options_array_first(o);          a = options_array_first(o);
         while (a != NULL) {          while (a != NULL) {
Line 149 
Line 130 
         if (ne->fs.s != NULL)          if (ne->fs.s != NULL)
                 session_remove_ref(ne->fs.s, __func__);                  session_remove_ref(ne->fs.s, __func__);
   
           format_free(ne->formats);
         free((void *)ne->name);          free((void *)ne->name);
         free(ne);          free(ne);
   
Line 172 
Line 154 
         ne->client = c;          ne->client = c;
         ne->session = s;          ne->session = s;
         ne->window = w;          ne->window = w;
           ne->pane = (wp != NULL ? wp->id : -1);
   
           ne->formats = format_create(NULL, NULL, 0, FORMAT_NOJOBS);
           format_add(ne->formats, "hook", "%s", name);
           if (c != NULL)
                   format_add(ne->formats, "hook_client", "%s", c->name);
           if (s != NULL) {
                   format_add(ne->formats, "hook_session", "$%u", s->id);
                   format_add(ne->formats, "hook_session_name", "%s", s->name);
           }
           if (w != NULL) {
                   format_add(ne->formats, "hook_window", "@%u", w->id);
                   format_add(ne->formats, "hook_window_name", "%s", w->name);
           }
         if (wp != NULL)          if (wp != NULL)
                 ne->pane = wp->id;                  format_add(ne->formats, "hook_pane", "%%%d", wp->id);
         else          format_log_debug(ne->formats, __func__);
                 ne->pane = -1;  
   
         if (c != NULL)          if (c != NULL)
                 c->references++;                  c->references++;
Line 208 
Line 202 
         ne.window = target->w;          ne.window = target->w;
         ne.pane = target->wp->id;          ne.pane = target->wp->id;
   
           ne.formats = format_create(NULL, NULL, 0, FORMAT_NOJOBS);
           format_add(ne.formats, "hook", "%s", name);
           format_log_debug(ne.formats, __func__);
   
         notify_insert_hook(item, &ne);          notify_insert_hook(item, &ne);
           format_free(ne.formats);
 }  }
   
 void  void

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.38