MCPcopy Create free account
hub / github.com/ddnet/ddnet / JNI_EXPORTED_FUNCTION

Function JNI_EXPORTED_FUNCTION

src/engine/server/main.cpp:236–269  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

234}
235
236JNI_EXPORTED_FUNCTION(ANDROID_PACKAGE_NAME_JNI, NativeServer, runServer, jint, JNIEnv *pEnv, jobject Object, jstring WorkingDirectory, jobjectArray ArgumentsArray)
237{
238 // Set working directory to external storage location. This is not possible
239 // in Java so we pass the intended working directory to the native code.
240 const char *pWorkingDirectory = pEnv->GetStringUTFChars(WorkingDirectory, nullptr);
241 const bool WorkingDirectoryError = fs_chdir(pWorkingDirectory) != 0;
242 pEnv->ReleaseStringUTFChars(WorkingDirectory, pWorkingDirectory);
243 if(WorkingDirectoryError)
244 {
245 return -1001;
246 }
247
248 const jsize NumArguments = pEnv->GetArrayLength(ArgumentsArray);
249
250 std::vector<std::string> vArguments;
251 vArguments.reserve(NumArguments + 1);
252 vArguments.push_back(std::string(pWorkingDirectory) + "/" + GAME_NAME "-Server");
253 for(jsize ArgumentIndex = 0; ArgumentIndex < NumArguments; ArgumentIndex++)
254 {
255 jstring ArgumentString = (jstring)pEnv->GetObjectArrayElement(ArgumentsArray, ArgumentIndex);
256 const char *pArgumentString = pEnv->GetStringUTFChars(ArgumentString, nullptr);
257 vArguments.emplace_back(pArgumentString);
258 pEnv->ReleaseStringUTFChars(ArgumentString, pArgumentString);
259 }
260
261 std::vector<const char *> vpArguments;
262 vpArguments.reserve(vArguments.size());
263 for(const std::string &Argument : vArguments)
264 {
265 vpArguments.emplace_back(Argument.c_str());
266 }
267
268 return main(vpArguments.size(), vpArguments.data());
269}
270
271JNI_EXPORTED_FUNCTION(ANDROID_PACKAGE_NAME_JNI, NativeServer, executeCommand, void, JNIEnv *pEnv, jobject Object, jstring Command)
272{

Callers

nothing calls this directly

Calls 2

fs_chdirFunction · 0.85
mainFunction · 0.70

Tested by

no test coverage detected