Skip to content

Instantly share code, notes, and snippets.

@zwetan
Created March 3, 2014 17:36
Show Gist options
  • Save zwetan/9330194 to your computer and use it in GitHub Desktop.
Save zwetan/9330194 to your computer and use it in GitHub Desktop.
custom directory listing with redtamarin
import C.errno.*;
import C.stdlib.*;
import C.dirent.*;
import C.sys.stat.*;
trace( "----" );
function getFilesBySize( dirname:String, smallerFirst:Boolean = true ):Array
{
var entries:Array = [];
//format: { name: , size: }
var d:DIR = opendir( dirname );
if( d == null )
{
//opendir() set errno
return null;
}
var dp:dirent;
var statbuf:status;
var ffd:int;
while( (dp = readdir(d)) != null )
{
//ignore dot and dotdot
if( (dp.d_name == ".") || (dp.d_name == "..") )
{
continue;
}
statbuf = new status();
ffd = stat( dirname + "/" + dp.d_name, statbuf );
if( S_ISREG( statbuf.st_mode ) )
{
entries.push( { name:dp.d_name, size:statbuf.st_size } );
}
}
closedir( d );
if( smallerFirst )
{
entries.sortOn( "size", Array.NUMERIC );
}
else
{
entries.sortOn( "size", Array.DESCENDING | Array.NUMERIC );
}
return entries;
}
function printFiles( files:Array ):void
{
var i:uint;
var len:uint = files.length;
var file:Object;
for( i=0; i<len; i++ )
{
file = files[i];
trace( file.name + " - " + file.size + " bytes" );
}
}
var list:Array = getFilesBySize( "." );
trace( "found " + list.length + " files" );
printFiles( list );
trace( "----" );
trace( "bye bye program" );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment