]> sigrok.org Git - sigrok-androidutils.git/blob - lib/envsetup.cpp
Minor whitespace and cosmetic fixes.
[sigrok-androidutils.git] / lib / envsetup.cpp
1 /*
2  * This file is part of the sigrok-androidutils project.
3  *
4  * Copyright (C) 2014 Marcus Comstedt <marcus@mc.pp.se>
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #include "libsigrokandroidutils.h"
21 #include "libsigrokandroidutils-internal.h"
22
23 SRAU_API void srau_init_environment(void)
24 {
25         JNIEnv *env;
26
27         int attach_mode = srau_get_java_env(&env);
28
29         if (attach_mode < 0)
30                 return;
31
32         jclass envc = srau_get_environment_class(env);
33         if (!envc)
34                 return;
35
36         jmethodID getEnv = env->GetStaticMethodID(envc, "getEnvironment",
37                                                   "()[Ljava/lang/String;");
38         jobjectArray envs =
39                 (jobjectArray)env->CallStaticObjectMethod(envc, getEnv);
40         jsize i, envn = env->GetArrayLength(envs);
41         for (i = 0; i < envn; i += 2) {
42                 jstring key = (jstring)env->GetObjectArrayElement(envs, i);
43                 jstring value = (jstring)env->GetObjectArrayElement(envs, i + 1);
44                 const char *utfkey = env->GetStringUTFChars(key, 0);
45                 const char *utfvalue = env->GetStringUTFChars(value, 0);
46                 setenv(utfkey, utfvalue, 1);
47                 env->ReleaseStringUTFChars(value, utfvalue);
48                 env->ReleaseStringUTFChars(key, utfkey);
49                 env->DeleteLocalRef(value);
50                 env->DeleteLocalRef(key);
51         }
52         env->DeleteLocalRef(envs);
53         env->DeleteLocalRef(envc);
54
55         srau_unget_java_env(attach_mode);
56 }