fix. sorting would fail at dirs with special matching chars in the name
This commit is contained in:
parent
6b6935761a
commit
ce99256868
1 changed files with 24 additions and 5 deletions
|
|
@ -40,6 +40,7 @@ sub cmdline {
|
|||
if ( scalar @dirs == 0 ) {
|
||||
push @dirs, ".";
|
||||
}
|
||||
# map { print "$_\n"; } @dirs;
|
||||
}
|
||||
|
||||
sub getdir {
|
||||
|
|
@ -182,20 +183,38 @@ sub output_doubles(@) {
|
|||
sub output($) {
|
||||
my $string = shift;
|
||||
if ($opts{e}) {
|
||||
$string =~ s/([ \&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\010\013\020\011])/\\${1}/g;
|
||||
$string = &escape($string);
|
||||
}
|
||||
print "$string";
|
||||
}
|
||||
|
||||
sub escape($) {
|
||||
my $string = shift;
|
||||
$string =~ s/([ \&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\010\013\020\011])/\\${1}/g;
|
||||
return $string;
|
||||
}
|
||||
|
||||
sub unescape($) {
|
||||
my $string = shift;
|
||||
$string =~ s/\\([ \&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\010\013\020\011])/${1}/g;
|
||||
return $string;
|
||||
}
|
||||
|
||||
sub dirsort {
|
||||
my $firstdir = $dirs[0];
|
||||
if ( $a =~ /^$firstdir\/[^\/]*$/ && $b =~ /^$firstdir\/[^\/]*$/ ) {
|
||||
my $firstdir = &escape($dirs[0]);
|
||||
my $debuglevel = 0;
|
||||
print "$a $b\n" if $debuglevel == 1;
|
||||
if ( $a =~ /^$firstdir\/[^\/]*$/o && $b =~ /^$firstdir\/[^\/]*$/o ) {
|
||||
print "A $a $b\n" if $debuglevel == 1;
|
||||
return &wardsort;
|
||||
} elsif ( ( $a =~ /^$firstdir\/[^\/]*$/ ) && ! ( $b =~ /^$firstdir\/[^\/]*$/ ) ) {
|
||||
} elsif ( ( $a =~ /^$firstdir\/[^\/]*$/o ) && ! ( $b =~ /^$firstdir\/[^\/]*$/o ) ) {
|
||||
print "B $a $b\n" if $debuglevel == 1;
|
||||
return -1;
|
||||
} elsif ( ! ( $a =~ /^$firstdir\/[^\/]*$/ ) && ( $b =~ /^$firstdir\/[^\/]*$/ ) ) {
|
||||
} elsif ( ! ( $a =~ /^$firstdir\/[^\/]*$/o ) && ( $b =~ /^$firstdir\/[^\/]*$/o ) ) {
|
||||
print "C $a $b\n" if $debuglevel == 1;
|
||||
return 1;
|
||||
} else {
|
||||
print "D $a $b\n" if $debuglevel == 1;
|
||||
return &wardsort;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue