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

Diff for /src/usr.bin/tmux/window.c between version 1.3 and 1.4

version 1.3, 2009/06/23 20:17:30 version 1.4, 2009/06/24 22:04:18
Line 590 
Line 590 
 char *  char *
 window_pane_search(struct window_pane *wp, const char *searchstr)  window_pane_search(struct window_pane *wp, const char *searchstr)
 {  {
         const struct grid_cell  *gc;          struct screen   *s = &wp->base;
         const struct grid_utf8  *gu;          char            *line, *ptr;
         char                    *buf, *s;          u_int            i;
         size_t                   off;  
         u_int                    i, j, k;  
   
         buf = xmalloc(1);          ptr = NULL;
           for (i = 0; i < screen_size_y(s); i++) {
         for (j = 0; j < screen_size_y(&wp->base); j++) {                  line = grid_view_string_cells(s->grid, 0, i, screen_size_x(s));
                 off = 0;                  log_debug("XXX %s", line);
                 for (i = 0; i < screen_size_x(&wp->base); i++) {                  if ((ptr = strstr(line, searchstr)) != NULL)
                         gc = grid_view_peek_cell(wp->base.grid, i, j);                          break;
                         if (gc->flags & GRID_FLAG_UTF8) {                  xfree(line);
                                 gu = grid_view_peek_utf8(wp->base.grid, i, j);  
                                 buf = xrealloc(buf, 1, off + 8);  
                                 for (k = 0; k < UTF8_SIZE; k++) {  
                                         if (gu->data[k] == 0xff)  
                                                 break;  
                                         buf[off++] = gu->data[k];  
                                 }  
                         } else {  
                                 buf = xrealloc(buf, 1, off + 1);  
                                 buf[off++] = gc->data;  
                         }  
                 }  
                 while (off > 0 && buf[off - 1] == ' ')  
                         off--;  
                 buf[off] = '\0';  
   
                 if ((s = strstr(buf, searchstr)) != NULL) {  
                         s = section_string(buf, off, s - buf, 40);  
                         xfree(buf);  
                         return (s);  
                 }  
         }          }
           if (ptr != NULL) {
         xfree(buf);                  ptr = section_string(line, strlen(ptr), ptr - line, 40);
         return (NULL);                  xfree(line);
           }
           return (ptr);
 }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4