Revision: 5684 http://jnode.svn.sourceforge.net/jnode/?rev=5684&view=rev Author: lsantha Date: 2009-10-20 21:23:04 +0000 (Tue, 20 Oct 2009)
Log Message: ----------- Applied patch by Mark Kokish. Modified Paths: -------------- trunk/cli/descriptors/org.jnode.command.file.xml trunk/cli/src/commands/org/jnode/command/file/DirCommand.java Modified: trunk/cli/descriptors/org.jnode.command.file.xml =================================================================== --- trunk/cli/descriptors/org.jnode.command.file.xml 2009-10-15 14:50:26 UTC (rev 5683) +++ trunk/cli/descriptors/org.jnode.command.file.xml 2009-10-20 21:23:04 UTC (rev 5684) @@ -262,7 +262,8 @@ <option argLabel="url" shortName="u" longName="url" description="print a hex dump of a URL"/> </syntax> <syntax alias="ls"> - <empty description="list the current directory"/> + <empty description="with -l, print sizes in human readable format (e.g., 1K 234M 2G)"/> + <option argLabel="humanReadable" shortName="h" longName="human-readable"/> <repeat> <argument argLabel="path" description="list files or directories"/> </repeat> Modified: trunk/cli/src/commands/org/jnode/command/file/DirCommand.java =================================================================== --- trunk/cli/src/commands/org/jnode/command/file/DirCommand.java 2009-10-15 14:50:26 UTC (rev 5683) +++ trunk/cli/src/commands/org/jnode/command/file/DirCommand.java 2009-10-20 21:23:04 UTC (rev 5684) @@ -23,6 +23,7 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Comparator; @@ -31,6 +32,7 @@ import org.jnode.shell.AbstractCommand; import org.jnode.shell.syntax.Argument; import org.jnode.shell.syntax.FileArgument; +import org.jnode.shell.syntax.FlagArgument; /** * @author epr @@ -44,15 +46,18 @@ private static final SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm"); private static final String help_path = "the file or directory to list"; + private static final String help_humanReadable = "with -l, print sizes in human readable format (e.g., 1K 234M 2G)"; private static final String help_super = "List files or directories"; private static final String fmt_no_path = "No such path: %s%n"; - + private final FileArgument argPath; - + private final FlagArgument humanReadableArg; + public DirCommand() { super(help_super); + humanReadableArg = new FlagArgument("humanReadable", Argument.OPTIONAL, help_humanReadable); argPath = new FileArgument("path", Argument.OPTIONAL | Argument.MULTIPLE | Argument.EXISTING, help_path); - registerArguments(argPath); + registerArguments(argPath, humanReadableArg); } public static void main(String[] args) throws Exception { @@ -102,10 +107,9 @@ sb.setLength(0); lastModified.setTime(f.lastModified()); if (f.isFile()) { - String ln = String.valueOf(f.length()).concat("B"); + String ln = formatSize(f.length()); int cnt = LEFT_MARGIN - ln.length(); - for (int j = 0; j < cnt; j++, sb.append(' ')) - ; + for (int j = 0; j < cnt; j++) sb.append(' '); sb.append(ln); sb.append(" "); sb.append(df.format(lastModified)); @@ -125,4 +129,16 @@ out.println(); } } + + private static final String[] units = {"B", "K", "M", "G", "T", "P", "E", "Z", "Y"}; + + protected String formatSize(double bytes) { + if (humanReadableArg.isSet()) { + int index; + for (index = 0; bytes >= 1024; index++) bytes = bytes / 1024; + DecimalFormat df = new DecimalFormat("###0.0"); + return df.format(bytes) + units[index]; + } else + return bytes + "B"; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ Jnode-svn-commits mailing list Jnode-svn-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jnode-svn-commits