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

Diff for /src/usr.bin/tmux/cmd-find-window.c between version 1.8 and 1.9

version 1.8, 2011/01/04 00:42:46 version 1.9, 2012/03/20 17:09:48
Line 29 
Line 29 
   
 int     cmd_find_window_exec(struct cmd *, struct cmd_ctx *);  int     cmd_find_window_exec(struct cmd *, struct cmd_ctx *);
   
   u_int   cmd_find_window_match_flags(struct args *);
 void    cmd_find_window_callback(void *, int);  void    cmd_find_window_callback(void *, int);
 void    cmd_find_window_free(void *);  void    cmd_find_window_free(void *);
   
   /* Flags for determining matching behavior. */
   #define CMD_FIND_WINDOW_BY_TITLE   0x1
   #define CMD_FIND_WINDOW_BY_CONTENT 0x2
   #define CMD_FIND_WINDOW_BY_NAME    0x4
   
   #define CMD_FIND_WINDOW_ALL             \
           (CMD_FIND_WINDOW_BY_TITLE |     \
            CMD_FIND_WINDOW_BY_CONTENT |   \
            CMD_FIND_WINDOW_BY_NAME)
   
   
 const struct cmd_entry cmd_find_window_entry = {  const struct cmd_entry cmd_find_window_entry = {
         "find-window", "findw",          "find-window", "findw",
         "t:", 1, 1,          "CNt:T", 1, 4,
         CMD_TARGET_WINDOW_USAGE " match-string",          "[-CNT] " CMD_TARGET_WINDOW_USAGE " match-string",
         0,          0,
         NULL,          NULL,
         NULL,          NULL,
Line 46 
Line 58 
         struct session  *session;          struct session  *session;
 };  };
   
   u_int
   cmd_find_window_match_flags(struct args *args)
   {
           u_int   match_flags = 0;
   
           /* Turn on flags based on the options. */
           if (args_has(args, 'T'))
                   match_flags |= CMD_FIND_WINDOW_BY_TITLE;
           if (args_has(args, 'C'))
                   match_flags |= CMD_FIND_WINDOW_BY_CONTENT;
           if (args_has(args, 'N'))
                   match_flags |= CMD_FIND_WINDOW_BY_NAME;
   
           /* If none of the flags were set, default to matching anything. */
           if (match_flags == 0)
                   match_flags = CMD_FIND_WINDOW_ALL;
   
           return match_flags;
   }
   
 int  int
 cmd_find_window_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_find_window_exec(struct cmd *self, struct cmd_ctx *ctx)
 {  {
Line 58 
Line 90 
         ARRAY_DECL(, u_int)              list_idx;          ARRAY_DECL(, u_int)              list_idx;
         ARRAY_DECL(, char *)             list_ctx;          ARRAY_DECL(, char *)             list_ctx;
         char                            *str, *sres, *sctx, *searchstr;          char                            *str, *sres, *sctx, *searchstr;
         u_int                            i, line;          u_int                            i, line, match_flags;
   
         if (ctx->curclient == NULL) {          if (ctx->curclient == NULL) {
                 ctx->error(ctx, "must be run interactively");                  ctx->error(ctx, "must be run interactively");
Line 69 
Line 101 
         if ((wl = cmd_find_window(ctx, args_get(args, 't'), NULL)) == NULL)          if ((wl = cmd_find_window(ctx, args_get(args, 't'), NULL)) == NULL)
                 return (-1);                  return (-1);
   
           match_flags = cmd_find_window_match_flags(args);
         str = args->argv[0];          str = args->argv[0];
   
         ARRAY_INIT(&list_idx);          ARRAY_INIT(&list_idx);
Line 80 
Line 113 
                 TAILQ_FOREACH(wp, &wm->window->panes, entry) {                  TAILQ_FOREACH(wp, &wm->window->panes, entry) {
                         i++;                          i++;
   
                         if (fnmatch(searchstr, wm->window->name, 0) == 0)                          if ((match_flags & CMD_FIND_WINDOW_BY_NAME) &&
                               fnmatch(searchstr, wm->window->name, 0) == 0)
                                 sctx = xstrdup("");                                  sctx = xstrdup("");
                         else {                          else {
                                 sres = window_pane_search(wp, str, &line);                                  sres = NULL;
                                   if (match_flags & CMD_FIND_WINDOW_BY_CONTENT) {
                                           sres = window_pane_search(
                                               wp, str, &line);
                                   }
   
                                   /*
                                    * If match_title isn't set we don't want to
                                    * bother checking the title, but that also
                                    * constitutes a failure to match so we still
                                    * want to abort.
                                    */
                                 if (sres == NULL &&                                  if (sres == NULL &&
                                     fnmatch(searchstr, wp->base.title, 0) != 0)                                      (!(match_flags & CMD_FIND_WINDOW_BY_TITLE) ||
                                        fnmatch(searchstr, wp->base.title, 0) != 0))
                                         continue;                                          continue;
   
                                 if (sres == NULL) {                                  if (sres == NULL) {

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9