mirror of
https://github.com/x64dbg/x64dbg.git
synced 2024-10-07 10:13:31 +00:00
DBG: added an error message
DBG: more generic command execution routines
This commit is contained in:
parent
9a07ad4121
commit
668121f431
@ -48,7 +48,10 @@ static bool scriptcreatelinemap(const char* filename)
|
||||
{
|
||||
HANDLE hFile=CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
|
||||
if(hFile==INVALID_HANDLE_VALUE)
|
||||
{
|
||||
GuiScriptError(0, "CreateFile failed...");
|
||||
return false;
|
||||
}
|
||||
unsigned int filesize=GetFileSize(hFile, 0);
|
||||
char* filedata=(char*)emalloc(filesize+1, "createlinemap:filedata");
|
||||
memset(filedata, 0, filesize+1);
|
||||
@ -238,6 +241,43 @@ static CMDRESULT scriptinternalcmdexec(const char* command)
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
static bool scriptinternalcmd()
|
||||
{
|
||||
bool bContinue=true;
|
||||
LINEMAPENTRY cur=linemap.at(scriptIp-1);
|
||||
if(cur.type==linecommand)
|
||||
{
|
||||
switch(scriptinternalcmdexec(cur.u.command))
|
||||
{
|
||||
case STATUS_CONTINUE:
|
||||
break;
|
||||
case STATUS_ERROR:
|
||||
bContinue=false;
|
||||
GuiScriptError(scriptIp, "Error executing command!");
|
||||
break;
|
||||
case STATUS_EXIT:
|
||||
bContinue=false;
|
||||
scriptIp=scriptinternalstep(0);
|
||||
GuiScriptSetIp(scriptIp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(cur.type==linebranch) //branch
|
||||
{
|
||||
switch(cur.u.branch.type) //branch types
|
||||
{
|
||||
case scriptjmp:
|
||||
scriptIp=scriptlabelfind(cur.u.branch.branchlabel);
|
||||
break;
|
||||
default:
|
||||
bContinue=false;
|
||||
GuiScriptError(scriptIp, "Branches are not yet supported...");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return bContinue;
|
||||
}
|
||||
|
||||
static DWORD WINAPI scriptRunThread(void* arg)
|
||||
{
|
||||
int destline=(int)(duint)arg;
|
||||
@ -256,36 +296,7 @@ static DWORD WINAPI scriptRunThread(void* arg)
|
||||
bool bContinue=true;
|
||||
while(bContinue && !bAbort) //run loop
|
||||
{
|
||||
LINEMAPENTRY cur=linemap.at(scriptIp-1);
|
||||
if(cur.type==linecommand)
|
||||
{
|
||||
CMDRESULT cmdres=scriptinternalcmdexec(cur.u.command);
|
||||
switch(cmdres)
|
||||
{
|
||||
case STATUS_CONTINUE:
|
||||
break;
|
||||
case STATUS_ERROR:
|
||||
bContinue=false;
|
||||
GuiScriptError(scriptIp, "Error executing command!");
|
||||
break;
|
||||
case STATUS_EXIT:
|
||||
bContinue=false;
|
||||
scriptIp=scriptinternalstep(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(cur.type==linebranch) //branch
|
||||
{
|
||||
if(cur.u.branch.type==scriptjmp) //simple jump
|
||||
{
|
||||
scriptIp=scriptlabelfind(cur.u.branch.branchlabel);
|
||||
}
|
||||
else
|
||||
{
|
||||
bContinue=false;
|
||||
GuiScriptError(scriptIp, "Branches are not yet supported...");
|
||||
}
|
||||
}
|
||||
bContinue=scriptinternalcmd();
|
||||
if(scriptIp==scriptinternalstep(scriptIp)) //end of script
|
||||
{
|
||||
bContinue=false;
|
||||
@ -337,42 +348,8 @@ void scriptstep()
|
||||
if(bIsRunning) //already running
|
||||
return;
|
||||
scriptIp=scriptinternalstep(scriptIp-1); //probably useless
|
||||
bool bContinue=true;
|
||||
LINEMAPENTRY cur=linemap.at(scriptIp-1);
|
||||
if(cur.type==linecommand)
|
||||
{
|
||||
CMDRESULT cmdres=scriptinternalcmdexec(cur.u.command);
|
||||
switch(cmdres)
|
||||
{
|
||||
case STATUS_CONTINUE:
|
||||
break;
|
||||
case STATUS_ERROR:
|
||||
bContinue=false;
|
||||
GuiScriptError(scriptIp, "Error executing command!");
|
||||
break;
|
||||
case STATUS_EXIT:
|
||||
bContinue=false;
|
||||
scriptIp=scriptinternalstep(0);
|
||||
GuiScriptSetIp(scriptIp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(cur.type==linebranch) //branch
|
||||
{
|
||||
if(cur.u.branch.type==scriptjmp) //simple jump
|
||||
{
|
||||
scriptIp=scriptlabelfind(cur.u.branch.branchlabel);
|
||||
}
|
||||
else
|
||||
{
|
||||
bContinue=false;
|
||||
GuiScriptError(scriptIp, "Branches are not yet supported...");
|
||||
}
|
||||
}
|
||||
|
||||
if(!bContinue)
|
||||
if(!scriptinternalcmd())
|
||||
return;
|
||||
|
||||
if(scriptIp==scriptinternalstep(scriptIp)) //end of script
|
||||
scriptIp=0;
|
||||
scriptIp=scriptinternalstep(scriptIp);
|
||||
|
Loading…
Reference in New Issue
Block a user