git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH (topgit) 1/2] Implement setup_pager just like in git

From
MKmartin f krafft <madduck@madduck.net>
Date
Jan 6, 2009, 20:32 UTC
Message-ID
<20090106203203.GA11274@lapse.rw.madduck.net>
In-Reply-To
<acaae74f79d385014e726b97f8258b2a0caa3dd0.1231254832.git.kirr@landau.phys.spbu.ru>

Thanks, Kirill, for the patches. A couple of comments inline. I hope Petr has a chance to look too.

also sprach Kirill Smelkov <kirr@landau.phys.spbu.ru> [2009.01.06.1616 +0100]:
Show 6 quoted lines
> +# isatty FD
> +isatty()
> +{
> +	tty -s 0<&$1 || return 1
> +	return 0
> +}

You don't need any of the return statements. Functions' return values are the return values of the last commands they execute. Since we are not using set -e, just "tty -s 0<&$1" in the body will have the same effect.

Show 7 quoted lines
> +	# TG_PAGER = GIT_PAGER | PAGER
> +	# http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-03/0792.html
> +	case ${GIT_PAGER+XXX} in
> +	'')
> +		case ${PAGER+XXX} in
> +		'')
> +			# both GIT_PAGER & PAGER unset
I find this very confusing. Why not simply
  TG_PAGER="${GIT_PAGER:-}"
  TG_PAGER="${TG_PAGER:-$PAGER}"
?
> +     [ -z "$TG_PAGER"  -o  "$TG_PAGER" = "cat" ]  && return 0

What if I set my pager to /bin/cat? But I suppose then there's just a wasted FIFO and process, nothing big.

> +	_pager_fifo="$(mktemp -t tg-pager-fifo.XXXXXX)"
> +	rm "$_pager_fifo" && mkfifo -m 600 "$_pager_fifo"

There's a race condition here. I can't see a real problem with it, though, nor do I know of a better way.

Show 9 quoted lines
> +	"$TG_PAGER" < "$_pager_fifo" &
> +	exec > "$_pager_fifo"		# dup2(pager_fifo.in, 1)
> +
> +	# this is needed so e.g. `git diff` will still colorize it's output if
> +	# requested in ~/.gitconfig with color.diff=auto
> +	export GIT_PAGER_IN_USE=1
> +
> +	# atexit(close(1); wait pager)
> +	trap "exec >&-; rm $_pager_fifo; wait" EXIT
Consistency: $_pager_fifo is not passed as a quoted string to rm
here. In the unlikely event that $TMPDIR contains a space, this
would fail.
I definitely want Petr's opinion on this before I integrate it.
-- 
martin | http://madduck.net/ | http://two.sentenc.es/
 
if you see an onion ring -- answer it!
 
spamtraps: madduck.bogus@madduck.net
Previous: Kirill SmelkovNext: Adeodato Simó
Message 3 of 14 in “tg-patch: fix pagination”
  1. 0/2 tg-patch: fix paginationKirill Smelkov, Jan 6, 2009
  2. 1/2 Implement setup_pager just like in gitKirill Smelkov, Jan 6, 2009
  3. martin f krafftJan 6, 2009
  4. Adeodato SimóJan 7, 2009
  5. Kirill SmelkovJan 7, 2009
  6. Thomas RastJan 7, 2009
  7. Bert WesargJan 7, 2009
  8. Pierre HabouzitJan 7, 2009
  9. Petr BaudisJan 7, 2009
  10. Kirill SmelkovJan 7, 2009
  11. martin f krafftJan 8, 2009
  12. Kirill SmelkovJan 8, 2009
  13. 2/2 tg-patch: fix paginationKirill Smelkov, Jan 6, 2009
  14. Kirill SmelkovJan 18, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.