On Thu, Apr 27, 2006 at 11:34:44AM +0100, Frank Hofmann - Solaris Sustaining 
wrote:
> Hi experts,
> 
> 
> I'm wondering why this:
> 
> ::walk ufs_inode_cache | ::print inode_t i_ufsvfs
> 
> does work but the following:
> 
> ::walk ufs_inode_cache | ::eval '=J' | ::print inode_t i_ufsvfs
> 
> gives an error.
> 
> Apart from whitespaces, there's no difference that I can see in
> the output of the walk and the output of the additional eval.
> 
> Why does it fail ? Is it supposed to ?

It fails because the output of =J starts with spaces, which are incompatible
with pipelines.  Generally, ::eval is only useful at the end of pipelines;
::map belongs in

> To be honest, what I'd like to get is the second line with '=JJ',
> i.e. get me associated pairs of inode/i_ufsvfs addresses.

I'm not sure what you're wanting, but:

> ::walk ufs_inode_cache l | ::print inode_t i_ufsvfs | ::eval '=J; <l=J'

might be it.  (though the order is backwards)

Cheers,
- jonathan

-- 
Jonathan Adams, Solaris Kernel Development

Reply via email to