9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] p9p mk rc help
@ 2013-11-20 11:13 dexen deVries
  2013-11-20 14:11 ` erik quanstrom
  2013-11-20 22:48 ` Tony Lainson
  0 siblings, 2 replies; 5+ messages in thread
From: dexen deVries @ 2013-11-20 11:13 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

Hi list,

apologies for the keyword overload ;-)

I have a plan9port mkfile using Rc (MKSHELL=$PLAN9/bin/rc), a recipe
contains pipeline: FOO_COMMAND | BAR_COMMAND.

What is the correct way of detecting failure exit status of
FOO_COMMAND (a networked operation) and ignoring exit status of
BAR_COMMAND?
the best i came up with is very ugly:

target: prereq
    FOO_COMMAND | BAR_COMMAND
    st = $status
    if (~ $st ?* ^ '|' ^ *) {
        echo FOO_COMMAND failed
        exit 3 }

seems the | in pattern has to be quoted, otherwise is interpreted as
pipe operator.

regards,
--
dx



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] p9p mk rc help
  2013-11-20 11:13 [9fans] p9p mk rc help dexen deVries
@ 2013-11-20 14:11 ` erik quanstrom
  2013-11-20 14:49   ` arnold
  2013-11-20 22:48 ` Tony Lainson
  1 sibling, 1 reply; 5+ messages in thread
From: erik quanstrom @ 2013-11-20 14:11 UTC (permalink / raw)
  To: 9fans

> target: prereq
>     FOO_COMMAND | BAR_COMMAND
>     st = $status
>     if (~ $st ?* ^ '|' ^ *) {
>         echo FOO_COMMAND failed
>         exit 3 }

i think there a bug in this.  a trailing ~ 1 1
or similar is necessary to clear the status from the if.

alternately, how about replacing the if with simply

	! ~ $st ?* ^ '|' ^ *

which should correctly set the status.

- erik



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] p9p mk rc help
  2013-11-20 14:11 ` erik quanstrom
@ 2013-11-20 14:49   ` arnold
  2013-11-20 15:58     ` erik quanstrom
  0 siblings, 1 reply; 5+ messages in thread
From: arnold @ 2013-11-20 14:49 UTC (permalink / raw)
  To: 9fans

> 	! ~ $st ?* ^ '|' ^ *

Sheesh. I'm a long time Unix type and even to *me* that looks like
line noise. :-)

Arnold



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] p9p mk rc help
  2013-11-20 14:49   ` arnold
@ 2013-11-20 15:58     ` erik quanstrom
  0 siblings, 0 replies; 5+ messages in thread
From: erik quanstrom @ 2013-11-20 15:58 UTC (permalink / raw)
  To: arnold, 9fans

On Wed Nov 20 10:57:46 EST 2013, arnold@skeeve.com wrote:
> > 	! ~ $st ?* ^ '|' ^ *
>
> Sheesh. I'm a long time Unix type and even to *me* that looks like
> line noise. :-)

	! ~ $status ?* ^ '|' ^ *

ah, sorry.  FTFY.

- erik



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [9fans] p9p mk rc help
  2013-11-20 11:13 [9fans] p9p mk rc help dexen deVries
  2013-11-20 14:11 ` erik quanstrom
@ 2013-11-20 22:48 ` Tony Lainson
  1 sibling, 0 replies; 5+ messages in thread
From: Tony Lainson @ 2013-11-20 22:48 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

> What is the correct way of detecting failure exit status of
> FOO_COMMAND (a networked operation) and ignoring exit status of
> BAR_COMMAND?

Perhaps something like this would work?

target:
    fn ignore { $* || status=() }
    foo | ignore bar

Tony



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-11-20 22:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-20 11:13 [9fans] p9p mk rc help dexen deVries
2013-11-20 14:11 ` erik quanstrom
2013-11-20 14:49   ` arnold
2013-11-20 15:58     ` erik quanstrom
2013-11-20 22:48 ` Tony Lainson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).