X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Flibacess-native.so_src%2Fmain.c;h=900a14c0c26c169ce3d8eb1b60689f27d446aff4;hb=c30a10bc7b7c60aeec0fc02ac6af259b01f33764;hp=f0728643c0ceff2e67ea9ef14ce1f3c0db241457;hpb=bf0187772ecfb475eedf5e0e9b8460b4f1a3f445;p=tpg%2Facess2.git diff --git a/AcessNative/libacess-native.so_src/main.c b/AcessNative/libacess-native.so_src/main.c index f0728643..900a14c0 100644 --- a/AcessNative/libacess-native.so_src/main.c +++ b/AcessNative/libacess-native.so_src/main.c @@ -4,6 +4,7 @@ #include #include #include +#include extern int giSyscall_ClientID; extern void Request_Preinit(void); @@ -19,13 +20,28 @@ int DllMain(void) #endif #ifdef __linux__ -int __attribute__ ((constructor)) libacessnative_init(void); +int __attribute__ ((constructor(102))) libacessnative_init(int argc, char *argv[], char **envp); -int libacessnative_init(void) +const char *getenv_p(char **envp, const char *name) { - Request_Preinit(); + size_t namelen = strlen(name); + for(; *envp; envp ++) + { + if( strncmp(*envp, name, namelen) != 0 ) + continue ; + if( (*envp)[namelen] != '=' ) + continue ; + return (*envp)+namelen+1; + } + return 0; +} - const char *preopens = getenv("AN_PREOPEN"); +int libacessnative_init(int argc, char *argv[], char **envp) +{ + Request_Preinit(); + + const char *preopens = getenv_p(envp, "AN_PREOPEN"); + printf("preopens = %s\n", preopens); if( preopens ) { while( *preopens )