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; if (build_userlangstrings.find(cp, 0, &idx) < 0) idx = -1;
} }
free(cp); 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]; 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; if (ubuild_userlangstrings.find(cp, 0, &idx) < 0) idx = -1;
} }
free(cp); 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]; char buf[4096];

View file

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

View file

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

View file

@ -3,6 +3,7 @@
#include "util.h" #include "util.h"
#include "state.h" #include "state.h"
#include "resource.h" #include "resource.h"
#include "lang.h"
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT #ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
#ifdef NSIS_COMPRESS_USE_ZLIB #ifdef NSIS_COMPRESS_USE_ZLIB
@ -112,11 +113,7 @@ const char * NSISCALL loadHeaders(void)
const char * NSISCALL GetStringFromStringTab(int offs) const char * NSISCALL GetStringFromStringTab(int offs)
{ {
/*if (offs < 0) { return g_db_strtab+(offs < 0 ? LANG_STR_TAB(offs) : offs);
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);
} }
#define IBUFSIZE 16384 #define IBUFSIZE 16384

View file

@ -279,7 +279,7 @@ typedef struct
// Settings common to both installers and uninstallers // Settings common to both installers and uninstallers
typedef struct 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 language_table_size; // size of each language table
int num_entries; // total number of entries 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> // these IDs fall between -128 to +127 and compile to tiny 2-byte PUSH <8-bit>
// instructions when being passed to the functions. // 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. // 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_STR(x) (0 - ((sizeof(common_strings) + FIELD_OFFSET(installer_strings, x)) / sizeof(int) + 1))
#define INSTALL_ID(x) ((langid_t)((~(UINT)0) - FIELD_OFFSET(installer_strings, x) / sizeof(int))) //#define INSTALL_STR(x) (-(int)((FIELD_OFFSET(installer_strings, x) / sizeof(int)) + (sizeof(common_strings) / sizeof(int))))
// Installer specific strings // Installer specific strings
#define LANG_BTN_BACK (INSTALL_STR(backbutton)) #define LANG_BTN_BACK (INSTALL_STR(backbutton))
#define LANGID_BTN_BACK (INSTALL_ID(backbutton))
#define LANG_BTN_NEXT (INSTALL_STR(nextbutton)) #define LANG_BTN_NEXT (INSTALL_STR(nextbutton))
#define LANGID_BTN_NEXT (INSTALL_ID(nextbutton))
#define LANG_BTN_BROWSE (INSTALL_STR(browse)) #define LANG_BTN_BROWSE (INSTALL_STR(browse))
#define LANGID_BTN_BROWSE (INSTALL_ID(browse))
#define LANG_BTN_INSTALL (INSTALL_STR(installbutton)) #define LANG_BTN_INSTALL (INSTALL_STR(installbutton))
#define LANGID_BTN_INSTALL (INSTALL_ID(installbutton))
#define LANG_SPACE_REQ (INSTALL_STR(spacerequired)) #define LANG_SPACE_REQ (INSTALL_STR(spacerequired))
#define LANGID_SPACE_REQ (INSTALL_ID(spacerequired))
#define LANG_SPACE_AVAIL (INSTALL_STR(spaceavailable)) #define LANG_SPACE_AVAIL (INSTALL_STR(spaceavailable))
#define LANGID_SPACE_AVAIL (INSTALL_ID(spaceavailable))
#define LANG_COMP_CUSTOM (INSTALL_STR(custom)) #define LANG_COMP_CUSTOM (INSTALL_STR(custom))
#define LANGID_COMP_CUSTOM (INSTALL_ID(custom))
#define LANG_DIR_TEXT (INSTALL_STR(text)) #define LANG_DIR_TEXT (INSTALL_STR(text))
#define LANGID_DIR_TEXT (INSTALL_ID(text))
#define LANG_DIR_SUBTEXT (INSTALL_STR(dirsubtext)) #define LANG_DIR_SUBTEXT (INSTALL_STR(dirsubtext))
#define LANGID_DIR_SUBTEXT (INSTALL_ID(dirsubtext))
#define LANG_COMP_TEXT (INSTALL_STR(componenttext)) #define LANG_COMP_TEXT (INSTALL_STR(componenttext))
#define LANGID_COMP_TEXT (INSTALL_ID(componenttext))
#define LANG_COMP_SUBTEXT(x) (INSTALL_STR(componentsubtext[x])) #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 LANG_LICENSE_TEXT (INSTALL_STR(licensetext))
#define LANGID_LICENSE_TEXT (INSTALL_ID(licensetext))
#define LANG_LICENSE_DATA (INSTALL_STR(licensedata)) #define LANG_LICENSE_DATA (INSTALL_STR(licensedata))
#define LANGID_LICENSE_DATA (INSTALL_ID(licensedata))
#define LANG_BTN_LICENSE (INSTALL_STR(licensebutton)) #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_STR(x) (0 - ((sizeof(common_strings) + FIELD_OFFSET(uninstall_strings, x)) / sizeof(int) + 1))
#define UNINSTALL_ID(x) ((langid_t)((~(UINT)0) - FIELD_OFFSET(uninstall_strings, x) / sizeof(int)))
// Uninstall specific strings // Uninstall specific strings
#define LANG_BTN_UNINST (UNINSTALL_STR(uninstbutton)) #define LANG_BTN_UNINST (UNINSTALL_STR(uninstbutton))
#define LANGID_BTN_UNINST (UNINSTALL_ID(uninstbutton))
#define LANG_UNINST_TEXT (UNINSTALL_STR(uninstalltext)) #define LANG_UNINST_TEXT (UNINSTALL_STR(uninstalltext))
#define LANGID_UNINST_TEXT (UNINSTALL_ID(uninstalltext))
#define LANG_UNINST_SUBTEXT (UNINSTALL_STR(uninstalltext2)) #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_STR(x) (-1 - (int)(FIELD_OFFSET(common_strings, x) / sizeof(int)))
#define COMMON_ID(x) ((langid_t)(FIELD_OFFSET(common_strings, x) / sizeof(int)))
// Common strings // Common strings
#define LANG_BRANDING (COMMON_STR(branding)) #define LANG_BRANDING (COMMON_STR(branding))
#define LANGID_BRANDING (COMMON_ID(branding))
#define LANG_BTN_CANCEL (COMMON_STR(cancelbutton)) #define LANG_BTN_CANCEL (COMMON_STR(cancelbutton))
#define LANGID_BTN_CANCEL (COMMON_ID(cancelbutton))
#define LANG_BTN_DETAILS (COMMON_STR(showdetailsbutton)) #define LANG_BTN_DETAILS (COMMON_STR(showdetailsbutton))
#define LANGID_BTN_DETAILS (COMMON_ID(showdetailsbutton))
#define LANG_COMPLETED (COMMON_STR(completed)) #define LANG_COMPLETED (COMMON_STR(completed))
#define LANGID_COMPLETED (COMMON_ID(completed))
#define LANG_BTN_CLOSE (COMMON_STR(closebutton)) #define LANG_BTN_CLOSE (COMMON_STR(closebutton))
#define LANGID_BTN_CLOSE (COMMON_ID(closebutton))
#define LANG_NAME (COMMON_STR(name)) #define LANG_NAME (COMMON_STR(name))
#define LANGID_NAME (COMMON_ID(name))
#define LANG_CAPTION (COMMON_STR(caption)) #define LANG_CAPTION (COMMON_STR(caption))
#define LANGID_CAPTION (COMMON_ID(caption))
#define LANG_SUBCAPTION(x) (COMMON_STR(subcaptions[x])) #define LANG_SUBCAPTION(x) (COMMON_STR(subcaptions[x]))
#define LANGID_SUBCAPTION(x) (COMMON_ID(subcaptions[x]))
// instruction strings // instruction strings
#define LANG_FILEERR (COMMON_STR(fileerrtext)) #define LANG_FILEERR (COMMON_STR(fileerrtext))
#define LANGID_FILEERR (COMMON_ID(fileerrtext))
#define LANG_DELETEFILE (COMMON_STR(del_file)) #define LANG_DELETEFILE (COMMON_STR(del_file))
#define LANGID_DELETEFILE (COMMON_ID(del_file))
#define LANG_DLLREGERROR (COMMON_STR(err_reg_dll)) #define LANG_DLLREGERROR (COMMON_STR(err_reg_dll))
#define LANGID_DLLREGERROR (COMMON_ID(err_reg_dll))
#define LANG_REMOVEDIR (COMMON_STR(remove_dir)) #define LANG_REMOVEDIR (COMMON_STR(remove_dir))
#define LANGID_REMOVEDIR (COMMON_ID(remove_dir))
#define LANG_OUTPUTDIR (COMMON_STR(output_dir)) #define LANG_OUTPUTDIR (COMMON_STR(output_dir))
#define LANGID_OUTPUTDIR (COMMON_ID(output_dir))
#define LANG_CREATEDIR (COMMON_STR(create_dir)) #define LANG_CREATEDIR (COMMON_STR(create_dir))
#define LANGID_CREATEDIR (COMMON_ID(create_dir))
#define LANG_RENAME (COMMON_STR(rename)) #define LANG_RENAME (COMMON_STR(rename))
#define LANGID_RENAME (COMMON_ID(rename))
#define LANG_RENAMEONREBOOT (COMMON_STR(rename_on_reboot)) #define LANG_RENAMEONREBOOT (COMMON_STR(rename_on_reboot))
#define LANGID_RENAMEONREBOOT (COMMON_ID(rename_on_reboot))
#define LANG_SKIPPED (COMMON_STR(skipped)) #define LANG_SKIPPED (COMMON_STR(skipped))
#define LANGID_SKIPPED (COMMON_ID(skipped))
#define LANG_CANTWRITE (COMMON_STR(cant_write)) #define LANG_CANTWRITE (COMMON_STR(cant_write))
#define LANGID_CANTWRITE (COMMON_ID(cant_write))
#define LANG_EXTRACT (COMMON_STR(extract)) #define LANG_EXTRACT (COMMON_STR(extract))
#define LANGID_EXTRACT (COMMON_ID(extract))
#define LANG_ERRORWRITING (COMMON_STR(err_writing)) #define LANG_ERRORWRITING (COMMON_STR(err_writing))
#define LANGID_ERRORWRITING (COMMON_ID(err_writing))
#define LANG_ERRORDECOMPRESSING (COMMON_STR(err_decompressing)) #define LANG_ERRORDECOMPRESSING (COMMON_STR(err_decompressing))
#define LANGID_ERRORDECOMPRESSING (COMMON_ID(err_decompressing))
#define LANG_DELETEONREBOOT (COMMON_STR(del_on_reboot)) #define LANG_DELETEONREBOOT (COMMON_STR(del_on_reboot))
#define LANGID_DELETEONREBOOT (COMMON_ID(del_on_reboot))
#define LANG_EXECSHELL (COMMON_STR(exec_shell)) #define LANG_EXECSHELL (COMMON_STR(exec_shell))
#define LANGID_EXECSHELL (COMMON_ID(exec_shell))
#define LANG_EXECUTE (COMMON_STR(exec)) #define LANG_EXECUTE (COMMON_STR(exec))
#define LANGID_EXECUTE (COMMON_ID(exec))
#define LANG_CANNOTFINDSYMBOL (COMMON_STR(symbol_not_found)) #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 LANG_COULDNOTLOAD (COMMON_STR(could_not_load))
#define LANGID_COULDNOTLOAD (COMMON_ID(could_not_load))
#define LANG_NOOLE (COMMON_STR(no_ole)) #define LANG_NOOLE (COMMON_STR(no_ole))
#define LANGID_NOOLE (COMMON_ID(no_ole))
#define LANG_ERRORCREATINGSHORTCUT (COMMON_STR(err_creating_shortcut)) #define LANG_ERRORCREATINGSHORTCUT (COMMON_STR(err_creating_shortcut))
#define LANGID_ERRORCREATINGSHORTCUT (COMMON_ID(err_creating_shortcut))
#define LANG_CREATESHORTCUT (COMMON_STR(create_shortcut)) #define LANG_CREATESHORTCUT (COMMON_STR(create_shortcut))
#define LANGID_CREATESHORTCUT (COMMON_ID(create_shortcut))
#define LANG_COPYTO (COMMON_STR(copy_to)) #define LANG_COPYTO (COMMON_STR(copy_to))
#define LANGID_COPYTO (COMMON_ID(copy_to))
#define LANG_COPYFAILED (COMMON_STR(copy_failed)) #define LANG_COPYFAILED (COMMON_STR(copy_failed))
#define LANGID_COPYFAILED (COMMON_ID(copy_failed))
#define LANG_ERRORCREATING (COMMON_STR(err_creating)) #define LANG_ERRORCREATING (COMMON_STR(err_creating))
#define LANGID_ERRORCREATING (COMMON_ID(err_creating))
#define LANG_CREATEDUNINST (COMMON_STR(created_uninst)) #define LANG_CREATEDUNINST (COMMON_STR(created_uninst))
#define LANGID_CREATEDUNINST (COMMON_ID(created_uninst))
#define LANG_INSTCORRUPTED (COMMON_STR(inst_corrupted)) #define LANG_INSTCORRUPTED (COMMON_STR(inst_corrupted))
#define LANGID_INSTCORRUPTED (COMMON_ID(inst_corrupted))
#define LANG_COPYDETAILS (COMMON_STR(copy_details)) #define LANG_COPYDETAILS (COMMON_STR(copy_details))
#define LANGID_COPYDETAILS (COMMON_ID(copy_details))
#endif//_NSIS_LANG_H_ #endif//_NSIS_LANG_H_

View file

@ -1,16 +1,12 @@
#ifndef _UI_H_ #ifndef _UI_H_
#define _UI_H_ #define _UI_H_
#include "lang.h"
// Added by Amir Szekely 3rd August 2002 // Added by Amir Szekely 3rd August 2002
extern char *language_tables; extern char *language_tables;
extern common_strings *cur_common_strings_table; extern int *cur_language_table;
extern char *cur_install_strings_table; // installer_strings/uninstall_strings depending on installer type
extern int *cur_user_strings_table;
int NSISCALL ui_doinstall(void); 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); void NSISCALL update_status_text(const char *text1, const char *text2);
extern int ui_st_updateflag; 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); if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) doRMDir(buf,recurse);
else else
{ {
update_status_text_from_lang(LANGID_DELETEFILE,buf); update_status_text_from_lang(LANG_DELETEFILE,buf);
if (fd.dwFileAttributes & FILE_ATTRIBUTE_READONLY) if (fd.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
SetFileAttributes(buf,fd.dwFileAttributes^FILE_ATTRIBUTE_READONLY); SetFileAttributes(buf,fd.dwFileAttributes^FILE_ATTRIBUTE_READONLY);
DeleteFile(buf); DeleteFile(buf);
@ -82,7 +82,7 @@ void NSISCALL doRMDir(char *buf, int recurse)
buf[i]=0; // fix buffer buf[i]=0; // fix buffer
} }
log_printf2("RMDir: RemoveDirectory(\"%s\")",buf); log_printf2("RMDir: RemoveDirectory(\"%s\")",buf);
update_status_text_from_lang(LANGID_REMOVEDIR,buf); update_status_text_from_lang(LANG_REMOVEDIR,buf);
RemoveDirectory(buf); RemoveDirectory(buf);
} }
#endif//NSIS_SUPPORT_RMDIR #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); 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); } void NSISCALL myitoa(char *s, int d) { wsprintf(s,"%d",d); }
int NSISCALL myatoi(char *s) int NSISCALL myatoi(char *s)

View file

@ -1,11 +1,8 @@
#include "config.h" #include "config.h"
#include "lang.h"
extern char ps_tmpbuf[NSIS_MAX_STRLEN*2]; extern char ps_tmpbuf[NSIS_MAX_STRLEN*2];
char * NSISCALL process_string(char *out, const char *in); char * NSISCALL process_string(char *out, const char *in);
char * NSISCALL process_string_fromtab(char *out, int offs); 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); void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *out);
int NSISCALL myatoi(char *s); int NSISCALL myatoi(char *s);
void NSISCALL myitoa(char *s, int d); void NSISCALL myitoa(char *s, int d);

View file

@ -267,7 +267,7 @@ int CEXEBuild::WriteStringTables() {
if (build_userlangstrings.getnum()) if (build_userlangstrings.getnum())
build_langtables.add(string_tables[i]->user_strings.get(), string_tables[i]->user_strings.getlen()); 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)); 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++) { for (i = 0; i < st_num; i++) {
@ -277,7 +277,7 @@ int CEXEBuild::WriteStringTables() {
if (ubuild_userlangstrings.getnum()) if (ubuild_userlangstrings.getnum())
ubuild_langtables.add(string_tables[i]->user_ustrings.get(), string_tables[i]->user_ustrings.getlen()); 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)); build_uninst.common.language_table_size = sizeof(LANGID) + sizeof(common_strings) + sizeof(uninstall_strings) + (ubuild_userlangstrings.getnum() * sizeof(int));
SCRIPT_MSG("Done!\n"); 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); ent.offsets[0]=line.gettoken_enum(1,usrvars);
int k=line.gettoken_enum(2,rootkeys[0]); int k=line.gettoken_enum(2,rootkeys[0]);
if (k == -1) k=line.gettoken_enum(2,rootkeys[1]); 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[1]=(int)rootkey_tab[k];
ent.offsets[2]=add_string(line.gettoken_str(3)); ent.offsets[2]=add_string(line.gettoken_str(3));
ent.offsets[3]=add_string(line.gettoken_str(4)); ent.offsets[3]=add_string(line.gettoken_str(4));