diff options
-rw-r--r-- | project/common.mk | 6 | ||||
-rw-r--r-- | project/tree.mk | 2 | ||||
-rw-r--r-- | src/internal/perk_impl.h | 14 | ||||
-rw-r--r-- | src/logic/pe_get_image_meta.c (renamed from src/main/pe_get_image_meta.c) | 0 | ||||
-rw-r--r-- | src/logic/pe_map_raw_image.c (renamed from src/main/pe_map_raw_image.c) | 0 | ||||
-rw-r--r-- | src/main/perk.c | 116 | ||||
-rw-r--r-- | src/perk.c | 11 |
7 files changed, 15 insertions, 134 deletions
diff --git a/project/common.mk b/project/common.mk index d1839f1..012bcb6 100644 --- a/project/common.mk +++ b/project/common.mk @@ -1,6 +1,6 @@ COMMON_SRCS = \ - src/main/pe_get_image_meta.c \ - src/main/pe_map_raw_image.c \ + src/logic/pe_get_image_meta.c \ + src/logic/pe_map_raw_image.c \ src/output/pe_output_export_symbols.c \ src/reader/pe_read_coff_header.c \ src/reader/pe_read_dos_header.c \ @@ -10,4 +10,4 @@ COMMON_SRCS = \ src/reader/pe_read_section_header.c \ APP_SRCS = \ - src/main/perk.c + src/perk.c diff --git a/project/tree.mk b/project/tree.mk index 0c5a1cc..74bcb9b 100644 --- a/project/tree.mk +++ b/project/tree.mk @@ -1,7 +1,7 @@ tree.tag: mkdir -p src mkdir -p src/internal - mkdir -p src/main + mkdir -p src/logic mkdir -p src/output mkdir -p src/reader touch tree.tag diff --git a/src/internal/perk_impl.h b/src/internal/perk_impl.h index a47391c..bda7581 100644 --- a/src/internal/perk_impl.h +++ b/src/internal/perk_impl.h @@ -4,20 +4,6 @@ #include <stdint.h> #include <endian.h> -/* internal structures */ -struct perk_ctx { - int argc; - char ** argv; - char ** envp; - const char * fname; - int status; - int flags; - int fd; - FILE * fout; - FILE * tmp; - struct pe_raw_image map; -}; - #if (BYTE_ORDER == LITTLE_ENDIAN) static inline uint16_t pe_read_short(const unsigned char * raw) diff --git a/src/main/pe_get_image_meta.c b/src/logic/pe_get_image_meta.c index 350abe3..350abe3 100644 --- a/src/main/pe_get_image_meta.c +++ b/src/logic/pe_get_image_meta.c diff --git a/src/main/pe_map_raw_image.c b/src/logic/pe_map_raw_image.c index caf14b9..caf14b9 100644 --- a/src/main/pe_map_raw_image.c +++ b/src/logic/pe_map_raw_image.c diff --git a/src/main/perk.c b/src/main/perk.c deleted file mode 100644 index 0382186..0000000 --- a/src/main/perk.c +++ /dev/null @@ -1,116 +0,0 @@ -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <limits.h> -#include <errno.h> -#include <sys/mman.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include <perk/perk.h> -#include "perk_impl.h" - -static int perk_parse_opts(struct perk_ctx * ctx) -{ - int i; - char * ch; - const char ** popt; - - for (i=1; i<ctx->argc; i++) { - ch = ctx->argv[i]; - - if (*ch == '-') { - switch (*++ch) { - case 'i': - popt = &ctx->fname; - break; - case 'h': - ctx->flags = PERK_HELP; - return 0; - default: - ctx->status = PERK_BAD_OPT; - return ctx->status; - } - - while ((*++ch == '\t') || (*ch == ' ')); - - if (!*ch) { - if (++i < ctx->argc) - *popt = ctx->argv[i]; - else - ctx->status = PERK_BAD_OPT_VAL; - } else - *popt = ch; - } else if (!ctx->fname) - ctx->fname = ch; - else - ctx->status = PERK_BAD_OPT; - - } - - return ctx->status; -} - - -static int perk_map_input(struct perk_ctx * ctx) -{ - ctx->fd = open(ctx->fname,O_RDONLY | O_CLOEXEC); - - if (ctx->fd < 0) { - ctx->status = PERK_IO_ERROR; - return ctx->status; - } - - ctx->status = pe_map_raw_image(ctx->fd,0,PROT_READ,&ctx->map); - - return ctx->status; -} - - -static int perk_exit(struct perk_ctx * ctx) -{ - if (ctx->map.addr) - pe_unmap_raw_image(&ctx->map); - - return ctx->status; -} - - -static int perk_run(struct perk_ctx * ctx) -{ - struct pe_image_meta * meta; - - if (perk_map_input(ctx)) - return perk_exit(ctx); - - if ((ctx->status = pe_get_image_meta(&ctx->map,&meta))) - return perk_exit(ctx); - - /* pre-alpha default output */ - pe_output_export_symbols( - meta, - PERK_OUTPUT_FORMAT_LIST | PERK_OUTPUT_FIELD_NAME, - stdout); - - ctx->status = pe_free_image_meta(meta); - - return perk_exit(ctx); -} - -static int perk_main(int argc, char ** argv, char ** envp) -{ - struct perk_ctx ctx = {argc,argv,envp}; - - if (perk_parse_opts(&ctx)) - return ctx.status; - else - return perk_run(&ctx); -} - -int main(int argc, char ** argv, char ** envp) -{ - return perk_main(argc,argv,envp); -} diff --git a/src/perk.c b/src/perk.c new file mode 100644 index 0000000..983c130 --- /dev/null +++ b/src/perk.c @@ -0,0 +1,11 @@ +#include <perk/perk.h> + +static int perk_main(int argc, char ** argv, char ** envp) +{ + return -1; +} + +int main(int argc, char ** argv, char ** envp) +{ + return perk_main(argc,argv,envp); +} |