Autosyncing with Wine HEAD

svn path=/trunk/; revision=34354
This commit is contained in:
Aleksey Bragin 2008-07-07 12:32:35 +00:00
parent 0cb3e856ef
commit 22d098ac49
24 changed files with 607 additions and 151 deletions

View file

@ -0,0 +1,58 @@
/*
* HTML Help resources
* Danish Language Support
*
* Copyright 2008 Jens Albretsen <jens@albretsen.dk>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_CONTENTS "&Indhold"
IDS_INDEX "I&ndeks"
IDS_SEARCH "&Søg"
IDS_FAVORITES "Favor&itter"
END
STRINGTABLE
BEGIN
IDTB_EXPAND "Vis"
IDTB_CONTRACT "Skjul"
IDTB_STOP "Stop"
IDTB_REFRESH "Opdatér"
IDTB_BACK "Tilbage"
IDTB_HOME "Hjem"
IDTB_SYNC "Synkroniser"
IDTB_PRINT "Udskriv"
IDTB_OPTIONS "Indstillinger"
IDTB_FORWARD "Frem"
IDTB_NOTES "IDTB_NOTES"
IDTB_BROWSE_FWD "IDTB_BROWSE_FWD"
IDTB_BROWSE_BACK "IDT_BROWSE_BACK"
IDTB_CONTENTS "IDTB_CONTENTS"
IDTB_INDEX "IDTB_INDEX"
IDTB_SEARCH "IDTB_SEARCH"
IDTB_HISTORY "IDTB_HISTORY"
IDTB_FAVORITES "IDTB_FAVORITES"
IDTB_JUMP1 "Jump1"
IDTB_JUMP2 "Jump2"
IDTB_CUSTOMIZE "Tilpas"
IDTB_ZOOM "Forstør"
IDTB_TOC_NEXT "IDTB_TOC_NEXT"
IDTB_TOC_PREV "IDTB_TOC_PREV"
END

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
STRINGTABLE STRINGTABLE
BEGIN BEGIN

View file

@ -38,11 +38,11 @@ BEGIN
IDTB_BACK "Назад" IDTB_BACK "Назад"
IDTB_HOME "В начало" IDTB_HOME "В начало"
IDTB_SYNC "Синхронизировать" IDTB_SYNC "Синхронизировать"
IDTB_PRINT "Печять" IDTB_PRINT "Ïå÷àòü"
IDTB_OPTIONS "Настройки" IDTB_OPTIONS "Настройки"
IDTB_FORWARD "В перёд" IDTB_FORWARD "Âïåð¸ä"
IDTB_NOTES "Записки" IDTB_NOTES "Записки"
IDTB_BROWSE_FWD "Просмотр в перёд" IDTB_BROWSE_FWD "Ïðîñìîòð âïåð¸ä"
IDTB_BROWSE_BACK "Просмотр назад" IDTB_BROWSE_BACK "Просмотр назад"
IDTB_CONTENTS "Содержание" IDTB_CONTENTS "Содержание"
IDTB_INDEX "Оглавление" IDTB_INDEX "Оглавление"

View file

@ -0,0 +1,62 @@
/*
* HTML Help resources
* Slovenian Language Support
*
* Copyright 2008 Rok Mandeljc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma code_page(65001)
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_CONTENTS "&Vsebina"
IDS_INDEX "I&ndeks"
IDS_SEARCH "&Iskanje"
IDS_FAVORITES "&Priljubljene"
END
STRINGTABLE
BEGIN
IDTB_EXPAND "Pokaži"
IDTB_CONTRACT "Skrij"
IDTB_STOP "Ustavi"
IDTB_REFRESH "Osveži"
IDTB_BACK "Nazaj"
IDTB_HOME "Domov"
IDTB_SYNC "Sinhroniziraj"
IDTB_PRINT "Natisni"
IDTB_OPTIONS "Možnosti"
IDTB_FORWARD "Naprej"
IDTB_NOTES "IDTB_NOTES"
IDTB_BROWSE_FWD "IDTB_BROWSE_FWD"
IDTB_BROWSE_BACK "IDT_BROWSE_BACK"
IDTB_CONTENTS "IDTB_CONTENTS"
IDTB_INDEX "IDTB_INDEX"
IDTB_SEARCH "IDTB_SEARCH"
IDTB_HISTORY "IDTB_HISTORY"
IDTB_FAVORITES "IDTB_FAVORITES"
IDTB_JUMP1 "Skok1"
IDTB_JUMP2 "Skok2"
IDTB_CUSTOMIZE "Prilagodi"
IDTB_ZOOM "Zoom"
IDTB_TOC_NEXT "IDTB_TOC_NEXT"
IDTB_TOC_PREV "IDTB_TOC_PREV"
END
#pragma code_page(default)

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE STRINGTABLE
BEGIN BEGIN

View file

@ -229,7 +229,7 @@ BOOL LoadWinTypeFromCHM(HHInfo *info)
info->WinType.cbStruct=sizeof(info->WinType); info->WinType.cbStruct=sizeof(info->WinType);
info->WinType.fUniCodeStrings=TRUE; info->WinType.fUniCodeStrings=TRUE;
info->WinType.pszType=strdupW(defaultwinW); info->WinType.pszType=strdupW(defaultwinW);
info->WinType.pszToc = strdupW(info->pCHMInfo->defToc); info->WinType.pszToc = strdupW(info->pCHMInfo->defToc ? info->pCHMInfo->defToc : null);
info->WinType.pszIndex = strdupW(null); info->WinType.pszIndex = strdupW(null);
info->WinType.fsValidMembers=0; info->WinType.fsValidMembers=0;
info->WinType.fsWinProperties=HHWIN_PROP_TRI_PANE; info->WinType.fsWinProperties=HHWIN_PROP_TRI_PANE;
@ -363,14 +363,13 @@ IStream *GetChmStream(CHMInfo *info, LPCWSTR parent_chm, ChmPath *chm_file)
CHMInfo *OpenCHM(LPCWSTR szFile) CHMInfo *OpenCHM(LPCWSTR szFile)
{ {
WCHAR file[MAX_PATH] = {0}; WCHAR file[MAX_PATH] = {0};
DWORD res;
HRESULT hres; HRESULT hres;
static const WCHAR wszSTRINGS[] = {'#','S','T','R','I','N','G','S',0}; static const WCHAR wszSTRINGS[] = {'#','S','T','R','I','N','G','S',0};
CHMInfo *ret = heap_alloc_zero(sizeof(CHMInfo)); CHMInfo *ret = heap_alloc_zero(sizeof(CHMInfo));
res = GetFullPathNameW(szFile, sizeof(file)/sizeof(file[0]), file, NULL); GetFullPathNameW(szFile, sizeof(file)/sizeof(file[0]), file, NULL);
ret->szFile = strdupW(file); ret->szFile = strdupW(file);
hres = CoCreateInstance(&CLSID_ITStorage, NULL, CLSCTX_INPROC_SERVER, hres = CoCreateInstance(&CLSID_ITStorage, NULL, CLSCTX_INPROC_SERVER,
@ -391,7 +390,7 @@ CHMInfo *OpenCHM(LPCWSTR szFile)
&ret->strings_stream); &ret->strings_stream);
if(FAILED(hres)) { if(FAILED(hres)) {
WARN("Could not open #STRINGS stream: %08x\n", hres); WARN("Could not open #STRINGS stream: %08x\n", hres);
return CloseCHM(ret); /* It's not critical, so we pass */
} }
if(!ReadChmSystem(ret)) { if(!ReadChmSystem(ret)) {

View file

@ -89,9 +89,15 @@ BOOL NavigateToUrl(HHInfo *info, LPCWSTR surl)
BOOL ret; BOOL ret;
HRESULT hres; HRESULT hres;
static const WCHAR url_indicator[] = {':', '/', '/'};
TRACE("%s\n", debugstr_w(surl));
if (strstrW(surl, url_indicator)) {
hres = navigate_url(info, surl); hres = navigate_url(info, surl);
if(SUCCEEDED(hres)) if(SUCCEEDED(hres))
return TRUE; return TRUE;
} /* look up in chm if it doesn't look like a full url */
SetChmPath(&chm_path, info->pCHMInfo->szFile, surl); SetChmPath(&chm_path, info->pCHMInfo->szFile, surl);
ret = NavigateToChm(info, chm_path.chm_file, chm_path.chm_index); ret = NavigateToChm(info, chm_path.chm_file, chm_path.chm_index);
@ -575,7 +581,7 @@ static BOOL HH_AddToolbar(HHInfo *pHHInfo)
{ {
LPWSTR szBuf = HH_LoadString(buttons[dwIndex].idCommand); LPWSTR szBuf = HH_LoadString(buttons[dwIndex].idCommand);
DWORD dwLen = strlenW(szBuf); DWORD dwLen = strlenW(szBuf);
szBuf[dwLen + 2] = 0; /* Double-null terminate */ szBuf[dwLen + 1] = 0; /* Double-null terminate */
buttons[dwIndex].iString = (DWORD)SendMessageW(hToolbar, TB_ADDSTRINGW, 0, (LPARAM)szBuf); buttons[dwIndex].iString = (DWORD)SendMessageW(hToolbar, TB_ADDSTRINGW, 0, (LPARAM)szBuf);
heap_free(szBuf); heap_free(szBuf);

View file

@ -108,6 +108,9 @@ HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR dat
FIXME("Not all HH cases handled correctly\n"); FIXME("Not all HH cases handled correctly\n");
if (!filename)
return NULL;
index = strstrW(filename, delimW); index = strstrW(filename, delimW);
if (index) if (index)
{ {
@ -123,34 +126,41 @@ HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR dat
} }
info = CreateHelpViewer(filename); info = CreateHelpViewer(filename);
if(!info)
return NULL;
if (info) if(!index)
{
if (!index)
index = info->WinType.pszFile; index = info->WinType.pszFile;
res = NavigateToChm(info, info->pCHMInfo->szFile, index); res = NavigateToChm(info, info->pCHMInfo->szFile, index);
if(!res) if(!res)
{
ReleaseHelpViewer(info); ReleaseHelpViewer(info);
return NULL;
} }
return info->WinType.hwndHelp;
return NULL; /* FIXME */
} }
case HH_HELP_CONTEXT: { case HH_HELP_CONTEXT: {
HHInfo *info; HHInfo *info;
LPWSTR url; LPWSTR url;
if (!filename)
return NULL;
info = CreateHelpViewer(filename); info = CreateHelpViewer(filename);
if(!info) if(!info)
return NULL; return NULL;
url = FindContextAlias(info->pCHMInfo, data); url = FindContextAlias(info->pCHMInfo, data);
if(!url) if(!url)
{
ReleaseHelpViewer(info);
return NULL; return NULL;
}
NavigateToUrl(info, url); NavigateToUrl(info, url);
heap_free(url); heap_free(url);
return info->WinType.hwndHelp;
return NULL; /* FIXME */
} }
case HH_PRETRANSLATEMESSAGE: { case HH_PRETRANSLATEMESSAGE: {
static BOOL warned = FALSE; static BOOL warned = FALSE;

View file

@ -30,6 +30,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include "version.rc" #include "version.rc"
#include "Cs.rc" #include "Cs.rc"
#include "Da.rc"
#include "De.rc" #include "De.rc"
#include "El.rc" #include "El.rc"
#include "En.rc" #include "En.rc"
@ -41,5 +42,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include "No.rc" #include "No.rc"
#include "Pl.rc" #include "Pl.rc"
#include "Ru.rc" #include "Ru.rc"
#include "Si.rc"
#include "Sv.rc" #include "Sv.rc"
#include "Tr.rc" #include "Tr.rc"

View file

@ -29,6 +29,7 @@ typedef struct {
const IUnknownVtbl *lpIUnknownVtbl; const IUnknownVtbl *lpIUnknownVtbl;
const IAuthenticateVtbl *lpIAuthenticateVtbl; const IAuthenticateVtbl *lpIAuthenticateVtbl;
const IHttpNegotiateVtbl *lpIHttpNegotiateVtbl; const IHttpNegotiateVtbl *lpIHttpNegotiateVtbl;
const IExtensionServicesVtbl *lpIExtensionServicesVtbl;
LONG ref; LONG ref;
IUnknown *outer; IUnknown *outer;
@ -42,6 +43,7 @@ typedef struct {
#define EXTSERVUNK(x) ((IUnknown*) &(x)->lpIUnknownVtbl) #define EXTSERVUNK(x) ((IUnknown*) &(x)->lpIUnknownVtbl)
#define AUTHENTICATE(x) ((IAuthenticate*) &(x)->lpIAuthenticateVtbl) #define AUTHENTICATE(x) ((IAuthenticate*) &(x)->lpIAuthenticateVtbl)
#define HTTPNEGOTIATE(x) ((IHttpNegotiate*) &(x)->lpIHttpNegotiateVtbl) #define HTTPNEGOTIATE(x) ((IHttpNegotiate*) &(x)->lpIHttpNegotiateVtbl)
#define EXTENSIONSERVICES(x) ((IExtensionServices*) &(x)->lpIExtensionServicesVtbl)
#define EXTSERVUNK_THIS(iface) DEFINE_THIS(ExtensionService, IUnknown, iface) #define EXTSERVUNK_THIS(iface) DEFINE_THIS(ExtensionService, IUnknown, iface)
@ -60,6 +62,9 @@ static HRESULT WINAPI ExtServUnk_QueryInterface(IUnknown *iface, REFIID riid, vo
}else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) {
TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv); TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv);
*ppv = HTTPNEGOTIATE(This); *ppv = HTTPNEGOTIATE(This);
}else if(IsEqualGUID(&IID_IExtensionServices, riid)) {
TRACE("(%p)->(IID_IExtensionServices %p)\n", This, ppv);
*ppv = EXTENSIONSERVICES(This);
} }
if(*ppv) { if(*ppv) {
@ -209,6 +214,90 @@ static const IHttpNegotiateVtbl HttpNegotiateVtbl = {
HttpNegotiate_OnResponse HttpNegotiate_OnResponse
}; };
#define EXTENSIONSERVICES_THIS(iface) DEFINE_THIS(ExtensionService, IExtensionServices, iface)
static HRESULT WINAPI ExtServ_QueryInterface(IExtensionServices *iface, REFIID riid, void **ppv)
{
ExtensionService *This = EXTENSIONSERVICES_THIS(iface);
return IUnknown_QueryInterface(This->outer, riid, ppv);
}
static ULONG WINAPI ExtServ_AddRef(IExtensionServices *iface)
{
ExtensionService *This = EXTENSIONSERVICES_THIS(iface);
return IUnknown_AddRef(This->outer);
}
static ULONG WINAPI ExtServ_Release(IExtensionServices *iface)
{
ExtensionService *This = EXTENSIONSERVICES_THIS(iface);
return IUnknown_Release(This->outer);
}
static HRESULT ExtServ_ImplSetAdditionalHeaders(ExtensionService* This, LPCWSTR pwzAdditionalHeaders)
{
int len = 0;
heap_free(This->headers);
This->headers = NULL;
if (!pwzAdditionalHeaders)
return S_OK;
len = strlenW(pwzAdditionalHeaders);
if(len && pwzAdditionalHeaders[len-1] != '\n' && pwzAdditionalHeaders[len-1] != '\r') {
static const WCHAR endlW[] = {'\r','\n',0};
This->headers = heap_alloc(len*sizeof(WCHAR) + sizeof(endlW));
memcpy(This->headers, pwzAdditionalHeaders, len*sizeof(WCHAR));
memcpy(This->headers+len, endlW, sizeof(endlW));
}else {
This->headers = hlink_strdupW(pwzAdditionalHeaders);
}
return S_OK;
}
static HRESULT WINAPI ExtServ_SetAdditionalHeaders(IExtensionServices* iface, LPCWSTR pwzAdditionalHeaders)
{
ExtensionService *This = EXTENSIONSERVICES_THIS(iface);
TRACE("(%p)->(%s)\n", This, debugstr_w(pwzAdditionalHeaders));
return ExtServ_ImplSetAdditionalHeaders(This,pwzAdditionalHeaders);
}
static HRESULT ExtServ_ImplSetAuthenticateData(ExtensionService* This, HWND phwnd, LPCWSTR pwzUsername, LPCWSTR pwzPassword)
{
heap_free(This->username);
heap_free(This->password);
This->hwnd = phwnd;
This->username = hlink_strdupW(pwzUsername);
This->password = hlink_strdupW(pwzPassword);
return S_OK;
}
static HRESULT WINAPI ExtServ_SetAuthenticateData(IExtensionServices* iface, HWND phwnd, LPCWSTR pwzUsername, LPCWSTR pwzPassword)
{
ExtensionService *This = EXTENSIONSERVICES_THIS(iface);
TRACE("(%p)->(%p %s %s)\n", This, phwnd, debugstr_w(pwzUsername), debugstr_w(pwzPassword));
return ExtServ_ImplSetAuthenticateData(This, phwnd, pwzUsername, pwzPassword);
}
#undef EXTENSIONSERVICES_THIS
static const IExtensionServicesVtbl ExtServVtbl = {
ExtServ_QueryInterface,
ExtServ_AddRef,
ExtServ_Release,
ExtServ_SetAdditionalHeaders,
ExtServ_SetAuthenticateData
};
/*********************************************************************** /***********************************************************************
* HlinkCreateExtensionServices (HLINK.@) * HlinkCreateExtensionServices (HLINK.@)
*/ */
@ -217,7 +306,6 @@ HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR pwzAdditionalHeaders,
IUnknown *punkOuter, REFIID riid, void** ppv) IUnknown *punkOuter, REFIID riid, void** ppv)
{ {
ExtensionService *ret; ExtensionService *ret;
int len = 0;
HRESULT hres = S_OK; HRESULT hres = S_OK;
TRACE("%s %p %s %s %p %s %p\n",debugstr_w(pwzAdditionalHeaders), TRACE("%s %p %s %s %p %s %p\n",debugstr_w(pwzAdditionalHeaders),
@ -229,22 +317,15 @@ HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR pwzAdditionalHeaders,
ret->lpIUnknownVtbl = &ExtServUnkVtbl; ret->lpIUnknownVtbl = &ExtServUnkVtbl;
ret->lpIAuthenticateVtbl = &AuthenticateVtbl; ret->lpIAuthenticateVtbl = &AuthenticateVtbl;
ret->lpIHttpNegotiateVtbl = &HttpNegotiateVtbl; ret->lpIHttpNegotiateVtbl = &HttpNegotiateVtbl;
ret->lpIExtensionServicesVtbl= &ExtServVtbl;
ret->ref = 1; ret->ref = 1;
ret->hwnd = phwnd; ret->headers = NULL;
ret->username = hlink_strdupW(pszUsername); ret->hwnd = NULL;
ret->password = hlink_strdupW(pszPassword); ret->username = NULL;
ret->password = NULL;
if(pwzAdditionalHeaders) ExtServ_ImplSetAuthenticateData(ret, phwnd, pszUsername, pszPassword);
len = strlenW(pwzAdditionalHeaders); ExtServ_ImplSetAdditionalHeaders(ret, pwzAdditionalHeaders);
if(len && pwzAdditionalHeaders[len-1] != '\n' && pwzAdditionalHeaders[len-1] != '\r') {
static const WCHAR endlW[] = {'\r','\n',0};
ret->headers = heap_alloc(len*sizeof(WCHAR) + sizeof(endlW));
memcpy(ret->headers, pwzAdditionalHeaders, len*sizeof(WCHAR));
memcpy(ret->headers+len, endlW, sizeof(endlW));
}else {
ret->headers = hlink_strdupW(pwzAdditionalHeaders);
}
if(!punkOuter) { if(!punkOuter) {
ret->outer = EXTSERVUNK(ret); ret->outer = EXTSERVUNK(ret);

View file

@ -481,8 +481,8 @@ static const IClassFactoryVtbl hlcfvt =
HLinkCF_fnLockServer HLinkCF_fnLockServer
}; };
static CFImpl HLink_cf = { &hlcfvt, &HLink_Constructor }; static CFImpl HLink_cf = { &hlcfvt, HLink_Constructor };
static CFImpl HLinkBrowseContext_cf = { &hlcfvt, &HLinkBrowseContext_Constructor }; static CFImpl HLinkBrowseContext_cf = { &hlcfvt, HLinkBrowseContext_Constructor };
/*********************************************************************** /***********************************************************************
* DllGetClassObject (HLINK.@) * DllGetClassObject (HLINK.@)

View file

@ -1,12 +1,19 @@
<module name="inetcomm" type="win32dll" baseaddress="${BASEADDRESS_INETCOMM}" installbase="system32" installname="inetcomm.dll" allowwarnings="true" entrypoint="0"> <?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
<group>
<module name="inetcomm" type="win32dll" baseaddress="${BASEADDRESS_INETCOMM}" installbase="system32" installname="inetcomm.dll" allowwarnings="true">
<autoregister infsection="OleControlDlls" type="DllRegisterServer" />
<importlibrary definition="inetcomm.spec.def" /> <importlibrary definition="inetcomm.spec.def" />
<include base="inetcomm">.</include> <include base="inetcomm">.</include>
<include base="ReactOS">include/reactos/wine</include> <include base="ReactOS">include/reactos/wine</include>
<define name="__WINESRC__" /> <define name="__WINESRC__" />
<define name="__USE_W32API" />
<define name="_WIN32_IE">0x600</define>
<define name="_WIN32_WINNT">0x600</define>
<define name="WINVER">0x600</define> <define name="WINVER">0x600</define>
<define name="_WIN32_WINNT">0x600</define>
<file>inetcomm_main.c</file>
<file>internettransport.c</file>
<file>mimeole.c</file>
<file>regsvr.c</file>
<file>inetcomm.spec</file>
<library>wine</library> <library>wine</library>
<library>uuid</library> <library>uuid</library>
<library>ole32</library> <library>ole32</library>
@ -15,9 +22,5 @@
<library>advapi32</library> <library>advapi32</library>
<library>kernel32</library> <library>kernel32</library>
<library>ntdll</library> <library>ntdll</library>
<file>inetcomm_main.c</file>
<file>internettransport.c</file>
<file>mimeole.c</file>
<file>regsvr.c</file>
<file>inetcomm.spec</file>
</module> </module>
</group>

View file

@ -1629,8 +1629,8 @@ static body_t *create_sub_body(MimeMessage *msg, IStream *pStm, BODYOFFSETS *off
IStream *sub_stream; IStream *sub_stream;
ULARGE_INTEGER start, length; ULARGE_INTEGER start, length;
start.u.LowPart = cur->offsets.cbHeaderStart; start.QuadPart = cur->offsets.cbHeaderStart;
length.u.LowPart = cur->offsets.cbBodyEnd - cur->offsets.cbHeaderStart; length.QuadPart = cur->offsets.cbBodyEnd - cur->offsets.cbHeaderStart;
create_sub_stream(pStm, start, length, &sub_stream); create_sub_stream(pStm, start, length, &sub_stream);
sub_body = create_sub_body(msg, sub_stream, &cur->offsets, body); sub_body = create_sub_body(msg, sub_stream, &cur->offsets, body);
IStream_Release(sub_stream); IStream_Release(sub_stream);

View file

@ -1,17 +1,19 @@
<module name="inetmib1" type="win32dll" baseaddress="${BASEADDRESS_INETMIB1}" installbase="system32" installname="inetmib1.dll" allowwarnings="true" entrypoint="0"> <?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
<group>
<module name="inetmib1" type="win32dll" baseaddress="${BASEADDRESS_INETMIB1}" installbase="system32" installname="inetmib1.dll" allowwarnings="true">
<importlibrary definition="inetmib1.spec.def" /> <importlibrary definition="inetmib1.spec.def" />
<include base="inetmib1">.</include> <include base="inetmib1">.</include>
<include base="ReactOS">include/reactos/wine</include> <include base="ReactOS">include/reactos/wine</include>
<define name="__WINESRC__" /> <define name="__WINESRC__" />
<define name="__USE_W32API" /> <define name="WINVER">0x600</define>
<define name="_WIN32_IE">0x600</define> <define name="_WIN32_WINNT">0x600</define>
<define name="_WIN32_WINNT">0x501</define> <file>main.c</file>
<define name="WINVER">0x501</define> <file>inetmib1.spec</file>
<library>wine</library> <library>wine</library>
<library>snmpapi</library> <library>snmpapi</library>
<library>kernel32</library> <library>kernel32</library>
<library>iphlpapi</library> <library>iphlpapi</library>
<library>ntdll</library> <library>ntdll</library>
<file>main.c</file>
<file>inetmib1.spec</file>
</module> </module>
</group>

View file

@ -29,26 +29,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(inetmib1); WINE_DEFAULT_DEBUG_CHANNEL(inetmib1);
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
TRACE("(0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
switch (fdwReason)
{
case DLL_WINE_PREATTACH:
return FALSE; /* prefer native version */
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
break;
case DLL_PROCESS_DETACH:
break;
default:
break;
}
return TRUE;
}
/** /**
* Utility functions * Utility functions
*/ */
@ -115,6 +95,7 @@ struct mibImplementation
AsnObjectIdentifier name; AsnObjectIdentifier name;
void (*init)(void); void (*init)(void);
varqueryfunc query; varqueryfunc query;
void (*cleanup)(void);
}; };
static UINT mib2IfNumber[] = { 1,3,6,1,2,1,2,1 }; static UINT mib2IfNumber[] = { 1,3,6,1,2,1,2,1 };
@ -132,6 +113,11 @@ static void mib2IfNumberInit(void)
} }
} }
static void mib2IfNumberCleanup(void)
{
HeapFree(GetProcessHeap(), 0, ifTable);
}
static BOOL mib2IfNumberQuery(BYTE bPduType, SnmpVarBind *pVarBind, static BOOL mib2IfNumberQuery(BYTE bPduType, SnmpVarBind *pVarBind,
AsnInteger32 *pErrorStatus) AsnInteger32 *pErrorStatus)
{ {
@ -352,18 +338,18 @@ static UINT findValueInTable(AsnObjectIdentifier *oid,
} }
/* Given an OID and a base OID that it must begin with, finds the item and /* Given an OID and a base OID that it must begin with, finds the item and
* element of the table whose IP address matches the instance from the OID. * element of the table whose value matches the instance from the OID.
* E.g., given an OID foo.1.2.3.4.5 and a base OID foo, returns item 1 and the * The OID is converted to a key with the function makeKey, and compared
* index of the entry in the table whose IP address is 2.3.4.5. * against entries in the table with the function compare.
* If bPduType is not SNMP_PDU_GETNEXT and either the item or instance is * If bPduType is not SNMP_PDU_GETNEXT and either the item or instance is
* missing, returns SNMP_ERRORSTATUS_NOSUCHNAME. * missing, returns SNMP_ERRORSTATUS_NOSUCHNAME.
* If bPduType is SNMP_PDU_GETNEXT, returns the successor to the item and * If bPduType is SNMP_PDU_GETNEXT, returns the successor to the item and
* instance, or item 1, instance 1 if either is missing. * instance, or item 1, instance 1 if either is missing.
*/ */
static AsnInteger32 getItemAndIpAddressInstanceFromOid(AsnObjectIdentifier *oid, static AsnInteger32 getItemAndInstanceFromTable(AsnObjectIdentifier *oid,
AsnObjectIdentifier *base, BYTE bPduType, struct GenericTable *table, AsnObjectIdentifier *base, UINT instanceLen, BYTE bPduType,
size_t tableEntrySize, oidToKeyFunc makeKey, compareFunc compare, struct GenericTable *table, size_t tableEntrySize, oidToKeyFunc makeKey,
UINT *item, UINT *instance) compareFunc compare, UINT *item, UINT *instance)
{ {
AsnInteger32 ret = SNMP_ERRORSTATUS_NOERROR; AsnInteger32 ret = SNMP_ERRORSTATUS_NOERROR;
@ -380,7 +366,7 @@ static AsnInteger32 getItemAndIpAddressInstanceFromOid(AsnObjectIdentifier *oid,
*instance = 1; *instance = 1;
} }
else if (!SnmpUtilOidNCmp(oid, base, base->idLength) && else if (!SnmpUtilOidNCmp(oid, base, base->idLength) &&
oid->idLength < base->idLength + 5) oid->idLength < base->idLength + instanceLen + 1)
{ {
/* Either the table or an item is specified, but the instance is /* Either the table or an item is specified, but the instance is
* not. * not.
@ -396,7 +382,7 @@ static AsnInteger32 getItemAndIpAddressInstanceFromOid(AsnObjectIdentifier *oid,
*item = 1; *item = 1;
} }
else if (!SnmpUtilOidNCmp(oid, base, base->idLength) && else if (!SnmpUtilOidNCmp(oid, base, base->idLength) &&
oid->idLength == base->idLength + 5) oid->idLength == base->idLength + instanceLen + 1)
{ {
*item = oid->ids[base->idLength]; *item = oid->ids[base->idLength];
if (!*item) if (!*item)
@ -406,8 +392,8 @@ static AsnInteger32 getItemAndIpAddressInstanceFromOid(AsnObjectIdentifier *oid,
} }
else else
{ {
AsnObjectIdentifier ipOid = { 4, oid->ids + base->idLength + 1 AsnObjectIdentifier ipOid = { instanceLen,
}; oid->ids + base->idLength + 1 };
*instance = findValueInTable(&ipOid, table, tableEntrySize, *instance = findValueInTable(&ipOid, table, tableEntrySize,
makeKey, compare) + 1; makeKey, compare) + 1;
@ -420,15 +406,15 @@ static AsnInteger32 getItemAndIpAddressInstanceFromOid(AsnObjectIdentifier *oid,
break; break;
default: default:
if (!SnmpUtilOidNCmp(oid, base, base->idLength) && if (!SnmpUtilOidNCmp(oid, base, base->idLength) &&
oid->idLength == base->idLength + 5) oid->idLength == base->idLength + instanceLen + 1)
{ {
*item = oid->ids[base->idLength]; *item = oid->ids[base->idLength];
if (!*item) if (!*item)
ret = SNMP_ERRORSTATUS_NOSUCHNAME; ret = SNMP_ERRORSTATUS_NOSUCHNAME;
else else
{ {
AsnObjectIdentifier ipOid = { 4, oid->ids + base->idLength + 1 AsnObjectIdentifier ipOid = { instanceLen,
}; oid->ids + base->idLength + 1 };
*instance = findValueInTable(&ipOid, table, tableEntrySize, *instance = findValueInTable(&ipOid, table, tableEntrySize,
makeKey, compare); makeKey, compare);
@ -653,6 +639,11 @@ static void mib2IpAddrInit(void)
} }
} }
static void mib2IpAddrCleanup(void)
{
HeapFree(GetProcessHeap(), 0, ipAddrTable);
}
static void oidToIpAddrRow(AsnObjectIdentifier *oid, void *dst) static void oidToIpAddrRow(AsnObjectIdentifier *oid, void *dst)
{ {
MIB_IPADDRROW *row = dst; MIB_IPADDRROW *row = dst;
@ -680,8 +671,8 @@ static BOOL mib2IpAddrQuery(BYTE bPduType, SnmpVarBind *pVarBind,
{ {
case SNMP_PDU_GET: case SNMP_PDU_GET:
case SNMP_PDU_GETNEXT: case SNMP_PDU_GETNEXT:
*pErrorStatus = getItemAndIpAddressInstanceFromOid(&pVarBind->name, *pErrorStatus = getItemAndInstanceFromTable(&pVarBind->name,
&myOid, bPduType, (struct GenericTable *)ipAddrTable, &myOid, 4, bPduType, (struct GenericTable *)ipAddrTable,
sizeof(MIB_IPADDRROW), oidToIpAddrRow, compareIpAddrRow, &item, sizeof(MIB_IPADDRROW), oidToIpAddrRow, compareIpAddrRow, &item,
&tableIndex); &tableIndex);
if (!*pErrorStatus) if (!*pErrorStatus)
@ -736,6 +727,11 @@ static void mib2IpRouteInit(void)
} }
} }
static void mib2IpRouteCleanup(void)
{
HeapFree(GetProcessHeap(), 0, ipRouteTable);
}
static void oidToIpForwardRow(AsnObjectIdentifier *oid, void *dst) static void oidToIpForwardRow(AsnObjectIdentifier *oid, void *dst)
{ {
MIB_IPFORWARDROW *row = dst; MIB_IPFORWARDROW *row = dst;
@ -763,8 +759,8 @@ static BOOL mib2IpRouteQuery(BYTE bPduType, SnmpVarBind *pVarBind,
{ {
case SNMP_PDU_GET: case SNMP_PDU_GET:
case SNMP_PDU_GETNEXT: case SNMP_PDU_GETNEXT:
*pErrorStatus = getItemAndIpAddressInstanceFromOid(&pVarBind->name, *pErrorStatus = getItemAndInstanceFromTable(&pVarBind->name,
&myOid, bPduType, (struct GenericTable *)ipRouteTable, &myOid, 4, bPduType, (struct GenericTable *)ipRouteTable,
sizeof(MIB_IPFORWARDROW), oidToIpForwardRow, compareIpForwardRow, sizeof(MIB_IPFORWARDROW), oidToIpForwardRow, compareIpForwardRow,
&item, &tableIndex); &item, &tableIndex);
if (!*pErrorStatus) if (!*pErrorStatus)
@ -811,6 +807,11 @@ static void mib2IpNetInit(void)
} }
} }
static void mib2IpNetCleanup(void)
{
HeapFree(GetProcessHeap(), 0, ipNetTable);
}
static BOOL mib2IpNetQuery(BYTE bPduType, SnmpVarBind *pVarBind, static BOOL mib2IpNetQuery(BYTE bPduType, SnmpVarBind *pVarBind,
AsnInteger32 *pErrorStatus) AsnInteger32 *pErrorStatus)
{ {
@ -1037,17 +1038,119 @@ static BOOL mib2UdpQuery(BYTE bPduType, SnmpVarBind *pVarBind,
return TRUE; return TRUE;
} }
static UINT mib2UdpEntry[] = { 1,3,6,1,2,1,7,5,1 };
static PMIB_UDPTABLE udpTable;
static void mib2UdpEntryInit(void)
{
DWORD size = 0, ret = GetUdpTable(NULL, &size, TRUE);
if (ret == ERROR_INSUFFICIENT_BUFFER)
{
udpTable = HeapAlloc(GetProcessHeap(), 0, size);
if (udpTable)
GetUdpTable(udpTable, &size, TRUE);
}
}
static void mib2UdpEntryCleanup(void)
{
HeapFree(GetProcessHeap(), 0, udpTable);
}
static struct structToAsnValue mib2UdpEntryMap[] = {
{ FIELD_OFFSET(MIB_UDPROW, dwLocalAddr), copyIpAddr },
{ FIELD_OFFSET(MIB_UDPROW, dwLocalPort), copyInt },
};
static void oidToUdpRow(AsnObjectIdentifier *oid, void *dst)
{
MIB_UDPROW *row = dst;
assert(oid && oid->idLength >= 5);
row->dwLocalAddr = oidToIpAddr(oid);
row->dwLocalPort = oid->ids[4];
}
static int compareUdpRow(const void *a, const void *b)
{
const MIB_UDPROW *key = a, *value = b;
int ret;
ret = key->dwLocalAddr - value->dwLocalAddr;
if (ret == 0)
ret = key->dwLocalPort - value->dwLocalPort;
return ret;
}
static BOOL mib2UdpEntryQuery(BYTE bPduType, SnmpVarBind *pVarBind,
AsnInteger32 *pErrorStatus)
{
AsnObjectIdentifier myOid = DEFINE_OID(mib2UdpEntry);
TRACE("(0x%02x, %s, %p)\n", bPduType, SnmpUtilOidToA(&pVarBind->name),
pErrorStatus);
switch (bPduType)
{
case SNMP_PDU_GET:
case SNMP_PDU_GETNEXT:
if (!udpTable)
*pErrorStatus = SNMP_ERRORSTATUS_NOSUCHNAME;
else
{
UINT tableIndex = 0, item = 0;
*pErrorStatus = getItemAndInstanceFromTable(&pVarBind->name, &myOid,
5, bPduType, (struct GenericTable *)udpTable,
sizeof(MIB_UDPROW), oidToUdpRow, compareUdpRow, &item,
&tableIndex);
if (!*pErrorStatus)
{
assert(tableIndex);
assert(item);
*pErrorStatus = mapStructEntryToValue(mib2UdpEntryMap,
DEFINE_SIZEOF(mib2UdpEntryMap),
&udpTable->table[tableIndex - 1], item, bPduType, pVarBind);
if (!*pErrorStatus && bPduType == SNMP_PDU_GETNEXT)
{
AsnObjectIdentifier oid;
setOidWithItemAndIpAddr(&pVarBind->name, &myOid, item,
udpTable->table[tableIndex - 1].dwLocalAddr);
oid.idLength = 1;
oid.ids = &udpTable->table[tableIndex - 1].dwLocalPort;
SnmpUtilOidAppend(&pVarBind->name, &oid);
}
}
}
break;
case SNMP_PDU_SET:
*pErrorStatus = SNMP_ERRORSTATUS_READONLY;
break;
default:
FIXME("0x%02x: unsupported PDU type\n", bPduType);
*pErrorStatus = SNMP_ERRORSTATUS_NOSUCHNAME;
}
return TRUE;
}
/* This list MUST BE lexicographically sorted */ /* This list MUST BE lexicographically sorted */
static struct mibImplementation supportedIDs[] = { static struct mibImplementation supportedIDs[] = {
{ DEFINE_OID(mib2IfNumber), mib2IfNumberInit, mib2IfNumberQuery }, { DEFINE_OID(mib2IfNumber), mib2IfNumberInit, mib2IfNumberQuery,
{ DEFINE_OID(mib2IfEntry), NULL, mib2IfEntryQuery }, mib2IfNumberCleanup },
{ DEFINE_OID(mib2Ip), mib2IpStatsInit, mib2IpStatsQuery }, { DEFINE_OID(mib2IfEntry), NULL, mib2IfEntryQuery, NULL },
{ DEFINE_OID(mib2IpAddr), mib2IpAddrInit, mib2IpAddrQuery }, { DEFINE_OID(mib2Ip), mib2IpStatsInit, mib2IpStatsQuery, NULL },
{ DEFINE_OID(mib2IpRoute), mib2IpRouteInit, mib2IpRouteQuery }, { DEFINE_OID(mib2IpAddr), mib2IpAddrInit, mib2IpAddrQuery,
{ DEFINE_OID(mib2IpNet), mib2IpNetInit, mib2IpNetQuery }, mib2IpAddrCleanup },
{ DEFINE_OID(mib2Icmp), mib2IcmpInit, mib2IcmpQuery }, { DEFINE_OID(mib2IpRoute), mib2IpRouteInit, mib2IpRouteQuery,
{ DEFINE_OID(mib2Tcp), mib2TcpInit, mib2TcpQuery }, mib2IpRouteCleanup },
{ DEFINE_OID(mib2Udp), mib2UdpInit, mib2UdpQuery }, { DEFINE_OID(mib2IpNet), mib2IpNetInit, mib2IpNetQuery, mib2IpNetCleanup },
{ DEFINE_OID(mib2Icmp), mib2IcmpInit, mib2IcmpQuery, NULL },
{ DEFINE_OID(mib2Tcp), mib2TcpInit, mib2TcpQuery, NULL },
{ DEFINE_OID(mib2Udp), mib2UdpInit, mib2UdpQuery, NULL },
{ DEFINE_OID(mib2UdpEntry), mib2UdpEntryInit, mib2UdpEntryQuery,
mib2UdpEntryCleanup },
}; };
static UINT minSupportedIDLength; static UINT minSupportedIDLength;
@ -1073,6 +1176,15 @@ BOOL WINAPI SnmpExtensionInit(DWORD dwUptimeReference,
return TRUE; return TRUE;
} }
static void cleanup(void)
{
UINT i;
for (i = 0; i < sizeof(supportedIDs) / sizeof(supportedIDs[0]); i++)
if (supportedIDs[i].cleanup)
supportedIDs[i].cleanup();
}
static struct mibImplementation *findSupportedQuery(UINT *ids, UINT idLength, static struct mibImplementation *findSupportedQuery(UINT *ids, UINT idLength,
UINT *matchingIndex) UINT *matchingIndex)
{ {
@ -1169,3 +1281,22 @@ BOOL WINAPI SnmpExtensionQuery(BYTE bPduType, SnmpVarBindList *pVarBindList,
*pErrorIndex = errorIndex; *pErrorIndex = errorIndex;
return TRUE; return TRUE;
} }
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
TRACE("(0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
break;
case DLL_PROCESS_DETACH:
cleanup();
break;
default:
break;
}
return TRUE;
}

View file

@ -1579,7 +1579,7 @@ static inline ULONG WINAPI IMAPIProp_fnRelease(LPMAPIPROP iface)
* NOTES * NOTES
* - If this function succeeds, the returned information in *lppError must be * - If this function succeeds, the returned information in *lppError must be
* freed using MAPIFreeBuffer() once the caller is finished with it. * freed using MAPIFreeBuffer() once the caller is finished with it.
* - It is possible for this function to suceed and set *lppError to NULL, * - It is possible for this function to succeed and set *lppError to NULL,
* if there is no further information to report about hRes. * if there is no further information to report about hRes.
*/ */
static inline HRESULT WINAPI static inline HRESULT WINAPI
@ -1598,7 +1598,7 @@ IMAPIProp_fnGetLastError(LPMAPIPROP iface, HRESULT hRes,
/************************************************************************** /**************************************************************************
* IMAPIProp_SaveChanges {MAPI32} * IMAPIProp_SaveChanges {MAPI32}
* *
* Update any changes made to a tansactional IMAPIProp object. * Update any changes made to a transactional IMAPIProp object.
* *
* PARAMS * PARAMS
* iface [I] IMAPIProp object to update * iface [I] IMAPIProp object to update
@ -1701,7 +1701,7 @@ IMAPIProp_fnGetProps(LPMAPIPROP iface, LPSPropTagArray lpTags,
* iface [I] IMAPIProp object to get the property tag list from * iface [I] IMAPIProp object to get the property tag list from
* ulFlags [I] Return 0=Ascii MAPI_UNICODE=Unicode strings for * ulFlags [I] Return 0=Ascii MAPI_UNICODE=Unicode strings for
* unspecified types * unspecified types
* lppTags [O] Destination for the retrieved peoperty tag list * lppTags [O] Destination for the retrieved property tag list
* *
* RETURNS * RETURNS
* Success: S_OK. *lppTags contains the tags for all available properties. * Success: S_OK. *lppTags contains the tags for all available properties.

View file

@ -704,10 +704,13 @@ static inline INT lcid_to_rfc1766A( LCID lcid, LPSTR rfc1766, INT len )
static inline INT lcid_to_rfc1766W( LCID lcid, LPWSTR rfc1766, INT len ) static inline INT lcid_to_rfc1766W( LCID lcid, LPWSTR rfc1766, INT len )
{ {
INT n = GetLocaleInfoW( lcid, LOCALE_SISO639LANGNAME, rfc1766, len ); INT n = GetLocaleInfoW( lcid, LOCALE_SISO639LANGNAME, rfc1766, len );
INT save = n;
if (n) if (n)
{ {
rfc1766[n - 1] = '-'; rfc1766[n - 1] = '-';
n += GetLocaleInfoW( lcid, LOCALE_SISO3166CTRYNAME, rfc1766 + n, len - n ); n += GetLocaleInfoW( lcid, LOCALE_SISO3166CTRYNAME, rfc1766 + n, len - n );
if (n == save)
rfc1766[n - 1] = '\0';
LCMapStringW( LOCALE_USER_DEFAULT, LCMAP_LOWERCASE, rfc1766, n, rfc1766, len ); LCMapStringW( LOCALE_USER_DEFAULT, LCMAP_LOWERCASE, rfc1766, n, rfc1766, len );
return n; return n;
} }

View file

@ -26,6 +26,7 @@
#include "mpr_Bg.rc" #include "mpr_Bg.rc"
#include "mpr_Cs.rc" #include "mpr_Cs.rc"
#include "mpr_Da.rc"
#include "mpr_De.rc" #include "mpr_De.rc"
#include "mpr_En.rc" #include "mpr_En.rc"
#include "mpr_Eo.rc" #include "mpr_Eo.rc"
@ -39,7 +40,9 @@
#include "mpr_No.rc" #include "mpr_No.rc"
#include "mpr_Pl.rc" #include "mpr_Pl.rc"
#include "mpr_Pt.rc" #include "mpr_Pt.rc"
#include "mpr_Ro.rc"
#include "mpr_Ru.rc" #include "mpr_Ru.rc"
#include "mpr_Si.rc"
#include "mpr_Sv.rc" #include "mpr_Sv.rc"
#include "mpr_Tr.rc" #include "mpr_Tr.rc"
#include "mpr_Uk.rc" #include "mpr_Uk.rc"

View file

@ -1,7 +1,7 @@
/* /*
* MPR dll resources (Ukrainian) * MPR dll resources for Danish
* *
* Copyright 2006 Artem Reznikov * Copyright (C) 2008 Jens Albretsen <jens@albretsen.dk>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -15,32 +15,32 @@
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {
IDS_ENTIRENETWORK "Âñÿ Ìåðåæà" IDS_ENTIRENETWORK "Hele netværket"
} }
IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154 IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ââåä³òü Ìåðåæíèé Ïàðîëü" CAPTION "Skriv netværkskodeord"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
{ {
LTEXT "Áóäü ëàñêà, ââåä³òü Âàø³ ³ì'ÿ òà ïàðîëü:", IDC_EXPLAIN, 40, 6, 150, 15 LTEXT "Skriv dit brugernavn og kodeord:", IDC_EXPLAIN, 40, 6, 150, 15
LTEXT "Ïðîêñ³", -1, 40, 26, 50, 10 LTEXT "Proxy", -1, 40, 26, 50, 10
/* LTEXT "Realm", -1, 40, 46, 50, 10 */ /* LTEXT "Realm", -1, 40, 46, 50, 10 */
LTEXT "Êîðèñòóâà÷", -1, 40, 66, 50, 10 LTEXT "Brugernavn", -1, 40, 66, 50, 10
LTEXT "Ïàðîëü", -1, 40, 86, 50, 10 LTEXT "Kodeord", -1, 40, 86, 50, 10
LTEXT "" IDC_PROXY, 80, 26, 150, 14, 0 LTEXT "" IDC_PROXY, 80, 26, 150, 14, 0
LTEXT "" IDC_REALM, 80, 46, 150, 14, 0 LTEXT "" IDC_REALM, 80, 46, 150, 14, 0
EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD
CHECKBOX "&Çáåðåãòè öåé ïàðîëü (íåáåçïå÷íî)", IDC_SAVEPASSWORD, CHECKBOX "Gem dette ko&deord (usikkert)", IDC_SAVEPASSWORD,
80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP 80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON PUSHBUTTON "OK", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuller", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP
} }

View file

@ -0,0 +1,48 @@
/*
* Copyright (C) 2004 Juan Lang
* Copyright (C) 2008 Michael Stefaniuc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
#pragma code_page(65001)
STRINGTABLE DISCARDABLE
{
IDS_ENTIRENETWORK "Toată rețeaua"
}
IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Introducere parolă de rețea"
FONT 8, "MS Shell Dlg"
{
LTEXT "Introduceți numele de utilizator și parola:", IDC_EXPLAIN, 40, 6, 150, 15
LTEXT "Proxy", -1, 40, 26, 50, 10
LTEXT "Utilizator", -1, 40, 66, 50, 10
LTEXT "Parolă", -1, 40, 86, 50, 10
LTEXT "" IDC_PROXY, 80, 26, 150, 14, 0
LTEXT "" IDC_REALM, 80, 46, 150, 14, 0
EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD
CHECKBOX "&Salvează această parolă (nesigur)", IDC_SAVEPASSWORD,
80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
PUSHBUTTON "Renunță", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -0,0 +1,50 @@
/*
* MPR dll resources
*
* Copyright (C) 2008 Rok Mandeljc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma code_page(65001)
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
{
IDS_ENTIRENETWORK "Celotno omrežje"
}
IDD_PROXYDLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 250, 154
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Vnesite omrežno geslo"
FONT 8, "MS Shell Dlg"
{
LTEXT "Vnesite uporabniško ime in geslo:", IDC_EXPLAIN, 40, 6, 150, 15
LTEXT "Proksi", -1, 40, 26, 50, 10
/* LTEXT "Kraljestvo", -1, 40, 46, 50, 10 */
LTEXT "Uporabniško ime", -1, 40, 66, 50, 10
LTEXT "Geslo", -1, 40, 86, 50, 10
LTEXT "" IDC_PROXY, 80, 26, 150, 14, 0
LTEXT "" IDC_REALM, 80, 46, 150, 14, 0
EDITTEXT IDC_USERNAME, 80, 66, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
EDITTEXT IDC_PASSWORD, 80, 86, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | ES_PASSWORD
CHECKBOX "&Shrani geslo (nezaščiteno)", IDC_SAVEPASSWORD,
80, 106, 150, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "V redu", IDOK, 98, 126, 56, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
PUSHBUTTON "Prekliči", IDCANCEL, 158, 126, 56, 14, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
{ {

View file

@ -76,14 +76,10 @@ static INT_PTR WINAPI NPS_ProxyPasswordDialog(
case WM_COMMAND: case WM_COMMAND:
if( wParam == IDOK ) if( wParam == IDOK )
{ {
WCHAR username[0x20], password[0x20];
username[0] = 0;
hitem = GetDlgItem( hdlg, IDC_USERNAME ); hitem = GetDlgItem( hdlg, IDC_USERNAME );
if( hitem ) if( hitem )
GetWindowTextA( hitem, lpAuthDlgStruct->lpUsername, lpAuthDlgStruct->cbUsername ); GetWindowTextA( hitem, lpAuthDlgStruct->lpUsername, lpAuthDlgStruct->cbUsername );
password[0] = 0;
hitem = GetDlgItem( hdlg, IDC_PASSWORD ); hitem = GetDlgItem( hdlg, IDC_PASSWORD );
if( hitem ) if( hitem )
GetWindowTextA( hitem, lpAuthDlgStruct->lpPassword, lpAuthDlgStruct->cbPassword ); GetWindowTextA( hitem, lpAuthDlgStruct->lpPassword, lpAuthDlgStruct->cbPassword );

View file

@ -1312,6 +1312,7 @@ DWORD WINAPI WNetGetResourceInformationA( LPNETRESOURCEA lpNetResource,
ret = _thunkNetResourceArrayAToW(lpNetResource, &count, lpNetResourceW, &size); ret = _thunkNetResourceArrayAToW(lpNetResource, &count, lpNetResourceW, &size);
if (ret == WN_MORE_DATA) if (ret == WN_MORE_DATA)
{ {
HeapFree(GetProcessHeap(), 0, lpNetResourceW);
lpNetResourceW = HeapAlloc(GetProcessHeap(), 0, size); lpNetResourceW = HeapAlloc(GetProcessHeap(), 0, size);
if (lpNetResourceW) if (lpNetResourceW)
ret = _thunkNetResourceArrayAToW(lpNetResource, ret = _thunkNetResourceArrayAToW(lpNetResource,
@ -1343,6 +1344,7 @@ DWORD WINAPI WNetGetResourceInformationA( LPNETRESOURCEA lpNetResource,
{ {
ret = _thunkNetResourceArrayWToA(lpBufferW, ret = _thunkNetResourceArrayWToA(lpBufferW,
&count, lpBuffer, cbBuffer); &count, lpBuffer, cbBuffer);
HeapFree(GetProcessHeap(), 0, lpNetResourceW);
lpNetResourceW = lpBufferW; lpNetResourceW = lpBufferW;
size = sizeof(NETRESOURCEA); size = sizeof(NETRESOURCEA);
size += WideCharToMultiByte(CP_ACP, 0, lpNetResourceW->lpRemoteName, size += WideCharToMultiByte(CP_ACP, 0, lpNetResourceW->lpRemoteName,