bzip2 header down to 34KB, 54 bytes away from 34.5KB zlib. Fixed a bug with ReadRegStr and $0.

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1249 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2002-10-01 14:13:23 +00:00
parent a3676511e6
commit 62abf21381
11 changed files with 87 additions and 175 deletions

View file

@ -407,7 +407,7 @@ int CEXEBuild::add_string_main(const char *string, int process) // returns offse
if (build_userlangstrings.find(cp, 0, &idx) < 0) idx = -1;
}
free(cp);
if (idx >= 0) return -(idx+1);
if (idx >= 0) return -(idx+1+(sizeof(common_strings)+sizeof(installer_strings))/sizeof(int));
}
char buf[4096];
@ -429,7 +429,7 @@ int CEXEBuild::add_string_uninst(const char *string, int process) // returns off
if (ubuild_userlangstrings.find(cp, 0, &idx) < 0) idx = -1;
}
free(cp);
if (idx >= 0) return -(idx+1);
if (idx >= 0) return -(idx+1+(sizeof(common_strings)+sizeof(uninstall_strings))/sizeof(int));
}
char buf[4096];

View file

@ -43,9 +43,7 @@ static char gDontFookWithFocus = 0;
// Added by Amir Szekely 3rd August 2002
char *language_tables;
common_strings *cur_common_strings_table;
char *cur_install_strings_table; // installer_strings/uninstall_strings depending on installer type
int *cur_user_strings_table;
int *cur_language_table;
int g_quit_flag; // set when Quit has been called (meaning bail out ASAP)
@ -115,8 +113,8 @@ static int m_page=-1,m_abort;
static HWND m_curwnd, m_bgwnd, m_hwndOK, m_hwndCancel;
static int m_whichcfg;
static BOOL NSISCALL SetDlgItemTextFromLang_(HWND dlg, int id, langid_t lid) {
return my_SetDialogItemText(dlg,id+1000,STR(GetLangString(lid)));
static BOOL NSISCALL SetDlgItemTextFromLang_(HWND dlg, int id, int lid) {
return my_SetDialogItemText(dlg,id+1000,LANG_STR(lid));
}
#define SetDlgItemTextFromLang(dlg,id,lid) SetDlgItemTextFromLang_(dlg,(id)-1000,lid)
@ -258,14 +256,7 @@ lang_again:
for (i = 0; i < lang_num; i++) {
language_table=language_tables+i*g_inst_cmnheader->language_table_size;
if (!((lang ^ *(LANGID*)language_table) & lang_mask)) {
cur_common_strings_table=(common_strings*)(language_table+sizeof(LANGID));
cur_install_strings_table=(void*)(cur_common_strings_table+1);
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
if (g_is_uninstaller)
cur_user_strings_table=(int*)((uninstall_strings*)cur_install_strings_table+1);
else
#endif
cur_user_strings_table=(int*)((installer_strings*)cur_install_strings_table+1);
cur_language_table=(int*)(language_table+sizeof(LANGID));
break;
}
}
@ -279,7 +270,7 @@ lang_again:
myitoa(state_language, *(LANGID*)language_table);
SendMessage(m_bgwnd, WM_SETTEXT, 0, (LPARAM)process_string_from_lang(g_caption,LANGID_CAPTION));
SendMessage(m_bgwnd, WM_SETTEXT, 0, (LPARAM)process_string_fromtab(g_caption,LANG_CAPTION));
}
int NSISCALL ui_doinstall(void)
@ -352,7 +343,7 @@ int NSISCALL ui_doinstall(void)
// Multilingual support
{
extern char *g_db_strtab;
lang_num=g_inst_cmnheader->str_tables_num;
lang_num=g_inst_cmnheader->language_tables_num;
language_tables=(void*)(g_db_strtab+g_inst_cmnheader->num_string_bytes);
myitoa(state_language, GetUserDefaultLangID());
@ -482,32 +473,32 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
g_hwnd=hwndDlg;
m_hwndOK=GetDlgItem(hwndDlg,IDOK);
m_hwndCancel=GetDlgItem(hwndDlg,IDCANCEL);
SetDlgItemTextFromLang(hwndDlg,IDC_VERSTR,LANGID_BRANDING);
SetDlgItemTextFromLang(hwndDlg,IDC_VERSTR,LANG_BRANDING);
SetClassLong(hwndDlg,GCL_HICON,(long)g_hIcon);
SetDlgItemTextFromLang(hwndDlg,IDCANCEL,LANGID_BTN_CANCEL);
SetDlgItemTextFromLang(hwndDlg,IDCANCEL,LANG_BTN_CANCEL);
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
if (!g_is_uninstaller)
#endif
SetDlgItemTextFromLang(hwndDlg,IDC_BACK,LANGID_BTN_BACK);
SetDlgItemTextFromLang(hwndDlg,IDC_BACK,LANG_BTN_BACK);
ShowWindow(hwndDlg,SW_SHOW);
}
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
if (g_is_uninstaller)
{
islp = (LANG_UNINST_TEXT>0);
islp = LANG_STR_TAB(LANG_UNINST_TEXT);
iscp++;
}
else
#endif//NSIS_CONFIG_UNINSTALL_SUPPORT
{
#ifdef NSIS_CONFIG_LICENSEPAGE
islp = (LANG_LICENSE_DATA>0);
islp = LANG_STR_TAB(LANG_LICENSE_DATA);
#endif//NSIS_CONFIG_LICENSEPAGE
#ifdef NSIS_CONFIG_COMPONENTPAGE
iscp = (LANG_COMP_TEXT>0);
iscp = LANG_STR_TAB(LANG_COMP_TEXT);
#endif//NSIS_CONFIG_COMPONENTPAGE
ispotentiallydp = (LANG_DIR_TEXT>0);
ispotentiallydp = LANG_STR_TAB(LANG_DIR_TEXT);
if (ispotentiallydp &&
!((g_inst_cmnheader->misc_flags&2) &&
is_valid_instpath(state_install_directory)
@ -553,19 +544,19 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
else if (!m_curwnd)
{
HWND hwndtmp;
langid_t langid =
(m_page == g_max_page) ? LANGID_BTN_CLOSE :
int str =
(m_page == g_max_page) ? LANG_BTN_CLOSE :
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
g_is_uninstaller ? LANGID_BTN_UNINST :
g_is_uninstaller ? LANG_BTN_UNINST :
#endif
#ifdef NSIS_CONFIG_LICENSEPAGE
(m_page == 0) ? LANGID_BTN_LICENSE :
(m_page == 0) ? LANG_BTN_LICENSE :
#endif
(m_page == 2 || (m_page == 1 && !isdp)) ? LANGID_BTN_INSTALL :
LANGID_BTN_NEXT;
SetDlgItemTextFromLang(hwndDlg,IDOK,langid);
(m_page == 2 || (m_page == 1 && !isdp)) ? LANG_BTN_INSTALL :
LANG_BTN_NEXT;
SetDlgItemTextFromLang(hwndDlg,IDOK,str);
mystrcpy(g_tmp,g_caption);
process_string_from_lang(g_tmp+mystrlen(g_tmp),LANGID_SUBCAPTION(m_page));
process_string_fromtab(g_tmp+mystrlen(g_tmp),LANG_SUBCAPTION(m_page));
SetWindowText(hwndDlg,g_tmp);
@ -664,14 +655,14 @@ static BOOL CALLBACK LicenseProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
static HWND hwLicense;
if (uMsg == WM_INITDIALOG)
{
EDITSTREAM es={(DWORD)STR(LANG_LICENSE_DATA),0,StreamLicense};
EDITSTREAM es={(DWORD)LANG_STR(LANG_LICENSE_DATA),0,StreamLicense};
hwLicense=GetUIItem(IDC_EDIT1);
SendMessage(hwLicense,EM_AUTOURLDETECT,TRUE,0);
SendMessage(hwLicense,EM_SETBKGNDCOLOR,0,g_inst_header->license_bg>=0?g_inst_header->license_bg:GetSysColor(COLOR_BTNFACE));
SendMessage(hwLicense,EM_SETEVENTMASK,0,ENM_LINK|ENM_KEYEVENTS); //XGE 8th September 2002 Or'd in ENM_KEYEVENTS
dwRead=0;
SendMessage(hwLicense,EM_STREAMIN,(((char*)es.dwCookie)[0]=='{')?SF_RTF:SF_TEXT,(LPARAM)&es);
SetUITextFromLang(IDC_INTROTEXT,LANGID_LICENSE_TEXT);
SetUITextFromLang(IDC_INTROTEXT,LANG_LICENSE_TEXT);
//XGE 5th September 2002 - place the initial focus in the richedit control
gDontFookWithFocus++;
SetFocus(hwLicense);
@ -728,8 +719,8 @@ static BOOL CALLBACK UninstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
{
if (uMsg == WM_INITDIALOG)
{
SetUITextFromLang(IDC_INTROTEXT,LANGID_UNINST_TEXT);
SetUITextFromLang(IDC_UNINSTFROM,LANGID_UNINST_SUBTEXT);
SetUITextFromLang(IDC_INTROTEXT,LANG_UNINST_TEXT);
SetUITextFromLang(IDC_UNINSTFROM,LANG_UNINST_SUBTEXT);
SetUITextNT(IDC_EDIT1,state_install_directory);
}
return HandleStaticBkColor();
@ -769,9 +760,9 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
}
#endif
SetUITextNT(IDC_DIR,state_install_directory);
SetUITextFromLang(IDC_INTROTEXT,LANGID_DIR_TEXT);
SetUITextFromLang(IDC_BROWSE,LANGID_BTN_BROWSE);
SetUITextFromLang(IDC_SELDIRTEXT,LANGID_DIR_SUBTEXT);
SetUITextFromLang(IDC_INTROTEXT,LANG_DIR_TEXT);
SetUITextFromLang(IDC_BROWSE,LANG_BTN_BROWSE);
SetUITextFromLang(IDC_SELDIRTEXT,LANG_DIR_SUBTEXT);
}
if (uMsg == WM_COMMAND)
{
@ -862,12 +853,12 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
// Added by Amir Szekely 24th July 2002
// Allows 'SpaceTexts none'
if (LANG_SPACE_REQ) {
inttosizestr(total,mystrcpy(s,STR(LANG_SPACE_REQ)));
if (LANG_STR_TAB(LANG_SPACE_REQ)) {
inttosizestr(total,mystrcpy(s,LANG_STR(LANG_SPACE_REQ)));
SetUITextNT(IDC_SPACEREQUIRED,s);
if (available != -1)
{
inttosizestr(available,mystrcpy(s,STR(LANG_SPACE_AVAIL)));
inttosizestr(available,mystrcpy(s,LANG_STR(LANG_SPACE_AVAIL)));
SetUITextNT(IDC_SPACEAVAILABLE,s);
}
else
@ -967,9 +958,9 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
hTreeItems=(HTREEITEM*)my_GlobalAlloc(sizeof(HTREEITEM)*num_sections);
hBMcheck1=LoadBitmap(g_hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
SetUITextFromLang(IDC_INTROTEXT,LANGID_COMP_TEXT);
SetUITextFromLang(IDC_TEXT1,LANGID_COMP_SUBTEXT(0));
SetUITextFromLang(IDC_TEXT2,LANGID_COMP_SUBTEXT(1));
SetUITextFromLang(IDC_INTROTEXT,LANG_COMP_TEXT);
SetUITextFromLang(IDC_TEXT1,LANG_COMP_SUBTEXT(0));
SetUITextFromLang(IDC_TEXT2,LANG_COMP_SUBTEXT(1));
oldTreeWndProc=SetWindowLong(hwndTree1,GWL_WNDPROC,(DWORD)newTreeWndProc);
@ -993,7 +984,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{
SendMessage(hwndCombo1,CB_ADDSTRING,0,(LPARAM)GetStringFromStringTab(g_inst_header->install_types_ptr[m_num_insttypes]));
}
if (g_inst_header->no_custom_instmode_flag!=1) SendMessage(hwndCombo1,CB_ADDSTRING,0,(LPARAM)STR(LANG_COMP_CUSTOM));
if (g_inst_header->no_custom_instmode_flag!=1) SendMessage(hwndCombo1,CB_ADDSTRING,0,(LPARAM)LANG_STR(LANG_COMP_CUSTOM));
SendMessage(hwndCombo1,CB_SETCURSEL,m_whichcfg,0);
}
@ -1251,7 +1242,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
ShowWindow(GetUIItem(IDC_TEXT2),c);
}
if (LANG_SPACE_REQ) {
if (LANG_STR_TAB(LANG_SPACE_REQ)) {
int x,total;
char s[128];
for (total=x=0; x < num_sections; x ++)
@ -1259,7 +1250,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
if (g_inst_section[x].default_state&DFS_SET)
total+=g_inst_section[x].size_kb;
}
inttosizestr(total,mystrcpy(s,STR(LANG_SPACE_REQ)));
inttosizestr(total,mystrcpy(s,LANG_STR(LANG_SPACE_REQ)));
SetUITextNT(IDC_SPACEREQUIRED,s);
}
}
@ -1271,9 +1262,9 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
int ui_st_updateflag=0x3;
void NSISCALL update_status_text_from_lang(langid_t id, const char *text2)
void NSISCALL update_status_text_from_lang(int id, const char *text2)
{
update_status_text(STR(GetLangString(id)), text2);
update_status_text(LANG_STR(id), text2);
}
void NSISCALL update_status_text(const char *text1, const char *text2)
@ -1358,7 +1349,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
#endif
{
int x;
log_printf3("New install of \"%s\" to \"%s\"",STR(LANG_NAME),state_install_directory);
log_printf3("New install of \"%s\" to \"%s\"",LANG_STR(LANG_NAME),state_install_directory);
for (x=0; x < num_sections; x ++)
{
#ifdef NSIS_CONFIG_COMPONENTPAGE
@ -1380,7 +1371,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
if (lb_fg >= 0) {
ListView_SetTextColor(insthwnd, lb_fg);
}
SetWindowText(insthwndbutton,STR(LANG_BTN_DETAILS));
SetWindowText(insthwndbutton,LANG_STR(LANG_BTN_DETAILS));
if (g_inst_cmnheader->show_details)
{
ShowWindow(insthwndbutton,SW_HIDE);
@ -1423,8 +1414,8 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
ShowWindow(g_hwnd,SW_SHOWNA);
mystrcpy(g_tmp,g_caption);
process_string_from_lang(g_tmp+mystrlen(g_tmp),LANGID_SUBCAPTION(g_max_page+1));
update_status_text_from_lang(LANGID_COMPLETED,"");
process_string_fromtab(g_tmp+mystrlen(g_tmp),LANG_SUBCAPTION(g_max_page+1));
update_status_text_from_lang(LANG_COMPLETED,"");
SetWindowText(g_hwnd,g_tmp);
SetFocus(h);
}
@ -1450,7 +1441,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
DWORD pos = GetMessagePos();
HMENU menu = CreatePopupMenu();
AppendMenu(menu,MF_STRING,1,GetStringFromStringTab(GetLangString(LANGID_COPYDETAILS)));
AppendMenu(menu,MF_STRING,1,LANG_STR(LANG_COPYDETAILS));
if (1==TrackPopupMenu(
menu,
TPM_NONOTIFY|TPM_RETURNCMD,

View file

@ -234,10 +234,10 @@ static int NSISCALL ExecuteEntry(entry *entry_)
log_printf3("CreateDirectory: \"%s\" (%d)",buf1,parm1);
if (parm1)
{
update_status_text_from_lang(LANGID_OUTPUTDIR,buf1);
update_status_text_from_lang(LANG_OUTPUTDIR,buf1);
mystrcpy(state_output_directory,buf1);
}
else update_status_text_from_lang(LANGID_CREATEDIR,buf1);
else update_status_text_from_lang(LANG_CREATEDIR,buf1);
{
char *tp;
char *p;
@ -306,7 +306,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
log_printf2("Rename: %s",buf3);
if (MoveFile(buf0,buf1))
{
update_status_text_from_lang(LANGID_RENAME,buf3);
update_status_text_from_lang(LANG_RENAME,buf3);
}
else
{
@ -317,7 +317,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
exec_rebootflag++;
#endif
MoveFileOnReboot(buf0,buf1);
update_status_text_from_lang(LANGID_RENAMEONREBOOT,buf3);
update_status_text_from_lang(LANG_RENAMEONREBOOT,buf3);
log_printf2("Rename on reboot: %s",buf3);
}
else
@ -415,7 +415,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
if (overwriteflag)
{
update_status_text_from_lang(LANGID_SKIPPED,buf3);
update_status_text_from_lang(LANG_SKIPPED,buf3);
if (overwriteflag==2) exec_errorflag++;
log_printf3("File: skipped: \"%s\" (overwriteflag=%d)",buf0,overwriteflag);
return 0;
@ -424,7 +424,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
mystrcpy(buf2,g_usrvars[0]);//save $0
mystrcpy(g_usrvars[0],buf0);
process_string_from_lang(buf1,LANGID_FILEERR);
process_string_fromtab(buf1,LANG_FILEERR);
mystrcpy(g_usrvars[0],buf2); // restore $0
switch (my_MessageBox(buf1,MB_ABORTRETRYIGNORE|MB_ICONSTOP))
@ -438,12 +438,12 @@ static int NSISCALL ExecuteEntry(entry *entry_)
return 0;
default:
log_printf("File: error, user abort");
update_status_text_from_lang(LANGID_CANTWRITE,buf0);
update_status_text_from_lang(LANG_CANTWRITE,buf0);
return EXEC_ERROR;
}
}
update_status_text_from_lang(LANGID_EXTRACT,buf3);
update_status_text_from_lang(LANG_EXTRACT,buf3);
ret=GetCompressedDataFromDataBlock(parm2,hOut);
log_printf3("File: wrote %d to \"%s\"",ret,buf0);
@ -457,11 +457,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
if (ret == -2)
{
wsprintf(buf0,"%s%s",STR(LANG_ERRORWRITING),buf3);
wsprintf(buf0,"%s%s",LANG_STR(LANG_ERRORWRITING),buf3);
}
else
{
mystrcpy(buf0,STR(LANG_ERRORDECOMPRESSING));
mystrcpy(buf0,LANG_STR(LANG_ERRORDECOMPRESSING));
}
log_printf2("%s",buf0);
my_MessageBox(buf0,MB_OK|MB_ICONSTOP);
@ -494,7 +494,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (DeleteFile(buf1))
{
log_printf2("Delete: DeleteFile(\"%s\")",buf1);
update_status_text_from_lang(LANGID_DELETEFILE,buf1);
update_status_text_from_lang(LANG_DELETEFILE,buf1);
}
else
{
@ -505,7 +505,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
exec_rebootflag++;
#endif
log_printf2("Delete: DeleteFile on Reboot(\"%s\")",buf1);
update_status_text_from_lang(LANGID_DELETEONREBOOT,buf1);
update_status_text_from_lang(LANG_DELETEONREBOOT,buf1);
MoveFileOnReboot(buf1,NULL);
}
else
@ -802,7 +802,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
char *buf1=process_string_fromparm_tobuf(0x11);
char *buf2=process_string_fromparm_tobuf(0x22);
wsprintf(buf3,"%s %s",buf0,buf1);
update_status_text_from_lang(LANGID_EXECSHELL, buf3);
update_status_text_from_lang(LANG_EXECSHELL, buf3);
x=(int)ShellExecute(g_hwnd,buf0[0]?buf0:NULL,buf1,buf2[0]?buf2:NULL,state_output_directory,parm3);
if (x < 33)
{
@ -822,7 +822,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
HANDLE hProc;
char *buf0=process_string_fromparm_tobuf(0x00);
log_printf2("Exec: command=\"%s\"",buf0);
update_status_text_from_lang(LANGID_EXECUTE,buf0);
update_status_text_from_lang(LANG_EXECUTE,buf0);
hProc=myCreateProcess(buf0,*state_output_directory?state_output_directory:NULL);
@ -949,7 +949,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
else
{
update_status_text_from_lang(LANGID_CANNOTFINDSYMBOL,buf1);
update_status_text_from_lang(LANG_CANNOTFINDSYMBOL,buf1);
log_printf3("Error registering DLL: %s not found in %s",buf1,buf0);
}
if (!parm3) FreeLibrary(h);
@ -957,14 +957,14 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
else
{
update_status_text_from_lang(LANGID_COULDNOTLOAD,buf0);
update_status_text_from_lang(LANG_COULDNOTLOAD,buf0);
log_printf2("Error registering DLL: Could not load %s",buf0);
}
OleUninitialize();
}
else
{
update_status_text_from_lang(LANGID_NOOLE,buf0);
update_status_text_from_lang(LANG_NOOLE,buf0);
log_printf("Error registering DLL: Could not initialize OLE");
}
}
@ -1023,11 +1023,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (rv)
{
exec_errorflag++;
update_status_text_from_lang(LANGID_ERRORCREATINGSHORTCUT,buf2);
update_status_text_from_lang(LANG_ERRORCREATINGSHORTCUT,buf2);
}
else
{
update_status_text_from_lang(LANGID_CREATESHORTCUT,buf2);
update_status_text_from_lang(LANG_CREATESHORTCUT,buf2);
}
}
return 0;
@ -1045,7 +1045,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
buf0[mystrlen(buf0)+1]=0;
buf1[mystrlen(buf1)+1]=0;
wsprintf(buf2,"%s%s",STR(LANG_COPYTO),buf1);
wsprintf(buf2,"%s%s",LANG_STR(LANG_COPYTO),buf1);
op.pFrom=buf0;
op.pTo=buf1;
@ -1055,7 +1055,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
res=SHFileOperation(&op);
if (res)
{ // some of these changes were from Edgewise (wiked_edge@yahoo.com)
update_status_text_from_lang(LANGID_COPYFAILED,"");
update_status_text_from_lang(LANG_COPYFAILED,"");
exec_errorflag++;
}
}
@ -1453,11 +1453,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
log_printf3("created uninstaller: %d, \"%s\"",ret,buf1);
if (ret < 0)
{
update_status_text_from_lang(LANGID_ERRORCREATING,buf0);
update_status_text_from_lang(LANG_ERRORCREATING,buf0);
DeleteFile(buf1);
}
else
update_status_text_from_lang(LANGID_CREATEDUNINST,buf0);
update_status_text_from_lang(LANG_CREATEDUNINST,buf0);
}
return 0;
#endif//NSIS_CONFIG_UNINSTALL_SUPPORT
@ -1528,6 +1528,6 @@ static int NSISCALL ExecuteEntry(entry *entry_)
return 0;
#endif // NSIS_CONFIG_PLUGIN_SUPPORT
}
my_MessageBox(STR(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP);
my_MessageBox(LANG_STR(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP);
return EXEC_ERROR;
}

View file

@ -3,6 +3,7 @@
#include "util.h"
#include "state.h"
#include "resource.h"
#include "lang.h"
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
#ifdef NSIS_COMPRESS_USE_ZLIB
@ -112,11 +113,7 @@ const char * NSISCALL loadHeaders(void)
const char * NSISCALL GetStringFromStringTab(int offs)
{
/*if (offs < 0) {
wsprintf(ps_tmpbuf, "my first user madasd %d->%d which should be %d\n%d", offs, cur_user_strings_table[-(offs+1)], cur_user_strings_table[0], LANG_COMP_TEXT);
my_MessageBox(ps_tmpbuf, MB_OK);
}*/
return g_db_strtab+(offs < 0 ? cur_user_strings_table[-(offs+1)] : offs);
return g_db_strtab+(offs < 0 ? LANG_STR_TAB(offs) : offs);
}
#define IBUFSIZE 16384

View file

@ -279,7 +279,7 @@ typedef struct
// Settings common to both installers and uninstallers
typedef struct
{
int str_tables_num; // number of strings tables in array
int language_tables_num; // number of strings tables in array
int language_table_size; // size of each language table
int num_entries; // total number of entries

View file

@ -37,133 +37,77 @@
// these IDs fall between -128 to +127 and compile to tiny 2-byte PUSH <8-bit>
// instructions when being passed to the functions.
typedef void *langid_t; // Just so compiler can warn if an ID is given to a
// function expecting a string offset and vice-versa.
// Please note that all LANG_* define the offset not the string itself.
// To get the string itself use process_string_fromtab, GetStringFromStringTab or STR().
// To get the string itself use process_string_fromtab, GetStringFromStringTab or LANG_STR().
#define STR(x) GetStringFromStringTab(x)
#define LANG_STR(x) GetStringFromStringTab(x)
#define LANG_STR_TAB(x) cur_language_table[-((int)x+1)]
#define INSTALL_STR(x) (((installer_strings *)cur_install_strings_table)->x)
#define INSTALL_ID(x) ((langid_t)((~(UINT)0) - FIELD_OFFSET(installer_strings, x) / sizeof(int)))
#define INSTALL_STR(x) (0 - ((sizeof(common_strings) + FIELD_OFFSET(installer_strings, x)) / sizeof(int) + 1))
//#define INSTALL_STR(x) (-(int)((FIELD_OFFSET(installer_strings, x) / sizeof(int)) + (sizeof(common_strings) / sizeof(int))))
// Installer specific strings
#define LANG_BTN_BACK (INSTALL_STR(backbutton))
#define LANGID_BTN_BACK (INSTALL_ID(backbutton))
#define LANG_BTN_NEXT (INSTALL_STR(nextbutton))
#define LANGID_BTN_NEXT (INSTALL_ID(nextbutton))
#define LANG_BTN_BROWSE (INSTALL_STR(browse))
#define LANGID_BTN_BROWSE (INSTALL_ID(browse))
#define LANG_BTN_INSTALL (INSTALL_STR(installbutton))
#define LANGID_BTN_INSTALL (INSTALL_ID(installbutton))
#define LANG_SPACE_REQ (INSTALL_STR(spacerequired))
#define LANGID_SPACE_REQ (INSTALL_ID(spacerequired))
#define LANG_SPACE_AVAIL (INSTALL_STR(spaceavailable))
#define LANGID_SPACE_AVAIL (INSTALL_ID(spaceavailable))
#define LANG_COMP_CUSTOM (INSTALL_STR(custom))
#define LANGID_COMP_CUSTOM (INSTALL_ID(custom))
#define LANG_DIR_TEXT (INSTALL_STR(text))
#define LANGID_DIR_TEXT (INSTALL_ID(text))
#define LANG_DIR_SUBTEXT (INSTALL_STR(dirsubtext))
#define LANGID_DIR_SUBTEXT (INSTALL_ID(dirsubtext))
#define LANG_COMP_TEXT (INSTALL_STR(componenttext))
#define LANGID_COMP_TEXT (INSTALL_ID(componenttext))
#define LANG_COMP_SUBTEXT(x) (INSTALL_STR(componentsubtext[x]))
#define LANGID_COMP_SUBTEXT(x) (INSTALL_ID(componentsubtext[x]))
#define LANG_LICENSE_TEXT (INSTALL_STR(licensetext))
#define LANGID_LICENSE_TEXT (INSTALL_ID(licensetext))
#define LANG_LICENSE_DATA (INSTALL_STR(licensedata))
#define LANGID_LICENSE_DATA (INSTALL_ID(licensedata))
#define LANG_BTN_LICENSE (INSTALL_STR(licensebutton))
#define LANGID_BTN_LICENSE (INSTALL_ID(licensebutton))
#define UNINSTALL_STR(x) (((uninstall_strings *)cur_install_strings_table)->x)
#define UNINSTALL_ID(x) ((langid_t)((~(UINT)0) - FIELD_OFFSET(uninstall_strings, x) / sizeof(int)))
#define UNINSTALL_STR(x) (0 - ((sizeof(common_strings) + FIELD_OFFSET(uninstall_strings, x)) / sizeof(int) + 1))
// Uninstall specific strings
#define LANG_BTN_UNINST (UNINSTALL_STR(uninstbutton))
#define LANGID_BTN_UNINST (UNINSTALL_ID(uninstbutton))
#define LANG_UNINST_TEXT (UNINSTALL_STR(uninstalltext))
#define LANGID_UNINST_TEXT (UNINSTALL_ID(uninstalltext))
#define LANG_UNINST_SUBTEXT (UNINSTALL_STR(uninstalltext2))
#define LANGID_UNINST_SUBTEXT (UNINSTALL_ID(uninstalltext2))
#define COMMON_STR(x) (cur_common_strings_table->x)
#define COMMON_ID(x) ((langid_t)(FIELD_OFFSET(common_strings, x) / sizeof(int)))
#define COMMON_STR(x) (-1 - (int)(FIELD_OFFSET(common_strings, x) / sizeof(int)))
// Common strings
#define LANG_BRANDING (COMMON_STR(branding))
#define LANGID_BRANDING (COMMON_ID(branding))
#define LANG_BTN_CANCEL (COMMON_STR(cancelbutton))
#define LANGID_BTN_CANCEL (COMMON_ID(cancelbutton))
#define LANG_BTN_DETAILS (COMMON_STR(showdetailsbutton))
#define LANGID_BTN_DETAILS (COMMON_ID(showdetailsbutton))
#define LANG_COMPLETED (COMMON_STR(completed))
#define LANGID_COMPLETED (COMMON_ID(completed))
#define LANG_BTN_CLOSE (COMMON_STR(closebutton))
#define LANGID_BTN_CLOSE (COMMON_ID(closebutton))
#define LANG_NAME (COMMON_STR(name))
#define LANGID_NAME (COMMON_ID(name))
#define LANG_CAPTION (COMMON_STR(caption))
#define LANGID_CAPTION (COMMON_ID(caption))
#define LANG_SUBCAPTION(x) (COMMON_STR(subcaptions[x]))
#define LANGID_SUBCAPTION(x) (COMMON_ID(subcaptions[x]))
// instruction strings
#define LANG_FILEERR (COMMON_STR(fileerrtext))
#define LANGID_FILEERR (COMMON_ID(fileerrtext))
#define LANG_DELETEFILE (COMMON_STR(del_file))
#define LANGID_DELETEFILE (COMMON_ID(del_file))
#define LANG_DLLREGERROR (COMMON_STR(err_reg_dll))
#define LANGID_DLLREGERROR (COMMON_ID(err_reg_dll))
#define LANG_REMOVEDIR (COMMON_STR(remove_dir))
#define LANGID_REMOVEDIR (COMMON_ID(remove_dir))
#define LANG_OUTPUTDIR (COMMON_STR(output_dir))
#define LANGID_OUTPUTDIR (COMMON_ID(output_dir))
#define LANG_CREATEDIR (COMMON_STR(create_dir))
#define LANGID_CREATEDIR (COMMON_ID(create_dir))
#define LANG_RENAME (COMMON_STR(rename))
#define LANGID_RENAME (COMMON_ID(rename))
#define LANG_RENAMEONREBOOT (COMMON_STR(rename_on_reboot))
#define LANGID_RENAMEONREBOOT (COMMON_ID(rename_on_reboot))
#define LANG_SKIPPED (COMMON_STR(skipped))
#define LANGID_SKIPPED (COMMON_ID(skipped))
#define LANG_CANTWRITE (COMMON_STR(cant_write))
#define LANGID_CANTWRITE (COMMON_ID(cant_write))
#define LANG_EXTRACT (COMMON_STR(extract))
#define LANGID_EXTRACT (COMMON_ID(extract))
#define LANG_ERRORWRITING (COMMON_STR(err_writing))
#define LANGID_ERRORWRITING (COMMON_ID(err_writing))
#define LANG_ERRORDECOMPRESSING (COMMON_STR(err_decompressing))
#define LANGID_ERRORDECOMPRESSING (COMMON_ID(err_decompressing))
#define LANG_DELETEONREBOOT (COMMON_STR(del_on_reboot))
#define LANGID_DELETEONREBOOT (COMMON_ID(del_on_reboot))
#define LANG_EXECSHELL (COMMON_STR(exec_shell))
#define LANGID_EXECSHELL (COMMON_ID(exec_shell))
#define LANG_EXECUTE (COMMON_STR(exec))
#define LANGID_EXECUTE (COMMON_ID(exec))
#define LANG_CANNOTFINDSYMBOL (COMMON_STR(symbol_not_found))
#define LANGID_CANNOTFINDSYMBOL (COMMON_ID(symbol_not_found))
#define LANG_COULDNOTLOAD (COMMON_STR(could_not_load))
#define LANGID_COULDNOTLOAD (COMMON_ID(could_not_load))
#define LANG_NOOLE (COMMON_STR(no_ole))
#define LANGID_NOOLE (COMMON_ID(no_ole))
#define LANG_ERRORCREATINGSHORTCUT (COMMON_STR(err_creating_shortcut))
#define LANGID_ERRORCREATINGSHORTCUT (COMMON_ID(err_creating_shortcut))
#define LANG_CREATESHORTCUT (COMMON_STR(create_shortcut))
#define LANGID_CREATESHORTCUT (COMMON_ID(create_shortcut))
#define LANG_COPYTO (COMMON_STR(copy_to))
#define LANGID_COPYTO (COMMON_ID(copy_to))
#define LANG_COPYFAILED (COMMON_STR(copy_failed))
#define LANGID_COPYFAILED (COMMON_ID(copy_failed))
#define LANG_ERRORCREATING (COMMON_STR(err_creating))
#define LANGID_ERRORCREATING (COMMON_ID(err_creating))
#define LANG_CREATEDUNINST (COMMON_STR(created_uninst))
#define LANGID_CREATEDUNINST (COMMON_ID(created_uninst))
#define LANG_INSTCORRUPTED (COMMON_STR(inst_corrupted))
#define LANGID_INSTCORRUPTED (COMMON_ID(inst_corrupted))
#define LANG_COPYDETAILS (COMMON_STR(copy_details))
#define LANGID_COPYDETAILS (COMMON_ID(copy_details))
#endif//_NSIS_LANG_H_

View file

@ -1,16 +1,12 @@
#ifndef _UI_H_
#define _UI_H_
#include "lang.h"
// Added by Amir Szekely 3rd August 2002
extern char *language_tables;
extern common_strings *cur_common_strings_table;
extern char *cur_install_strings_table; // installer_strings/uninstall_strings depending on installer type
extern int *cur_user_strings_table;
extern int *cur_language_table;
int NSISCALL ui_doinstall(void);
void NSISCALL update_status_text_from_lang(langid_t id, const char *text2);
void NSISCALL update_status_text_from_lang(int id, const char *text2);
void NSISCALL update_status_text(const char *text1, const char *text2);
extern int ui_st_updateflag;

View file

@ -70,7 +70,7 @@ void NSISCALL doRMDir(char *buf, int recurse)
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) doRMDir(buf,recurse);
else
{
update_status_text_from_lang(LANGID_DELETEFILE,buf);
update_status_text_from_lang(LANG_DELETEFILE,buf);
if (fd.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
SetFileAttributes(buf,fd.dwFileAttributes^FILE_ATTRIBUTE_READONLY);
DeleteFile(buf);
@ -82,7 +82,7 @@ void NSISCALL doRMDir(char *buf, int recurse)
buf[i]=0; // fix buffer
}
log_printf2("RMDir: RemoveDirectory(\"%s\")",buf);
update_status_text_from_lang(LANGID_REMOVEDIR,buf);
update_status_text_from_lang(LANG_REMOVEDIR,buf);
RemoveDirectory(buf);
}
#endif//NSIS_SUPPORT_RMDIR
@ -336,19 +336,6 @@ char * NSISCALL process_string_fromtab(char *out, int offs)
return lstrcpyn(out,process_string(ps_tmpbuf,GetStringFromStringTab(offs)),NSIS_MAX_STRLEN);
}
char * NSISCALL process_string_from_lang(char *out, langid_t id)
{
return process_string_fromtab(out, GetLangString(id));
}
// Retrieve the string offset associated with the language string ID given
int NSISCALL GetLangString(langid_t id)
{
return (int)id < 0 ?
*((int *)cur_install_strings_table - 1 - (int)id) :
*((int *)cur_common_strings_table + (int)id);
}
void NSISCALL myitoa(char *s, int d) { wsprintf(s,"%d",d); }
int NSISCALL myatoi(char *s)

View file

@ -1,11 +1,8 @@
#include "config.h"
#include "lang.h"
extern char ps_tmpbuf[NSIS_MAX_STRLEN*2];
char * NSISCALL process_string(char *out, const char *in);
char * NSISCALL process_string_fromtab(char *out, int offs);
char * NSISCALL process_string_from_lang(char *out, langid_t id);
int NSISCALL GetLangString(langid_t id);
void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *out);
int NSISCALL myatoi(char *s);
void NSISCALL myitoa(char *s, int d);

View file

@ -267,7 +267,7 @@ int CEXEBuild::WriteStringTables() {
if (build_userlangstrings.getnum())
build_langtables.add(string_tables[i]->user_strings.get(), string_tables[i]->user_strings.getlen());
}
build_header.common.str_tables_num = st_num;
build_header.common.language_tables_num = st_num;
build_header.common.language_table_size = sizeof(LANGID) + sizeof(common_strings) + sizeof(installer_strings) + (build_userlangstrings.getnum() * sizeof(int));
for (i = 0; i < st_num; i++) {
@ -277,7 +277,7 @@ int CEXEBuild::WriteStringTables() {
if (ubuild_userlangstrings.getnum())
ubuild_langtables.add(string_tables[i]->user_ustrings.get(), string_tables[i]->user_ustrings.getlen());
}
build_uninst.common.str_tables_num = st_num;
build_uninst.common.language_tables_num = st_num;
build_uninst.common.language_table_size = sizeof(LANGID) + sizeof(common_strings) + sizeof(uninstall_strings) + (ubuild_userlangstrings.getnum() * sizeof(int));
SCRIPT_MSG("Done!\n");

View file

@ -2957,7 +2957,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line, FILE *fp, const char
ent.offsets[0]=line.gettoken_enum(1,usrvars);
int k=line.gettoken_enum(2,rootkeys[0]);
if (k == -1) k=line.gettoken_enum(2,rootkeys[1]);
if (!ent.offsets[0] || k == -1) PRINTHELP()
if (ent.offsets[0] == -1 || k == -1) PRINTHELP()
ent.offsets[1]=(int)rootkey_tab[k];
ent.offsets[2]=add_string(line.gettoken_str(3));
ent.offsets[3]=add_string(line.gettoken_str(4));