Changeset 31


Ignore:
Timestamp:
Jun 19, 2010, 12:29:16 AM (15 years ago)
Author:
dmik
Message:

jdk/windows: socket_md.c: Greatly simplify function pointer definitions to prevent GCC 4.4.2 for OS/2 from crashing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/openjdk/jdk/src/windows/hpi/src/socket_md.c

    r2 r31  
    6060#define FN_SOCKETAVAILABLE 24
    6161
    62 static int (PASCAL FAR *sockfnptrs[])() =
     62typedef int (PASCAL FAR *PSOCKFN)();
     63
     64static PSOCKFN sockfnptrs[] =
    6365    {NULL, NULL, NULL, NULL, NULL,
    6466     NULL, NULL, NULL, NULL, NULL,
     
    117119static void
    118120initSockFnTable() {
    119     int (PASCAL FAR* WSAStartupPtr)(WORD, LPWSADATA);
     121    typedef int (PASCAL FAR* WSAStartupPtr_t)(WORD, LPWSADATA);
     122    WSAStartupPtr_t WSAStartupPtr;
    120123    WSADATA wsadata;
    121124    OSVERSIONINFO info;
     
    141144
    142145        /* If we loaded a DLL, then we might as well initialize it.  */
    143         WSAStartupPtr = (int (PASCAL FAR *)(WORD, LPWSADATA))
    144                             GetProcAddress(hWinsock, "WSAStartup");
     146        WSAStartupPtr = (WSAStartupPtr_t)GetProcAddress(hWinsock, "WSAStartup");
    145147        if (WSAStartupPtr(MAKEWORD(1,1), &wsadata) != 0) {
    146148            VM_CALL(jio_fprintf)(stderr, "Could not initialize Winsock\n");
     
    148150
    149151        sockfnptrs[FN_RECV]
    150             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "recv");
     152            = (PSOCKFN)GetProcAddress(hWinsock, "recv");
    151153        sockfnptrs[FN_SEND]
    152             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "send");
     154            = (PSOCKFN)GetProcAddress(hWinsock, "send");
    153155        sockfnptrs[FN_LISTEN]
    154             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "listen");
     156            = (PSOCKFN)GetProcAddress(hWinsock, "listen");
    155157        sockfnptrs[FN_BIND]
    156             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "bind");
     158            = (PSOCKFN)GetProcAddress(hWinsock, "bind");
    157159        sockfnptrs[FN_ACCEPT]
    158             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "accept");
     160            = (PSOCKFN)GetProcAddress(hWinsock, "accept");
    159161        sockfnptrs[FN_RECVFROM]
    160             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "recvfrom");
     162            = (PSOCKFN)GetProcAddress(hWinsock, "recvfrom");
    161163        sockfnptrs[FN_SENDTO]
    162             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "sendto");
     164            = (PSOCKFN)GetProcAddress(hWinsock, "sendto");
    163165        sockfnptrs[FN_SELECT]
    164             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "select");
     166            = (PSOCKFN)GetProcAddress(hWinsock, "select");
    165167        sockfnptrs[FN_CONNECT]
    166             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "connect");
     168            = (PSOCKFN)GetProcAddress(hWinsock, "connect");
    167169        sockfnptrs[FN_CLOSESOCKET]
    168             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "closesocket");
     170            = (PSOCKFN)GetProcAddress(hWinsock, "closesocket");
    169171        /* we don't use this */
    170172        sockfnptrs[FN_SHUTDOWN]
    171             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "shutdown");
     173            = (PSOCKFN)GetProcAddress(hWinsock, "shutdown");
    172174        sockfnptrs[FN_GETHOSTNAME]
    173             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "gethostname");
     175            = (PSOCKFN)GetProcAddress(hWinsock, "gethostname");
    174176        sockfnptrs[FN_GETHOSTBYADDR]
    175             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "gethostbyaddr");
     177            = (PSOCKFN)GetProcAddress(hWinsock, "gethostbyaddr");
    176178        sockfnptrs[FN_GETHOSTBYNAME]
    177             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "gethostbyname");
     179            = (PSOCKFN)GetProcAddress(hWinsock, "gethostbyname");
    178180        sockfnptrs[FN_HTONS]
    179             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "htons");
     181            = (PSOCKFN)GetProcAddress(hWinsock, "htons");
    180182        sockfnptrs[FN_HTONL]
    181             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "htonl");
     183            = (PSOCKFN)GetProcAddress(hWinsock, "htonl");
    182184        sockfnptrs[FN_NTOHS]
    183             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "ntohs");
     185            = (PSOCKFN)GetProcAddress(hWinsock, "ntohs");
    184186        sockfnptrs[FN_NTOHL]
    185             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "ntohl");
     187            = (PSOCKFN)GetProcAddress(hWinsock, "ntohl");
    186188        sockfnptrs[FN_GETSOCKOPT]
    187             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "getsockopt");
     189            = (PSOCKFN)GetProcAddress(hWinsock, "getsockopt");
    188190        sockfnptrs[FN_SETSOCKOPT]
    189             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "setsockopt");
     191            = (PSOCKFN)GetProcAddress(hWinsock, "setsockopt");
    190192        sockfnptrs[FN_GETPROTOBYNAME]
    191             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "getprotobyname");
     193            = (PSOCKFN)GetProcAddress(hWinsock, "getprotobyname");
    192194        sockfnptrs[FN_GETSOCKNAME]
    193             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "getsockname");
     195            = (PSOCKFN)GetProcAddress(hWinsock, "getsockname");
    194196
    195197        sockfnptrs[FN_SOCKET]
    196             = (int (PASCAL FAR *)())GetProcAddress(hWinsock, "socket");
     198            = (PSOCKFN)GetProcAddress(hWinsock, "socket");
    197199        /* in winsock 1, this will simply be 0 */
    198200        sockfnptrs[FN_WSASENDDISCONNECT]
    199             = (int (PASCAL FAR *)())GetProcAddress(hWinsock,
    200                                                    "WSASendDisconnect");
     201            = (PSOCKFN)GetProcAddress(hWinsock,
     202                                      "WSASendDisconnect");
    201203        sockfnptrs[FN_SOCKETAVAILABLE]
    202             = (int (PASCAL FAR *)())GetProcAddress(hWinsock,
    203                                                    "ioctlsocket");
     204            = (PSOCKFN)GetProcAddress(hWinsock,
     205                                      "ioctlsocket");
    204206    }
    205207
     
    245247int
    246248sysListen(int fd, int count) {
    247     int (PASCAL FAR *listenfn)();
     249    PSOCKFN listenfn;
    248250    if ((listenfn = sockfnptrs[FN_LISTEN]) == NULL) {
    249251        initSockFnTable();
     
    256258int
    257259sysConnect(int fd, struct sockaddr *name, int namelen) {
    258     int (PASCAL FAR *connectfn)();
     260    PSOCKFN connectfn;
    259261    if ((connectfn = sockfnptrs[FN_CONNECT]) == NULL) {
    260262        initSockFnTable();
     
    268270int
    269271sysBind(int fd, struct sockaddr *name, int namelen) {
    270     int (PASCAL FAR *bindfn)();
     272    PSOCKFN bindfn;
    271273    if ((bindfn = sockfnptrs[FN_BIND]) == NULL) {
    272274        initSockFnTable();
     
    280282int
    281283sysAccept(int fd, struct sockaddr *name, int *namelen) {
    282     int (PASCAL FAR *acceptfn)();
     284    PSOCKFN acceptfn;
    283285    if ((acceptfn = sockfnptrs[FN_ACCEPT]) == NULL) {
    284286        initSockFnTable();
     
    292294sysRecvFrom(int fd, char *buf, int nBytes,
    293295                  int flags, struct sockaddr *from, int *fromlen) {
    294     int (PASCAL FAR *recvfromfn)();
     296    PSOCKFN recvfromfn;
    295297    if ((recvfromfn = sockfnptrs[FN_RECVFROM]) == NULL) {
    296298        initSockFnTable();
     
    304306sysSendTo(int fd, char *buf, int len,
    305307                int flags, struct sockaddr *to, int tolen) {
    306     int (PASCAL FAR *sendtofn)();
     308    PSOCKFN sendtofn;
    307309    if ((sendtofn = sockfnptrs[FN_SENDTO]) == NULL) {
    308310        initSockFnTable();
     
    315317int
    316318sysRecv(int fd, char *buf, int nBytes, int flags) {
    317     int (PASCAL FAR *recvfn)();
     319    PSOCKFN recvfn;
    318320    if ((recvfn = sockfnptrs[FN_RECV]) == NULL) {
    319321        initSockFnTable();
     
    326328int
    327329sysSend(int fd, char *buf, int nBytes, int flags) {
    328     int (PASCAL FAR *sendfn)();
     330    PSOCKFN sendfn;
    329331    if ((sendfn = sockfnptrs[FN_SEND]) == NULL) {
    330332        initSockFnTable();
     
    338340int
    339341sysGetHostName(char *hostname, int namelen) {
    340     int (PASCAL FAR *fn)();
     342    PSOCKFN fn;
    341343    if ((fn = sockfnptrs[FN_GETHOSTNAME]) == NULL) {
    342344        initSockFnTable();
     
    349351struct hostent *
    350352sysGetHostByAddr(const char *hostname, int len, int type) {
    351     struct hostent * (PASCAL FAR *fn)();
    352     if ((fn = (struct hostent * (PASCAL FAR *)()) sockfnptrs[FN_GETHOSTBYADDR]) == NULL) {
    353         initSockFnTable();
    354         fn = (struct hostent * (PASCAL FAR *)()) sockfnptrs[FN_GETHOSTBYADDR];
     353    typedef struct hostent * (PASCAL FAR *fn_t)();
     354    fn_t fn;
     355    if ((fn = (fn_t) sockfnptrs[FN_GETHOSTBYADDR]) == NULL) {
     356        initSockFnTable();
     357        fn = (fn_t) sockfnptrs[FN_GETHOSTBYADDR];
    355358    }
    356359    sysAssert(sockfnptrs_initialized == TRUE && fn != NULL);
     
    360363struct hostent *
    361364sysGetHostByName(char *hostname) {
    362     struct hostent * (PASCAL FAR *fn)();
    363     if ((fn = (struct hostent * (PASCAL FAR *)()) sockfnptrs[FN_GETHOSTBYNAME]) == NULL) {
    364         initSockFnTable();
    365         fn = (struct hostent * (PASCAL FAR *)()) sockfnptrs[FN_GETHOSTBYNAME];
     365    typedef struct hostent * (PASCAL FAR *fn_t)();
     366    fn_t fn;
     367    if ((fn = (fn_t) sockfnptrs[FN_GETHOSTBYNAME]) == NULL) {
     368        initSockFnTable();
     369        fn = (fn_t) sockfnptrs[FN_GETHOSTBYNAME];
    366370    }
    367371    sysAssert(sockfnptrs_initialized == TRUE && fn != NULL);
     
    372376sysSocket(int domain, int type, int protocol) {
    373377    int sock;
    374     int (PASCAL FAR *socketfn)();
     378    PSOCKFN socketfn;
    375379    if ((socketfn = sockfnptrs[FN_SOCKET]) == NULL) {
    376380        initSockFnTable();
     
    387391int sysSocketShutdown(int fd, int how)  {
    388392    if (fd > 0) {
    389         int (PASCAL FAR *shutdownfn)();
     393        PSOCKFN shutdownfn;
    390394        if ((shutdownfn = sockfnptrs[FN_SHUTDOWN]) == NULL) {
    391395            initSockFnTable();
     
    407411
    408412    if (fd > 0) {
    409         int (PASCAL FAR *closesocketfn)();
    410         int (PASCAL FAR *wsasenddisconnectfn)();
     413        PSOCKFN closesocketfn;
     414        PSOCKFN wsasenddisconnectfn;
    411415        int dynamic_ref = -1;
    412416
     
    445449    fd_set tbl;
    446450    struct timeval t;
    447     int (PASCAL FAR *selectfn)();
     451    PSOCKFN selectfn;
    448452
    449453    t.tv_sec = timeout / 1000;
     
    464468sysSocketAvailable(int fd, jint *pbytes)
    465469{
    466     int (PASCAL FAR *socketfn)();
     470    PSOCKFN socketfn;
    467471    if ((socketfn = sockfnptrs[FN_SOCKETAVAILABLE]) == NULL) {
    468472        initSockFnTable();
     
    475479int
    476480sysGetSockName(int fd, struct sockaddr *name, int *namelen) {
    477     int (PASCAL FAR *getsocknamefn)();
     481    PSOCKFN getsocknamefn;
    478482    if ((getsocknamefn = sockfnptrs[FN_GETSOCKNAME]) == NULL) {
    479483        initSockFnTable();
     
    487491int
    488492sysGetSockOpt(int fd, int level, int optname, char *optval, int *optlen ) {
    489     int (PASCAL FAR *getsockoptfn)();
     493    PSOCKFN getsockoptfn;
    490494    if ((getsockoptfn = sockfnptrs[FN_GETSOCKOPT]) == NULL) {
    491495        initSockFnTable();
     
    507511int
    508512sysSetSockOpt(int fd, int level, int optname, const char *optval, int optlen ) {
    509     int (PASCAL FAR *setsockoptfn)();
     513    PSOCKFN setsockoptfn;
    510514    if ((setsockoptfn = sockfnptrs[FN_SETSOCKOPT]) == NULL) {
    511515        initSockFnTable();
     
    528532struct protoent *
    529533sysGetProtoByName(char *name) {
    530     struct protoent * (PASCAL FAR *getprotobynamefn)();
    531     if ((getprotobynamefn = (struct protoent * (PASCAL FAR *)()) sockfnptrs[FN_GETPROTOBYNAME]) == NULL) {
    532         initSockFnTable();
    533         getprotobynamefn = (struct protoent * (PASCAL FAR *)()) sockfnptrs[FN_GETPROTOBYNAME];
     534    typedef struct protoent * (PASCAL FAR *getprotobynamefn_t)();
     535    getprotobynamefn_t getprotobynamefn;
     536    if ((getprotobynamefn = (getprotobynamefn_t) sockfnptrs[FN_GETPROTOBYNAME]) == NULL) {
     537        initSockFnTable();
     538        getprotobynamefn = (getprotobynamefn_t) sockfnptrs[FN_GETPROTOBYNAME];
    534539    }
    535540    sysAssert(sockfnptrs_initialized == TRUE);
Note: See TracChangeset for help on using the changeset viewer.