wine/dlls/wininet internet.c

Alexandre Julliard julliard at wine.codeweavers.com
Tue Nov 8 10:09:20 CST 2005


ChangeSet ID:	21168
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/08 10:09:20

Modified files:
	dlls/wininet   : internet.c 

Log message:
	Vincent Béron <vberon at mecano.gme.usherb.ca>
	Unicodify InternetCheckConnection.
	Use HeapAlloc'ed buffers where applicable.

Patch: http://cvs.winehq.org/patch.py?id=21168

Old revision  New revision  Changes     Path
 1.136         1.137         +27 -21     wine/dlls/wininet/internet.c

Index: wine/dlls/wininet/internet.c
diff -u -p wine/dlls/wininet/internet.c:1.136 wine/dlls/wininet/internet.c:1.137
--- wine/dlls/wininet/internet.c:1.136	8 Nov 2005 16: 9:20 -0000
+++ wine/dlls/wininet/internet.c	8 Nov 2005 16: 9:20 -0000
@@ -2460,16 +2460,16 @@ BOOL WINAPI InternetTimeToSystemTimeW( L
 }
 
 /***********************************************************************
- *	InternetCheckConnectionA (WININET.@)
+ *	InternetCheckConnectionW (WININET.@)
  *
  * Pings a requested host to check internet connection
  *
  * RETURNS
  *   TRUE on success and FALSE on failure. If a failure then
- *   ERROR_NOT_CONNECTED is placesd into GetLastError
+ *   ERROR_NOT_CONNECTED is placed into GetLastError
  *
  */
-BOOL WINAPI InternetCheckConnectionA( LPCSTR lpszUrl, DWORD dwFlags, DWORD dwReserved )
+BOOL WINAPI InternetCheckConnectionW( LPCWSTR lpszUrl, DWORD dwFlags, DWORD dwReserved )
 {
 /*
  * this is a kludge which runs the resident ping program and reads the output.
@@ -2478,8 +2478,11 @@ BOOL WINAPI InternetCheckConnectionA( LP
  */
 
   BOOL   rc = FALSE;
-  char command[1024];
-  char host[1024];
+  static const CHAR ping[] = "ping -w 1 ";
+  static const CHAR redirect[] = " >/dev/null 2>/dev/null";
+  CHAR *command = NULL;
+  WCHAR hostW[1024];
+  DWORD len;
   int status = -1;
 
   FIXME("\n");
@@ -2501,30 +2504,32 @@ BOOL WINAPI InternetCheckConnectionA( LP
   }
   else
   {
-     URL_COMPONENTSA components;
+     URL_COMPONENTSW components;
 
-     ZeroMemory(&components,sizeof(URL_COMPONENTSA));
-     components.lpszHostName = (LPSTR)&host;
+     ZeroMemory(&components,sizeof(URL_COMPONENTSW));
+     components.lpszHostName = (LPWSTR)&hostW;
      components.dwHostNameLength = 1024;
 
-     if (!InternetCrackUrlA(lpszUrl,0,0,&components))
+     if (!InternetCrackUrlW(lpszUrl,0,0,&components))
        goto End;
 
-     TRACE("host name : %s\n",components.lpszHostName);
+     TRACE("host name : %s\n",debugstr_w(components.lpszHostName));
   }
 
   /*
    * Build our ping command
    */
-  strcpy(command,"ping -w 1 ");
-  strcat(command,host);
-  strcat(command," >/dev/null 2>/dev/null");
+  len = WideCharToMultiByte(CP_UNIXCP, 0, hostW, -1, NULL, 0, NULL, NULL);
+  command = HeapAlloc( GetProcessHeap(), 0, strlen(ping)+len+strlen(redirect) );
+  strcpy(command,ping);
+  WideCharToMultiByte(CP_UNIXCP, 0, hostW, -1, command+strlen(ping), len, NULL, NULL);
+  strcat(command,redirect);
 
   TRACE("Ping command is : %s\n",command);
 
   status = system(command);
 
-  TRACE("Ping returned a code of %i \n",status);
+  TRACE("Ping returned a code of %i\n",status);
 
   /* Ping return code of 0 indicates success */
   if (status == 0)
@@ -2532,6 +2537,7 @@ BOOL WINAPI InternetCheckConnectionA( LP
 
 End:
 
+  HeapFree( GetProcessHeap(), 0, command );
   if (rc == FALSE)
     SetLastError(ERROR_NOT_CONNECTED);
 
@@ -2540,7 +2546,7 @@ End:
 
 
 /***********************************************************************
- *	InternetCheckConnectionW (WININET.@)
+ *	InternetCheckConnectionA (WININET.@)
  *
  * Pings a requested host to check internet connection
  *
@@ -2549,17 +2555,17 @@ End:
  *   ERROR_NOT_CONNECTED is placed into GetLastError
  *
  */
-BOOL WINAPI InternetCheckConnectionW(LPCWSTR lpszUrl, DWORD dwFlags, DWORD dwReserved)
+BOOL WINAPI InternetCheckConnectionA(LPCSTR lpszUrl, DWORD dwFlags, DWORD dwReserved)
 {
-    CHAR *szUrl;
+    WCHAR *szUrl;
     INT len;
     BOOL rc;
 
-    len = WideCharToMultiByte(CP_ACP, 0, lpszUrl, -1, NULL, 0, NULL, NULL);
-    if (!(szUrl = HeapAlloc(GetProcessHeap(), 0, len*sizeof(CHAR))))
+    len = MultiByteToWideChar(CP_ACP, 0, lpszUrl, -1, NULL, 0);
+    if (!(szUrl = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR))))
         return FALSE;
-    WideCharToMultiByte(CP_ACP, 0, lpszUrl, -1, szUrl, len, NULL, NULL);
-    rc = InternetCheckConnectionA((LPCSTR)szUrl, dwFlags, dwReserved);
+    MultiByteToWideChar(CP_ACP, 0, lpszUrl, -1, szUrl, len);
+    rc = InternetCheckConnectionW(szUrl, dwFlags, dwReserved);
     HeapFree(GetProcessHeap(), 0, szUrl);
     
     return rc;



More information about the wine-cvs mailing list