Alexandre Julliard wrote:
Tim Hentenaar tth@one.net writes:
/***********************************************************************
FtpGetCurrentDirectoryW (WININET.@)
- Retrieves the current directory
- Retrieves the current directory (unicode)
- Implemented 5/17/2004 Tim Hentenaar tth@one.net
Please don't add changelog information in the code, that's what the CVS log and the Changelog file are for.
Some other comments too:
+/*********************************************************************** + * InternetGetLastResponseInfoW (WININET.@) + * + * Return last wininet error description on the calling thread + * Implemented 5/17/2004 Tim Hentenaar tth@one.net + * + * RETURNS + * TRUE on success of writing to buffer + * FALSE on failure + * + */ +BOOL WINAPI InternetGetLastResponseInfoW(LPDWORD lpdwError, + LPWSTR lpszBuffer, LPDWORD lpdwBufferLength) +{ + LPWITHREADERROR lpwite = (LPWITHREADERROR)TlsGetValue(g_dwTlsErrIndex); + TRACE("\n"); + *lpdwError = lpwite->dwError; + if (lpwite->dwError) + { + int i; + for (i=0;i<strlen(lpwite->response);i++) + lpszBuffer[i] = (WCHAR)lpwite->response[i];
MultiByteToWideChar would be a better choice here.
+ *lpdwBufferLength = lstrlenW(lpszBuffer);
Potential buffer overrun here. lpdwBufferLength is IN and OUT according to MSDN. So you should use this value to determine the maximum number of characters to write.
+ } else *lpdwBufferLength = 0; + return TRUE; +}
/*********************************************************************** + * InternetFindNextFileW (WININET.@) + * + * Continues a file search from a previous call to FindFirstFile + * Implemented 5/17/2002 Tim Hentenaar tth@one.net + * + * RETURNS + * TRUE on success + * FALSE on failure + * + */ +BOOL WINAPI InternetFindNextFileW(HINTERNET hFind, LPVOID lpvFindData) +{ + return InternetFindNextFileA(hFind,lpvFindData); +}
You can't do this. lpvFindData is usually a pointer to WIN32_FIND_DATAW, and so you need to convert it properly. The best idea would probably be to copy the InternetFindNextFileA function here and unicodify. Another common technique is to create a common function that takes a flag indicating whether it is unicode and call this from both the A and W functions. Then you would have portions of code like this:
if (unicode) MultiByteToWideChar(...); else strcpy(...);
You also haven't updated the .spec file with the new functions you have added (e.g. InternetSetStatusCallbackW), so they will not get used.
Rob