diff options
author | midipix <writeonce@midipix.org> | 2016-11-14 22:23:38 -0500 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-11-14 22:23:38 -0500 |
commit | a9703089dc298372a20c2ccbc9ad7639557ad1f6 (patch) | |
tree | f348487e4693a310fde25f23a7b36480d49d001e /src/output | |
parent | 049a18b4747f0b340b15d871dc9936528454d219 (diff) | |
download | perk-a9703089dc298372a20c2ccbc9ad7639557ad1f6.tar.bz2 perk-a9703089dc298372a20c2ccbc9ad7639557ad1f6.tar.xz |
info api: pe_get_image_subsystem(): initial integration.
Diffstat (limited to 'src/output')
-rw-r--r-- | src/output/pe_output_image_type.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/src/output/pe_output_image_type.c b/src/output/pe_output_image_type.c index 0e3ce56..b6324a5 100644 --- a/src/output/pe_output_image_type.c +++ b/src/output/pe_output_image_type.c @@ -15,19 +15,6 @@ #include <perk/perk_output.h> #include "perk_errinfo_impl.h" -static const char const * pe_subsystem_name[0x10] = { - [PE_IMAGE_SUBSYSTEM_UNKNOWN] = "unknown", - [PE_IMAGE_SUBSYSTEM_NATIVE] = "native", - [PE_IMAGE_SUBSYSTEM_WINDOWS_GUI] = "windows", - [PE_IMAGE_SUBSYSTEM_WINDOWS_CUI] = "console", - [PE_IMAGE_SUBSYSTEM_POSIX_CUI] = "posix", - [PE_IMAGE_SUBSYSTEM_WINDOWS_CE_GUI] = "wince", - [PE_IMAGE_SUBSYSTEM_EFI_APPLICATION] = "efi_app", - [PE_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER] = "efi_driver", - [PE_IMAGE_SUBSYSTEM_EFI_ROM] = "efi_rom", - [PE_IMAGE_SUBSYSTEM_XBOX] = "xbox" -}; - static const char * pretty_abi(const struct pe_unit_ctx * uctx) { switch (uctx->meta->opt.std.magic) { @@ -50,29 +37,19 @@ static const char * pretty_type(const struct pe_unit_ctx * uctx) return "exe"; } -static const char * pretty_subsystem(const struct pe_unit_ctx * uctx) -{ - if (uctx->meta->opt.img.subsystem >= 0x10) - return "UNEXPECTED_SUBSYSTEM"; - - else if (!pe_subsystem_name[uctx->meta->opt.img.subsystem]) - return "UNEXPECTED_SUBSYSTEM"; - - else - return pe_subsystem_name[uctx->meta->opt.img.subsystem]; -} - int pe_output_image_type( const struct pe_driver_ctx * dctx, const struct pe_unit_ctx * uctx, FILE * fout) { + struct pe_info_string subsystem; struct pe_info_string framework; const struct pe_image_meta * meta = uctx->meta; if (!fout) fout = stdout; + pe_get_image_subsystem(meta,&subsystem); pe_get_image_framework(meta,&framework); if (dctx->cctx->fmtflags & PERK_PRETTY_YAML) { @@ -80,14 +57,14 @@ int pe_output_image_type( *uctx->path, pretty_abi(uctx), pretty_type(uctx), - pretty_subsystem(uctx), + subsystem.buffer, framework.buffer) < 0) return PERK_FILE_ERROR(dctx); } else { if (fprintf(fout,"%s-%s-%s-%s\n", pretty_abi(uctx), pretty_type(uctx), - pretty_subsystem(uctx), + subsystem.buffer, framework.buffer) < 0) return PERK_FILE_ERROR(dctx); } |