portsnap

Robert Bonomi bonomi at mail.r-bonomi.com
Mon Nov 19 21:18:04 UTC 2012


> From owner-freebsd-questions at freebsd.org  Mon Nov 19 14:15:23 2012
> To: freebsd-questions at freebsd.org
> From: jb <jb.1234abcd at gmail.com>
> Subject: Re: portsnap
> Date: Mon, 19 Nov 2012 20:13:45 +0000 (UTC)
>
> RW <rwmaillists <at> googlemail.com> writes:
>
> >
> > On Mon, 19 Nov 2012 16:10:48 +0000 (UTC) jb wrote:
> >
> > > > You gave portsnap two commands - one succeeded and the other 
> > > > failed.
>
> Nope. I gave ONE command: 'portsnap fetch update'.

FALSE TO FACT.

You invoked one executable, 'portsnap',
giving IT two commands, 'fetch' and 'update' as parameters.

Which is *EXACTlY* the same as if you had invoked that
executable twice, giving it one command (in the order above)
on each invocation.

The 'fetch' command succeeded.
The 'update' command failed.

>
> > > But this looks like a flaky entry validation - it should be rejected 
> > > up front as invalid entry, even if it applied to the second part - 
> > > "update". Because the effect of processing the entire entry "fetch" 
> > > plus "update" is lost anyway.
> >
> > Not isn't, you've brought the snapshot up to date.
>
> Well, yes. But as I already explained, there was ONE command.

You misunderstood the terminology -- you gave *TWO* commmands _to_the_
_portsnap_program_.

when portsnap is given multiple commands as invocation arguments,
it processes them sequentially, retuning an 'exit status' for the
first command that _fails, or 'success' if none of the commands 
failed.

> If I wanted to be satisfied with two command outcomes, even if logically 
> linked by sequential execution, then I would do:
> # portsnap fetch; portsnap update
>
> There is a subtle, but important difference.

Only in your expectations.  <grin>

> In general, if I wanted to check for command completion code, which is 
> quite common in UNIX CLI or scripting env, it would make a lot of 
> difference if a command failed half way in both cases:
> 'portsnap fetch update; check-completion-code'
> and 'portsnap fetch; check-completion-code; portsnap update; 
> check-completion-code'

'portsnap fetch update' is the EXACT equivalent of:
  'portsnap fetch && portsnap update; `check-completion-code'`

Your: 'portsnap fetch; check-completion-code; portsnap update;
  check-completion-code'
is bad/incorrect scripting since it _unconditionally_ executes 
'portsnap update', which you do NOT want to do if/when 'fetch' 
fails.




More information about the freebsd-questions mailing list