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

Re: [PATCHv2 02/11] git-p4: test debug macro

From
PWPete Wyckoff <pw@padd.com>
Date
Dec 18, 2011, 13:50 UTC
Message-ID
<20111218135047.GA16487@padd.com>
In-Reply-To
<20111218032238.GA6368@elie.hsd1.il.comcast.net>
jrnieder@gmail.com wrote on Sat, 17 Dec 2011 21:26 -0600:
Show 7 quoted lines
> Pete Wyckoff wrote:
> 
> > +	# 2 is SIGINT, ash/dash does not know symbolic names
> > +	trap echo 2
> 
> 'trap "$cmd" INT' works, and it's even in POSIX. ;)
> http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#trap

Nice! But ash/dash handle subshell INT differently. With ash, the entire test exits after the ctrl-C, even if caught by a trap in a subshell. Not so nice. Here's a demonstration.

-----------8<------------- # shell top.sh echo top.sh $SHELL trap.sh echo top.sh: exit status from trap.sh: $? echo top.sh: exiting exit 0 -----------8<-------------

-----------8<------------- # shell trap.sh echo trap.sh trap "echo trap.sh caught INT" INT sleep 3600 trap - INT echo trap.sh: exiting exit 0 -----------8<-------------

Run "bash top.sh".  Hit ctrl-c, you'll see:
    $ bash top.sh
    top.sh
    trap.sh
    ^Ctrap.sh caught INT
    trap.sh: exiting
    top.sh: exit status from trap.sh: 0
    top.sh: exiting
Similarly with "ash top.sh":
    $ ash top.sh
    top.sh
    trap.sh
    ^Ctrap.sh caught INT
    trap.sh: exiting

The top-level script also gets the ctrl-c, but exits on the INT anyway, after reaping its child. I can't find where POSIX says if this is correct or not. It isn't how I want it to work here.

I'll add a comment above debug() to explain that it works in bash but not ash. At least it prints out the P4 environment information needed to debug.

		-- Pete
Previous: Jonathan NiederNext: Pete Wyckoff
Message 7 of 20 in “git-p4: asciidoc documentation and fixes”
  1. 00/11 git-p4: asciidoc documentation and fixesPete Wyckoff, Dec 17, 2011
  2. 01/11 git-p4: introduce asciidoc documentationPete Wyckoff, Dec 17, 2011
  3. 02/11 git-p4: test debug macroPete Wyckoff, Dec 17, 2011
  4. Luke DiamandDec 17, 2011
  5. 02/11 git-p4: test debug macroPete Wyckoff, Dec 18, 2011
  6. Jonathan NiederDec 18, 2011
  7. Pete WyckoffDec 18, 2011
  8. 02/11 git-p4: test debug macroPete Wyckoff, Dec 18, 2011
  9. Luke DiamandDec 18, 2011
  10. Junio C HamanoDec 18, 2011
  11. Pete WyckoffDec 20, 2011
  12. 03/11 git-p4: clone does not use --git-dirPete Wyckoff, Dec 17, 2011
  13. 04/11 git-p4: test cloning with two dirs, clarify docPete Wyckoff, Dec 17, 2011
  14. 05/11 git-p4: document and test clone --branchPete Wyckoff, Dec 17, 2011
  15. 06/11 git-p4: honor --changesfile option and testPete Wyckoff, Dec 17, 2011
  16. 07/11 git-p4: document and test --import-localPete Wyckoff, Dec 17, 2011
  17. 08/11 git-p4: test --max-changesPete Wyckoff, Dec 17, 2011
  18. 09/11 git-p4: test --keep-pathPete Wyckoff, Dec 17, 2011
  19. 10/11 git-p4: test and document --use-client-specPete Wyckoff, Dec 17, 2011
  20. 11/11 git-p4: document and test submit optionsPete Wyckoff, Dec 17, 2011

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.