X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Fld-acess_src%2Fmain.c;h=8f24db8ace48f759c3368d000eef4e348e8f4e8b;hb=3c283c4831c40c14d308a54cefb997832a860bca;hp=cd2b81581ec866e4940bd0e643298256213dbfee;hpb=d497ef38c1c1e0aa5467722e115be0dc4baa47ab;p=tpg%2Facess2.git diff --git a/AcessNative/ld-acess_src/main.c b/AcessNative/ld-acess_src/main.c index cd2b8158..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) { @@ -23,7 +29,11 @@ int main(int argc, char *argv[], char **envp) 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);