• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

密猟オンラインサーバープログラム


Commit MetaInfo

Revision5 (tree)
Time2016-01-25 17:34:34
Authormanjihq

Log Message

Win32環境下でビルド出来るように修正
(とりあえずVisualStudio2010Expressで通った)
送受信のselectタイムアウトを5秒に増加
(クライアントとの通信に失敗するケースを緩和するため)

Change Summary

Incremental Difference

--- trunk/huntserv.c (revision 4)
+++ trunk/huntserv.c (revision 5)
@@ -715,55 +715,7 @@
715715
716716
717717 /************************************************/
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-}
741718
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-
767719 /* search item for name */
768720 static int
769721 SearchItemForName (const char *p)
@@ -1521,9 +1473,6 @@
15211473 {
15221474 char namebuf[BUFFER_SIZE];
15231475 memcpy (namebuf, User[i].myshop[j].name, USERNAME_LEN);
1524-#ifdef MAKEWIN32
1525- convertH2C (namebuf, USERNAME_LEN);
1526-#endif
15271476 fprintf (optr, "%d,%d,%d,%-.24s\n",
15281477 User[i].myshop[j].build,
15291478 User[i].myshop[j].pos.x, User[i].myshop[j].pos.y,
@@ -1536,9 +1485,6 @@
15361485 memcpy (namebuf,
15371486 Weapon[User[i].myshop[j].list[0][k]].name,
15381487 WEAPONNAME_LEN);
1539-#ifdef MAKEWIN32
1540- convertH2C (namebuf, WEAPONNAME_LEN);
1541-#endif
15421488 fprintf (optr, "%-.24s,%u,%u,%lu\n",
15431489 namebuf,
15441490 User[i].myshop[j].leftuse[0][k],
@@ -1550,9 +1496,6 @@
15501496 memcpy (namebuf,
15511497 Item[User[i].myshop[j].list[1][k]].name,
15521498 ITEMNAME_LEN);
1553-#ifdef MAKEWIN32
1554- convertH2C (namebuf, ITEMNAME_LEN);
1555-#endif
15561499 fprintf (optr, "%-.24s,%u,%u,%lu\n",
15571500 namebuf,
15581501 User[i].myshop[j].leftuse[1][k],
@@ -1616,9 +1559,6 @@
16161559 {
16171560 return -1;
16181561 }
1619-#ifdef MAKEWIN32
1620- convertC2H (namebuf, USERNAME_LEN);
1621-#endif
16221562 for (j = 0; j < USERNAME_LEN && namebuf[0] != '\0'; j++)
16231563 {
16241564 User[nuser].myshop[i].name[j] = namebuf[j];
@@ -1640,9 +1580,6 @@
16401580 {
16411581 return -1;
16421582 }
1643-#ifdef MAKEWIN32
1644- convertC2H (namebuf, WEAPONNAME_LEN);
1645-#endif
16461583 User[nuser].myshop[i].list[0][j] =
16471584 SearchWeaponForName (namebuf);
16481585 if (User[nuser].myshop[i].list[0][j] == 0)
@@ -1661,9 +1598,6 @@
16611598 {
16621599 return -1;
16631600 }
1664-#ifdef MAKEWIN32
1665- convertC2H (namebuf, ITEMNAME_LEN);
1666-#endif
16671601 User[nuser].myshop[i].list[1][j] = SearchItemForName (namebuf);
16681602 if (User[nuser].myshop[i].list[1][j] == 0)
16691603 {
@@ -2185,9 +2119,6 @@
21852119 memset (User[userno].statusinfo, 0, PACKET_MAX);
21862120 memset (User[userno].mapdata, 0, PACKET_MAX);
21872121 memcpy (work, User[userno].name, USERNAME_LEN);
2188-#ifdef MAKEWIN32
2189- convertH2C (work, USERNAME_LEN);
2190-#endif
21912122 printf ("user(%d)[%-.24s] logoff.\n", userno, work);
21922123 User[userno].idletimer = 0;
21932124 }
@@ -2458,9 +2389,6 @@
24582389 {
24592390 int i;
24602391 strncpy (outbuffer, puser, USERNAME_LEN);
2461-#ifdef MAKEWIN32
2462- convertH2C (outbuffer, USERNAME_LEN);
2463-#endif
24642392 for (i = USERNAME_LEN - 1; i >= 0; i--)
24652393 {
24662394 if (outbuffer[i] != ' ')
@@ -2523,9 +2451,6 @@
25232451 FreeMail (pmail);
25242452 break;
25252453 }
2526-#ifdef MAKEWIN32
2527- convertC2H (namebuf, USERNAME_LEN);
2528-#endif
25292454 pmail->fromuser = SearchUser (namebuf);
25302455 if (pmail->fromuser == -1)
25312456 {
@@ -2544,9 +2469,6 @@
25442469 {
25452470 n = PACKET_DATA_MAX - 1;
25462471 }
2547-#ifdef MAKEWIN32
2548- convertC2H (namebuf, n);
2549-#endif
25502472 pmail->subject[0] = n;
25512473 if (n)
25522474 {
@@ -2566,9 +2488,6 @@
25662488 {
25672489 n = PACKET_DATA_MAX - 1;
25682490 }
2569-#ifdef MAKEWIN32
2570- convertC2H (namebuf, n);
2571-#endif
25722491 pmail->message[j][0] = n;
25732492 if (n)
25742493 {
@@ -2620,9 +2539,6 @@
26202539 }
26212540 strncpy (namebuf, User[pmail->fromuser].name, USERNAME_LEN);
26222541 namebuf[USERNAME_LEN] = '\0';
2623-#ifdef MAKEWIN32
2624- convertH2C (namebuf, USERNAME_LEN);
2625-#endif
26262542 fprintf (optr, "%d,%d,%lu\n%-.24s\n",
26272543 pmail->readflag, pmail->line, pmail->timestamp, namebuf);
26282544 n = (unsigned char) (pmail->subject[0]);
@@ -2631,9 +2547,6 @@
26312547 memcpy (work, &pmail->subject[1], n);
26322548 }
26332549 work[n] = '\0';
2634-#ifdef MAKEWIN32
2635- convertH2C (work, n);
2636-#endif
26372550 fprintf (optr, "%s\n", work);
26382551 for (j = 0; j < pmail->line; j++)
26392552 {
@@ -2643,9 +2556,6 @@
26432556 memcpy (work, &pmail->message[j][1], n);
26442557 }
26452558 work[n] = '\0';
2646-#ifdef MAKEWIN32
2647- convertH2C (work, n);
2648-#endif
26492559 fprintf (optr, "%s\n", work);
26502560 }
26512561 }
@@ -2750,9 +2660,6 @@
27502660 FreeMail (pmail);
27512661 break;
27522662 }
2753-#ifdef MAKEWIN32
2754- convertC2H (namebuf, USERNAME_LEN);
2755-#endif
27562663 pmail->fromuser = SearchUser (namebuf);
27572664 if (pmail->fromuser == -1)
27582665 {
@@ -2771,9 +2678,6 @@
27712678 {
27722679 n = PACKET_DATA_MAX - 1;
27732680 }
2774-#ifdef MAKEWIN32
2775- convertC2H (namebuf, n);
2776-#endif
27772681 pmail->subject[0] = n;
27782682 if (n)
27792683 {
@@ -2793,9 +2697,6 @@
27932697 {
27942698 n = PACKET_DATA_MAX - 1;
27952699 }
2796-#ifdef MAKEWIN32
2797- convertC2H (namebuf, n);
2798-#endif
27992700 pmail->message[j][0] = n;
28002701 if (n)
28012702 {
@@ -2847,9 +2748,6 @@
28472748 }
28482749 strncpy (namebuf, User[pmail->fromuser].name, USERNAME_LEN);
28492750 namebuf[USERNAME_LEN] = '\0';
2850-#ifdef MAKEWIN32
2851- convertH2C (namebuf, USERNAME_LEN);
2852-#endif
28532751 fprintf (optr, "%d,%d,%lu\n%-.24s\n",
28542752 pmail->readflag, pmail->line, pmail->timestamp, namebuf);
28552753 n = (unsigned char) (pmail->subject[0]);
@@ -2858,9 +2756,6 @@
28582756 memcpy (work, &pmail->subject[1], n);
28592757 }
28602758 work[n] = '\0';
2861-#ifdef MAKEWIN32
2862- convertH2C (work, n);
2863-#endif
28642759 fprintf (optr, "%s\n", work);
28652760 for (j = 0; j < pmail->line; j++)
28662761 {
@@ -2870,9 +2765,6 @@
28702765 memcpy (work, &pmail->message[j][1], n);
28712766 }
28722767 work[n] = '\0';
2873-#ifdef MAKEWIN32
2874- convertH2C (work, n);
2875-#endif
28762768 fprintf (optr, "%s\n", work);
28772769 }
28782770 }
@@ -2933,9 +2825,6 @@
29332825 {
29342826 break;
29352827 }
2936-#ifdef MAKEWIN32
2937- convertC2H (work, strlen (work));
2938-#endif
29392828 for (j = 0; work[j] != '\0' && j < USERNAME_LEN; j++)
29402829 {
29412830 User[i].name[j] = work[j];
@@ -2954,9 +2843,6 @@
29542843 {
29552844 break;
29562845 }
2957-#ifdef MAKEWIN32
2958- convertC2H (work, strlen (work));
2959-#endif
29602846 for (j = 0; work[j] != '\0' && j < PASSWORD_LEN; j++)
29612847 {
29622848 User[i].password[j] = work[j];
@@ -3012,9 +2898,6 @@
30122898 {
30132899 break;
30142900 }
3015-#ifdef MAKEWIN32
3016- convertC2H (namebuf, strlen (namebuf));
3017-#endif
30182901 User[i].weapon[j] =
30192902 SearchWeaponForNameType (namebuf, User[i].c_type);
30202903 if (User[i].weapon[j])
@@ -3041,9 +2924,6 @@
30412924 {
30422925 break;
30432926 }
3044-#ifdef MAKEWIN32
3045- convertC2H (namebuf, strlen (namebuf));
3046-#endif
30472927 User[i].item[j] = SearchItemForName (namebuf);
30482928 if (User[i].item[j])
30492929 {
@@ -3122,15 +3002,9 @@
31223002 char work[BUFFER_SIZE];
31233003 memcpy (work, User[i].name, USERNAME_LEN);
31243004 work[USERNAME_LEN] = '\0';
3125-#ifdef MAKEWIN32
3126- convertH2C (work, USERNAME_LEN);
3127-#endif
31283005 fprintf (optr, "%-*s\n", USERNAME_LEN, work);
31293006 memcpy (work, User[i].password, PASSWORD_LEN);
31303007 work[PASSWORD_LEN] = '\0';
3131-#ifdef MAKEWIN32
3132- convertH2C (work, PASSWORD_LEN);
3133-#endif
31343008 fprintf (optr, "%-*s\n", PASSWORD_LEN, work);
31353009 fprintf (optr, "%lu\n", User[i].score);
31363010 fprintf (optr, "%d,%d,%d,%d,%d,%d,%d\n", User[i].c_type,
@@ -3142,9 +3016,6 @@
31423016 memcpy (work, Weapon[User[i].weapon[j]].name,
31433017 WEAPONNAME_LEN);
31443018 work[WEAPONNAME_LEN] = '\0';
3145-#ifdef MAKEWIN32
3146- convertH2C (work, WEAPONNAME_LEN);
3147-#endif
31483019 fprintf (optr, "%s,%u\n", work, User[i].bullette[j]);
31493020 }
31503021 for (j = 0; j < ITEM_MAX; j++)
@@ -3151,9 +3022,6 @@
31513022 {
31523023 memcpy (work, Item[User[i].item[j]].name, ITEMNAME_LEN);
31533024 work[ITEMNAME_LEN] = '\0';
3154-#ifdef MAKEWIN32
3155- convertH2C (work, ITEMNAME_LEN);
3156-#endif
31573025 fprintf (optr, "%s,%u\n", work, User[i].itemcount[j]);
31583026 }
31593027 }
@@ -3216,9 +3084,6 @@
32163084 /* can't read data */
32173085 break;
32183086 }
3219-#ifdef MAKEWIN32
3220- convertC2H (namebuf, strlen (namebuf));
3221-#endif
32223087 for (i = 0; namebuf[i] != '\0' && i < ANIMALNAME_LEN; i++)
32233088 {
32243089 p->name[i] = namebuf[i];
@@ -3227,9 +3092,6 @@
32273092 {
32283093 p->name[i] = ' ';
32293094 }
3230-#ifdef MAKEWIN32
3231- convertC2H (inamebuf, strlen (inamebuf));
3232-#endif
32333095 p->forsell_item = SearchItemForName (inamebuf);
32343096 n++;
32353097 }
@@ -3382,9 +3244,6 @@
33823244 /* can't read data */
33833245 break;
33843246 }
3385-#ifdef MAKEWIN32
3386- convertC2H (namebuf, strlen (namebuf));
3387-#endif
33883247 strncpy (p->name, namebuf, WEAPONNAME_LEN);
33893248 p->b_type = (enum bullet_type) b_type;
33903249 n++;
@@ -3447,9 +3306,6 @@
34473306 /* can't read data */
34483307 break;
34493308 }
3450-#ifdef MAKEWIN32
3451- convertC2H (namebuf, strlen (namebuf));
3452-#endif
34533309 strncpy (p->name, namebuf, ITEMNAME_LEN);
34543310 p->id = ntype;
34553311 p->effect = neffect;
@@ -4949,9 +4805,6 @@
49494805 char uname[USERNAME_LEN];
49504806 char work[PASSWORD_LEN];
49514807 memcpy (uname, User[nuser].name, USERNAME_LEN);
4952-#ifdef MAKEWIN32
4953- convertH2C (uname, USERNAME_LEN);
4954-#endif
49554808 printf ("User name:%-16.24s\n", uname);
49564809 for (i = 0; i < PASSWORD_LEN; i++)
49574810 {
@@ -5053,7 +4906,7 @@
50534906 {
50544907 /* illegal system password */
50554908 puts ("system password mismatch");
5056- printf ("Client key[%-16.24s]\n",
4909+ printf ("Client key[%-16.16s]\n",
50574910 packet + 2 + USERNAME_LEN + PASSWORD_LEN + 16);
50584911 SendResultPacket (psession->handle, -1);
50594912 }
@@ -5142,9 +4995,6 @@
51424995 char uname[USERNAME_LEN];
51434996 char work[PASSWORD_LEN];
51444997 memcpy (uname, User[nuser].name, USERNAME_LEN);
5145-#ifdef MAKEWIN32
5146- convertH2C (uname, USERNAME_LEN);
5147-#endif
51484998 printf ("User name:%-16.24s\n", uname);
51494999 for (i = 0; i < PASSWORD_LEN; i++)
51505000 {
@@ -8690,9 +8540,6 @@
86908540 /* perhaps,disconnect session. */
86918541 char work[USERNAME_LEN];
86928542 memcpy (work, User[i].name, USERNAME_LEN);
8693-#ifdef MAKEWIN32
8694- convertH2C (work, USERNAME_LEN);
8695-#endif
86968543 printf ("user(%d)[%-16.24s] no response\n", i, work);
86978544 DisconnectUser (i);
86988545 }
--- trunk/strtable.c (revision 4)
+++ trunk/strtable.c (revision 5)
@@ -44,8 +44,8 @@
4444 {
4545 /* new data */
4646 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);
4949 Table[hash]->pnext = NULL;
5050 }
5151 else
@@ -70,8 +70,8 @@
7070 if (plast != NULL)
7171 {
7272 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);
7575 plast->pnext->pnext = NULL;
7676 }
7777 }
--- trunk/pktio.c (revision 4)
+++ trunk/pktio.c (revision 5)
@@ -137,7 +137,7 @@
137137 int result;
138138 fd_set wfds;
139139 struct timeval tmout;
140- tmout.tv_sec = 1;
140+ tmout.tv_sec = 5;
141141 tmout.tv_usec = 0;
142142 FD_ZERO (&wfds);
143143 FD_SET (handle, &wfds);
@@ -186,7 +186,7 @@
186186 int result;
187187 fd_set rfds;
188188 struct timeval tmout;
189- tmout.tv_sec = 1;
189+ tmout.tv_sec = 5;
190190 tmout.tv_usec = 0;
191191 FD_ZERO (&rfds);
192192 FD_SET (handle, &rfds);
--- trunk/port.h (revision 4)
+++ trunk/port.h (revision 5)
@@ -31,6 +31,9 @@
3131 #define REQ_SEGMENT_SIZE 512
3232 #endif
3333
34+/* string duplicate function */
35+#define STRDUP strdup
36+
3437 #elif defined(MAKEWIN32)
3538 #define STRICT
3639 #include <winsock2.h>
@@ -61,6 +64,14 @@
6164 /* win32 no have 'socklen_t' */
6265 #define socklen_t int
6366
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+
6475 #else
6576 #error NEED enviroment-type!
6677 #endif