Show
Ignore:
Timestamp:
11/08/07 00:50:11 (7 years ago)
Author:
hirose31
Message:

lang/perl/misc/dirtree/dirtree-hirose31.pl: propset

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/misc/dirtree/dirtree-hirose31.pl

    • Property svn:mime-type set to text/html;charset=euc-jp
    r1220 r1221  
    66my $version = $rcsid =~ /,v ([\d.]+)/ ? $1 : 'unknown'; 
    77# 
    8 # �ǥ��쥯�ȥ��꡼������롣 
     8# ディレクトリツリーを表示する。 
    99# 
    1010# KNOWN BUG 
    11 #     * �ϡ��ɥ�����̤Υե������ߤʤ��Ƥ��ޤ� 
     11#     * ハードリンクを普通のファイルとみなしてしまう 
    1212# 
    1313# TODO 
    14 #     * ����������쥯�ȥ���������������ˡ� 
    15 #     * ����������� 
    16 # 
    17 # hoge/ �� hoge2/ �� bar1 
    18 #       ��        �� bar2 
    19 #       ��        �� bar3 
    20 #       �� foo1 
    21 #       �� foo2 
    22 #       �� foo3 
    23 #       �� fooln �� foo1 
     14#     * 走査するディレクトリの深さを指定できるように。 
     15#     * ソート方法の選択。 
     16# 
     17# hoge/ ┬ hoge2/ ┬ bar1 
     18#       │        ├ bar2 
     19#       │        └ bar3 
     20#        foo1 
     21#        foo2 
     22#        foo3 
     23#       └ fooln → foo1 
    2424#  
    2525 
     
    6464                         }, 
    6565                    2 => {                # 2byte char 
    66                           LRxL => '��', 
    67                           xxUL => '��', 
    68                           xRUL => '��', 
    69                           xRUx => '��', 
    70                           LRxx => '��', 
    71                           LRUL => '��', 
    72                           LINK => '��', 
     66                          LRxL => '', 
     67                          xxUL => '', 
     68                          xRUL => '', 
     69                          xRUx => '', 
     70                          LRxx => '', 
     71                          LRUL => '', 
     72                          LINK => '', 
    7373                         }, 
    7474                   }; 
     
    9494                                  }; 
    9595 
    96 ### �ǥ��쥯�ȥ���μ� 
     96### ディレクトリの情報の取得 
    9797&get_tree(\%tree, $rootdir) or die "cannot get_tree $rootdir. $!"; 
    9898 
    9999&dprint("MN", $tree{$top_ino}->{name}, "\n"); 
    100100 
    101 ### ������� 
     101### 凡例の表示 
    102102print <<"EOH"; 
    103103*** dirtree of $ENV{HOST}:$rootdir/    @{ [scalar(localtime())] } *** 
    104104 
    105 �� 
    106      / : �ǥ��쥯�ȥ�     ��: ����������� 
    107      ? : ����쥯�ȥ�x���ץ���) 
     105凡例 
     106     / : ディレクトリ  
     107     →: シンボリックリンク 
     108     ? : 除外ディレクトリ(-xオプション) 
    108109 
    109110EOH 
    110111 
    111 ### �ǥ��쥯�ȥ�ɽ�� 
     112### ディレクトリの表示 
    112113&traverse( $tree{$top_ino}, 0, 0, scalar @{$tree{$top_ino}->{cont}}, [0]); 
    113114 
     
    148149        my @content; 
    149150        while ( $name = readdir($DH) ) { 
    150                 next if ($name =~ /^\.{1,2}$/); # . ��. �ϤȤФ� 
     151                next if ($name =~ /^\.{1,2}$/); # . や .. はとばす 
    151152                push @content, join '/', $name; 
    152153        } 
     
    157158                my $fullpath = join '/', $path, $name; 
    158159 
    159                 # reddir ���ƤߤĤ��ä��Ҷ���inode 
     160                # reddir してみつかった子供の inode 
    160161                my $ch_ino = (lstat($fullpath))[1];  
    161162 
    162163                if ( -d $fullpath ) { 
    163                         ### �ǥ��쥯�ȥ�            $tree->{$ch_ino} = { 
     164                        ### ディレクトリ 
     165                        $tree->{$ch_ino} = { 
    164166                                                                name => $name, 
    165167                                                                inode => $ch_ino, 
     
    168170 
    169171                        if ( -l $fullpath ) { 
    170                                 ## �ǥ��쥯�ȥ��Υ����ʤ�                     $tree->{$ch_ino}->{cont} = readlink $fullpath; 
     172                                ## ディレクトリへのリンクなら 
     173                                $tree->{$ch_ino}->{cont} = readlink $fullpath; 
    171174                        } else { 
    172175                                my $is_except = 0; 
     
    179182                                        $tree->{$ch_ino}->{cont} = [ undef ]; 
    180183                                } else { 
    181                                         ## �ǥ��쥯�ȥ��餽����������                         &get_tree($tree, $fullpath) 
     184                                        ## ディレクトリならその中を走査する 
     185                                        &get_tree($tree, $fullpath) 
    182186                                } 
    183187                        } 
    184188                
    185189                } elsif ( -f $fullpath ) { 
    186                         ### �ե�����             $tree->{$ch_ino} = { 
     190                        ### ファイル 
     191                        $tree->{$ch_ino} = { 
    187192                                                                name  => $name, 
    188193                                                                inode => $ch_ino, 
     
    190195 
    191196                        if ( -l $fullpath ) { 
    192                                 ## �ե������Υ����ʤ�                      $tree->{$ch_ino}->{cont} = readlink $fullpath; 
     197                                ## ファイルへのリンクなら 
     198                                $tree->{$ch_ino}->{cont} = readlink $fullpath; 
    193199                        } else { 
    194200                                $tree->{$ch_ino}->{cont} = undef; 
     
    199205                } 
    200206 
    201                 # �Ƥ�cont �˻Ҷ��ι�¤���á� 
     207                # 親の cont に子供の構造体を追加。 
    202208                push @{ $tree->{$ino}->{cont} }, $tree->{$ch_ino}; 
    203209        } 
     
    212218        my $pos = shift; 
    213219        my $pos_max = shift; 
    214         my @bc_lower = @{ shift() }; # ���˽�"��" 
     220        my @bc_lower = @{ shift() }; # 途中に書く "│" 
    215221 
    216222        ### 
    217         ### ��ʬ�ν� 
     223        ### 自分の処理 
    218224        ### 
    219225        my $bc;                                         # branch char 
    220226      
    221         # �ޤ����� 
     227        # 枝の文字の決定 
    222228        if ( $pos == 0 ) {                      # root dir 
    223229                $bc = $Branch{LRUL}; 
    224230        } elsif ( $pos == 1 ) { 
    225                 if ( $pos_max == 1 ) {  # �Ҷ���1�Ĥ����ʤ� 
     231                if ( $pos_max == 1 ) {  # 子供が1つしかない 
    226232                        $bc = $Branch{LRxx}; 
    227                 } else {                                # �Ҷ���ʣ���             $bc = $Branch{LRxL}; 
    228                 } 
    229         } elsif ( $pos == $pos_max ) { # �Ǹ��Ҷ� 
     233                } else {                                # 子供が複数ある 
     234                        $bc = $Branch{LRxL}; 
     235                } 
     236        } elsif ( $pos == $pos_max ) { # 最後の子供 
    230237                $bc = $Branch{xRUx}; 
    231         } else {                                        # ���λҶ� 
     238        } else {                                        # 途中の子供 
    232239                $bc = $Branch{xRUL}; 
    233240        } 
     
    242249 
    243250        if ( $th->{cont} ) { 
    244                 ### �ǥ��쥯�ȥ�    ### �ǥ��쥯�ȥ���symlink 
    245                 ### �ե�������ymlink 
    246  
    247                 # ref �������Τϥե�������symlink 
     251                ### ディレクトリ 
     252                ### ディレクトリへの symlink 
     253                ### ファイルへのsymlink 
     254 
     255                # ref じゃないのはファイルへの symlink 
    248256                # $obj .= "/ " if ref $th->{cont}; 
    249257 
     
    260268                } 
    261269 
    262                 push @bc_lower, $dind;  # �����ξ�               pop @bc_lower if $pos == $pos_max; 
     270                push @bc_lower, $dind;  # 途中の|の情報 
     271                pop @bc_lower if $pos == $pos_max; 
    263272           
    264273        } else { 
    265                 ### ���Υե�����          $obj .= "\n"; 
     274                ### 普通のファイル 
     275 
     276                $obj .= "\n"; 
    266277                $indent_str = ' ' x $ind; 
    267278                foreach ( @bc_lower) { 
    268                         # ������" 
     279                        # 途中の"│" 
    269280                        substr($indent_str, $_, 2) = $Branch{xxUL} if $_ > 1; 
    270281                } 
     
    275286 
    276287        ### 
    277         ### �Ҷ��ν� 
     288        ### 子供の処理 
    278289        ### 
    279290        if ( ref $th->{cont} ) { 
    280                 ### �ǥ��쥯�ȥ�r �ǥ��쥯�ȥ���symlink 
     291                ### ディレクトリ or ディレクトリへの symlink 
    281292                $pos     = 1; 
    282293                #     $pos_max = scalar @{ $th->{cont} }; 
     
    288299                                        : ( defined $_ )  
    289300                                                ? print " $Branch{LINK} $_\n" # symlink 
    290                                                         : print "?\n"; # -x �ǽ�줿�� 
     301                                                        : print "?\n"; # -x で除外されたもの 
    291302                        $pos++; 
    292303                } 
    293304        } elsif ( defined $th->{cont} ) { 
    294                 ### �ե�������symlink 
     305                ### ファイルへの symlink 
    295306                print " $Branch{LINK} $th->{cont}\n" 
    296307        }