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