mirror of
https://github.com/AppleCommander/applesingle.git
synced 2024-06-15 06:29:31 +00:00
Adding Utilities and shifting to use it.
This commit is contained in:
parent
cd5d7ac142
commit
b72c9f9b74
|
@ -0,0 +1,31 @@
|
||||||
|
package io.github.applecommander.applesingle;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public class Utilities {
|
||||||
|
private Utilities() { /* Prevent construction */ }
|
||||||
|
|
||||||
|
/** Utility method to read all bytes from an InputStream. */
|
||||||
|
public static byte[] toByteArray(InputStream inputStream) throws IOException {
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
|
while (true) {
|
||||||
|
byte[] buf = new byte[1024];
|
||||||
|
int len = inputStream.read(buf);
|
||||||
|
if (len == -1) break;
|
||||||
|
outputStream.write(buf, 0, len);
|
||||||
|
}
|
||||||
|
outputStream.flush();
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convert bytes in an Entry to a 7-bit ASCII string. Emphasis on 7-bit in case Apple II high bit is along for the ride. */
|
||||||
|
public static String entryToAsciiString(Entry entry) {
|
||||||
|
byte[] data = entry.getData();
|
||||||
|
for (int i=0; i<data.length; i++) {
|
||||||
|
data[i] = (byte)(data[i] & 0x7f);
|
||||||
|
}
|
||||||
|
return new String(data);
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import java.util.Optional;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
import io.github.applecommander.applesingle.AppleSingle;
|
import io.github.applecommander.applesingle.AppleSingle;
|
||||||
|
import io.github.applecommander.applesingle.Utilities;
|
||||||
import picocli.CommandLine.Command;
|
import picocli.CommandLine.Command;
|
||||||
import picocli.CommandLine.Option;
|
import picocli.CommandLine.Option;
|
||||||
import picocli.CommandLine.Parameters;
|
import picocli.CommandLine.Parameters;
|
||||||
|
@ -99,7 +100,7 @@ public class CreateCommand implements Callable<Void> {
|
||||||
public byte[] prepDataFork() throws IOException {
|
public byte[] prepDataFork() throws IOException {
|
||||||
byte[] dataFork = null;
|
byte[] dataFork = null;
|
||||||
if (stdinForkType == ForkType.data) {
|
if (stdinForkType == ForkType.data) {
|
||||||
dataFork = AppleSingle.toByteArray(System.in);
|
dataFork = Utilities.toByteArray(System.in);
|
||||||
} else if (dataForkFile != null) {
|
} else if (dataForkFile != null) {
|
||||||
dataFork = Files.readAllBytes(dataForkFile);
|
dataFork = Files.readAllBytes(dataForkFile);
|
||||||
}
|
}
|
||||||
|
@ -116,7 +117,7 @@ public class CreateCommand implements Callable<Void> {
|
||||||
public byte[] prepResourceFork() throws IOException {
|
public byte[] prepResourceFork() throws IOException {
|
||||||
byte[] resourceFork = null;
|
byte[] resourceFork = null;
|
||||||
if (stdinForkType == ForkType.resource) {
|
if (stdinForkType == ForkType.resource) {
|
||||||
resourceFork = AppleSingle.toByteArray(System.in);
|
resourceFork = Utilities.toByteArray(System.in);
|
||||||
} else if (resourceForkFile != null) {
|
} else if (resourceForkFile != null) {
|
||||||
resourceFork = Files.readAllBytes(resourceForkFile);
|
resourceFork = Files.readAllBytes(resourceForkFile);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user