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

Diff for /src/usr.bin/tmux/names.c between version 1.21 and 1.22

version 1.21, 2013/03/25 15:59:57 version 1.22, 2013/10/10 11:56:50
Line 22 
Line 22 
 #include <libgen.h>  #include <libgen.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
 #include <unistd.h>  
   
 #include "tmux.h"  #include "tmux.h"
   
 void     window_name_callback(unused int, unused short, void *);  void     window_name_callback(unused int, unused short, void *);
 char    *parse_window_name(const char *);  
   
 void  void
 queue_window_name(struct window *w)  queue_window_name(struct window *w)
Line 47 
Line 45 
 window_name_callback(unused int fd, unused short events, void *data)  window_name_callback(unused int fd, unused short events, void *data)
 {  {
         struct window   *w = data;          struct window   *w = data;
         char            *name, *wname;          char            *name;
   
         if (w->active == NULL)          if (w->active == NULL)
                 return;                  return;
Line 59 
Line 57 
         }          }
         queue_window_name(w);          queue_window_name(w);
   
         if (w->active->screen != &w->active->base)          name = format_window_name(w);
                 name = NULL;          if (strcmp(name, w->name) != 0) {
         else                  window_set_name(w, name);
                 name = get_proc_name(w->active->fd, w->active->tty);  
         if (name == NULL)  
                 wname = default_window_name(w);  
         else {  
                 /*  
                  * If tmux is using the default command, it will be a login  
                  * shell and argv[0] may have a - prefix. Remove this if it is  
                  * present. Ick.  
                  */  
                 if (w->active->cmd != NULL && *w->active->cmd == '\0' &&  
                     name != NULL && name[0] == '-' && name[1] != '\0')  
                         wname = parse_window_name(name + 1);  
                 else  
                         wname = parse_window_name(name);  
                 free(name);  
         }  
   
         if (w->active->fd == -1) {  
                 xasprintf(&name, "%s[dead]", wname);  
                 free(wname);  
                 wname = name;  
         }  
   
         if (strcmp(wname, w->name)) {  
                 window_set_name(w, wname);  
                 server_status_window(w);                  server_status_window(w);
         }          }
         free(wname);          free(name);
 }  }
   
 char *  char *
 default_window_name(struct window *w)  default_window_name(struct window *w)
 {  {
         if (w->active->screen != &w->active->base)  
                 return (xstrdup("[tmux]"));  
         if (w->active->cmd != NULL && *w->active->cmd != '\0')          if (w->active->cmd != NULL && *w->active->cmd != '\0')
                 return (parse_window_name(w->active->cmd));                  return (parse_window_name(w->active->cmd));
         return (parse_window_name(w->active->shell));          return (parse_window_name(w->active->shell));
 }  }
   
 char *  char *
   format_window_name(struct window *w)
   {
           struct format_tree      *ft;
           char                    *fmt, *name;
   
           ft = format_create();
           format_window(ft, w);
           format_window_pane(ft, w->active);
   
           fmt = options_get_string(&w->options, "automatic-rename-format");
           name = format_expand(ft, fmt);
   
           format_free(ft);
           return (name);
   }
   
   char *
 parse_window_name(const char *in)  parse_window_name(const char *in)
 {  {
         char    *copy, *name, *ptr;          char    *copy, *name, *ptr;
Line 111 
Line 99 
         if (strncmp(name, "exec ", (sizeof "exec ") - 1) == 0)          if (strncmp(name, "exec ", (sizeof "exec ") - 1) == 0)
                 name = name + (sizeof "exec ") - 1;                  name = name + (sizeof "exec ") - 1;
   
         while (*name == ' ')          while (*name == ' ' || *name == '-')
                 name++;                  name++;
         if ((ptr = strchr(name, ' ')) != NULL)          if ((ptr = strchr(name, ' ')) != NULL)
                 *ptr = '\0';                  *ptr = '\0';

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22