GP-0: Certify and cleanup

This commit is contained in:
Ryan Kurtz 2025-04-02 09:21:37 -04:00
parent 90a16f9963
commit 8701d22356
9 changed files with 53 additions and 99 deletions

View file

@ -18,19 +18,24 @@ package ghidra.file.formats.omf51;
import static ghidra.formats.gfilesystem.fileinfo.FileAttributeType.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import ghidra.app.util.bin.ByteProvider;
import ghidra.app.util.bin.ByteProviderWrapper;
import ghidra.app.util.bin.format.omf.OmfException;
import ghidra.app.util.bin.format.omf.omf51.*;
import ghidra.app.util.bin.format.omf.omf51.Omf51Library;
import ghidra.app.util.bin.format.omf.omf51.Omf51RecordFactory;
import ghidra.formats.gfilesystem.*;
import ghidra.formats.gfilesystem.annotations.FileSystemInfo;
import ghidra.formats.gfilesystem.fileinfo.FileAttributes;
import ghidra.util.Msg;
import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor;
@FileSystemInfo(type = "omf51", description = "OMF51 Library", factory = Omf51ArchiveFileSystemFactory.class)
@FileSystemInfo(
type = "omf51",
description = "OMF51 Library",
factory = Omf51ArchiveFileSystemFactory.class
)
public class Omf51ArchiveFileSystem extends AbstractFileSystem<Omf51Library.MemberHeader> {
private ByteProvider provider;
@ -40,18 +45,15 @@ public class Omf51ArchiveFileSystem extends AbstractFileSystem<Omf51Library.Memb
this.provider = provider;
}
public void mount(TaskMonitor monitor) throws IOException, OmfException {
Msg.debug(this, "Opening OMF51 library...");
public void mount(TaskMonitor monitor) throws IOException, OmfException, CancelledException {
monitor.setMessage("Opening OMF51 library...");
Omf51RecordFactory factory = new Omf51RecordFactory(provider);
Omf51Library library = new Omf51Library(factory);
library.parseMembers();
ArrayList<Omf51Library.MemberHeader> members = library.getMembers();
Msg.debug(this, "Found %d members".formatted(members.size()));
List<Omf51Library.MemberHeader> members = new Omf51Library(factory).getMembers();
monitor.initialize(members.size(), "Opening OMF51 library...");
for (Omf51Library.MemberHeader member : members) {
Msg.debug(this, member.name);
fsIndex.storeFile(member.name, fsIndex.getFileCount(), false, member.size, member);
monitor.increment();
fsIndex.storeFile(member.name(), fsIndex.getFileCount(), false, member.size(), member);
}
}
@ -74,7 +76,7 @@ public class Omf51ArchiveFileSystem extends AbstractFileSystem<Omf51Library.Memb
public ByteProvider getByteProvider(GFile file, TaskMonitor monitor) {
Omf51Library.MemberHeader member = fsIndex.getMetadata(file);
return (member != null)
? new ByteProviderWrapper(provider, member.offset, member.size,
? new ByteProviderWrapper(provider, member.offset(), member.size(),
file.getFSRL())
: null;
}
@ -85,8 +87,8 @@ public class Omf51ArchiveFileSystem extends AbstractFileSystem<Omf51Library.Memb
Omf51Library.MemberHeader entry = fsIndex.getMetadata(file);
if (entry != null) {
result.add(NAME_ATTR, entry.name);
result.add(SIZE_ATTR, entry.size);
result.add(NAME_ATTR, entry.name());
result.add(SIZE_ATTR, entry.size());
}
return result;
}

View file

@ -20,15 +20,13 @@ import java.io.IOException;
import ghidra.app.util.bin.ByteProvider;
import ghidra.app.util.bin.format.omf.AbstractOmfRecordFactory;
import ghidra.app.util.bin.format.omf.OmfException;
import ghidra.app.util.bin.format.omf.OmfRecord;
import ghidra.app.util.bin.format.omf.omf51.Omf51LibraryHeaderRecord;
import ghidra.app.util.bin.format.omf.omf51.Omf51RecordFactory;
import ghidra.app.util.opinion.OmfLoader;
import ghidra.app.util.opinion.Omf51Loader;
import ghidra.formats.gfilesystem.FSRLRoot;
import ghidra.formats.gfilesystem.FileSystemService;
import ghidra.formats.gfilesystem.factory.GFileSystemFactoryByteProvider;
import ghidra.formats.gfilesystem.factory.GFileSystemProbeByteProvider;
import ghidra.util.Msg;
import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor;
@ -54,19 +52,15 @@ public class Omf51ArchiveFileSystemFactory implements
public boolean probe(ByteProvider byteProvider, FileSystemService fsService,
TaskMonitor monitor) throws IOException, CancelledException {
if (byteProvider.length() < OmfLoader.MIN_BYTE_LENGTH) {
if (byteProvider.length() < Omf51Loader.MIN_BYTE_LENGTH) {
return false;
}
try {
AbstractOmfRecordFactory factory = new Omf51RecordFactory(byteProvider);
OmfRecord record = factory.readNextRecord();
return (record != null && record instanceof Omf51LibraryHeaderRecord);
return factory.readNextRecord() instanceof Omf51LibraryHeaderRecord;
}
catch (OmfException e) {
return false;
}
catch (IOException e) {
catch (OmfException | IOException e) {
return false;
}
}