Translation some comments from Chinese to English.

This commit is contained in:
dxl 2020-05-07 16:57:15 +08:00
commit e8999f3318
4 changed files with 48 additions and 70 deletions

View file

@ -7,10 +7,10 @@
#include <jni_tools.h>
#include "stdbool.h"
//当前线程是否添加的标志位
// native thread attach label
static bool g_IsAttach;
//TODO 环境变量获取函数
// get current env for jvm
JNIEnv *getJniEnv() {
JNIEnv *currentThreadEnv;
g_IsAttach = false;
@ -32,66 +32,47 @@ JNIEnv *getJniEnv() {
}
}
//解绑线程env
void deatchThread() {
// detach native thread from jvm
void detachThread() {
if (g_IsAttach) {
LOGD("线程解绑成功!");
(*g_JavaVM)->DetachCurrentThread(g_JavaVM);
}
}
//TODO 命令行解析
// cmd arg parse
CMD *parse_command_line(const char *commandStr) {
//一个指针指向传进来的命令字符串const修饰的我们需要复刻一份!
CMD *cmd = (CMD *) malloc(sizeof(CMD));
if (!cmd) {
LOGD("申请空间失败!");
return NULL;
}
//拷贝字符串到堆空间!
// copy the source to the heap
char *pTmp = strdup(commandStr);
LOGD("拷贝参数字符串到临时堆!");
//返回的结果!先初始化为20个空间
// new memory size is default 20 for char **
int size = 20;
cmd->cmd = (char **) malloc(size * sizeof(char **));
if (cmd->cmd) {
LOGD("申请参数空间成功!");
} else {
LOGD("申请空间失败!");
}
//进行截取
if (!cmd->cmd) return NULL;
// parse
char *pStr = strtok(pTmp, " ");
LOGD("第0次截取完成: %s", pStr);
//给结果数组进行下标为0的第一次初始化
cmd->cmd[0] = pStr;
//局部变量用于储存解析到的命令个数,下标移动为一
int count = 1;
//需要截取命令参数,以空格为限定符
for (; pStr != NULL; ++count) {
//如果容量不够,则扩容!
// Capacity expansion
if (count == (size - 1)) {
size += 20;
cmd->cmd = (char **) realloc(cmd->cmd, size * sizeof(char **));
LOGD("超过初始容量,自动扩容!");
}
pStr = strtok(NULL, " ");
if (pStr) {
cmd->cmd[count] = pStr;
LOGD("第%d次截取完成: %s", count, pStr);
}
}
cmd->len = (count - 1);
LOGD("解析函数执行完成!");
return cmd;
}
//内存释放
// cmd arg struct free
void free_command_line(CMD *cmd) {
//二级指针需要逐层释放!
LOGD("释放命令行字符串二级引用!");
free(cmd->cmd[0]);
LOGD("释放命令行一级引用!");
free(cmd->cmd);
LOGD("释放结构体内存");
free(cmd);
}