From 496874b24256150a20f3accfba4b1fa289e5077a Mon Sep 17 00:00:00 2001 From: kichik Date: Sun, 9 Mar 2003 20:17:27 +0000 Subject: [PATCH] LangDLL now accepts A too. A for auto count, it looks for the first empty string ("") pushed. git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2260 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/LangDLL/LangDLL.c | 57 +++++++++++++------------------------- Examples/languages.nsi | 4 ++- Plugins/LangDLL.dll | Bin 5120 -> 5120 bytes 3 files changed, 22 insertions(+), 39 deletions(-) diff --git a/Contrib/LangDLL/LangDLL.c b/Contrib/LangDLL/LangDLL.c index 7e93aa87..136cd41a 100644 --- a/Contrib/LangDLL/LangDLL.c +++ b/Contrib/LangDLL/LangDLL.c @@ -99,7 +99,20 @@ void __declspec(dllexport) LangDialog(HWND hwndParent, int string_size, if (popstring(g_wndtext)) return; if (popstring(temp)) return; - langs_num = myatoi(temp); + if (*temp == 'A') + { + stack_t *th; + langs_num=0; + th=(*g_stacktop); + while (th && th->text[0]) { + langs_num++; + th = th->next; + } + if (!th) return; + langs_num /= 2; + } + else + langs_num = myatoi(temp); { char *p=temp; while (*p) if (*p++ == 'F') dofont=1; @@ -132,44 +145,12 @@ BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lp int myatoi(char *s) { unsigned int v=0; - if (*s == '0' && (s[1] == 'x' || s[1] == 'X')) + for (;;) { - s+=2; - for (;;) - { - int c=*s++; - if (c >= '0' && c <= '9') c-='0'; - else if (c >= 'a' && c <= 'f') c-='a'-10; - else if (c >= 'A' && c <= 'F') c-='A'-10; - else break; - v<<=4; - v+=c; - } - } - else if (*s == '0' && s[1] <= '7' && s[1] >= '0') - { - s++; - for (;;) - { - int c=*s++; - if (c >= '0' && c <= '7') c-='0'; - else break; - v<<=3; - v+=c; - } - } - else - { - int sign=0; - if (*s == '-') { s++; sign++; } - for (;;) - { - int c=*s++ - '0'; - if (c < 0 || c > 9) break; - v*=10; - v+=c; - } - if (sign) return -(int) v; + int c=*s++ - '0'; + if (c < 0 || c > 9) break; + v*=10; + v+=c; } return (int)v; } \ No newline at end of file diff --git a/Examples/languages.nsi b/Examples/languages.nsi index fcbc62a2..4f29897d 100644 --- a/Examples/languages.nsi +++ b/Examples/languages.nsi @@ -95,6 +95,7 @@ Section "Section number two" SectionEnd Function .onInit + Push "" Push ${LANG_ENGLISH} Push English Push ${LANG_DUTCH} @@ -117,7 +118,8 @@ Function .onInit Push "Simplified Chinese" Push ${LANG_SLOVAK} Push Slovak - Push 11 ; 11 is the number of languages + Push A ; A means auto count languages + ; for the auto count to work the first empty push (Push "") must remain LangDLL::LangDialog "Installer Language" "Please select the language of the installer" Pop $LANGUAGE diff --git a/Plugins/LangDLL.dll b/Plugins/LangDLL.dll index 31afabd2528acede015c9a3f2e207f4056c6ffe8..7adcfc2265b6b6a03281ec69919b71fe45d0cead 100644 GIT binary patch delta 568 zcmZqBXwaBo!}wsLt+PkytZl~xf8Ur2!%UxBrwW7lH>a`!=}ADo2#|KY@nWg~kiPc! z9+-Z2`wo~6%1q7x>7A%3G4TQi%dG|3b`$T&Fm9jtvzl?mXAnh?lYchJkNNA@jBx@ l#?OrZ8?%}Sn8=%`o0ynbnRuD_n?#u8nUtGsp2!rz2ml`q&_)0N delta 593 zcmZqBXwaBo!+2q$t+T_zO`1=hUUuJ(z;4?=0{P!=OKpDyq&I#j-~I$hD_wO2(^8+E z!E{h&at27x#0wHER>zmwPJAQ7SUj1Nv6^wg3vZ4@B~}Zen0y2!CM>;s6@QDJlT)+B%|YG z2{sR>1B_5bj6g<)g8_rUi?uMJcR+pn984Gl!d}dTiQNKm`hd?2h#s^PamX=ZN`V;5h;&x#V(hMy6o7EVt5`?#E%e;U+q zHUG4%XKj9I@LHz%XCjE32I7Xl=57AzSQF9w)2%+Z`K9^62Q177U!Q9DXvHe{)UeujuhoseHT>2s<#%#>%{}=XyBJ67w-ToBH{zl|pF=9B3S6oMN11Tw$zgVrSxF;%^dXl4eqDQfbm@ S(q}T=WUa|Ilg*7BNsItr%<0Ym