mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 05:32:47 +00:00
Scripting: Added strsplit command
This commit is contained in:
parent
625d1e5bea
commit
4ea35ef504
@ -69,6 +69,7 @@ typedef enum {
|
|||||||
CMD_ID_INPUT,
|
CMD_ID_INPUT,
|
||||||
CMD_ID_FILESEL,
|
CMD_ID_FILESEL,
|
||||||
CMD_ID_SET,
|
CMD_ID_SET,
|
||||||
|
CMD_ID_STRSPLIT,
|
||||||
CMD_ID_CHK,
|
CMD_ID_CHK,
|
||||||
CMD_ID_ALLOW,
|
CMD_ID_ALLOW,
|
||||||
CMD_ID_CP,
|
CMD_ID_CP,
|
||||||
@ -121,6 +122,7 @@ Gm9ScriptCmd cmd_list[] = {
|
|||||||
{ CMD_ID_INPUT , "input" , 2, 0 },
|
{ CMD_ID_INPUT , "input" , 2, 0 },
|
||||||
{ CMD_ID_FILESEL , "filesel" , 3, 0 },
|
{ CMD_ID_FILESEL , "filesel" , 3, 0 },
|
||||||
{ CMD_ID_SET , "set" , 2, 0 },
|
{ CMD_ID_SET , "set" , 2, 0 },
|
||||||
|
{ CMD_ID_STRSPLIT, "strsplit", 3, _FLG('b') | _FLG('f')},
|
||||||
{ CMD_ID_CHK , "chk" , 2, _FLG('u') },
|
{ CMD_ID_CHK , "chk" , 2, _FLG('u') },
|
||||||
{ CMD_ID_ALLOW , "allow" , 1, _FLG('a') },
|
{ CMD_ID_ALLOW , "allow" , 1, _FLG('a') },
|
||||||
{ CMD_ID_CP , "cp" , 2, _FLG('h') | _FLG('w') | _FLG('k') | _FLG('s') | _FLG('n')},
|
{ CMD_ID_CP , "cp" , 2, _FLG('h') | _FLG('w') | _FLG('k') | _FLG('s') | _FLG('n')},
|
||||||
@ -462,6 +464,7 @@ u32 get_flag(char* str, u32 len, char* err_str) {
|
|||||||
if ((len < 2) || (*str != '-')) flag_char = '\0';
|
if ((len < 2) || (*str != '-')) flag_char = '\0';
|
||||||
else if (len == 2) flag_char = str[1];
|
else if (len == 2) flag_char = str[1];
|
||||||
else if (strncmp(str, "--all", len) == 0) flag_char = 'a';
|
else if (strncmp(str, "--all", len) == 0) flag_char = 'a';
|
||||||
|
else if (strncmp(str, "--before", len) == 0) flag_char = 'b';
|
||||||
else if (strncmp(str, "--first", len) == 0) flag_char = 'f';
|
else if (strncmp(str, "--first", len) == 0) flag_char = 'f';
|
||||||
else if (strncmp(str, "--hash", len) == 0) flag_char = 'h';
|
else if (strncmp(str, "--hash", len) == 0) flag_char = 'h';
|
||||||
else if (strncmp(str, "--skip", len) == 0) flag_char = 'k';
|
else if (strncmp(str, "--skip", len) == 0) flag_char = 'k';
|
||||||
@ -811,6 +814,26 @@ bool run_cmd(cmd_id id, u32 flags, char** argv, char* err_str) {
|
|||||||
ret = set_var(argv[0], argv[1]);
|
ret = set_var(argv[0], argv[1]);
|
||||||
if (err_str) snprintf(err_str, _ERR_STR_LEN, "set fail");
|
if (err_str) snprintf(err_str, _ERR_STR_LEN, "set fail");
|
||||||
}
|
}
|
||||||
|
else if (id == CMD_ID_STRSPLIT) {
|
||||||
|
char str[_ARG_MAX_LEN];
|
||||||
|
strncpy(str, argv[1], _ARG_MAX_LEN);
|
||||||
|
|
||||||
|
ret = false;
|
||||||
|
if (strlen(argv[2]) == 1) { // argv[2] must be one char
|
||||||
|
char* found;
|
||||||
|
if (flags & _FLG('f')) found = strchr(str, *argv[2]);
|
||||||
|
else found = strrchr(str, *argv[2]);
|
||||||
|
if (!found && err_str) snprintf(err_str, _ERR_STR_LEN, "char not found");
|
||||||
|
|
||||||
|
if (found) {
|
||||||
|
if (flags & _FLG('b')) {
|
||||||
|
*found = '\0';
|
||||||
|
ret = set_var(argv[0], str);
|
||||||
|
} else ret = set_var(argv[0], found+1);
|
||||||
|
if (err_str) snprintf(err_str, _ERR_STR_LEN, "var fail");
|
||||||
|
}
|
||||||
|
} else if (err_str) snprintf(err_str, _ERR_STR_LEN, "argv[2] is not a char");
|
||||||
|
}
|
||||||
else if (id == CMD_ID_CHK) {
|
else if (id == CMD_ID_CHK) {
|
||||||
if (flags & _FLG('u')) {
|
if (flags & _FLG('u')) {
|
||||||
ret = (strncasecmp(argv[0], argv[1], _VAR_CNT_LEN) != 0);
|
ret = (strncasecmp(argv[0], argv[1], _VAR_CNT_LEN) != 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user