size optimization - use GetNSISString and GetStringFromParm instead of mystrcat

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5188 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2007-07-05 17:43:22 +00:00
parent 338bf03bff
commit 035579824d
2 changed files with 15 additions and 18 deletions

View file

@ -371,12 +371,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{ {
char *buf3=GetStringFromParm(-0x30); char *buf3=GetStringFromParm(-0x30);
char *buf2=GetStringFromParm(-0x21); char *buf2=GetStringFromParm(-0x21);
mystrcpy(buf1,buf3); char *buf1=GetStringFromParm(0x13);
if (mystrlen(buf3)+mystrlen(buf2) < NSIS_MAX_STRLEN-3)
{
mystrcat(buf1,"->");
mystrcat(buf1,buf2);
}
log_printf2("Rename: %s",buf1); log_printf2("Rename: %s",buf1);
if (MoveFile(buf3,buf2)) if (MoveFile(buf3,buf2))
{ {
@ -1083,6 +1078,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
SHFILEOPSTRUCT op; SHFILEOPSTRUCT op;
char *buf0=GetStringFromParm(0x00); char *buf0=GetStringFromParm(0x00);
char *buf1=GetStringFromParm(0x11); char *buf1=GetStringFromParm(0x11);
char *buf2=GetStringFromParm(0x23); // LANG_COPYTO + buf1
log_printf3("CopyFiles \"%s\"->\"%s\"",buf0,buf1); log_printf3("CopyFiles \"%s\"->\"%s\"",buf0,buf1);
if (!file_exists(buf0)) if (!file_exists(buf0))
@ -1102,9 +1098,6 @@ static int NSISCALL ExecuteEntry(entry *entry_)
buf0[mystrlen(buf0)+1]=0; buf0[mystrlen(buf0)+1]=0;
buf1[mystrlen(buf1)+1]=0; buf1[mystrlen(buf1)+1]=0;
GetNSISString(buf2,LANG_COPYTO);
mystrcat(buf2,buf1);
op.pFrom=buf0; op.pFrom=buf0;
op.pTo=buf1; op.pTo=buf1;
op.lpszProgressTitle=buf2; op.lpszProgressTitle=buf2;
@ -1463,16 +1456,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{ {
int ret=-666; int ret=-666;
HANDLE hFile; HANDLE hFile;
char *buf0=GetStringFromParm(0x00); char *buf1=GetStringFromParm(0x10);
if (!validpathspec(buf1))
GetStringFromParm(0x13);
if (validpathspec(buf0))
{
mystrcpy(buf1,buf0);
}
else
{
mystrcat(addtrailingslash(mystrcpy(buf1,state_install_directory)),buf0);
}
validate_filename(buf1); validate_filename(buf1);
remove_ro_attr(buf1); remove_ro_attr(buf1);

View file

@ -3132,6 +3132,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
} }
return PS_OK; return PS_OK;
case TOK_WRITEUNINSTALLER: case TOK_WRITEUNINSTALLER:
{
if (uninstall_mode) if (uninstall_mode)
{ {
ERROR_MSG("WriteUninstaller only valid from install, not from uninstall.\n"); ERROR_MSG("WriteUninstaller only valid from install, not from uninstall.\n");
@ -3140,11 +3141,15 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
uninstaller_writes_used++; uninstaller_writes_used++;
ent.which=EW_WRITEUNINSTALLER; ent.which=EW_WRITEUNINSTALLER;
ent.offsets[0]=add_string(line.gettoken_str(1)); ent.offsets[0]=add_string(line.gettoken_str(1));
string full = string("$INSTDIR\\") + string(line.gettoken_str(1));
ent.offsets[3]=add_string(full.c_str());
// ent.offsets[1] and ent.offsets[2] are set in CEXEBuild::uninstall_generate()
if (!ent.offsets[0]) PRINTHELP() if (!ent.offsets[0]) PRINTHELP()
SCRIPT_MSG("WriteUninstaller: \"%s\"\n",line.gettoken_str(1)); SCRIPT_MSG("WriteUninstaller: \"%s\"\n",line.gettoken_str(1));
DefineInnerLangString(NLF_ERR_CREATING); DefineInnerLangString(NLF_ERR_CREATING);
DefineInnerLangString(NLF_CREATED_UNINST); DefineInnerLangString(NLF_CREATED_UNINST);
}
return add_entry(&ent); return add_entry(&ent);
#else//!NSIS_CONFIG_UNINSTALL_SUPPORT #else//!NSIS_CONFIG_UNINSTALL_SUPPORT
case TOK_WRITEUNINSTALLER: case TOK_WRITEUNINSTALLER:
@ -3762,6 +3767,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
if (line.getnumtokens()!=a+2) PRINTHELP() if (line.getnumtokens()!=a+2) PRINTHELP()
ent.offsets[0]=add_string(line.gettoken_str(a)); ent.offsets[0]=add_string(line.gettoken_str(a));
ent.offsets[1]=add_string(line.gettoken_str(a+1)); ent.offsets[1]=add_string(line.gettoken_str(a+1));
string print = string(line.gettoken_str(a)) + "->" + string(line.gettoken_str(a+1));
ent.offsets[3]=add_string(print.c_str());
SCRIPT_MSG("Rename: %s%s->%s\n",ent.offsets[2]?"/REBOOTOK ":"",line.gettoken_str(a),line.gettoken_str(a+1)); SCRIPT_MSG("Rename: %s%s->%s\n",ent.offsets[2]?"/REBOOTOK ":"",line.gettoken_str(a),line.gettoken_str(a+1));
DefineInnerLangString(NLF_RENAME); DefineInnerLangString(NLF_RENAME);
@ -4438,6 +4445,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
if (line.getnumtokens() < a+2) PRINTHELP() if (line.getnumtokens() < a+2) PRINTHELP()
ent.offsets[0]=add_string(line.gettoken_str(a)); ent.offsets[0]=add_string(line.gettoken_str(a));
ent.offsets[1]=add_string(line.gettoken_str(a+1)); ent.offsets[1]=add_string(line.gettoken_str(a+1));
string copy_to = string("$(^CopyTo)") + line.gettoken_str(a+1);
ent.offsets[3]=add_string(copy_to.c_str());
int s; int s;
int size_kb=line.gettoken_int(a+2,&s); int size_kb=line.gettoken_int(a+2,&s);
if (!s && line.gettoken_str(a+2)[0]) PRINTHELP() if (!s && line.gettoken_str(a+2)[0]) PRINTHELP()