#!/usr/local/bin/perl -w
my
$now
=
time
;
my
$mw
= MainWindow->new;
my
$t
=
$mw
->Table(
-scrollbars
=>
'e'
,
-fixedrows
=> 1,
-rows
=> 20);
$t
->
pack
(
-expand
=> 1,
-fill
=>
'both'
);
$dir
= (
@ARGV
) ?
shift
:
'.'
;
opendir
(DIR,
$dir
) ||
die
"Cannot opendir $dir:$!"
;
my
$r
= 1;
my
$c
= 0;
my
$name
;
foreach
$name
([
-text
=>
"Mode"
,
-anchor
=>
'e'
],
[
-text
=>
"Ln"
,
-anchor
=>
'e'
],
[
-text
=>
"User"
,
-anchor
=>
'w'
],
[
-text
=>
"Size"
,
-anchor
=>
'e'
],
[
-text
=>
"Date"
,
-anchor
=>
'w'
],
[
-text
=>
"Name"
,
-anchor
=>
'w'
])
{
$t
->put(0,
$c
++,
$t
->Label(
@$name
,
-relief
=>
'raised'
));
}
$t
->configure(
-columns
=>
$c
)
if
(
$c
>
$t
->cget(
'-columns'
));
my
@opt
= (
-relief
=>
'groove'
);
foreach
$name
(
sort
readdir
(DIR))
{
my
$c
= 0;
my
(
$dev
,
$ino
,
$mode
,
$nlink
,
$uid
,
$gid
,
$rdev
,
$size
,
$atime
,
$mtime
,
$ctime
,
$blksize
,
$blocks
) =
lstat
(
"$dir/$name"
);
die
"Cannot lstat $dir/$name:$!"
unless
(
defined
$dev
);
$t
->put(
$r
,
$c
++,
$t
->Label(
@opt
,
-text
=>
sprintf
(
"%o"
,
$mode
),
-anchor
=>
'e'
));
$t
->put(
$r
,
$c
++,
$t
->Label(
@opt
,
-text
=>
$nlink
,
-anchor
=>
'e'
));
$t
->put(
$r
,
$c
++,
$t
->Label(
@opt
,
-text
=>
$uid
,
-anchor
=>
'w'
));
$t
->put(
$r
,
$c
++,
$t
->Label(
@opt
,
-text
=>
$size
,
-anchor
=>
'e'
));
$t
->put(
$r
,
$c
++,
$t
->Label(
@opt
,
-text
=> fmtdate(
$mtime
),
-anchor
=>
'w'
));
$t
->put(
$r
,
$c
++,
$t
->Label(
@opt
,
-text
=>
$name
,
-anchor
=>
'w'
));
$r
++;
}
closedir
(DIR);
$t
->update;
$t
->focus;
MainLoop;
sub
fmtdate
{
my
$t
=
shift
;
my
(
$sec
,
$min
,
$hour
,
$mday
,
$mon
,
$year
,
$wday
,
$yday
,
$isdst
) =
localtime
(
$t
);
my
@mon
=
qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
;
sprintf
(
"%s %2d %2d:%2d"
,
$mon
[
$mon
],
$mday
,
$hour
,
$min
);
}