WS_ERROR.C
上传用户:dansui
上传日期:2007-01-04
资源大小:71k
文件大小:3k
源码类别:

Ftp客户端

开发平台:

WINDOWS

  1. #include "ws_glob.h"
  2. #include "winftp.h"
  3. LPSTR ReturnWSError (UINT nErr, LPSTR lpszBuf)
  4. {
  5.   static char szErrMsg[128];
  6.   LPSTR lpszRetStr;
  7.   switch(nErr)
  8.   {
  9.     case WSAVERNOTSUPPORTED:
  10.       lpszRetStr="version of WinSock not supported";
  11.       break;
  12.     case WSASYSNOTREADY:
  13.       lpszRetStr="WinSock not present or not responding";
  14.       break;
  15.     case WSAEINVAL:
  16.       lpszRetStr="app version not supported by DLL";
  17.       break;
  18.     case WSAHOST_NOT_FOUND:
  19.       lpszRetStr="Authoritive: Host not found";
  20.       break;
  21.     case WSATRY_AGAIN:
  22.       lpszRetStr="Non-authoritive: host not found or server failure";
  23.       break;
  24.     case WSANO_RECOVERY:
  25.       lpszRetStr="Non-recoverable: refused or not implemented";
  26.       break;
  27.     case WSANO_DATA:
  28.       lpszRetStr="Valid name, no data record for type";
  29.       break;
  30. /*
  31.     case WSANO_ADDRESS:
  32.       lpszRetStr="Valid name, no MX record";
  33.       break;
  34. */
  35.     case WSANOTINITIALISED:
  36.       lpszRetStr="WSA Startup not initialized";
  37.       break;
  38.     case WSAENETDOWN:
  39.       lpszRetStr="Network subsystem failed";
  40.       break;
  41.     case WSAEINPROGRESS:
  42.       lpszRetStr="Blocking operation in progress";
  43.       break;
  44.     case WSAEINTR:
  45.       lpszRetStr="Blocking call cancelled";
  46.       break;
  47.     case WSAEAFNOSUPPORT:
  48.       lpszRetStr="address family not supported";
  49.       break;
  50.     case WSAEMFILE:
  51.       lpszRetStr="no file descriptors available";
  52.       break;
  53.     case WSAENOBUFS:
  54.       lpszRetStr="no buffer space available";
  55.       break;
  56.     case WSAEPROTONOSUPPORT:
  57.       lpszRetStr="specified protocol not supported";
  58.       break;
  59.     case WSAEPROTOTYPE:
  60.       lpszRetStr="protocol wrong type for this socket";
  61.       break;
  62.     case WSAESOCKTNOSUPPORT:
  63.       lpszRetStr="socket type not supported for address family";
  64.       break;
  65.     case WSAENOTSOCK:
  66.       lpszRetStr="descriptor is not a socket";
  67.       break;
  68.     case WSAEWOULDBLOCK:
  69.       lpszRetStr="socket marked as non-blocking and SO_LINGER set not 0";
  70.       break;
  71.     case WSAEADDRINUSE:
  72.       lpszRetStr="address already in use";
  73.       break;
  74.     case WSAECONNABORTED:
  75.       lpszRetStr="connection aborted";
  76.       break;
  77.     case WSAECONNRESET:
  78.       lpszRetStr="connection reset";
  79.       break;
  80.     case WSAENOTCONN:
  81.       lpszRetStr="not connected";
  82.       break;
  83.     case WSAETIMEDOUT:
  84.       lpszRetStr="connection timed out";
  85.       break;
  86.     case WSAECONNREFUSED:
  87.       lpszRetStr="connection refused";
  88.       break;
  89.     case WSAEHOSTDOWN:
  90.       lpszRetStr="host down";
  91.       break;
  92.     case WSAEHOSTUNREACH:
  93.       lpszRetStr="host unreachable";
  94.       break;
  95.     case WSAEADDRNOTAVAIL:
  96.       lpszRetStr="address not available";
  97.       break;
  98.     default:
  99.       if(lpszBuf==NULL) lpszBuf=szErrMsg;
  100.       wsprintf((LPSTR)lpszBuf, (LPSTR)"error %u", nErr);
  101.       return(lpszBuf);
  102.   }
  103.   if(lpszBuf!=NULL) 
  104.   {
  105.     lstrcpy(lpszBuf,lpszRetStr);
  106.     return(lpszBuf);
  107.   }
  108.   return(lpszRetStr);
  109. }
  110. VOID ReportWSError (LPSTR lpszMsg,UINT nErr)
  111. {
  112.   if (lpszMsg!=NULL)
  113.     DoPrintf ("%s: %s",lpszMsg,ReturnWSError (nErr,NULL));
  114.   else
  115.     DoAddLine (ReturnWSError(nErr,NULL));
  116. }