Changeset 4000

Show
Ignore:
Timestamp:
2005年12月14日 00時27分59秒 (3 years ago)
Author:
horiguti
Message:

Enable to get correct code for socket error.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/ChangeLog.Meadow

    r3999 r4000  
     12005-12-13  Kyotaro HORIGUCHI  <horiguti@meadowy.org> 
     2 
     3        * w32.c (sys_getsockopt): New function. 
     4        (pfn_getsockopt): New function pointer. 
     5        (init_winsock): Initialize pfn_getsockopt. 
     6 
     7        * process.c (wait_reading_process_output): Get errno by 
     8        sys_getsockopt. 
     9 
    1102005-12-13  Kyotaro HORIGUCHI  <horiguti@meadowy.org> 
    211 
  • trunk/src/process.c

    r3990 r4000  
    47094709#else 
    47104710              { 
     4711#ifdef MEADOW 
     4712                int xlen = sizeof (xerrno); 
     4713                if (sys_getsockopt (channel, 
     4714                                    SOL_SOCKET, SO_ERROR, &xerrno, &xlen)) 
     4715                  xerrno = errno; 
     4716#else 
    47114717                struct sockaddr pname; 
    47124718                int pnamelen = sizeof(pname); 
     
    47224728                      xerrno = errno; 
    47234729                  } 
     4730#endif /* Meadow */ 
    47244731              } 
    47254732#endif 
  • trunk/src/w32.c

    r3973 r4000  
    9898#undef shutdown 
    9999#undef setsockopt 
     100#undef getsockopt 
    100101#undef listen 
    101102#undef getsockname 
     
    30933094int (PASCAL *pfn_setsockopt) (SOCKET s, int level, int optname, 
    30943095                              const char * optval, int optlen); 
     3096int (PASCAL *pfn_getsockopt) (SOCKET s, int level, int optname, 
     3097                              const char * optval, int *optlen); 
    30953098int (PASCAL *pfn_listen) (SOCKET s, int backlog); 
    30963099int (PASCAL *pfn_getsockname) (SOCKET s, struct sockaddr * name, 
     
    31763179      LOAD_PROC( WSACleanup ); 
    31773180      LOAD_PROC( setsockopt ); 
     3181      LOAD_PROC( getsockopt ); 
    31783182      LOAD_PROC( listen ); 
    31793183      LOAD_PROC( getsockname ); 
     
    37263730} 
    37273731 
     3732#ifdef MEADOW 
     3733int 
     3734sys_getsockopt (int s, int level, int optname, char *optval, int *optlen) 
     3735{ 
     3736  if (winsock_lib == NULL) 
     3737    { 
     3738      h_errno = ENETDOWN; 
     3739      return SOCKET_ERROR; 
     3740    } 
     3741 
     3742  check_errno (); 
     3743  if (fd_info[s].flags & FILE_SOCKET) 
     3744    { 
     3745      int rc = pfn_getsockopt (SOCK_HANDLE (s), 
     3746                               level, optname, optval, optlen); 
     3747      if (rc == SOCKET_ERROR) 
     3748        set_errno (); 
     3749      return rc; 
     3750    } 
     3751  h_errno = ENOTSOCK; 
     3752  return SOCKET_ERROR; 
     3753} 
     3754#endif 
     3755 
    37283756int 
    37293757sys_listen (int s, int backlog)