summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-chi Yeh <chiachi@android.com>2009-12-15 07:41:13 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-12-15 07:41:13 -0800
commit68e09c63eb03e729183e98b840e0ee4910f60ede (patch)
treef648558d9b1cb4f4366e16ee782c1f907024e365
parent7488a0afce8c685d752dbbc1eb27cc0782fc921a (diff)
parent4a721df13a07ca36daafbb3785653979e3d1d393 (diff)
downloadmtpd-68e09c63eb03e729183e98b840e0ee4910f60ede.tar.gz
am 4a721df1: Use environment variables to pass information to pppd.
Merge commit '4a721df13a07ca36daafbb3785653979e3d1d393' into eclair-plus-aosp * commit '4a721df13a07ca36daafbb3785653979e3d1d393': Use environment variables to pass information to pppd.
-rw-r--r--mtpd.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/mtpd.c b/mtpd.c
index 55f1a55..bf83ac9 100644
--- a/mtpd.c
+++ b/mtpd.c
@@ -337,6 +337,24 @@ void start_pppd(int pppox)
memcpy(&args[4], pppd_argv, sizeof(char *) * pppd_argc);
args[4 + pppd_argc] = NULL;
+#ifdef ANDROID_CHANGES
+ {
+ char envargs[65536];
+ char *tail = envargs;
+ int i;
+ /* Hex encode the arguments using [A-P] instead of [0-9A-F]. */
+ for (i = 0; args[i]; ++i) {
+ char *p = args[i];
+ do {
+ *tail++ = 'A' + ((*p >> 4) & 0x0F);
+ *tail++ = 'A' + (*p & 0x0F);
+ } while (*p++);
+ }
+ *tail = 0;
+ setenv("envargs", envargs, 1);
+ args[1] = NULL;
+ }
+#endif
execvp("pppd", args);
log_print(FATAL, "Exec() %s", strerror(errno));
exit(1); /* Pretending a fatal error in pppd. */