X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Fld-acess_src%2Fmain.c;h=8f24db8ace48f759c3368d000eef4e348e8f4e8b;hb=6274aaa8894e14462a36c69090e2f9235f130e31;hp=cbe0ac1f376563f510d3b07bfb238ef95ef1a6d0;hpb=c84c6acf1e8be4fb6e76ef0f8fd275400be8d5ae;p=tpg%2Facess2.git diff --git a/AcessNative/ld-acess_src/main.c b/AcessNative/ld-acess_src/main.c index cbe0ac1f..8f24db8a 100644 --- a/AcessNative/ld-acess_src/main.c +++ b/AcessNative/ld-acess_src/main.c @@ -7,12 +7,18 @@ #include // === IMPORTS === +extern int gSocket; extern int giSyscall_ClientID; +extern int gbSyscallDebugEnabled; extern void acess__exit(int Status); +extern void Request_Preinit(void); // === PROTOTYPES === void CallUser(void *Entry, int argc, char *argv[], char **envp) __attribute__((noreturn)); +// === GLOBALS === +char **gEnvP; + // === CODE === int main(int argc, char *argv[], char **envp) { @@ -20,10 +26,14 @@ int main(int argc, char *argv[], char **envp) int appArgc; char **appArgv; char *appPath = NULL; - int (*appMain)(int, char *[], char **) __attribute__((cdecl)); + int (*appMain)(int, char *[], char **); void *base; int rv; + + gEnvP = envp; + Request_Preinit(); + // int syscall_handle = -1; for( i = 1; i < argc; i ++ ) @@ -32,6 +42,11 @@ int main(int argc, char *argv[], char **envp) giSyscall_ClientID = atoi(argv[++i]); continue ; } + + if(strcmp(argv[i], "--socket") == 0) { + gSocket = atoi(argv[++i]); + continue ; + } if(strcmp(argv[i], "--binary") == 0) { appPath = argv[++i]; @@ -39,12 +54,16 @@ int main(int argc, char *argv[], char **envp) } if(strcmp(argv[i], "--open") == 0) { - if( acess_open(argv[++i], 6) == -1 ) { // Read/Write + if( acess__SysOpen(argv[++i], 6) == -1 ) { // Read/Write fprintf(stderr, "Unable to open '%s'\n", argv[i]); exit(1); } continue ; } + if( strcmp(argv[i], "--trace") == 0 ) { + gbSyscallDebugEnabled = 1; + continue ; + } if( argv[i][0] != '-' ) break; } @@ -71,10 +90,13 @@ int main(int argc, char *argv[], char **envp) base = Binary_Load(appPath, (uintptr_t*)&appMain); printf("[DEBUG %i] base = %p\n", giSyscall_ClientID, base); - if( !base ) return 127; + if( !base ) { + *((char*)NULL) = 0; + return 127; + } printf("==============================\n"); - printf("[DEBUG %i] %i %p ", giSyscall_ClientID, appArgc, appArgv); + printf("[DEBUG %i] %i ", giSyscall_ClientID, appArgc); for(i = 0; i < appArgc; i ++) printf("\"%s\" ", appArgv[i]); printf("\n"); @@ -123,7 +145,8 @@ void Notice(const char *Format, ...) void Debug(const char *Format, ...) { va_list args; - printf("[DEBUG %i] ", giSyscall_ClientID); + printf("[DEBUG "); + printf("%2i] ", giSyscall_ClientID); va_start(args, Format); vprintf(Format, args); va_end(args);