Subject: Re: Finding junction points
From: "Jeffrey J. Kosowsky" <[email-masked]>
To: "Jeffrey J. Kosowsky" <[email-masked]>
Cc: Cyrille Lefevre <[email-masked]>, [email-masked]
Date: Mon, 07 Feb 2011 15:04:50 -0500
List-Id: <cygwin.cygwin.com>

Jeffrey J. Kosowsky wrote at about 14:59:00 -0500 on Monday, February 7, 2011:
 > Cyrille Lefevre wrote at about 20:46:10 +0100 on Monday, February 7, 2011:
 >  > 
 >  > Le 07/02/2011 20:25, Jeffrey J. Kosowsky a écrit :
 >  > > Yes - that is one of my two problems:
 >  > > 1. It gets messed up on loops created by its own junctions
 >  > > 2. The format of the output is a bit difficult to parse since you have
 >  > >     to go back up to see what directory you are in.
 >  > >
 >  > > Ideally, I would like to have the output in 2-columns like:
 >  > > source1   target1
 >  > > source 2  target2
 >  > > etc.
 >  > 
 >  > something like this ?
 >  > 
 >  > cmd /c dir /a:l /n | awk '/^ /{$1=$2="";sub(/^ 
 >  > +/,"");d=$0;next}/JONCTION/{sub(/.*<JONCTION> +/,"");sub(/\[/, "-> 
 >  > ");sub(/\]$/, ""); print d "\\" $0}'
 >  > 
 > 
 > Yes that is helpful (though at least in English one needs to use
 > JUNCTION rather than JONCTION :) and I added >/dev/null to capture the
 > "too long" lines.
 > 
 > However, it still has the problem we both identified of capturing
 > many duplicates and loops (until one gets them too long).
 > 
 > For example,
 > C:\Documents and Settings\Default User ->C:\Users\Default
 > is a duplicate of:
 > C:\Users\Default User ->C:\Users\Default
 > 
 > To do this right, one would want to stop the recursion as soon as a
 > junction is found since recursing down the junction will by definition
 > create duplicates.
 > 
 > The recursion one wants is something like (in pseudo code)
 > 
 > find_junctions(dir) {
 > 	for 'each' entry in dir {
 > 		if entry is a junction, then print junction
 > 		if 'entry' is a directory, find_junction(entry)
 > 	}
 > }

I realized that your code didn't have the '/s' recursion flag so
strictly speaking it wasn't susceptible to the looping problem.

But, it seems like what I really maybe need here is some help from
somebody fluent in PowerShell since I imagine that combining Windows
'dir' with 'bash' recursion and calls to things like 'awk' to parse
the results will be painfully slow. But maybe native PowerShell will
allow closer access to the underlying filesystem functions.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple