dmolony-DiskBrowser/src/com/bytezone/diskbrowser/applefile/CPMTextFile.java

55 lines
1.8 KiB
Java
Raw Normal View History

2016-02-26 20:39:06 +00:00
package com.bytezone.diskbrowser.applefile;
2016-02-26 11:03:29 +00:00
2020-09-13 00:40:57 +00:00
// -----------------------------------------------------------------------------------//
2020-09-14 09:51:14 +00:00
public class CPMTextFile extends TextFile
2020-09-13 00:40:57 +00:00
// -----------------------------------------------------------------------------------//
2016-02-26 11:03:29 +00:00
{
2020-09-13 00:40:57 +00:00
// ---------------------------------------------------------------------------------//
2016-02-26 20:39:06 +00:00
public CPMTextFile (String name, byte[] buffer)
2020-09-13 00:40:57 +00:00
// ---------------------------------------------------------------------------------//
2016-02-26 11:03:29 +00:00
{
super (name, buffer);
}
2020-09-13 00:40:57 +00:00
// ---------------------------------------------------------------------------------//
2016-02-26 11:03:29 +00:00
@Override
public String getText ()
2020-09-13 00:40:57 +00:00
// ---------------------------------------------------------------------------------//
2016-02-26 11:03:29 +00:00
{
StringBuilder text = new StringBuilder ();
2020-09-14 09:51:14 +00:00
if (textPreferences.showHeader)
text.append ("Name : " + name + "\n\n");
2016-02-26 11:03:29 +00:00
int ptr = 0;
while (ptr < buffer.length && buffer[ptr] != (byte) 0x1A)
{
String line = getLine (ptr);
text.append (line + "\n");
2021-07-30 09:33:03 +00:00
ptr += line.length () + 1;
if (ptr < buffer.length && buffer[ptr - 1] == 0x0D && buffer[ptr] == 0x0A)
++ptr;
2016-12-16 01:19:59 +00:00
while (ptr < buffer.length && buffer[ptr] == 0)
++ptr;
2016-02-26 11:03:29 +00:00
}
if (text.length () > 0)
text.deleteCharAt (text.length () - 1);
return text.toString ();
}
2020-09-13 00:40:57 +00:00
// ---------------------------------------------------------------------------------//
2016-02-26 11:03:29 +00:00
private String getLine (int ptr)
2020-09-13 00:40:57 +00:00
// ---------------------------------------------------------------------------------//
2016-02-26 11:03:29 +00:00
{
StringBuilder line = new StringBuilder ();
2021-07-30 09:33:03 +00:00
// int max = buffer.length - 1;
while (ptr < buffer.length && buffer[ptr] != 0x0D && buffer[ptr] != 0x0A)
2016-02-26 21:23:05 +00:00
line.append ((char) (buffer[ptr++] & 0x7F));
2016-02-26 11:03:29 +00:00
return line.toString ();
}
}