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

Diff for /src/usr.bin/tmux/cmd-find.c between version 1.54 and 1.55

version 1.54, 2017/06/16 15:12:38 version 1.55, 2017/07/07 07:13:14
Line 96 
Line 96 
         return (session_find_by_id(session));          return (session_find_by_id(session));
 }  }
   
   /* Find pane containing client if any. */
   static struct window_pane *
   cmd_find_inside_pane(struct client *c)
   {
           struct window_pane      *wp;
   
           if (c == NULL)
                   return (NULL);
   
           RB_FOREACH(wp, window_pane_tree, &all_window_panes) {
                   if (strcmp(wp->tty, c->ttyname) == 0)
                           break;
           }
           return (wp);
   }
   
 /* Is this client better? */  /* Is this client better? */
 static int  static int
 cmd_find_client_better(struct client *c, struct client *than)  cmd_find_client_better(struct client *c, struct client *than)
Line 875 
Line 891 
          * If this is an unattached client running in a pane, we can use that           * If this is an unattached client running in a pane, we can use that
          * to limit the list of sessions to those containing that pane.           * to limit the list of sessions to those containing that pane.
          */           */
         RB_FOREACH(wp, window_pane_tree, &all_window_panes) {          wp = cmd_find_inside_pane(c);
                 if (strcmp(wp->tty, c->ttyname) == 0)  
                         break;  
         }  
         if (wp == NULL)          if (wp == NULL)
                 goto unknown_pane;                  goto unknown_pane;
   
Line 1232 
Line 1245 
         goto error;          goto error;
 }  }
   
   /* Find the current client. */
   static struct client *
   cmd_find_current_client(struct cmdq_item *item, int quiet)
   {
           struct client           *c;
           struct session          *s;
           struct window_pane      *wp;
           struct cmd_find_state    fs;
   
           if (item->client != NULL && item->client->session != NULL)
                   return (item->client);
   
           c = NULL;
           if ((wp = cmd_find_inside_pane(item->client)) != NULL) {
                   cmd_find_clear_state(&fs, CMD_FIND_QUIET);
                   fs.w = wp->window;
                   if (cmd_find_best_session_with_window(&fs) == 0)
                           c = cmd_find_best_client(fs.s);
           } else {
                   s = cmd_find_best_session(NULL, 0, CMD_FIND_QUIET);
                   if (s != NULL)
                           c = cmd_find_best_client(s);
           }
           if (c == NULL && !quiet)
                   cmdq_error(item, "no current client");
           log_debug("%s: no target, return %p", __func__, c);
           return (c);
   }
   
 /* Find the target client or report an error and return NULL. */  /* Find the target client or report an error and return NULL. */
 struct client *  struct client *
 cmd_find_client(struct cmdq_item *item, const char *target, int quiet)  cmd_find_client(struct cmdq_item *item, const char *target, int quiet)
 {  {
         struct client   *c;          struct client   *c;
         struct session  *s;  
         char            *copy;          char            *copy;
         size_t           size;          size_t           size;
   
         /* A NULL argument means the current client. */          /* A NULL argument means the current client. */
         if (target == NULL) {          if (target == NULL)
                 c = NULL;                  return (cmd_find_current_client(item, quiet));
                 if (item->client != NULL && item->client->session != NULL)  
                         c = item->client;  
                 else {  
                         s = cmd_find_best_session(NULL, 0, CMD_FIND_QUIET);  
                         if (s != NULL)  
                                 c = cmd_find_best_client(s);  
                 }  
                 if (c == NULL && !quiet)  
                         cmdq_error(item, "no current client");  
                 log_debug("%s: no target, return %p", __func__, c);  
                 return (c);  
         }  
         copy = xstrdup(target);          copy = xstrdup(target);
   
         /* Trim a single trailing colon if any. */          /* Trim a single trailing colon if any. */

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