AcessNative - Work on the ELF Loader
[tpg/acess2.git] / AcessNative / ld-acess.so_src / main.c
1 /*
2  */
3 #include "common.h"
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <stdarg.h>
7
8 // === CODE ===
9 int main(int argc, char *argv[], char **envp)
10 {
11          int    i;
12          int    appArgc;
13         char    **appArgv;
14         char    *appPath;
15          int    (*appMain)(int, char *[], char **);
16         void    *base;
17         
18         for( i = 1; i < argc; i ++ )
19         {
20                 if( argv[i][0] != '-' ) break;
21         }
22
23         if( i >= argc ) {
24                 fprintf(stderr, "Usage: ld-acess <executable> [arguments ...]\n");
25                 return 1;
26         }
27         
28         appPath = argv[i];
29
30         appArgc = argc - i;
31         appArgv = &argv[i];
32
33         printf("Exectutable Path: '%s'\n", appPath);
34         printf("Executable argc = %i\n", appArgc);
35
36         base = Binary_Load(appPath, (uintptr_t*)&appMain);
37         printf("base = %p\n", base);
38         if( !base )     return 127;
39         
40         return appMain(appArgc, appArgv, envp);
41 }
42
43 void Warning(const char *Format, ...)
44 {
45         va_list args;
46         printf("Warning: ");
47         va_start(args, Format);
48         vprintf(Format, args);
49         va_end(args);
50         printf("\n");
51 }
52
53 void Notice(const char *Format, ...)
54 {
55         va_list args;
56         printf("Notice: ");
57         va_start(args, Format);
58         vprintf(Format, args);
59         va_end(args);
60         printf("\n");
61 }
62

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