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

Diff for /src/usr.bin/tmux/cmd.c between version 1.19 and 1.20

version 1.19, 2009/09/24 14:17:09 version 1.20, 2009/10/05 18:30:54
Line 110 
Line 110 
 };  };
   
 struct session  *cmd_newest_session(struct sessions *);  struct session  *cmd_newest_session(struct sessions *);
   struct client   *cmd_newest_client(void);
 struct client   *cmd_lookup_client(const char *);  struct client   *cmd_lookup_client(const char *);
 struct session  *cmd_lookup_session(const char *, int *);  struct session  *cmd_lookup_session(const char *, int *);
 struct winlink  *cmd_lookup_window(struct session *, const char *, int *);  struct winlink  *cmd_lookup_window(struct session *, const char *, int *);
Line 369 
Line 370 
         return (snewest);          return (snewest);
 }  }
   
   /* Find the newest client. */
   struct client *
   cmd_newest_client(void)
   {
           struct client   *c, *cnewest;
           struct timeval  *tv = NULL;
           u_int            i;
   
           cnewest = NULL;
           for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
                   if ((c = ARRAY_ITEM(&clients, i)) == NULL)
                           continue;
                   if (c->session == NULL)
                           continue;
   
                   if (tv == NULL || timercmp(&c->tv, tv, >)) {
                           cnewest = c;
                           tv = &c->tv;
                   }
           }
   
           return (cnewest);
   }
   
 /* 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 cmd_ctx *ctx, const char *arg)  cmd_find_client(struct cmd_ctx *ctx, const char *arg)
 {  {
         struct client   *c;          struct client   *c;
           struct session  *s;
         char            *tmparg;          char            *tmparg;
         size_t           arglen;          size_t           arglen;
           u_int            i;
   
         /* A NULL argument means the current client. */          /* A NULL argument means the current client. */
         if (arg == NULL)          if (arg == NULL) {
                 return (ctx->curclient);                  if (ctx->curclient != NULL)
                           return (ctx->curclient);
                   /*
                    * No current client set. Find the current session and see if
                    * it has only has one client.
                    */
                   s = cmd_current_session(ctx);
                   if (s != NULL) {
                           c = NULL;
                           for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
                                   if (ARRAY_ITEM(&clients, i)->session == s) {
                                           if (c != NULL)
                                                   break;
                                           c = ARRAY_ITEM(&clients, i);
                                   }
                           }
                           if (i == ARRAY_LENGTH(&clients) && c != NULL)
                                   return (c);
                   }
                   return (cmd_newest_client());
           }
         tmparg = xstrdup(arg);          tmparg = xstrdup(arg);
   
         /* Trim a single trailing colon if any. */          /* Trim a single trailing colon if any. */

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20