summaryrefslogtreecommitdiff
path: root/src/output
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2015-11-28 07:14:21 -0500
committermidipix <writeonce@midipix.org>2016-11-10 23:35:28 -0500
commit0d3dde49e65c9de9dff41933ceb64fa28635499d (patch)
tree036af41884253f469dc6cc26009f56630befce19 /src/output
parentdd97ea947fa5a9796507a092b3d9e7984712e80b (diff)
downloadperk-0d3dde49e65c9de9dff41933ceb64fa28635499d.tar.bz2
perk-0d3dde49e65c9de9dff41933ceb64fa28635499d.tar.xz
pretty printer: yaml support: initial implementation.
Diffstat (limited to 'src/output')
-rw-r--r--src/output/pe_output_import_libraries.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/output/pe_output_import_libraries.c b/src/output/pe_output_import_libraries.c
index 1e47d81..2b864fb 100644
--- a/src/output/pe_output_import_libraries.c
+++ b/src/output/pe_output_import_libraries.c
@@ -8,13 +8,32 @@
#include <perk/perk_output.h>
#include "perk_output_impl.h"
+enum impsym_prefix_tag {
+ IMPSYM_PREFIX_DEFAULT,
+ IMPSYM_PREFIX_YAML
+};
+
+static const char * const impsym_prefix_arr[] = {
+ "--> ",
+ "- "
+};
+
+static const char * pretty_impsym_prefix(const struct pe_common_ctx * cctx)
+{
+ if (cctx->fmtflags & PERK_PRETTY_YAML)
+ return impsym_prefix_arr[IMPSYM_PREFIX_YAML];
+ else
+ return impsym_prefix_arr[IMPSYM_PREFIX_DEFAULT];
+}
+
int pe_output_import_libraries(
const struct pe_image_meta * m,
const struct pe_common_ctx * cctx,
FILE * fout)
{
- FILE * ftmp;
- int i,j;
+ FILE * ftmp;
+ int i,j;
+ const char * impsym_prefix;
if (!m->summary.num_of_implibs)
return 0;
@@ -22,6 +41,8 @@ int pe_output_import_libraries(
if (!(fout = pe_output_prolog(cctx,fout,&ftmp)))
return -1;
+ impsym_prefix = pretty_impsym_prefix(cctx);
+
for (i=0; i<m->summary.num_of_implibs; i++) {
if (cctx->fmtflags & PERK_OUTPUT_IMPORT_SYMS)
fprintf(fout,"%s:\n",m->idata[i].name);
@@ -31,8 +52,8 @@ int pe_output_import_libraries(
if (cctx->fmtflags & PERK_OUTPUT_IMPORT_SYMS)
for (j=0; j<m->idata[i].count; j++)
if (m->idata[i].items[j].name)
- fprintf(fout,"==> %s\n",
- m->idata[i].items[j].name);
+ fprintf(fout,"%s%s\n",
+ impsym_prefix,m->idata[i].items[j].name);
}
return pe_output_epilog(0,ftmp);