Var can now be used in sections and functions, but only with the /GLOBAL flag

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4211 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-08-06 16:04:17 +00:00
parent f5105a50b1
commit 68dc7f9f7e
4 changed files with 36 additions and 7 deletions

View file

@ -10,14 +10,17 @@ User variables can be declared with the \R{var}{Var} command. You can use these
\S2{var} Var
\c var_name
\c [/GLOBAL] var_name
Declare a user variable. Allowed characters for variables names: [a-z][A-Z][0-9] and '_'. Variables cannot be declared in sections or functions.
Declare a user variable. Allowed characters for variables names: [a-z][A-Z][0-9] and '_'. All defined variables are global, even if defined in a section or a function. To make this clear, variables defined in a section or a function must use the /GLOBAL flag. The /GLOBAL flag is not required outside of sections and functions.
\c Var example
\c
\c Function testVar
\c Var /GLOBAL example2
\c
\c StrCpy $example "example value"
\c StrCpy $example2 "another example value"
\c FunctionEnd
\S1{varother} Other Writable Variables

View file

@ -40,6 +40,14 @@ Section "Dummy Section" SecDummy
SectionEnd
Section "Another Section"
Var /GLOBAL "AnotherVar"
StrCpy $AnotherVar "test"
SectionEnd
;--------------------------------
; Uninstaller

View file

@ -5329,10 +5329,28 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
// Added by ramon 3 jun 2003
case TOK_DEFVAR:
{
SCRIPT_MSG("VAR \"%s\"\n",line.gettoken_str(1));
int res = DeclaredUserVar(line.gettoken_str(1));
if (res != PS_OK)
return res;
int a=1;
if (!strcmpi(line.gettoken_str(1),"/GLOBAL"))
{
a++;
}
if (build_cursection)
{
if (a==1)
{
ERROR_MSG("Var: currently, only global variables can be defined.\n");
PRINTHELP();
}
}
SCRIPT_MSG("Var: \"%s\"\n",line.gettoken_str(a));
int res = DeclaredUserVar(line.gettoken_str(a));
if (res != PS_OK)
return res;
}
return PS_OK;

View file

@ -258,7 +258,7 @@ static tokenType tokenlist[TOK__LAST] =
// Added by ramon 23 May 2003
{TOK_ALLOWSKIPFILES,"AllowSkipFiles",1,0,"(off|on)",TP_ALL},
// Added by ramon 3 jun 2003
{TOK_DEFVAR,"Var",1,0,"VarName",TP_GLOBAL},
{TOK_DEFVAR,"Var",1,1,"[/GLOBAL] var_name",TP_ALL},
// Added by ramon 6 jun 2003
{TOK_VI_ADDKEY,"VIAddVersionKey",2,1,"/LANG=lang_id keyname value",TP_GLOBAL},
{TOK_VI_SETPRODUCTVERSION,"VIProductVersion",1,0,"[version_string_X.X.X.X]",TP_GLOBAL},