On Sat, Aug 25, 2007 at 10:45:10AM +0800, zhijun wrote:
> 
> I really appreciate your kindness to explain this for me. 
> 
> ::array ... p | ::eval '<p/Kn | =Kn' gives pure uintptr_t's  so it works 
> well with mdb pipeline. What I am suprized is that ::array ... p | /Kn 
> *doesn't* give pure uintptr_t's, as its output has an address in the first 
> line, so I expect it will break the mdb pipeline, but instead it works. Am 
> I missing anything here?
> 

As mentioned in the original mail, dcmds have a way of 'knowing' when
they are in pipe context (DCMD_PIPE_OUT) and can alter their output
based on this.  For the '/' operator, you can find this check in
print_arglist():

        if (DCMD_HDRSPEC(flags) && (flags & DCMD_PIPE_OUT) == 0) {

Are you just curious, or are you trying to solve a particular problem?
As Jonathan mentioned, there are more efficient ways to accomplish what
you have demonstrated thus far.

- Eric

--
Eric Schrock, Solaris Kernel Development       http://blogs.sun.com/eschrock

Reply via email to