mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 21:52:48 +00:00
Scripting: Some minor cosmetics
This commit is contained in:
parent
52b3f128bf
commit
3c4b4236b3
@ -47,6 +47,7 @@
|
|||||||
// some useful macros
|
// some useful macros
|
||||||
#define IS_WHITESPACE(c) ((c == ' ') || (c == '\t') || (c == '\r') || (c == '\n'))
|
#define IS_WHITESPACE(c) ((c == ' ') || (c == '\t') || (c == '\r') || (c == '\n'))
|
||||||
#define MATCH_STR(s,l,c) ((l == strlen(c)) && (strncmp(s, c, l) == 0))
|
#define MATCH_STR(s,l,c) ((l == strlen(c)) && (strncmp(s, c, l) == 0))
|
||||||
|
#define IS_CTRLFLOW_CMD(id) ((id == CMD_ID_IF) || (id == CMD_ID_ELIF) || (id == CMD_ID_ELSE) || (id == CMD_ID_END) || (id == CMD_ID_GOTO))
|
||||||
#define _FLG(c) (1 << (c - 'a'))
|
#define _FLG(c) (1 << (c - 'a'))
|
||||||
|
|
||||||
// command ids (also entry into the cmd_list aray below)
|
// command ids (also entry into the cmd_list aray below)
|
||||||
@ -999,26 +1000,27 @@ bool run_line(const char* line_start, const char* line_end, u32* flags, char* er
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// control flow command handling
|
||||||
|
if (IS_CTRLFLOW_CMD(cmdid)) {
|
||||||
// block out of control flow commands
|
// block out of control flow commands
|
||||||
if (if_cond && ((cmdid == CMD_ID_IF) || (cmdid == CMD_ID_ELIF) || (cmdid == CMD_ID_ELSE) || (cmdid == CMD_ID_END) ||
|
if (if_cond) {
|
||||||
(cmdid == CMD_ID_GOTO))) {
|
|
||||||
if (err_str) snprintf(err_str, _ERR_STR_LEN, "control flow error");
|
if (err_str) snprintf(err_str, _ERR_STR_LEN, "control flow error");
|
||||||
syntax_error = true;
|
syntax_error = true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle "if" / elif
|
// shortcuts for "elif" / "else"
|
||||||
|
if (((cmdid == CMD_ID_ELIF) || (cmdid == CMD_ID_ELSE)) && !skip_state) {
|
||||||
|
skip_state = _SKIP_TILL_END;
|
||||||
|
cmdid = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle "if" / "elif"
|
||||||
if ((cmdid == CMD_ID_IF) || (cmdid == CMD_ID_ELIF)) {
|
if ((cmdid == CMD_ID_IF) || (cmdid == CMD_ID_ELIF)) {
|
||||||
// set defaults
|
// set defaults
|
||||||
argc = 1;
|
argc = 1;
|
||||||
strncpy(argv[0], _ARG_FALSE, _ARG_MAX_LEN);
|
strncpy(argv[0], _ARG_FALSE, _ARG_MAX_LEN);
|
||||||
|
|
||||||
// elif handling
|
|
||||||
if ((cmdid == CMD_ID_ELIF) && !skip_state) {
|
|
||||||
skip_state = _SKIP_TILL_END;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// skip to behind the "if"/"elif" command
|
// skip to behind the "if"/"elif" command
|
||||||
char* line_start_next = (char*) line_start;
|
char* line_start_next = (char*) line_start;
|
||||||
for (; IS_WHITESPACE(*line_start_next); line_start_next++);
|
for (; IS_WHITESPACE(*line_start_next); line_start_next++);
|
||||||
@ -1028,6 +1030,7 @@ bool run_line(const char* line_start, const char* line_end, u32* flags, char* er
|
|||||||
if (run_line(line_start_next, line_end, flags, err_str, true))
|
if (run_line(line_start_next, line_end, flags, err_str, true))
|
||||||
strncpy(argv[0], _ARG_TRUE, _ARG_MAX_LEN);
|
strncpy(argv[0], _ARG_TRUE, _ARG_MAX_LEN);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// run the command (if available)
|
// run the command (if available)
|
||||||
if (cmdid && !run_cmd(cmdid, *flags, argv, err_str)) {
|
if (cmdid && !run_cmd(cmdid, *flags, argv, err_str)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user