Added support for !finalize return value comparison

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6771 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2016-07-14 10:53:25 +00:00
parent f129597c2b
commit 388d994ada
6 changed files with 43 additions and 17 deletions

View file

@ -3026,7 +3026,12 @@ int CEXEBuild::write_output(void)
SCRIPT_MSG(_T("\nFinalize command: %") NPRIs _T("\n"),cmdstr);
int ret = sane_system(cmdstr);
if (ret != 0) INFO_MSG(_T("Finalize command returned %d\n"),ret);
if (!check_external_exitcode(ret, cmd->cmpop, cmd->cmpval))
{
ERROR_MSG(_T("%") NPRIs _T(" %d, aborting\n"), _T("Finalize command returned"), ret);
return PS_ERROR;
}
if (ret != 0) INFO_MSG(_T("%") NPRIs _T(" %d\n"), _T("Finalize command returned"), ret);
free(cmdstrbuf);
}
}
@ -3938,3 +3943,15 @@ void CEXEBuild::set_code_type_predefines(const TCHAR *value)
}
}
int CEXEBuild::check_external_exitcode(int exitcode, int op, int val)
{
switch(op)
{
case 0: return exitcode < val;
case 1: return exitcode > val;
case 2: return exitcode != val;
case 3: return exitcode == val;
case 4: return -1; // ignore
}
return 0;
}