#!/usr/local/bin/perl


sub describe {
    $mode &= 07777;
    ($major, $minor) = $rdev ? $rdev > 0xFFFF ? 
	($rdev >> 18, $rdev & 0x3FFFF) : ($rdev >> 8, $rdev & 0xFF) : ();
    -l _ ? "symlink ".readlink $path :
	-d _ ? "directory $mode $uid.$gid" :
	    -f _ ? "file $mode $nlink $uid.$gid $size $mtime" :
		-c _ ? "device $mode $nlink $uid.$gid $major,$minor" :
		    -b _ ? "disk $mode $nlink $uid.$gid $major,$minor" :
			-p _ ? "pipe $mode $nlink $uid.$gid" :
			    "socket $mode $nlink $uid.$gid";
}


sub find {
	local($dir)=@_;
	
	opendir(DIR,$dir);
	for (reverse sort readdir DIR)
	{
		next if /^[.][.]?$|~$/;
		lstat ($path="$dir/$_");
		&find ($path) if -d _;
		($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
		 $atime,$mtime,$ctime,$blksize,$blocks) = lstat _;
		print "$path\n ", &describe, "\n";
		
	}
	lstat($path=$dir);
}

foreach (@ARGV)
{
	&find ($_);
}


	
