summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--project/common.mk6
-rw-r--r--project/tree.mk2
-rw-r--r--src/internal/perk_impl.h14
-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.c116
-rw-r--r--src/perk.c11
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);
+}