diff --git a/Android.mk b/Android.mk index 3008350..024ef71 100644 --- a/Android.mk +++ b/Android.mk @@ -72,7 +72,8 @@ common_SRC_FILES:= \ tun.c tun.h \ win32.h win32.c \ cryptoapi.h cryptoapi.c \ - missing.c + missing.c \ + android.c android.h #common_CFLAGS += -DNO_WINDOWS_BRAINDEATH diff --git a/Makefile b/Makefile index 9f80785..38fbdd8 100644 --- a/Makefile +++ b/Makefile @@ -102,7 +102,7 @@ am_openvpn_OBJECTS = base64.$(OBJEXT) buffer.$(OBJEXT) \ session_id.$(OBJEXT) shaper.$(OBJEXT) sig.$(OBJEXT) \ socket.$(OBJEXT) socks.$(OBJEXT) ssl.$(OBJEXT) \ status.$(OBJEXT) thread.$(OBJEXT) tun.$(OBJEXT) \ - win32.$(OBJEXT) cryptoapi.$(OBJEXT) + win32.$(OBJEXT) cryptoapi.$(OBJEXT) android.$(OBJEXT) openvpn_OBJECTS = $(am_openvpn_OBJECTS) openvpn_LDADD = $(LDADD) openvpn_DEPENDENCIES = @@ -368,7 +368,8 @@ openvpn_SOURCES = \ thread.c thread.h \ tun.c tun.h \ win32.h win32.c \ - cryptoapi.h cryptoapi.c + cryptoapi.h cryptoapi.c \ + android.c android.h #nodist_html_DATA = openvpn.8.html dist_man_MANS = openvpn.8 diff --git a/Makefile.am b/Makefile.am index 7bccc11..b7daff3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -138,7 +138,8 @@ openvpn_SOURCES = \ thread.c thread.h \ tun.c tun.h \ win32.h win32.c \ - cryptoapi.h cryptoapi.c + cryptoapi.h cryptoapi.c \ + android.c android.h dist-hook: diff --git a/Makefile.in b/Makefile.in index e25b662..2cc8e57 100644 --- a/Makefile.in +++ b/Makefile.in @@ -102,7 +102,7 @@ am_openvpn_OBJECTS = base64.$(OBJEXT) buffer.$(OBJEXT) \ session_id.$(OBJEXT) shaper.$(OBJEXT) sig.$(OBJEXT) \ socket.$(OBJEXT) socks.$(OBJEXT) ssl.$(OBJEXT) \ status.$(OBJEXT) thread.$(OBJEXT) tun.$(OBJEXT) \ - win32.$(OBJEXT) cryptoapi.$(OBJEXT) + win32.$(OBJEXT) cryptoapi.$(OBJEXT) android.$(OBJEXT) openvpn_OBJECTS = $(am_openvpn_OBJECTS) openvpn_LDADD = $(LDADD) openvpn_DEPENDENCIES = @LIBOBJS@ @@ -368,7 +368,8 @@ openvpn_SOURCES = \ thread.c thread.h \ tun.c tun.h \ win32.h win32.c \ - cryptoapi.h cryptoapi.c + cryptoapi.h cryptoapi.c \ + android.c android.h @WIN32_TRUE@nodist_html_DATA = openvpn.8.html @WIN32_FALSE@dist_man_MANS = openvpn.8 diff --git a/android.c b/android.c new file mode 100644 index 0000000..e099fd1 --- /dev/null +++ b/android.c @@ -0,0 +1,36 @@ +/* + * Android specific stuff + */ +#include "syshead.h" + +#ifdef ANDROID + +#include "misc.h" +#include "android.h" + +void +env_set_add_android (struct env_set *es) +{ + const char *and_env_name[] = { "ANDROID_ASSETS", + "ANDROID_BOOTLOGO", + "ANDROID_CACHE", + "ANDROID_DATA", + "ANDROID_PROPERTY_WORKSPACE", + "ANDROID_ROOT", + "BOOTCLASSPATH", + "EXTERNAL_STORAGE", + "SD_EXT_DIRECTORY" + }; + const int and_env_count = sizeof(and_env_name) / sizeof(*and_env_name); + char *and_env_value[and_env_count]; + + int i; + for (i = 0; i < and_env_count; i++) { + char *name = and_env_name[i]; + char *value = getenv(name); + if (value && *value) + setenv_str (es, name, value); + } +} + +#endif // ANDROID diff --git a/android.h b/android.h new file mode 100644 index 0000000..28a1f10 --- /dev/null +++ b/android.h @@ -0,0 +1,8 @@ +#ifdef ANDROID +#ifndef OPENVPN_ANDROID_H +#define OPENVPN_ANDROID_H + +void env_set_add_android (struct env_set *); + +#endif // OPENVPN_ANDROID_H +#endif // ANDROID diff --git a/openvpn.c b/openvpn.c index 451fbe4..3795473 100644 --- a/openvpn.c +++ b/openvpn.c @@ -28,6 +28,7 @@ #include "forward.h" #include "multi.h" #include "win32.h" +#include "android.h" #include "memdbg.h" @@ -136,6 +137,10 @@ main (int argc, char *argv[]) env_set_add_win32 (c.es); #endif +#ifdef ANDROID + env_set_add_android (c.es); +#endif + #ifdef ENABLE_MANAGEMENT /* initialize management subsystem */ init_management (&c);