Skip to content

Commit

Permalink
pager: drop "wait for output to run less" hack
Browse files Browse the repository at this point in the history
Commit 35ce862 (pager: Work around window resizing bug in
'less', 2007-01-24) causes git's pager sub-process to wait
to receive input after forking but before exec-ing the
pager. To handle this, run-command had to grow a "pre-exec
callback" feature. Unfortunately, this feature does not work
at all on Windows (where we do not fork), and interacts
poorly with run-command's parent notification system. Its
use should be discouraged.

The bug in less was fixed in version 406, which was released
in June 2007. It is probably safe at this point to remove
our workaround. That lets us rip out the preexec_cb feature
entirely.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
peff authored and gitster committed Jun 5, 2012
1 parent 3fe4498 commit e8320f3
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 29 deletions.
18 changes: 0 additions & 18 deletions pager.c
Expand Up @@ -11,21 +11,6 @@
* something different on Windows. * something different on Windows.
*/ */


#ifndef WIN32
static void pager_preexec(void)
{
/*
* Work around bug in "less" by not starting it until we
* have real input
*/
fd_set in;

FD_ZERO(&in);
FD_SET(0, &in);
select(1, &in, NULL, &in, NULL);
}
#endif

static const char *pager_argv[] = { NULL, NULL }; static const char *pager_argv[] = { NULL, NULL };
static struct child_process pager_process; static struct child_process pager_process;


Expand Down Expand Up @@ -93,9 +78,6 @@ void setup_pager(void)
static const char *env[] = { "LESS=FRSX", NULL }; static const char *env[] = { "LESS=FRSX", NULL };
pager_process.env = env; pager_process.env = env;
} }
#ifndef WIN32
pager_process.preexec_cb = pager_preexec;
#endif
if (start_command(&pager_process)) if (start_command(&pager_process))
return; return;


Expand Down
10 changes: 0 additions & 10 deletions run-command.c
Expand Up @@ -394,16 +394,6 @@ int start_command(struct child_process *cmd)
unsetenv(*cmd->env); unsetenv(*cmd->env);
} }
} }
if (cmd->preexec_cb) {
/*
* We cannot predict what the pre-exec callback does.
* Forgo parent notification.
*/
close(child_notifier);
child_notifier = -1;

cmd->preexec_cb();
}
if (cmd->git_cmd) { if (cmd->git_cmd) {
execv_git_cmd(cmd->argv); execv_git_cmd(cmd->argv);
} else if (cmd->use_shell) { } else if (cmd->use_shell) {
Expand Down
1 change: 0 additions & 1 deletion run-command.h
Expand Up @@ -39,7 +39,6 @@ struct child_process {
unsigned stdout_to_stderr:1; unsigned stdout_to_stderr:1;
unsigned use_shell:1; unsigned use_shell:1;
unsigned clean_on_exit:1; unsigned clean_on_exit:1;
void (*preexec_cb)(void);
}; };


int start_command(struct child_process *); int start_command(struct child_process *);
Expand Down

0 comments on commit e8320f3

Please sign in to comment.