AcessNative - Work on the ELF Loader
[tpg/acess2.git] / AcessNative / ld-acess.so_src / main.c
index e69de29..d9bad13 100644 (file)
@@ -0,0 +1,62 @@
+/*
+ */
+#include "common.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+// === CODE ===
+int main(int argc, char *argv[], char **envp)
+{
+        int    i;
+        int    appArgc;
+       char    **appArgv;
+       char    *appPath;
+        int    (*appMain)(int, char *[], char **);
+       void    *base;
+       
+       for( i = 1; i < argc; i ++ )
+       {
+               if( argv[i][0] != '-' ) break;
+       }
+
+       if( i >= argc ) {
+               fprintf(stderr, "Usage: ld-acess <executable> [arguments ...]\n");
+               return 1;
+       }
+       
+       appPath = argv[i];
+
+       appArgc = argc - i;
+       appArgv = &argv[i];
+
+       printf("Exectutable Path: '%s'\n", appPath);
+       printf("Executable argc = %i\n", appArgc);
+
+       base = Binary_Load(appPath, (uintptr_t*)&appMain);
+       printf("base = %p\n", base);
+       if( !base )     return 127;
+       
+       return appMain(appArgc, appArgv, envp);
+}
+
+void Warning(const char *Format, ...)
+{
+       va_list args;
+       printf("Warning: ");
+       va_start(args, Format);
+       vprintf(Format, args);
+       va_end(args);
+       printf("\n");
+}
+
+void Notice(const char *Format, ...)
+{
+       va_list args;
+       printf("Notice: ");
+       va_start(args, Format);
+       vprintf(Format, args);
+       va_end(args);
+       printf("\n");
+}
+

UCC git Repository :: git.ucc.asn.au