密猟オンラインサーバープログラム
Win32環境下でビルド出来るように修正
(とりあえずVisualStudio2010Expressで通った)
送受信のselectタイムアウトを5秒に増加
(クライアントとの通信に失敗するケースを緩和するため)
| @@ -715,55 +715,7 @@ | ||
| 715 | 715 | |
| 716 | 716 | |
| 717 | 717 | /************************************************/ |
| 718 | -#ifdef MAKEWIN32 | |
| 719 | -/* convert Shift-jis to UTF-8 */ | |
| 720 | -static const char * | |
| 721 | -convertC2H (char *p, int nlen) | |
| 722 | -{ | |
| 723 | - int i; | |
| 724 | - const char *pret = p; | |
| 725 | - for (i = 0; i < nlen && *p != '\0'; i++) | |
| 726 | - { | |
| 727 | - unsigned char c = *p++; | |
| 728 | - if (_ismbblead (c)) | |
| 729 | - { | |
| 730 | - /* first byte of KANJI */ | |
| 731 | - unsigned char c2 = *p++; | |
| 732 | - unsigned int njis = _mbcjmstojis (((unsigned int) c << 8) | c2); | |
| 733 | - njis |= 0x8080; /* MBS up */ | |
| 734 | - *(p - 2) = (unsigned char) (njis >> 8); | |
| 735 | - *(p - 1) = (unsigned char) njis; | |
| 736 | - i++; | |
| 737 | - } | |
| 738 | - } | |
| 739 | - return pret; | |
| 740 | -} | |
| 741 | 718 | |
| 742 | -/* convert UTF-8 to Shift-jis */ | |
| 743 | -static const char * | |
| 744 | -convertH2C (char *p, int nlen) | |
| 745 | -{ | |
| 746 | - int i; | |
| 747 | - const char *pret = p; | |
| 748 | - for (i = 0; i < nlen && *p != '\0'; i++) | |
| 749 | - { | |
| 750 | - unsigned char c = *p++; | |
| 751 | - if (c & 0x80) | |
| 752 | - { | |
| 753 | - /* first byte of KANJI */ | |
| 754 | - unsigned char c2 = *p++; | |
| 755 | - unsigned int neuc = ((unsigned int) c << 8) | c2; | |
| 756 | - unsigned int nsjis = _mbcjistojms (neuc & 0x7f7f); | |
| 757 | - *(p - 2) = (unsigned char) (nsjis >> 8); | |
| 758 | - *(p - 1) = (unsigned char) nsjis; | |
| 759 | - i++; | |
| 760 | - } | |
| 761 | - } | |
| 762 | - return pret; | |
| 763 | -} | |
| 764 | - | |
| 765 | -#endif /* MAKEWIN32 */ | |
| 766 | - | |
| 767 | 719 | /* search item for name */ |
| 768 | 720 | static int |
| 769 | 721 | SearchItemForName (const char *p) |
| @@ -1521,9 +1473,6 @@ | ||
| 1521 | 1473 | { |
| 1522 | 1474 | char namebuf[BUFFER_SIZE]; |
| 1523 | 1475 | memcpy (namebuf, User[i].myshop[j].name, USERNAME_LEN); |
| 1524 | -#ifdef MAKEWIN32 | |
| 1525 | - convertH2C (namebuf, USERNAME_LEN); | |
| 1526 | -#endif | |
| 1527 | 1476 | fprintf (optr, "%d,%d,%d,%-.24s\n", |
| 1528 | 1477 | User[i].myshop[j].build, |
| 1529 | 1478 | User[i].myshop[j].pos.x, User[i].myshop[j].pos.y, |
| @@ -1536,9 +1485,6 @@ | ||
| 1536 | 1485 | memcpy (namebuf, |
| 1537 | 1486 | Weapon[User[i].myshop[j].list[0][k]].name, |
| 1538 | 1487 | WEAPONNAME_LEN); |
| 1539 | -#ifdef MAKEWIN32 | |
| 1540 | - convertH2C (namebuf, WEAPONNAME_LEN); | |
| 1541 | -#endif | |
| 1542 | 1488 | fprintf (optr, "%-.24s,%u,%u,%lu\n", |
| 1543 | 1489 | namebuf, |
| 1544 | 1490 | User[i].myshop[j].leftuse[0][k], |
| @@ -1550,9 +1496,6 @@ | ||
| 1550 | 1496 | memcpy (namebuf, |
| 1551 | 1497 | Item[User[i].myshop[j].list[1][k]].name, |
| 1552 | 1498 | ITEMNAME_LEN); |
| 1553 | -#ifdef MAKEWIN32 | |
| 1554 | - convertH2C (namebuf, ITEMNAME_LEN); | |
| 1555 | -#endif | |
| 1556 | 1499 | fprintf (optr, "%-.24s,%u,%u,%lu\n", |
| 1557 | 1500 | namebuf, |
| 1558 | 1501 | User[i].myshop[j].leftuse[1][k], |
| @@ -1616,9 +1559,6 @@ | ||
| 1616 | 1559 | { |
| 1617 | 1560 | return -1; |
| 1618 | 1561 | } |
| 1619 | -#ifdef MAKEWIN32 | |
| 1620 | - convertC2H (namebuf, USERNAME_LEN); | |
| 1621 | -#endif | |
| 1622 | 1562 | for (j = 0; j < USERNAME_LEN && namebuf[0] != '\0'; j++) |
| 1623 | 1563 | { |
| 1624 | 1564 | User[nuser].myshop[i].name[j] = namebuf[j]; |
| @@ -1640,9 +1580,6 @@ | ||
| 1640 | 1580 | { |
| 1641 | 1581 | return -1; |
| 1642 | 1582 | } |
| 1643 | -#ifdef MAKEWIN32 | |
| 1644 | - convertC2H (namebuf, WEAPONNAME_LEN); | |
| 1645 | -#endif | |
| 1646 | 1583 | User[nuser].myshop[i].list[0][j] = |
| 1647 | 1584 | SearchWeaponForName (namebuf); |
| 1648 | 1585 | if (User[nuser].myshop[i].list[0][j] == 0) |
| @@ -1661,9 +1598,6 @@ | ||
| 1661 | 1598 | { |
| 1662 | 1599 | return -1; |
| 1663 | 1600 | } |
| 1664 | -#ifdef MAKEWIN32 | |
| 1665 | - convertC2H (namebuf, ITEMNAME_LEN); | |
| 1666 | -#endif | |
| 1667 | 1601 | User[nuser].myshop[i].list[1][j] = SearchItemForName (namebuf); |
| 1668 | 1602 | if (User[nuser].myshop[i].list[1][j] == 0) |
| 1669 | 1603 | { |
| @@ -2185,9 +2119,6 @@ | ||
| 2185 | 2119 | memset (User[userno].statusinfo, 0, PACKET_MAX); |
| 2186 | 2120 | memset (User[userno].mapdata, 0, PACKET_MAX); |
| 2187 | 2121 | memcpy (work, User[userno].name, USERNAME_LEN); |
| 2188 | -#ifdef MAKEWIN32 | |
| 2189 | - convertH2C (work, USERNAME_LEN); | |
| 2190 | -#endif | |
| 2191 | 2122 | printf ("user(%d)[%-.24s] logoff.\n", userno, work); |
| 2192 | 2123 | User[userno].idletimer = 0; |
| 2193 | 2124 | } |
| @@ -2458,9 +2389,6 @@ | ||
| 2458 | 2389 | { |
| 2459 | 2390 | int i; |
| 2460 | 2391 | strncpy (outbuffer, puser, USERNAME_LEN); |
| 2461 | -#ifdef MAKEWIN32 | |
| 2462 | - convertH2C (outbuffer, USERNAME_LEN); | |
| 2463 | -#endif | |
| 2464 | 2392 | for (i = USERNAME_LEN - 1; i >= 0; i--) |
| 2465 | 2393 | { |
| 2466 | 2394 | if (outbuffer[i] != ' ') |
| @@ -2523,9 +2451,6 @@ | ||
| 2523 | 2451 | FreeMail (pmail); |
| 2524 | 2452 | break; |
| 2525 | 2453 | } |
| 2526 | -#ifdef MAKEWIN32 | |
| 2527 | - convertC2H (namebuf, USERNAME_LEN); | |
| 2528 | -#endif | |
| 2529 | 2454 | pmail->fromuser = SearchUser (namebuf); |
| 2530 | 2455 | if (pmail->fromuser == -1) |
| 2531 | 2456 | { |
| @@ -2544,9 +2469,6 @@ | ||
| 2544 | 2469 | { |
| 2545 | 2470 | n = PACKET_DATA_MAX - 1; |
| 2546 | 2471 | } |
| 2547 | -#ifdef MAKEWIN32 | |
| 2548 | - convertC2H (namebuf, n); | |
| 2549 | -#endif | |
| 2550 | 2472 | pmail->subject[0] = n; |
| 2551 | 2473 | if (n) |
| 2552 | 2474 | { |
| @@ -2566,9 +2488,6 @@ | ||
| 2566 | 2488 | { |
| 2567 | 2489 | n = PACKET_DATA_MAX - 1; |
| 2568 | 2490 | } |
| 2569 | -#ifdef MAKEWIN32 | |
| 2570 | - convertC2H (namebuf, n); | |
| 2571 | -#endif | |
| 2572 | 2491 | pmail->message[j][0] = n; |
| 2573 | 2492 | if (n) |
| 2574 | 2493 | { |
| @@ -2620,9 +2539,6 @@ | ||
| 2620 | 2539 | } |
| 2621 | 2540 | strncpy (namebuf, User[pmail->fromuser].name, USERNAME_LEN); |
| 2622 | 2541 | namebuf[USERNAME_LEN] = '\0'; |
| 2623 | -#ifdef MAKEWIN32 | |
| 2624 | - convertH2C (namebuf, USERNAME_LEN); | |
| 2625 | -#endif | |
| 2626 | 2542 | fprintf (optr, "%d,%d,%lu\n%-.24s\n", |
| 2627 | 2543 | pmail->readflag, pmail->line, pmail->timestamp, namebuf); |
| 2628 | 2544 | n = (unsigned char) (pmail->subject[0]); |
| @@ -2631,9 +2547,6 @@ | ||
| 2631 | 2547 | memcpy (work, &pmail->subject[1], n); |
| 2632 | 2548 | } |
| 2633 | 2549 | work[n] = '\0'; |
| 2634 | -#ifdef MAKEWIN32 | |
| 2635 | - convertH2C (work, n); | |
| 2636 | -#endif | |
| 2637 | 2550 | fprintf (optr, "%s\n", work); |
| 2638 | 2551 | for (j = 0; j < pmail->line; j++) |
| 2639 | 2552 | { |
| @@ -2643,9 +2556,6 @@ | ||
| 2643 | 2556 | memcpy (work, &pmail->message[j][1], n); |
| 2644 | 2557 | } |
| 2645 | 2558 | work[n] = '\0'; |
| 2646 | -#ifdef MAKEWIN32 | |
| 2647 | - convertH2C (work, n); | |
| 2648 | -#endif | |
| 2649 | 2559 | fprintf (optr, "%s\n", work); |
| 2650 | 2560 | } |
| 2651 | 2561 | } |
| @@ -2750,9 +2660,6 @@ | ||
| 2750 | 2660 | FreeMail (pmail); |
| 2751 | 2661 | break; |
| 2752 | 2662 | } |
| 2753 | -#ifdef MAKEWIN32 | |
| 2754 | - convertC2H (namebuf, USERNAME_LEN); | |
| 2755 | -#endif | |
| 2756 | 2663 | pmail->fromuser = SearchUser (namebuf); |
| 2757 | 2664 | if (pmail->fromuser == -1) |
| 2758 | 2665 | { |
| @@ -2771,9 +2678,6 @@ | ||
| 2771 | 2678 | { |
| 2772 | 2679 | n = PACKET_DATA_MAX - 1; |
| 2773 | 2680 | } |
| 2774 | -#ifdef MAKEWIN32 | |
| 2775 | - convertC2H (namebuf, n); | |
| 2776 | -#endif | |
| 2777 | 2681 | pmail->subject[0] = n; |
| 2778 | 2682 | if (n) |
| 2779 | 2683 | { |
| @@ -2793,9 +2697,6 @@ | ||
| 2793 | 2697 | { |
| 2794 | 2698 | n = PACKET_DATA_MAX - 1; |
| 2795 | 2699 | } |
| 2796 | -#ifdef MAKEWIN32 | |
| 2797 | - convertC2H (namebuf, n); | |
| 2798 | -#endif | |
| 2799 | 2700 | pmail->message[j][0] = n; |
| 2800 | 2701 | if (n) |
| 2801 | 2702 | { |
| @@ -2847,9 +2748,6 @@ | ||
| 2847 | 2748 | } |
| 2848 | 2749 | strncpy (namebuf, User[pmail->fromuser].name, USERNAME_LEN); |
| 2849 | 2750 | namebuf[USERNAME_LEN] = '\0'; |
| 2850 | -#ifdef MAKEWIN32 | |
| 2851 | - convertH2C (namebuf, USERNAME_LEN); | |
| 2852 | -#endif | |
| 2853 | 2751 | fprintf (optr, "%d,%d,%lu\n%-.24s\n", |
| 2854 | 2752 | pmail->readflag, pmail->line, pmail->timestamp, namebuf); |
| 2855 | 2753 | n = (unsigned char) (pmail->subject[0]); |
| @@ -2858,9 +2756,6 @@ | ||
| 2858 | 2756 | memcpy (work, &pmail->subject[1], n); |
| 2859 | 2757 | } |
| 2860 | 2758 | work[n] = '\0'; |
| 2861 | -#ifdef MAKEWIN32 | |
| 2862 | - convertH2C (work, n); | |
| 2863 | -#endif | |
| 2864 | 2759 | fprintf (optr, "%s\n", work); |
| 2865 | 2760 | for (j = 0; j < pmail->line; j++) |
| 2866 | 2761 | { |
| @@ -2870,9 +2765,6 @@ | ||
| 2870 | 2765 | memcpy (work, &pmail->message[j][1], n); |
| 2871 | 2766 | } |
| 2872 | 2767 | work[n] = '\0'; |
| 2873 | -#ifdef MAKEWIN32 | |
| 2874 | - convertH2C (work, n); | |
| 2875 | -#endif | |
| 2876 | 2768 | fprintf (optr, "%s\n", work); |
| 2877 | 2769 | } |
| 2878 | 2770 | } |
| @@ -2933,9 +2825,6 @@ | ||
| 2933 | 2825 | { |
| 2934 | 2826 | break; |
| 2935 | 2827 | } |
| 2936 | -#ifdef MAKEWIN32 | |
| 2937 | - convertC2H (work, strlen (work)); | |
| 2938 | -#endif | |
| 2939 | 2828 | for (j = 0; work[j] != '\0' && j < USERNAME_LEN; j++) |
| 2940 | 2829 | { |
| 2941 | 2830 | User[i].name[j] = work[j]; |
| @@ -2954,9 +2843,6 @@ | ||
| 2954 | 2843 | { |
| 2955 | 2844 | break; |
| 2956 | 2845 | } |
| 2957 | -#ifdef MAKEWIN32 | |
| 2958 | - convertC2H (work, strlen (work)); | |
| 2959 | -#endif | |
| 2960 | 2846 | for (j = 0; work[j] != '\0' && j < PASSWORD_LEN; j++) |
| 2961 | 2847 | { |
| 2962 | 2848 | User[i].password[j] = work[j]; |
| @@ -3012,9 +2898,6 @@ | ||
| 3012 | 2898 | { |
| 3013 | 2899 | break; |
| 3014 | 2900 | } |
| 3015 | -#ifdef MAKEWIN32 | |
| 3016 | - convertC2H (namebuf, strlen (namebuf)); | |
| 3017 | -#endif | |
| 3018 | 2901 | User[i].weapon[j] = |
| 3019 | 2902 | SearchWeaponForNameType (namebuf, User[i].c_type); |
| 3020 | 2903 | if (User[i].weapon[j]) |
| @@ -3041,9 +2924,6 @@ | ||
| 3041 | 2924 | { |
| 3042 | 2925 | break; |
| 3043 | 2926 | } |
| 3044 | -#ifdef MAKEWIN32 | |
| 3045 | - convertC2H (namebuf, strlen (namebuf)); | |
| 3046 | -#endif | |
| 3047 | 2927 | User[i].item[j] = SearchItemForName (namebuf); |
| 3048 | 2928 | if (User[i].item[j]) |
| 3049 | 2929 | { |
| @@ -3122,15 +3002,9 @@ | ||
| 3122 | 3002 | char work[BUFFER_SIZE]; |
| 3123 | 3003 | memcpy (work, User[i].name, USERNAME_LEN); |
| 3124 | 3004 | work[USERNAME_LEN] = '\0'; |
| 3125 | -#ifdef MAKEWIN32 | |
| 3126 | - convertH2C (work, USERNAME_LEN); | |
| 3127 | -#endif | |
| 3128 | 3005 | fprintf (optr, "%-*s\n", USERNAME_LEN, work); |
| 3129 | 3006 | memcpy (work, User[i].password, PASSWORD_LEN); |
| 3130 | 3007 | work[PASSWORD_LEN] = '\0'; |
| 3131 | -#ifdef MAKEWIN32 | |
| 3132 | - convertH2C (work, PASSWORD_LEN); | |
| 3133 | -#endif | |
| 3134 | 3008 | fprintf (optr, "%-*s\n", PASSWORD_LEN, work); |
| 3135 | 3009 | fprintf (optr, "%lu\n", User[i].score); |
| 3136 | 3010 | fprintf (optr, "%d,%d,%d,%d,%d,%d,%d\n", User[i].c_type, |
| @@ -3142,9 +3016,6 @@ | ||
| 3142 | 3016 | memcpy (work, Weapon[User[i].weapon[j]].name, |
| 3143 | 3017 | WEAPONNAME_LEN); |
| 3144 | 3018 | work[WEAPONNAME_LEN] = '\0'; |
| 3145 | -#ifdef MAKEWIN32 | |
| 3146 | - convertH2C (work, WEAPONNAME_LEN); | |
| 3147 | -#endif | |
| 3148 | 3019 | fprintf (optr, "%s,%u\n", work, User[i].bullette[j]); |
| 3149 | 3020 | } |
| 3150 | 3021 | for (j = 0; j < ITEM_MAX; j++) |
| @@ -3151,9 +3022,6 @@ | ||
| 3151 | 3022 | { |
| 3152 | 3023 | memcpy (work, Item[User[i].item[j]].name, ITEMNAME_LEN); |
| 3153 | 3024 | work[ITEMNAME_LEN] = '\0'; |
| 3154 | -#ifdef MAKEWIN32 | |
| 3155 | - convertH2C (work, ITEMNAME_LEN); | |
| 3156 | -#endif | |
| 3157 | 3025 | fprintf (optr, "%s,%u\n", work, User[i].itemcount[j]); |
| 3158 | 3026 | } |
| 3159 | 3027 | } |
| @@ -3216,9 +3084,6 @@ | ||
| 3216 | 3084 | /* can't read data */ |
| 3217 | 3085 | break; |
| 3218 | 3086 | } |
| 3219 | -#ifdef MAKEWIN32 | |
| 3220 | - convertC2H (namebuf, strlen (namebuf)); | |
| 3221 | -#endif | |
| 3222 | 3087 | for (i = 0; namebuf[i] != '\0' && i < ANIMALNAME_LEN; i++) |
| 3223 | 3088 | { |
| 3224 | 3089 | p->name[i] = namebuf[i]; |
| @@ -3227,9 +3092,6 @@ | ||
| 3227 | 3092 | { |
| 3228 | 3093 | p->name[i] = ' '; |
| 3229 | 3094 | } |
| 3230 | -#ifdef MAKEWIN32 | |
| 3231 | - convertC2H (inamebuf, strlen (inamebuf)); | |
| 3232 | -#endif | |
| 3233 | 3095 | p->forsell_item = SearchItemForName (inamebuf); |
| 3234 | 3096 | n++; |
| 3235 | 3097 | } |
| @@ -3382,9 +3244,6 @@ | ||
| 3382 | 3244 | /* can't read data */ |
| 3383 | 3245 | break; |
| 3384 | 3246 | } |
| 3385 | -#ifdef MAKEWIN32 | |
| 3386 | - convertC2H (namebuf, strlen (namebuf)); | |
| 3387 | -#endif | |
| 3388 | 3247 | strncpy (p->name, namebuf, WEAPONNAME_LEN); |
| 3389 | 3248 | p->b_type = (enum bullet_type) b_type; |
| 3390 | 3249 | n++; |
| @@ -3447,9 +3306,6 @@ | ||
| 3447 | 3306 | /* can't read data */ |
| 3448 | 3307 | break; |
| 3449 | 3308 | } |
| 3450 | -#ifdef MAKEWIN32 | |
| 3451 | - convertC2H (namebuf, strlen (namebuf)); | |
| 3452 | -#endif | |
| 3453 | 3309 | strncpy (p->name, namebuf, ITEMNAME_LEN); |
| 3454 | 3310 | p->id = ntype; |
| 3455 | 3311 | p->effect = neffect; |
| @@ -4949,9 +4805,6 @@ | ||
| 4949 | 4805 | char uname[USERNAME_LEN]; |
| 4950 | 4806 | char work[PASSWORD_LEN]; |
| 4951 | 4807 | memcpy (uname, User[nuser].name, USERNAME_LEN); |
| 4952 | -#ifdef MAKEWIN32 | |
| 4953 | - convertH2C (uname, USERNAME_LEN); | |
| 4954 | -#endif | |
| 4955 | 4808 | printf ("User name:%-16.24s\n", uname); |
| 4956 | 4809 | for (i = 0; i < PASSWORD_LEN; i++) |
| 4957 | 4810 | { |
| @@ -5053,7 +4906,7 @@ | ||
| 5053 | 4906 | { |
| 5054 | 4907 | /* illegal system password */ |
| 5055 | 4908 | puts ("system password mismatch"); |
| 5056 | - printf ("Client key[%-16.24s]\n", | |
| 4909 | + printf ("Client key[%-16.16s]\n", | |
| 5057 | 4910 | packet + 2 + USERNAME_LEN + PASSWORD_LEN + 16); |
| 5058 | 4911 | SendResultPacket (psession->handle, -1); |
| 5059 | 4912 | } |
| @@ -5142,9 +4995,6 @@ | ||
| 5142 | 4995 | char uname[USERNAME_LEN]; |
| 5143 | 4996 | char work[PASSWORD_LEN]; |
| 5144 | 4997 | memcpy (uname, User[nuser].name, USERNAME_LEN); |
| 5145 | -#ifdef MAKEWIN32 | |
| 5146 | - convertH2C (uname, USERNAME_LEN); | |
| 5147 | -#endif | |
| 5148 | 4998 | printf ("User name:%-16.24s\n", uname); |
| 5149 | 4999 | for (i = 0; i < PASSWORD_LEN; i++) |
| 5150 | 5000 | { |
| @@ -8690,9 +8540,6 @@ | ||
| 8690 | 8540 | /* perhaps,disconnect session. */ |
| 8691 | 8541 | char work[USERNAME_LEN]; |
| 8692 | 8542 | memcpy (work, User[i].name, USERNAME_LEN); |
| 8693 | -#ifdef MAKEWIN32 | |
| 8694 | - convertH2C (work, USERNAME_LEN); | |
| 8695 | -#endif | |
| 8696 | 8543 | printf ("user(%d)[%-16.24s] no response\n", i, work); |
| 8697 | 8544 | DisconnectUser (i); |
| 8698 | 8545 | } |
| @@ -44,8 +44,8 @@ | ||
| 44 | 44 | { |
| 45 | 45 | /* new data */ |
| 46 | 46 | Table[hash] = malloc (sizeof (STRTABLE)); |
| 47 | - Table[hash]->pkeyword = strdup (pkeyword); | |
| 48 | - Table[hash]->pmesg = strdup (pmesg); | |
| 47 | + Table[hash]->pkeyword = STRDUP (pkeyword); | |
| 48 | + Table[hash]->pmesg = STRDUP (pmesg); | |
| 49 | 49 | Table[hash]->pnext = NULL; |
| 50 | 50 | } |
| 51 | 51 | else |
| @@ -70,8 +70,8 @@ | ||
| 70 | 70 | if (plast != NULL) |
| 71 | 71 | { |
| 72 | 72 | plast->pnext = malloc (sizeof (STRTABLE)); |
| 73 | - plast->pnext->pkeyword = strdup (pkeyword); | |
| 74 | - plast->pnext->pmesg = strdup (pmesg); | |
| 73 | + plast->pnext->pkeyword = STRDUP (pkeyword); | |
| 74 | + plast->pnext->pmesg = STRDUP (pmesg); | |
| 75 | 75 | plast->pnext->pnext = NULL; |
| 76 | 76 | } |
| 77 | 77 | } |
| @@ -137,7 +137,7 @@ | ||
| 137 | 137 | int result; |
| 138 | 138 | fd_set wfds; |
| 139 | 139 | struct timeval tmout; |
| 140 | - tmout.tv_sec = 1; | |
| 140 | + tmout.tv_sec = 5; | |
| 141 | 141 | tmout.tv_usec = 0; |
| 142 | 142 | FD_ZERO (&wfds); |
| 143 | 143 | FD_SET (handle, &wfds); |
| @@ -186,7 +186,7 @@ | ||
| 186 | 186 | int result; |
| 187 | 187 | fd_set rfds; |
| 188 | 188 | struct timeval tmout; |
| 189 | - tmout.tv_sec = 1; | |
| 189 | + tmout.tv_sec = 5; | |
| 190 | 190 | tmout.tv_usec = 0; |
| 191 | 191 | FD_ZERO (&rfds); |
| 192 | 192 | FD_SET (handle, &rfds); |
| @@ -31,6 +31,9 @@ | ||
| 31 | 31 | #define REQ_SEGMENT_SIZE 512 |
| 32 | 32 | #endif |
| 33 | 33 | |
| 34 | +/* string duplicate function */ | |
| 35 | +#define STRDUP strdup | |
| 36 | + | |
| 34 | 37 | #elif defined(MAKEWIN32) |
| 35 | 38 | #define STRICT |
| 36 | 39 | #include <winsock2.h> |
| @@ -61,6 +64,14 @@ | ||
| 61 | 64 | /* win32 no have 'socklen_t' */ |
| 62 | 65 | #define socklen_t int |
| 63 | 66 | |
| 67 | +/* for Visual C++ */ | |
| 68 | +/* use strtok_s instead of strtok_r */ | |
| 69 | +#define strtok_r strtok_s | |
| 70 | + | |
| 71 | +/* use _strdup instead of strdup */ | |
| 72 | +/* string duplicate function */ | |
| 73 | +#define STRDUP _strdup | |
| 74 | + | |
| 64 | 75 | #else |
| 65 | 76 | #error NEED enviroment-type! |
| 66 | 77 | #endif |