| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/usr/local/bin/perl
- # find the longest common directory prefix of the 2 input paths
- # input is:
- # $_[0] = path 1
- # $_[1] = path 2
- #
- # output is:
- # relative path
- sub CTCommonPrefix {
- local( @path1 ) ;
- local( @path2 ) ;
- local( $count ) = 0 ;
- local( $thresh ) ;
- local( $tmp ) = $_[0] ;
- $tmp =~ s/^\/// ;
- @path1 = split ( /\//, $tmp ) ;
- $tmp = $_[1] ;
- $tmp =~ s/^\/// ;
- @path2 = split ( /\//, $tmp ) ;
- if ( $path1[0] eq "view" ) {
- $thresh = 1 ;
- } else {
- $thresh = 0 ;
- }
- while (( $path1[0] eq $path2[0] ) &&
- ( $#path1 >= 0 ) &&
- ( $#path2 > 0 )) {
- shift @path1;
- shift @path2;
- $count++ ;
- }
- local( $ret ) ;
- if ( $count > $thresh ) {
- while ( $#path1 >= 0 ) {
- $ret = $ret . "../" ;
- shift @path1 ;
- }
- while ( $#path2 >= 0 ) {
- $ret = $ret . $path2[0] . "/" ;
- shift @path2 ;
- }
- $ret =~ s/\/$// ;
- } else {
- $ret = $_[1] ;
- }
- $ret ;
- }
- # $pwd = $ENV{"PWD"} ;
- # sometimes the PWD environment variable lies, and getcwd by itself doesn't
- # report the view extention.
- use Cwd ;
- $pwd = getcwd() ;
- if ( $pwd =~ /^\/vobs/ ) {
- open( VFILE, "/usr/atria/bin/cleartool pwv -short |" ) ;
- $view = <VFILE> ;
- close( VFILE ) ;
- $view =~ s/\n$// ;
- $pwd = "/view/" . $view . $pwd ;
- }
- $output = "" ;
- foreach $item ( @ARGV ) {
- $common = &CTCommonPrefix( $pwd, $item ) ;
- if ( length( $common ) > 0 ) {
- if ( $output ne "" ) {
- $output = $output . " " ;
- }
- $output = $output . $common ;
- }
- }
- print $output . "\n" ;
|