version 1.4, 2009/06/24 22:04:18 |
version 1.5, 2009/06/24 22:49:56 |
|
|
|
|
#include <errno.h> |
#include <errno.h> |
#include <fcntl.h> |
#include <fcntl.h> |
|
#include <fnmatch.h> |
#include <paths.h> |
#include <paths.h> |
#include <signal.h> |
#include <signal.h> |
#include <stdint.h> |
#include <stdint.h> |
|
|
} |
} |
|
|
char * |
char * |
window_pane_search(struct window_pane *wp, const char *searchstr) |
window_pane_search(struct window_pane *wp, const char *searchstr, u_int *lineno) |
{ |
{ |
struct screen *s = &wp->base; |
struct screen *s = &wp->base; |
char *line, *ptr; |
char *newsearchstr, *line, *msg; |
u_int i; |
u_int i; |
|
|
ptr = NULL; |
msg = NULL; |
|
xasprintf(&newsearchstr, "*%s*", searchstr); |
|
|
for (i = 0; i < screen_size_y(s); i++) { |
for (i = 0; i < screen_size_y(s); i++) { |
line = grid_view_string_cells(s->grid, 0, i, screen_size_x(s)); |
line = grid_view_string_cells(s->grid, 0, i, screen_size_x(s)); |
log_debug("XXX %s", line); |
if (fnmatch(newsearchstr, line, 0) == 0) { |
if ((ptr = strstr(line, searchstr)) != NULL) |
msg = line; |
break; |
if (lineno != NULL) |
|
*lineno = i; |
|
break; |
|
} |
xfree(line); |
xfree(line); |
} |
} |
if (ptr != NULL) { |
|
ptr = section_string(line, strlen(ptr), ptr - line, 40); |
xfree(newsearchstr); |
xfree(line); |
return (msg); |
} |
|
return (ptr); |
|
} |
} |