Author: j16sdiz
Date: 2009-03-13 08:55:27 +0000 (Fri, 13 Mar 2009)
New Revision: 26014

Modified:
   trunk/plugins/KeyExplorer/KeyExplorer.java
Log:
Dump hex in `xxd -r` comptable format

Modified: trunk/plugins/KeyExplorer/KeyExplorer.java
===================================================================
--- trunk/plugins/KeyExplorer/KeyExplorer.java  2009-03-13 04:02:21 UTC (rev 
26013)
+++ trunk/plugins/KeyExplorer/KeyExplorer.java  2009-03-13 08:55:27 UTC (rev 
26014)
@@ -6,8 +6,10 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.net.MalformedURLException;
+import java.util.Formatter;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Locale;
 import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -39,7 +41,6 @@
 import freenet.pluginmanager.PluginReplySender;
 import freenet.pluginmanager.PluginRespirator;
 import freenet.support.HTMLNode;
-import freenet.support.HexUtil;
 import freenet.support.SimpleFieldSet;
 import freenet.support.api.Bucket;
 import freenet.support.api.HTTPRequest;
@@ -201,42 +202,8 @@
                                title = title + "\u00a0(MetaData)";
                        HTMLNode dataBox2 = m_pm.getInfobox(title);
 
-                       char[] asciibuf = new char[16];
-
-                       for (int j = 0; j < 16; j++)
-                               asciibuf[j] = ' ';
-
                        dataBox2.addChild("%", "<PRE>\n");
-                       StringBuilder sb = new StringBuilder();
-                       int offset = 0;
-
-                       for (int i = 0; i < data.length; i++) {
-                               offset = (i) % 16;
-                               HexUtil.bytesToHexAppend(data, i, 1, sb);
-                               sb.append(' ');
-                               if ((data[i] > 31) && (data[i] < 127)) {
-                                       // int j = data[i];
-                                       // sb.append((char) j);
-                                       asciibuf[offset] = (char) data[i];
-                               }
-
-                               if ((i > 1) && ((i + 1) % 16 == 0)) {
-                                       sb.append(' ');
-                                       sb.append(asciibuf);
-                                       sb.append('\n');
-                                       for (int k = 0; k < 16; k++)
-                                               asciibuf[k] = ' ';
-                               }
-                       }
-                       if (offset > 0) {
-                               int n = (15 - offset) * 3;
-                               for (int m = 0; m < n; m++)
-                                       sb.append(' ');
-                               sb.append(' ');
-                               sb.append(asciibuf);
-                       }
-
-                       dataBox2.addChild("#", sb.toString());
+                       dataBox2.addChild("#", hexDump(data));
                        dataBox2.addChild("%", "\n</PRE>");
 
                        contentNode.addChild(dataBox2);
@@ -340,7 +307,46 @@
 
                return pageNode.generate();
        }
-       
+
+       private String hexDump(byte[] data) {
+               StringBuilder sb = new StringBuilder();
+               Formatter formatter = new Formatter(sb, Locale.US);
+
+               try {
+                       for (int offset = 0; offset < data.length; offset += 
16) {
+                               formatter.format("%07x:",  offset);
+                               
+                               for (int i = 0; i < 16; i++) {
+                                       if (i % 2 == 0)
+                                               formatter.out().append(' ');
+                                       if (i + offset >= data.length) {
+                                               formatter.out().append("  ");
+                                               continue;
+                                       }
+                                       formatter.format("%02x", data[i + 
offset]);
+                               }
+
+                               formatter.out().append("  ");
+                               for (int i = 0; i < 16; i++) {
+                                       if (i + offset >= data.length)
+                                               break;
+
+                                       if (data[i + offset] >= 32 && data[i + 
offset] < 127) {
+                                               formatter.out().append((char) 
data[i + offset]);
+                                       } else
+                                               formatter.out().append('.');
+
+                               }
+                               formatter.out().append('\n');
+                       }
+               } catch (IOException e) {
+                       // impossible
+               }
+
+               formatter.flush();
+               return sb.toString();
+       }
+
        private String makeManifestPage(String key, boolean zip, boolean tar) {
                HTMLNode pageNode = m_pm.getPageNode("KeyExplorer", null);
                HTMLNode contentNode = m_pm.getContentNode(pageNode);

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to