summaryrefslogtreecommitdiff
path: root/src/char
diff options
context:
space:
mode:
Diffstat (limited to 'src/char')
-rw-r--r--src/char/Makefile12
-rw-r--r--src/char/char.c385
-rw-r--r--src/char/int_guild.c70
-rw-r--r--src/char/int_party.c41
-rw-r--r--src/char/int_storage.c46
-rw-r--r--src/char/inter.c62
6 files changed, 223 insertions, 393 deletions
diff --git a/src/char/Makefile b/src/char/Makefile
index 5eb4b51..c448627 100644
--- a/src/char/Makefile
+++ b/src/char/Makefile
@@ -1,12 +1,10 @@
include ../../make.defs
-all: char-server
-txt: char-server
+all: char
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o ../common/mt_rand.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/db.h ../common/lock.h ../common/timer.h ../common/malloc.h ../common/mt_rand.h
-char-server: char.o inter.o int_party.o int_guild.o int_storage.o $(COMMON_OBJ)
- $(CC) $(CFLAGS) -o ../../$@ $^
+COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/mt_rand.o
+COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/db.h ../common/lock.h ../common/timer.h ../common/mt_rand.h
+char: char.o inter.o int_party.o int_guild.o int_storage.o $(COMMON_OBJ)
char.o: char.c char.h inter.h $(COMMON_H) ../common/version.h
inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h char.h $(COMMON_H)
@@ -15,4 +13,4 @@ int_guild.o: int_guild.c int_guild.h int_storage.h inter.h char.h $(COMMON_H)
int_storage.o: int_storage.c int_storage.h int_guild.h inter.h char.h $(COMMON_H)
clean:
- rm -f *.o ../../char-server
+ rm -f *.o char
diff --git a/src/char/char.c b/src/char/char.c
index 07b1fb6..59dea17 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -18,12 +18,12 @@
#include <stdarg.h>
#include <sys/wait.h>
-#include "core.h"
-#include "socket.h"
-#include "timer.h"
-#include "mmo.h"
-#include "version.h"
-#include "lock.h"
+#include "../common/core.h"
+#include "../common/socket.h"
+#include "../common/timer.h"
+#include "../common/mmo.h"
+#include "../common/version.h"
+#include "../common/lock.h"
#include "char.h"
#include "inter.h"
@@ -199,7 +199,7 @@ int search_character_index (char *character_name)
for (i = 0; i < char_num; i++)
{
// Without case sensitive check (increase the number of similar character names found)
- if (stricmp (char_dat[i].name, character_name) == 0)
+ if (strcasecmp (char_dat[i].name, character_name) == 0)
{
// Strict comparison (if found, we finish the function immediatly with correct value)
if (strcmp (char_dat[i].name, character_name) == 0)
@@ -427,7 +427,7 @@ int mmo_char_fromstr (char *str, struct mmo_charstatus *p)
}
}
- if (strcmpi (wisp_server_name, p->name) == 0)
+ if (strcasecmp (wisp_server_name, p->name) == 0)
{
printf
("mmo_auth_init: ******WARNING: character name has wisp server name.\n");
@@ -442,7 +442,7 @@ int mmo_char_fromstr (char *str, struct mmo_charstatus *p)
}
if (str[next] == '\n' || str[next] == '\r')
- return 1; // �V�K�f�[�^
+ return 1; // 新規データ
next++;
@@ -557,7 +557,7 @@ int mmo_char_fromstr (char *str, struct mmo_charstatus *p)
for (i = 0;
str[next] && str[next] != '\t' && str[next] != '\n'
&& str[next] != '\r'; i++)
- { // global_reg����ȑO��athena.txt�݊��̂��߈ꉞ'\n'�`�F�b�N
+ { // global_reg実装以前のathena.txt互換のため一応'\n'チェック
if (sscanf
(str + next, "%[^,],%d%n", p->global_reg[i].str,
&p->global_reg[i].value, &len) != 2)
@@ -592,18 +592,8 @@ int mmo_char_init (void)
FILE *fp;
char_max = 256;
- char_dat = calloc (sizeof (struct mmo_charstatus) * 256, 1);
- if (!char_dat)
- {
- printf ("out of memory: mmo_char_init (calloc of char_dat).\n");
- exit (1);
- }
- online_chars = calloc (sizeof (int) * 256, 1);
- if (!online_chars)
- {
- printf ("out of memory: mmo_char_init (calloc of online_chars).\n");
- exit (1);
- }
+ CREATE (char_dat, struct mmo_charstatus, 256);
+ CREATE (online_chars, int, 256);
for (i = 0; i < char_max; i++)
online_chars[i] = -1;
@@ -640,27 +630,8 @@ int mmo_char_init (void)
if (char_num >= char_max)
{
char_max += 256;
- char_dat =
- realloc (char_dat, sizeof (struct mmo_charstatus) * char_max);
- if (!char_dat)
- {
- printf
- ("Out of memory: mmo_char_init (realloc of char_dat).\n");
- char_log
- ("Out of memory: mmo_char_init (realloc of char_dat)."
- RETCODE);
- exit (1);
- }
- online_chars = realloc (online_chars, sizeof (int) * char_max);
- if (!online_chars)
- {
- printf
- ("Out of memory: mmo_char_init (realloc of online_chars).\n");
- char_log
- ("Out of memory: mmo_char_init (realloc of online_chars)."
- RETCODE);
- exit (1);
- }
+ RECREATE (char_dat, struct mmo_charstatus, char_max);
+ RECREATE (online_chars, int, char_max);
for (i = char_max - 256; i < char_max; i++)
online_chars[i] = -1;
}
@@ -829,7 +800,7 @@ void mmo_char_sync (void)
//----------------------------------------------------
// Function to save (in a periodic way) datas in files
//----------------------------------------------------
-int mmo_char_sync_timer (int tid, unsigned int tick, int id, int data)
+void mmo_char_sync_timer (timer_id tid, tick_t tick, custom_id_t id, custom_data_t data)
{
if (pid != 0)
{
@@ -839,14 +810,14 @@ int mmo_char_sync_timer (int tid, unsigned int tick, int id, int data)
// Need to check status too?
if (temp == 0)
{
- return 0;
+ return;
}
}
// This can take a lot of time. Fork a child to handle the work and return at once
// If we're unable to fork just continue running the function normally
if ((pid = fork ()) > 0)
- return 0;
+ return;
mmo_char_sync ();
inter_save ();
@@ -854,8 +825,6 @@ int mmo_char_sync_timer (int tid, unsigned int tick, int id, int data)
// If we're a child we should suicide now.
if (pid == 0)
_exit (0);
-
- return 0;
}
//----------------------------------------------------
@@ -972,7 +941,7 @@ int make_new_char (int fd, unsigned char *dat)
{
if ((name_ignoring_case != 0 && strcmp (char_dat[i].name, dat) == 0)
|| (name_ignoring_case == 0
- && strcmpi (char_dat[i].name, dat) == 0))
+ && strcasecmp (char_dat[i].name, dat) == 0))
{
char_log
("Make new char error (name already exists): (connection #%d, account: %d) slot %d, name: %s (actual name of other char: %s), stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d."
@@ -1009,25 +978,8 @@ int make_new_char (int fd, unsigned char *dat)
if (char_num >= char_max)
{
char_max += 256;
- char_dat =
- realloc (char_dat, sizeof (struct mmo_charstatus) * char_max);
- if (!char_dat)
- {
- printf ("Out of memory: make_new_char (realloc of char_dat).\n");
- char_log ("Out of memory: make_new_char (realloc of char_dat)."
- RETCODE);
- exit (1);
- }
- online_chars = realloc (online_chars, sizeof (int) * char_max);
- if (!online_chars)
- {
- printf
- ("Out of memory: make_new_char (realloc of online_chars).\n");
- char_log
- ("Out of memory: make_new_char (realloc of online_chars)."
- RETCODE);
- exit (1);
- }
+ RECREATE (char_dat, struct mmo_charstatus, char_max);
+ RECREATE (online_chars, int, char_max);
for (j = char_max - 256; j < char_max; j++)
online_chars[j] = -1;
}
@@ -1282,9 +1234,9 @@ void create_online_files (void)
{
char *p_name = char_dat[i].name; //speed up sorting when there are a lot of players. But very rarely players have same name.
for (j = 0; j < players; j++)
- if (stricmp (p_name, char_dat[id[j]].name) < 0 ||
+ if (strcasecmp (p_name, char_dat[id[j]].name) < 0 ||
// if same name, we sort with case sensitive.
- (stricmp (p_name, char_dat[id[j]].name) == 0 &&
+ (strcasecmp (p_name, char_dat[id[j]].name) == 0 &&
strcmp (p_name, char_dat[id[j]].name) < 0))
{
for (k = players; k > j; k--)
@@ -1299,7 +1251,7 @@ void create_online_files (void)
if (char_dat[i].zeny < char_dat[id[j]].zeny ||
// if same number of zenys, we sort by name.
(char_dat[i].zeny == char_dat[id[j]].zeny &&
- stricmp (char_dat[i].name,
+ strcasecmp (char_dat[i].name,
char_dat[id[j]].name) < 0))
{
for (k = players; k > j; k--)
@@ -1348,10 +1300,10 @@ void create_online_files (void)
{
int cpm_result; // A lot of player maps are identical. So, test if done often twice.
for (j = 0; j < players; j++)
- if ((cpm_result = strcmp (char_dat[i].last_point.map, char_dat[id[j]].last_point.map)) < 0 || // no map are identical and with upper cases (not use stricmp)
+ if ((cpm_result = strcmp (char_dat[i].last_point.map, char_dat[id[j]].last_point.map)) < 0 || // no map are identical and with upper cases (not use strcasecmp)
// if same map name, we sort by name.
(cpm_result == 0 &&
- stricmp (char_dat[i].name,
+ strcasecmp (char_dat[i].name,
char_dat[id[j]].name) < 0))
{
for (k = players; k > j; k--)
@@ -1851,17 +1803,17 @@ int disconnect_player (int accound_id)
return 0;
}
-// �L�����폜�ɔ����f�[�^�폜
+// キャラ削除に伴うデータ削除
static int char_delete (struct mmo_charstatus *cs)
{
- // �M���h�E��
+ // ギルド脱退
if (cs->guild_id)
inter_guild_leave (cs->guild_id, cs->account_id, cs->char_id);
- // �p�[�e�B�[�E��
+ // パーティー脱退
if (cs->party_id)
inter_party_leave (cs->party_id, cs->account_id);
- // ����
+ // 離婚
if (cs->partner_id)
char_divorce (cs);
@@ -1876,7 +1828,7 @@ static int char_delete (struct mmo_charstatus *cs)
return 0;
}
-int parse_tologin (int fd)
+void parse_tologin (int fd)
{
int i;
struct char_session_data *sd;
@@ -1894,7 +1846,7 @@ int parse_tologin (int fd)
}
close (fd);
delete_session (fd);
- return 0;
+ return;
}
sd = session[fd]->session_data;
@@ -1907,7 +1859,7 @@ int parse_tologin (int fd)
{
case 0x2711:
if (RFIFOREST (fd) < 3)
- return 0;
+ return;
if (RFIFOB (fd, 2))
{
// printf("connect login server error : %d\n", RFIFOB(fd,2));
@@ -1936,7 +1888,7 @@ int parse_tologin (int fd)
case 0x2713:
if (RFIFOREST (fd) < 51)
- return 0;
+ return;
// printf("parse_tologin 2713 : %d\n", RFIFOB(fd,6));
for (i = 0; i < fd_max; i++)
{
@@ -1980,7 +1932,7 @@ int parse_tologin (int fd)
// Receiving of an e-mail/time limit from the login-server (answer of a request because a player comes back from map-server to char-server) by [Yor]
case 0x2717:
if (RFIFOREST (fd) < 50)
- return 0;
+ return;
for (i = 0; i < fd_max; i++)
{
if (session[i] && (sd = session[i]->session_data))
@@ -2000,7 +1952,7 @@ int parse_tologin (int fd)
case 0x2721: // gm reply
if (RFIFOREST (fd) < 10)
- return 0;
+ return;
{
unsigned char buf[10];
WBUFW (buf, 0) = 0x2b0b;
@@ -2014,7 +1966,7 @@ int parse_tologin (int fd)
case 0x2723: // changesex reply (modified by [Yor])
if (RFIFOREST (fd) < 7)
- return 0;
+ return;
{
int acc, sex, i, j;
unsigned char buf[7];
@@ -2079,7 +2031,7 @@ int parse_tologin (int fd)
case 0x2726: // Request to send a broadcast message (no answer)
if (RFIFOREST (fd) < 8
|| RFIFOREST (fd) < (8 + RFIFOL (fd, 4)))
- return 0;
+ return;
if (RFIFOL (fd, 4) < 1)
char_log
("Receiving a message for broadcast, but message is void."
@@ -2163,10 +2115,10 @@ int parse_tologin (int fd)
RFIFOSKIP (fd, 8 + RFIFOL (fd, 4));
break;
- // account_reg2�ύX�ʒm
+ // account_reg2変更通知
case 0x2729:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
{
struct global_reg reg[ACCOUNT_REG2_NUM];
unsigned char buf[4096];
@@ -2180,7 +2132,7 @@ int parse_tologin (int fd)
reg[j].value = RFIFOL (fd, p + 32);
}
set_account_reg2 (acc, j, reg);
- // ���C���O�C�����֎~���Ă����Α����K�v�͖���
+ // 同垢ログインを禁止していれば送る必要は無い
memcpy (buf, RFIFOP (fd, 0), RFIFOW (fd, 2));
WBUFW (buf, 0) = 0x2b11;
mapif_sendall (buf, WBUFW (buf, 2));
@@ -2192,7 +2144,7 @@ int parse_tologin (int fd)
case 0x7924:
{ // [Fate] Itemfrob package: forwarded from login-server
if (RFIFOREST (fd) < 10)
- return 0;
+ return;
int source_id = RFIFOL (fd, 2);
int dest_id = RFIFOL (fd, 6);
unsigned char buf[10];
@@ -2240,7 +2192,7 @@ int parse_tologin (int fd)
// Account deletion notification (from login-server)
case 0x2730:
if (RFIFOREST (fd) < 6)
- return 0;
+ return;
// Deletion of all characters of the account
for (i = 0; i < char_num; i++)
{
@@ -2302,7 +2254,7 @@ int parse_tologin (int fd)
// State change of account/ban notification (from login-server) by [Yor]
case 0x2731:
if (RFIFOREST (fd) < 11)
- return 0;
+ return;
// send to all map-servers to disconnect the player
{
unsigned char buf[11];
@@ -2320,14 +2272,12 @@ int parse_tologin (int fd)
// Receiving GM acounts info from login-server (by [Yor])
case 0x2732:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
{
char buf[32000];
if (gm_account != NULL)
free (gm_account);
- gm_account =
- calloc (sizeof (struct gm_account) *
- ((RFIFOW (fd, 2) - 4) / 5), 1);
+ CREATE (gm_account, struct gm_account, (RFIFOW (fd, 2) - 4) / 5);
GM_num = 0;
for (i = 4; i < RFIFOW (fd, 2); i = i + 5)
{
@@ -2353,7 +2303,7 @@ int parse_tologin (int fd)
case 0x2741: // change password reply
if (RFIFOREST (fd) < 7)
- return 0;
+ return;
{
int acc, status, i;
acc = RFIFOL (fd, 2);
@@ -2378,18 +2328,16 @@ int parse_tologin (int fd)
default:
session[fd]->eof = 1;
- return 0;
+ return;
}
}
RFIFOFLUSH (fd);
-
- return 0;
}
//--------------------------------
// Map-server anti-freeze system
//--------------------------------
-int map_anti_freeze_system (int tid, unsigned int tick, int id, int data)
+void map_anti_freeze_system (timer_id tid, tick_t tick, custom_id_t id, custom_data_t data)
{
int i;
@@ -2411,11 +2359,9 @@ int map_anti_freeze_system (int tid, unsigned int tick, int id, int data)
}
}
}
-
- return 0;
}
-int parse_frommap (int fd)
+void parse_frommap (int fd)
{
int i, j;
int id;
@@ -2438,7 +2384,7 @@ int parse_frommap (int fd)
}
close (fd);
delete_session (fd);
- return 0;
+ return;
}
while (RFIFOREST (fd) >= 2)
@@ -2461,7 +2407,7 @@ int parse_frommap (int fd)
// Receiving map names list from the map-server
case 0x2afa:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
memset (server[id].map, 0, sizeof (server[id].map));
j = 0;
for (i = 4; i < RFIFOW (fd, 2); i += 16)
@@ -2528,10 +2474,10 @@ int parse_frommap (int fd)
RFIFOSKIP (fd, RFIFOW (fd, 2));
break;
- // �F�ؗv��
+ // 認証要求
case 0x2afc:
if (RFIFOREST (fd) < 22)
- return 0;
+ return;
//printf("auth_fifo search: account: %d, char: %d, secure: %08x-%08x\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14));
for (i = 0; i < AUTH_FIFO_SIZE; i++)
{
@@ -2578,10 +2524,10 @@ int parse_frommap (int fd)
RFIFOSKIP (fd, 22);
break;
- // MAP�T�[�o�[���̃��[�U�[�����M
+ // MAPサーバー上のユーザー数受信
case 0x2aff:
if (RFIFOREST (fd) < 6 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
server[id].users = RFIFOW (fd, 4);
if (anti_freeze_enable)
server_freezeflag[id] = 5; // Map anti-freeze system. Counter. 5 ok, 4...0 freezed
@@ -2610,10 +2556,10 @@ int parse_frommap (int fd)
RFIFOSKIP (fd, 6 + i * 4);
break;
- // �L�����f�[�^�ۑ�
+ // キャラデータ保存
case 0x2b01:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
for (i = 0; i < char_num; i++)
{
if (char_dat[i].account_id == RFIFOL (fd, 4) &&
@@ -2626,10 +2572,10 @@ int parse_frommap (int fd)
RFIFOSKIP (fd, RFIFOW (fd, 2));
break;
- // �L�����Z���v��
+ // キャラセレ要求
case 0x2b02:
if (RFIFOREST (fd) < 18)
- return 0;
+ return;
if (auth_fifo_pos >= AUTH_FIFO_SIZE)
auth_fifo_pos = 0;
//printf("auth_fifo set (auth #%d) - account: %d, secure: %08x-%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
@@ -2649,10 +2595,10 @@ int parse_frommap (int fd)
RFIFOSKIP (fd, 18);
break;
- // �}�b�v�T�[�o�[�Ԉړ��v��
+ // マップサーバー間移動要求
case 0x2b05:
if (RFIFOREST (fd) < 49)
- return 0;
+ return;
if (auth_fifo_pos >= AUTH_FIFO_SIZE)
auth_fifo_pos = 0;
WFIFOW (fd, 0) = 0x2b06;
@@ -2681,10 +2627,10 @@ int parse_frommap (int fd)
RFIFOSKIP (fd, 49);
break;
- // �L����������
+ // キャラ名検索
case 0x2b08:
if (RFIFOREST (fd) < 6)
- return 0;
+ return;
for (i = 0; i < char_num; i++)
{
if (char_dat[i].char_id == RFIFOL (fd, 2))
@@ -2703,7 +2649,7 @@ int parse_frommap (int fd)
// it is a request to become GM
case 0x2b0a:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
// printf("parse_frommap: change gm -> login, account: %d, pass: '%s'.\n", RFIFOL(fd,4), RFIFOP(fd,8));
if (login_fd > 0)
{ // don't send request if no login-server
@@ -2725,7 +2671,7 @@ int parse_frommap (int fd)
// Map server send information to change an email of an account -> login-server
case 0x2b0c:
if (RFIFOREST (fd) < 86)
- return 0;
+ return;
if (login_fd > 0)
{ // don't send request if no login-server
memcpy (WFIFOP (login_fd, 0), RFIFOP (fd, 0), 86); // 0x2722 <account_id>.L <actual_e-mail>.40B <new_e-mail>.40B
@@ -2738,7 +2684,7 @@ int parse_frommap (int fd)
// Map server ask char-server about a character name to do some operations (all operations are transmitted to login-server)
case 0x2b0e:
if (RFIFOREST (fd) < 44)
- return 0;
+ return;
{
char character_name[24];
int acc = RFIFOL (fd, 2); // account_id of who ask (-1 if nobody)
@@ -2874,10 +2820,10 @@ int parse_frommap (int fd)
// case 0x2b0f: not more used (available for futur usage)
- // account_reg�ۑ��v��
+ // account_reg保存要求
case 0x2b10:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
- return 0;
+ return;
{
struct global_reg reg[ACCOUNT_REG2_NUM];
int p, acc;
@@ -2890,15 +2836,15 @@ int parse_frommap (int fd)
reg[j].value = RFIFOL (fd, p + 32);
}
set_account_reg2 (acc, j, reg);
- // login�T�[�o�[�֑���
+ // loginサーバーへ送る
if (login_fd > 0)
{ // don't send request if no login-server
- WFIFOW (login_fd, 0) = 0x2728;
memcpy (WFIFOP (login_fd, 0), RFIFOP (fd, 0),
RFIFOW (fd, 2));
+ WFIFOW (login_fd, 0) = 0x2728;
WFIFOSET (login_fd, WFIFOW (login_fd, 2));
}
- // ���[���h�ւ̓��C���O�C�����Ȃ�����map�T�[�o�[�ɑ����K�v�͂Ȃ�
+ // ワールドへの同垢ログインがなければmapサーバーに送る必要はない
//memcpy(buf, RFIFOP(fd,0), RFIFOW(fd,2));
//WBUFW(buf,0) = 0x2b11;
//mapif_sendall(buf, WBUFW(buf,2));
@@ -2910,7 +2856,7 @@ int parse_frommap (int fd)
// Map server is requesting a divorce
case 0x2b16:
if (RFIFOREST (fd) < 4)
- return 0;
+ return;
{
for (i = 0; i < char_num; i++)
if (char_dat[i].char_id == RFIFOL (fd, 2))
@@ -2925,23 +2871,22 @@ int parse_frommap (int fd)
}
default:
- // inter server�����ɓn��
+ // inter server処理に渡す
{
int r = inter_parse_frommap (fd);
- if (r == 1) // �����ł���
+ if (r == 1) // 処理できた
break;
- if (r == 2) // �p�P�b�g���������Ȃ�
- return 0;
+ if (r == 2) // パケット長が足りない
+ return;
}
- // inter server�����ł��Ȃ��ꍇ�͐ؒf
+ // inter server処理でもない場合は切断
printf
("char: unknown packet 0x%04x (%d bytes to read in buffer)! (from map).\n",
RFIFOW (fd, 0), RFIFOREST (fd));
session[fd]->eof = 1;
- return 0;
+ return;
}
}
- return 0;
}
int search_mapserver (char *map)
@@ -2971,7 +2916,7 @@ int search_mapserver (char *map)
return -1;
}
-// char_mapif�̏����������i���݂�inter_mapif�������̂݁j
+// char_mapifの初期化処理(現在はinter_mapif初期化のみ)
static int char_mapif_init (int fd)
{
return inter_mapif_init (fd);
@@ -3002,7 +2947,7 @@ int lan_ip_check (unsigned char *p)
return lancheck;
}
-int parse_char (int fd)
+void parse_char (int fd)
{
int i, ch;
char email[40];
@@ -3015,7 +2960,7 @@ int parse_char (int fd)
login_fd = -1;
close (fd);
delete_session (fd);
- return 0;
+ return;
}
sd = session[fd]->session_data;
@@ -3027,15 +2972,15 @@ int parse_char (int fd)
switch (RFIFOW (fd, 0))
{
- case 0x20b: //20040622�Í���ragexe�Ή�
+ case 0x20b: //20040622暗号化ragexe対応
if (RFIFOREST (fd) < 19)
- return 0;
+ return;
RFIFOSKIP (fd, 19);
break;
case 0x61: // change password request
if (RFIFOREST (fd) < 50)
- return 0;
+ return;
{
WFIFOW (login_fd, 0) = 0x2740;
WFIFOL (login_fd, 2) = sd->account_id;
@@ -3046,9 +2991,9 @@ int parse_char (int fd)
RFIFOSKIP (fd, 50);
break;
- case 0x65: // �ڑ��v��
+ case 0x65: // 接続要求
if (RFIFOREST (fd) < 17)
- return 0;
+ return;
{
int GM_value;
if ((GM_value = isGM (RFIFOL (fd, 2))))
@@ -3060,9 +3005,8 @@ int parse_char (int fd)
RFIFOL (fd, 2));
if (sd == NULL)
{
- sd = session[fd]->session_data =
- calloc (sizeof (struct char_session_data), 1);
- memset (sd, 0, sizeof (struct char_session_data));
+ CREATE (sd, struct char_session_data, 1);
+ session[fd]->session_data = sd;
memcpy (sd->email, "no mail", 40); // put here a mail without '@' to refuse deletion if we don't receive the e-mail
sd->connect_until_time = 0; // unknow or illimited (not displaying on map-server)
}
@@ -3139,9 +3083,9 @@ int parse_char (int fd)
RFIFOSKIP (fd, 17);
break;
- case 0x66: // �L�����I��
+ case 0x66: // キャラ選択
if (!sd || RFIFOREST (fd) < 3)
- return 0;
+ return;
char ip[16];
unsigned char *sin_addr =
@@ -3309,9 +3253,9 @@ int parse_char (int fd)
RFIFOSKIP (fd, 3);
break;
- case 0x67: // �쐬
+ case 0x67: // 作成
if (!sd || RFIFOREST (fd) < 37)
- return 0;
+ return;
i = make_new_char (fd, RFIFOP (fd, 2));
if (i < 0)
{
@@ -3386,7 +3330,7 @@ int parse_char (int fd)
case 0x68: // delete char //Yor's Fix
if (!sd || RFIFOREST (fd) < 46)
- return 0;
+ return;
memcpy (email, RFIFOP (fd, 6), 40);
if (e_mail_check (email) == 0)
strncpy (email, "a@a.com", 40); // default e-mail
@@ -3440,7 +3384,7 @@ int parse_char (int fd)
}
else
{
- /*if (strcmpi(email, sd->email) != 0) { // if it's an invalid email
+ /*if (strcasecmp(email, sd->email) != 0) { // if it's an invalid email
* WFIFOW(fd, 0) = 0x70;
* WFIFOB(fd, 2) = 0; // 00 = Incorrect Email address
* WFIFOSET(fd, 3);
@@ -3510,9 +3454,9 @@ int parse_char (int fd)
}
break;
- case 0x2af8: // �}�b�v�T�[�o�[���O�C��
+ case 0x2af8: // マップサーバーログイン
if (RFIFOREST (fd) < 60)
- return 0;
+ return;
WFIFOW (fd, 0) = 0x2af9;
for (i = 0; i < MAX_MAP_SERVERS; i++)
{
@@ -3555,17 +3499,17 @@ int parse_char (int fd)
}
WFIFOW (fd, 2) = len;
WFIFOSET (fd, len);
- return 0;
+ return;
}
break;
- case 0x187: // Alive�M���H
+ case 0x187: // Alive信号?
if (RFIFOREST (fd) < 6)
- return 0;
+ return;
RFIFOSKIP (fd, 6);
break;
- case 0x7530: // Athena���񏊓�
+ case 0x7530: // Athena情報所得
WFIFOW (fd, 0) = 0x7531;
WFIFOB (fd, 2) = ATHENA_MAJOR_VERSION;
WFIFOB (fd, 3) = ATHENA_MINOR_VERSION;
@@ -3576,22 +3520,20 @@ int parse_char (int fd)
WFIFOW (fd, 8) = ATHENA_MOD_VERSION;
WFIFOSET (fd, 10);
RFIFOSKIP (fd, 2);
- return 0;
+ return;
- case 0x7532: // �ڑ��̐ؒf(default�Ə����͈ꏏ���������I�ɂ��邽��)
+ case 0x7532: // 接続の切断(defaultと処理は一緒だが明示的にするため)
session[fd]->eof = 1;
- return 0;
+ return;
default:
session[fd]->eof = 1;
- return 0;
+ return;
}
}
- RFIFOFLUSH (fd);
- return 0;
}
-// �S�Ă�MAP�T�[�o�[�Ƀf�[�^���M�i���M����map�I�̐����Ԃ��j
+// 全てのMAPサーバーにデータ送信(送信したmap鯖の数を返す)
int mapif_sendall (char *buf, unsigned int len)
{
int i, c;
@@ -3610,7 +3552,7 @@ int mapif_sendall (char *buf, unsigned int len)
return c;
}
-// �����ȊO�̑S�Ă�MAP�T�[�o�[�Ƀf�[�^���M�i���M����map�I�̐����Ԃ��j
+// 自分以外の全てのMAPサーバーにデータ送信(送信したmap鯖の数を返す)
int mapif_sendallwos (int sfd, unsigned char *buf, unsigned int len)
{
int i, c;
@@ -3629,7 +3571,7 @@ int mapif_sendallwos (int sfd, unsigned char *buf, unsigned int len)
return c;
}
-// MAP�T�[�o�[�Ƀf�[�^���M�imap�I�����m�F�L���j
+// MAPサーバーにデータ送信(map鯖生存確認有り)
int mapif_send (int fd, unsigned char *buf, unsigned int len)
{
int i;
@@ -3649,7 +3591,7 @@ int mapif_send (int fd, unsigned char *buf, unsigned int len)
return 0;
}
-int send_users_tologin (int tid, unsigned int tick, int id, int data)
+void send_users_tologin (timer_id tid, tick_t tick, custom_id_t id, custom_data_t data)
{
int users = count_users ();
char buf[16];
@@ -3665,17 +3607,15 @@ int send_users_tologin (int tid, unsigned int tick, int id, int data)
WBUFW (buf, 0) = 0x2b00;
WBUFL (buf, 2) = users;
mapif_sendall (buf, 6);
-
- return 0;
}
-int check_connect_login_server (int tid, unsigned int tick, int id, int data)
+void check_connect_login_server (timer_id tid, tick_t tick, custom_id_t id, custom_data_t data)
{
if (login_fd <= 0 || session[login_fd] == NULL)
{
printf ("Attempt to connect to login-server...\n");
if ((login_fd = make_connection (login_ip, login_port)) < 0)
- return 0;
+ return;
session[login_fd]->func_parse = parse_tologin;
realloc_fifo (login_fd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK);
WFIFOW (login_fd, 0) = 0x2710;
@@ -3696,21 +3636,20 @@ int check_connect_login_server (int tid, unsigned int tick, int id, int data)
WFIFOW (login_fd, 84) = char_new;
WFIFOSET (login_fd, 86);
}
- return 0;
}
//----------------------------------------------------------
// Return numerical value of a switch configuration by [Yor]
-// on/off, english, fran�ais, deutsch, espanol
+// on/off, english, français, deutsch, español
//----------------------------------------------------------
int config_switch (const char *str)
{
- if (strcmpi (str, "on") == 0 || strcmpi (str, "yes") == 0
- || strcmpi (str, "oui") == 0 || strcmpi (str, "ja") == 0
- || strcmpi (str, "si") == 0)
+ if (strcasecmp (str, "on") == 0 || strcasecmp (str, "yes") == 0
+ || strcasecmp (str, "oui") == 0 || strcasecmp (str, "ja") == 0
+ || strcasecmp (str, "si") == 0)
return 1;
- if (strcmpi (str, "off") == 0 || strcmpi (str, "no") == 0
- || strcmpi (str, "non") == 0 || strcmpi (str, "nein") == 0)
+ if (strcasecmp (str, "off") == 0 || strcasecmp (str, "no") == 0
+ || strcasecmp (str, "non") == 0 || strcasecmp (str, "nein") == 0)
return 0;
return atoi (str);
@@ -3756,7 +3695,7 @@ int lan_config_read (const char *lancfgName)
remove_control_chars (w1);
remove_control_chars (w2);
- if (strcmpi (w1, "lan_map_ip") == 0)
+ if (strcasecmp (w1, "lan_map_ip") == 0)
{ // Read map-server Lan IP Address
h = gethostbyname (w2);
if (h != NULL)
@@ -3774,7 +3713,7 @@ int lan_config_read (const char *lancfgName)
}
printf ("LAN IP of map-server: %s.\n", lan_map_ip);
}
- else if (strcmpi (w1, "subnet") == 0)
+ else if (strcasecmp (w1, "subnet") == 0)
{ // Read Subnetwork
for (j = 0; j < 4; j++)
subneti[j] = 0;
@@ -3792,7 +3731,7 @@ int lan_config_read (const char *lancfgName)
printf ("Sub-network of the map-server: %d.%d.%d.%d.\n",
subneti[0], subneti[1], subneti[2], subneti[3]);
}
- else if (strcmpi (w1, "subnetmask") == 0)
+ else if (strcasecmp (w1, "subnetmask") == 0)
{ // Read Subnetwork Mask
for (j = 0; j < 4; j++)
subnetmaski[j] = 255;
@@ -3859,21 +3798,21 @@ int char_config_read (const char *cfgName)
remove_control_chars (w1);
remove_control_chars (w2);
- if (strcmpi (w1, "userid") == 0)
+ if (strcasecmp (w1, "userid") == 0)
{
memcpy (userid, w2, 24);
}
- else if (strcmpi (w1, "passwd") == 0)
+ else if (strcasecmp (w1, "passwd") == 0)
{
memcpy (passwd, w2, 24);
}
- else if (strcmpi (w1, "server_name") == 0)
+ else if (strcasecmp (w1, "server_name") == 0)
{
memcpy (server_name, w2, sizeof (server_name));
server_name[sizeof (server_name) - 1] = '\0';
printf ("%s server has been intialized\n", w2);
}
- else if (strcmpi (w1, "wisp_server_name") == 0)
+ else if (strcasecmp (w1, "wisp_server_name") == 0)
{
if (strlen (w2) >= 4)
{
@@ -3881,7 +3820,7 @@ int char_config_read (const char *cfgName)
wisp_server_name[sizeof (wisp_server_name) - 1] = '\0';
}
}
- else if (strcmpi (w1, "login_ip") == 0)
+ else if (strcasecmp (w1, "login_ip") == 0)
{
h = gethostbyname (w2);
if (h != NULL)
@@ -3900,11 +3839,11 @@ int char_config_read (const char *cfgName)
else
memcpy (login_ip_str, w2, 16);
}
- else if (strcmpi (w1, "login_port") == 0)
+ else if (strcasecmp (w1, "login_port") == 0)
{
login_port = atoi (w2);
}
- else if (strcmpi (w1, "char_ip") == 0)
+ else if (strcasecmp (w1, "char_ip") == 0)
{
h = gethostbyname (w2);
if (h != NULL)
@@ -3923,51 +3862,51 @@ int char_config_read (const char *cfgName)
else
memcpy (char_ip_str, w2, 16);
}
- else if (strcmpi (w1, "char_port") == 0)
+ else if (strcasecmp (w1, "char_port") == 0)
{
char_port = atoi (w2);
}
- else if (strcmpi (w1, "char_maintenance") == 0)
+ else if (strcasecmp (w1, "char_maintenance") == 0)
{
char_maintenance = atoi (w2);
}
- else if (strcmpi (w1, "char_new") == 0)
+ else if (strcasecmp (w1, "char_new") == 0)
{
char_new = atoi (w2);
}
- else if (strcmpi (w1, "email_creation") == 0)
+ else if (strcasecmp (w1, "email_creation") == 0)
{
email_creation = config_switch (w2);
}
- else if (strcmpi (w1, "char_txt") == 0)
+ else if (strcasecmp (w1, "char_txt") == 0)
{
strcpy (char_txt, w2);
}
- else if (strcmpi (w1, "backup_txt") == 0)
+ else if (strcasecmp (w1, "backup_txt") == 0)
{ //By zanetheinsane
strcpy (backup_txt, w2);
}
- else if (strcmpi (w1, "backup_txt_flag") == 0)
+ else if (strcasecmp (w1, "backup_txt_flag") == 0)
{ // The backup_txt file was created because char deletion bug existed. Now it's finish and that take a lot of time to create a second file when there are a lot of characters. By [Yor]
backup_txt_flag = config_switch (w2);
}
- else if (strcmpi (w1, "max_connect_user") == 0)
+ else if (strcasecmp (w1, "max_connect_user") == 0)
{
max_connect_user = atoi (w2);
if (max_connect_user < 0)
max_connect_user = 0; // unlimited online players
}
- else if (strcmpi (w1, "check_ip_flag") == 0)
+ else if (strcasecmp (w1, "check_ip_flag") == 0)
{
check_ip_flag = config_switch (w2);
}
- else if (strcmpi (w1, "autosave_time") == 0)
+ else if (strcasecmp (w1, "autosave_time") == 0)
{
autosave_interval = atoi (w2) * 1000;
if (autosave_interval <= 0)
autosave_interval = DEFAULT_AUTOSAVE_INTERVAL;
}
- else if (strcmpi (w1, "start_point") == 0)
+ else if (strcasecmp (w1, "start_point") == 0)
{
char map[32];
int x, y;
@@ -3980,85 +3919,85 @@ int char_config_read (const char *cfgName)
start_point.y = y;
}
}
- else if (strcmpi (w1, "start_zeny") == 0)
+ else if (strcasecmp (w1, "start_zeny") == 0)
{
start_zeny = atoi (w2);
if (start_zeny < 0)
start_zeny = 0;
}
- else if (strcmpi (w1, "start_weapon") == 0)
+ else if (strcasecmp (w1, "start_weapon") == 0)
{
start_weapon = atoi (w2);
if (start_weapon < 0)
start_weapon = 0;
}
- else if (strcmpi (w1, "start_armor") == 0)
+ else if (strcasecmp (w1, "start_armor") == 0)
{
start_armor = atoi (w2);
if (start_armor < 0)
start_armor = 0;
}
- else if (strcmpi (w1, "unknown_char_name") == 0)
+ else if (strcasecmp (w1, "unknown_char_name") == 0)
{
strcpy (unknown_char_name, w2);
unknown_char_name[24] = 0;
}
- else if (strcmpi (w1, "char_log_filename") == 0)
+ else if (strcasecmp (w1, "char_log_filename") == 0)
{
strcpy (char_log_filename, w2);
}
- else if (strcmpi (w1, "name_ignoring_case") == 0)
+ else if (strcasecmp (w1, "name_ignoring_case") == 0)
{
name_ignoring_case = config_switch (w2);
}
- else if (strcmpi (w1, "char_name_option") == 0)
+ else if (strcasecmp (w1, "char_name_option") == 0)
{
char_name_option = atoi (w2);
}
- else if (strcmpi (w1, "char_name_letters") == 0)
+ else if (strcasecmp (w1, "char_name_letters") == 0)
{
strcpy (char_name_letters, w2);
// online files options
}
- else if (strcmpi (w1, "online_txt_filename") == 0)
+ else if (strcasecmp (w1, "online_txt_filename") == 0)
{
strcpy (online_txt_filename, w2);
}
- else if (strcmpi (w1, "online_html_filename") == 0)
+ else if (strcasecmp (w1, "online_html_filename") == 0)
{
strcpy (online_html_filename, w2);
}
- else if (strcmpi (w1, "online_sorting_option") == 0)
+ else if (strcasecmp (w1, "online_sorting_option") == 0)
{
online_sorting_option = atoi (w2);
}
- else if (strcmpi (w1, "online_display_option") == 0)
+ else if (strcasecmp (w1, "online_display_option") == 0)
{
online_display_option = atoi (w2);
}
- else if (strcmpi (w1, "online_gm_display_min_level") == 0)
+ else if (strcasecmp (w1, "online_gm_display_min_level") == 0)
{ // minimum GM level to display 'GM' when we want to display it
online_gm_display_min_level = atoi (w2);
if (online_gm_display_min_level < 5) // send online file every 5 seconds to player is enough
online_gm_display_min_level = 5;
}
- else if (strcmpi (w1, "online_refresh_html") == 0)
+ else if (strcasecmp (w1, "online_refresh_html") == 0)
{
online_refresh_html = atoi (w2);
if (online_refresh_html < 1)
online_refresh_html = 1;
}
- else if (strcmpi (w1, "anti_freeze_enable") == 0)
+ else if (strcasecmp (w1, "anti_freeze_enable") == 0)
{
anti_freeze_enable = config_switch (w2);
}
- else if (strcmpi (w1, "anti_freeze_interval") == 0)
+ else if (strcasecmp (w1, "anti_freeze_interval") == 0)
{
ANTI_FREEZE_INTERVAL = atoi (w2);
if (ANTI_FREEZE_INTERVAL < 5)
ANTI_FREEZE_INTERVAL = 5; // minimum 5 seconds
}
- else if (strcmpi (w1, "import") == 0)
+ else if (strcasecmp (w1, "import") == 0)
{
char_config_read (w2);
}
@@ -4068,7 +4007,7 @@ int char_config_read (const char *cfgName)
return 0;
}
-void do_final (void)
+void term_func (void)
{
int i;
@@ -4117,17 +4056,16 @@ int do_init (int argc, char **argv)
update_online = time (NULL);
create_online_files (); // update online players files at start of the server
- inter_init ((argc > 2) ? argv[2] : inter_cfgName); // inter server ������
+ inter_init ((argc > 2) ? argv[2] : inter_cfgName); // inter server 初期化
- set_termfunc (do_final);
+// set_termfunc (do_final);
set_defaultparse (parse_char);
char_fd = make_listen_port (char_port);
- add_timer_func_list (check_connect_login_server,
- "check_connect_login_server");
- add_timer_func_list (send_users_tologin, "send_users_tologin");
- add_timer_func_list (mmo_char_sync_timer, "mmo_char_sync_timer");
+// add_timer_func_list (check_connect_login_server, "check_connect_login_server");
+// add_timer_func_list (send_users_tologin, "send_users_tologin");
+// add_timer_func_list (mmo_char_sync_timer, "mmo_char_sync_timer");
i = add_timer_interval (gettick () + 1000, check_connect_login_server, 0,
0, 10 * 1000);
@@ -4138,8 +4076,7 @@ int do_init (int argc, char **argv)
if (anti_freeze_enable > 0)
{
- add_timer_func_list (map_anti_freeze_system,
- "map_anti_freeze_system");
+// add_timer_func_list (map_anti_freeze_system, "map_anti_freeze_system");
i = add_timer_interval (gettick () + 1000, map_anti_freeze_system, 0, 0, ANTI_FREEZE_INTERVAL * 1000); // checks every X seconds user specifies
}
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index 5b4fe30..9715700 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -2,11 +2,11 @@
#include "inter.h"
#include "int_guild.h"
#include "int_storage.h"
-#include "mmo.h"
+#include "../common/mmo.h"
#include "char.h"
-#include "socket.h"
-#include "db.h"
-#include "lock.h"
+#include "../common/socket.h"
+#include "../common/db.h"
+#include "../common/lock.h"
#include <string.h>
#include <stdio.h>
@@ -30,7 +30,7 @@ int guild_calcinfo (struct guild *g);
int mapif_guild_basicinfochanged (int guild_id, int type, const void *data,
int len);
int mapif_guild_info (int fd, struct guild *g);
-int guild_break_sub (void *key, void *data, va_list ap);
+void guild_break_sub (db_key_t key, db_val_t data, va_list ap);
// ギルドデータの文字列への変換
int inter_guild_tostr (char *str, struct guild *g)
@@ -448,14 +448,7 @@ int inter_guild_init ()
guild_newid = i;
continue;
}
-
- g = calloc (sizeof (struct guild), 1);
- if (g == NULL)
- {
- printf ("int_guild: out of memory!\n");
- exit (0);
- }
- memset (g, 0, sizeof (struct guild));
+ CREATE (g, struct guild, 1);
if (inter_guild_fromstr (line, g) == 0 && g->guild_id > 0)
{
if (g->guild_id >= guild_newid)
@@ -483,13 +476,7 @@ int inter_guild_init ()
while (fgets (line, sizeof (line) - 1, fp))
{
- gc = calloc (sizeof (struct guild_castle), 1);
- if (gc == NULL)
- {
- printf ("int_guild: out of memory!\n");
- exit (0);
- }
- memset (gc, 0, sizeof (struct guild_castle));
+ CREATE (gc, struct guild_castle, 1);
if (inter_guildcastle_fromstr (line, gc) == 0)
{
numdb_insert (castle_db, gc->castle_id, gc);
@@ -508,13 +495,7 @@ int inter_guild_init ()
//デフォルトデータを作成
for (i = 0; i < MAX_GUILDCASTLE; i++)
{
- gc = calloc (sizeof (struct guild_castle), 1);
- if (gc == NULL)
- {
- printf ("int_guild: out of memory!\n");
- exit (0);
- }
- memset (gc, 0, sizeof (struct guild_castle));
+ CREATE (gc, struct guild_castle, 1);
gc->castle_id = i;
gc->guild_id = 0;
gc->economy = 0;
@@ -562,7 +543,7 @@ struct guild *inter_guild_search (int guild_id)
}
// ギルドデータのセーブ用
-int inter_guild_save_sub (void *key, void *data, va_list ap)
+void inter_guild_save_sub (db_key_t key, db_val_t data, va_list ap)
{
char line[16384];
FILE *fp;
@@ -570,12 +551,10 @@ int inter_guild_save_sub (void *key, void *data, va_list ap)
inter_guild_tostr (line, (struct guild *) data);
fp = va_arg (ap, FILE *);
fprintf (fp, "%s" RETCODE, line);
-
- return 0;
}
// ギルド城データのセーブ用
-int inter_castle_save_sub (void *key, void *data, va_list ap)
+void inter_castle_save_sub (db_key_t key, db_val_t data, va_list ap)
{
char line[16384];
FILE *fp;
@@ -583,8 +562,6 @@ int inter_castle_save_sub (void *key, void *data, va_list ap)
inter_guildcastle_tostr (line, (struct guild_castle *) data);
fp = va_arg (ap, FILE *);
fprintf (fp, "%s" RETCODE, line);
-
- return 0;
}
// ギルドデータのセーブ
@@ -617,16 +594,15 @@ int inter_guild_save ()
}
// ギルド名検索用
-int search_guildname_sub (void *key, void *data, va_list ap)
+void search_guildname_sub (db_key_t key, db_val_t data, va_list ap)
{
struct guild *g = (struct guild *) data, **dst;
char *str;
str = va_arg (ap, char *);
dst = va_arg (ap, struct guild **);
- if (strcmpi (g->name, str) == 0)
+ if (strcasecmp (g->name, str) == 0)
*dst = g;
- return 0;
}
// ギルド名検索
@@ -660,7 +636,7 @@ int guild_check_empty (struct guild *g)
}
// キャラの競合がないかチェック用
-int guild_check_conflict_sub (void *key, void *data, va_list ap)
+void guild_check_conflict_sub (db_key_t key, db_val_t data, va_list ap)
{
struct guild *g = (struct guild *) data;
int guild_id, account_id, char_id, i;
@@ -670,7 +646,7 @@ int guild_check_conflict_sub (void *key, void *data, va_list ap)
char_id = va_arg (ap, int);
if (g->guild_id == guild_id) // 本来の所属なので問題なし
- return 0;
+ return;
for (i = 0; i < MAX_GUILD; i++)
{
@@ -683,8 +659,6 @@ int guild_check_conflict_sub (void *key, void *data, va_list ap)
"**データ競合**");
}
}
-
- return 0;
}
// キャラの競合がないかチェック
@@ -1037,7 +1011,7 @@ int mapif_guild_castle_datasave (int castle_id, int index, int value)
return 0;
}
-int mapif_guild_castle_alldataload_sub (void *key, void *data, va_list ap)
+void mapif_guild_castle_alldataload_sub (db_key_t key, db_val_t data, va_list ap)
{
int fd = va_arg (ap, int);
int *p = va_arg (ap, int *);
@@ -1045,8 +1019,6 @@ int mapif_guild_castle_alldataload_sub (void *key, void *data, va_list ap)
memcpy (WFIFOP (fd, *p), (struct guild_castle *) data,
sizeof (struct guild_castle));
(*p) += sizeof (struct guild_castle);
-
- return 0;
}
int mapif_guild_castle_alldataload (int fd)
@@ -1087,14 +1059,7 @@ int mapif_parse_CreateGuild (int fd, int account_id, char *name,
mapif_guild_created (fd, account_id, NULL);
return 0;
}
- g = calloc (sizeof (struct guild), 1);
- if (g == NULL)
- {
- printf ("int_guild: CreateGuild: out of memory !\n");
- mapif_guild_created (fd, account_id, NULL);
- exit (0);
- }
- memset (g, 0, sizeof (struct guild));
+ CREATE (g, struct guild, 1);
g->guild_id = guild_newid++;
memcpy (g->name, name, 24);
memcpy (g->master, master->name, 24);
@@ -1263,7 +1228,7 @@ int mapif_parse_GuildChangeMemberInfoShort (int fd, int guild_id,
}
// ギルド解散処理用(同盟/敵対を解除)
-int guild_break_sub (void *key, void *data, va_list ap)
+void guild_break_sub (db_key_t key, db_val_t data, va_list ap)
{
struct guild *g = (struct guild *) data;
int guild_id = va_arg (ap, int);
@@ -1274,7 +1239,6 @@ int guild_break_sub (void *key, void *data, va_list ap)
if (g->alliance[i].guild_id == guild_id)
g->alliance[i].guild_id = 0;
}
- return 0;
}
// ギルド解散要求
diff --git a/src/char/int_party.c b/src/char/int_party.c
index c501c74..b728b1e 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -1,11 +1,11 @@
// $Id: int_party.c,v 1.1.1.1 2004/09/10 17:26:51 MagicalTux Exp $
#include "inter.h"
#include "int_party.h"
-#include "mmo.h"
+#include "../common/mmo.h"
#include "char.h"
-#include "socket.h"
-#include "db.h"
-#include "lock.h"
+#include "../common/socket.h"
+#include "../common/db.h"
+#include "../common/lock.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -110,13 +110,7 @@ int inter_party_init ()
continue;
}
- p = calloc (sizeof (struct party), 1);
- if (p == NULL)
- {
- printf ("int_party: out of memory!\n");
- exit (0);
- }
- memset (p, 0, sizeof (struct party));
+ CREATE (p, struct party, 1);
if (inter_party_fromstr (line, p) == 0 && p->party_id > 0)
{
if (p->party_id >= party_newid)
@@ -139,7 +133,7 @@ int inter_party_init ()
}
// パーティーデータのセーブ用
-int inter_party_save_sub (void *key, void *data, va_list ap)
+void inter_party_save_sub (db_key_t key, db_val_t data, va_list ap)
{
char line[8192];
FILE *fp;
@@ -147,8 +141,6 @@ int inter_party_save_sub (void *key, void *data, va_list ap)
inter_party_tostr (line, (struct party *) data);
fp = va_arg (ap, FILE *);
fprintf (fp, "%s" RETCODE, line);
-
- return 0;
}
// パーティーデータのセーブ
@@ -172,17 +164,15 @@ int inter_party_save ()
}
// パーティ名検索用
-int search_partyname_sub (void *key, void *data, va_list ap)
+void search_partyname_sub (db_key_t key, db_val_t data, va_list ap)
{
struct party *p = (struct party *) data, **dst;
char *str;
str = va_arg (ap, char *);
dst = va_arg (ap, struct party **);
- if (strcmpi (p->name, str) == 0)
+ if (strcasecmp (p->name, str) == 0)
*dst = p;
-
- return 0;
}
// パーティ名検索
@@ -238,7 +228,7 @@ int party_check_empty (struct party *p)
}
// キャラの競合がないかチェック用
-int party_check_conflict_sub (void *key, void *data, va_list ap)
+void party_check_conflict_sub (db_key_t key, db_val_t data, va_list ap)
{
struct party *p = (struct party *) data;
int party_id, account_id, i;
@@ -249,7 +239,7 @@ int party_check_conflict_sub (void *key, void *data, va_list ap)
nick = va_arg (ap, char *);
if (p->party_id == party_id) // 本来の所属なので問題なし
- return 0;
+ return;
for (i = 0; i < MAX_PARTY; i++)
{
@@ -262,8 +252,6 @@ int party_check_conflict_sub (void *key, void *data, va_list ap)
mapif_parse_PartyLeave (-1, p->party_id, account_id);
}
}
-
- return 0;
}
// キャラの競合がないかチェック
@@ -449,14 +437,7 @@ int mapif_parse_CreateParty (int fd, int account_id, char *name, char *nick,
mapif_party_created (fd, account_id, NULL);
return 0;
}
- p = calloc (sizeof (struct party), 1);
- if (p == NULL)
- {
- printf ("int_party: out of memory !\n");
- mapif_party_created (fd, account_id, NULL);
- return 0;
- }
- memset (p, 0, sizeof (struct party));
+ CREATE (p, struct party, 1);
p->party_id = party_newid++;
memcpy (p->name, name, 24);
p->exp = 0;
diff --git a/src/char/int_storage.c b/src/char/int_storage.c
index 744a59f..99af725 100644
--- a/src/char/int_storage.c
+++ b/src/char/int_storage.c
@@ -7,7 +7,6 @@
#include "../common/socket.h"
#include "../common/db.h"
#include "../common/lock.h"
-#include "../common/malloc.h"
#include "char.h"
#include "inter.h"
#include "int_storage.h"
@@ -222,12 +221,7 @@ struct storage *account2storage (int account_id)
s = (struct storage *) numdb_search (storage_db, account_id);
if (s == NULL)
{
- s = (struct storage *) aCalloc (sizeof (struct storage), 1);
- if (s == NULL)
- {
- printf ("int_storage: out of memory!\n");
- exit (0);
- }
+ CREATE (s, struct storage, 1);
memset (s, 0, sizeof (struct storage));
s->account_id = account_id;
numdb_insert (storage_db, s->account_id, s);
@@ -244,14 +238,7 @@ struct guild_storage *guild2storage (int guild_id)
guild_id);
if (gs == NULL)
{
- gs = (struct guild_storage *)
- aCalloc (sizeof (struct guild_storage), 1);
- if (gs == NULL)
- {
- printf ("int_storage: out of memory!\n");
- exit (0);
- }
-// memset(gs,0,sizeof(struct guild_storage)); aCalloc does this! [Skotlex]
+ CREATE (gs, struct guild_storage, 1);
gs->guild_id = guild_id;
numdb_insert (guild_storage_db, gs->guild_id, gs);
}
@@ -280,13 +267,7 @@ int inter_storage_init ()
while (fgets (line, 65535, fp))
{
sscanf (line, "%d", &tmp_int);
- s = (struct storage *) aCalloc (sizeof (struct storage), 1);
- if (s == NULL)
- {
- printf ("int_storage: out of memory!\n");
- exit (0);
- }
-// memset(s,0,sizeof(struct storage)); aCalloc does this...
+ CREATE (s, struct storage, 1);
s->account_id = tmp_int;
if (s->account_id > 0 && storage_fromstr (line, s) == 0)
{
@@ -314,14 +295,7 @@ int inter_storage_init ()
while (fgets (line, 65535, fp))
{
sscanf (line, "%d", &tmp_int);
- gs = (struct guild_storage *) aCalloc (sizeof (struct guild_storage),
- 1);
- if (gs == NULL)
- {
- printf ("int_storage: out of memory!\n");
- exit (0);
- }
-// memset(gs,0,sizeof(struct guild_storage)); aCalloc...
+ CREATE (gs, struct guild_storage, 1);
gs->guild_id = tmp_int;
if (gs->guild_id > 0 && guild_storage_fromstr (line, gs) == 0)
{
@@ -340,20 +314,18 @@ int inter_storage_init ()
return 0;
}
-int storage_db_final (void *k, void *data, va_list ap)
+void storage_db_final (db_key_t k, db_val_t data, va_list ap)
{
struct storage *p = (struct storage *) data;
if (p)
free (p);
- return 0;
}
-int guild_storage_db_final (void *k, void *data, va_list ap)
+void guild_storage_db_final (db_key_t k, db_val_t data, va_list ap)
{
struct guild_storage *p = (struct guild_storage *) data;
if (p)
free (p);
- return 0;
}
void inter_storage_final ()
@@ -363,7 +335,7 @@ void inter_storage_final ()
return;
}
-int inter_storage_save_sub (void *key, void *data, va_list ap)
+void inter_storage_save_sub (db_key_t key, db_val_t data, va_list ap)
{
char line[65536];
FILE *fp;
@@ -371,7 +343,6 @@ int inter_storage_save_sub (void *key, void *data, va_list ap)
fp = va_arg (ap, FILE *);
if (*line)
fprintf (fp, "%s" RETCODE, line);
- return 0;
}
//---------------------------------------------------------
@@ -396,7 +367,7 @@ int inter_storage_save ()
return 0;
}
-int inter_guild_storage_save_sub (void *key, void *data, va_list ap)
+void inter_guild_storage_save_sub (db_key_t key, db_val_t data, va_list ap)
{
char line[65536];
FILE *fp;
@@ -409,7 +380,6 @@ int inter_guild_storage_save_sub (void *key, void *data, va_list ap)
if (*line)
fprintf (fp, "%s" RETCODE, line);
}
- return 0;
}
//---------------------------------------------------------
diff --git a/src/char/inter.c b/src/char/inter.c
index 89a3e39..f563931 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -1,9 +1,9 @@
// $Id: inter.c,v 1.1.1.1 2004/09/10 17:26:51 MagicalTux Exp $
-#include "mmo.h"
+#include "../common/mmo.h"
#include "char.h"
-#include "socket.h"
-#include "timer.h"
-#include "db.h"
+#include "../common/socket.h"
+#include "../common/timer.h"
+#include "../common/db.h"
#include <string.h>
#include <stdlib.h>
@@ -11,7 +11,7 @@
#include "int_party.h"
#include "int_guild.h"
#include "int_storage.h"
-#include "lock.h"
+#include "../common/lock.h"
#define WISDATA_TTL (60*1000) // Existence time of Wisp/page data (60 seconds)
// that is the waiting time of answers of all map-servers
@@ -120,13 +120,7 @@ int inter_accreg_init ()
while (fgets (line, sizeof (line) - 1, fp))
{
line[sizeof (line) - 1] = '\0';
-
- reg = calloc (sizeof (struct accreg), 1);
- if (reg == NULL)
- {
- printf ("inter: accreg: out of memory!\n");
- exit (0);
- }
+ CREATE (reg, struct accreg, 1);
if (inter_accreg_fromstr (line, reg) == 0 && reg->account_id > 0)
{
numdb_insert (accreg_db, reg->account_id, reg);
@@ -146,7 +140,7 @@ int inter_accreg_init ()
}
// アカウント変数のセーブ用
-int inter_accreg_save_sub (void *key, void *data, va_list ap)
+void inter_accreg_save_sub (db_key_t key, db_val_t data, va_list ap)
{
char line[8192];
FILE *fp;
@@ -158,8 +152,6 @@ int inter_accreg_save_sub (void *key, void *data, va_list ap)
fp = va_arg (ap, FILE *);
fprintf (fp, "%s" RETCODE, line);
}
-
- return 0;
}
// アカウント変数のセーブ
@@ -207,41 +199,41 @@ int inter_config_read (const char *cfgName)
if (sscanf (line, "%[^:]: %[^\r\n]", w1, w2) != 2)
continue;
- if (strcmpi (w1, "storage_txt") == 0)
+ if (strcasecmp (w1, "storage_txt") == 0)
{
strncpy (storage_txt, w2, sizeof (storage_txt));
}
- else if (strcmpi (w1, "party_txt") == 0)
+ else if (strcasecmp (w1, "party_txt") == 0)
{
strncpy (party_txt, w2, sizeof (party_txt));
}
- else if (strcmpi (w1, "guild_txt") == 0)
+ else if (strcasecmp (w1, "guild_txt") == 0)
{
strncpy (guild_txt, w2, sizeof (guild_txt));
}
- else if (strcmpi (w1, "castle_txt") == 0)
+ else if (strcasecmp (w1, "castle_txt") == 0)
{
strncpy (castle_txt, w2, sizeof (castle_txt));
}
- else if (strcmpi (w1, "accreg_txt") == 0)
+ else if (strcasecmp (w1, "accreg_txt") == 0)
{
strncpy (accreg_txt, w2, sizeof (accreg_txt));
}
- else if (strcmpi (w1, "guild_storage_txt") == 0)
+ else if (strcasecmp (w1, "guild_storage_txt") == 0)
{
strncpy (guild_storage_txt, w2, sizeof (guild_storage_txt));
}
- else if (strcmpi (w1, "party_share_level") == 0)
+ else if (strcasecmp (w1, "party_share_level") == 0)
{
party_share_level = atoi (w2);
if (party_share_level < 0)
party_share_level = 0;
}
- else if (strcmpi (w1, "inter_log_filename") == 0)
+ else if (strcasecmp (w1, "inter_log_filename") == 0)
{
strncpy (inter_log_filename, w2, sizeof (inter_log_filename));
}
- else if (strcmpi (w1, "import") == 0)
+ else if (strcasecmp (w1, "import") == 0)
{
inter_config_read (w2);
}
@@ -392,7 +384,7 @@ int mapif_account_reg_reply (int fd, int account_id)
//--------------------------------------------------------
// Existence check of WISP data
-int check_ttl_wisdata_sub (void *key, void *data, va_list ap)
+void check_ttl_wisdata_sub (db_key_t key, db_val_t data, va_list ap)
{
unsigned long tick;
struct WisData *wd = (struct WisData *) data;
@@ -401,8 +393,6 @@ int check_ttl_wisdata_sub (void *key, void *data, va_list ap)
if (DIFF_TICK (tick, wd->tick) > WISDATA_TTL
&& wis_delnum < WISDELLIST_MAX)
wis_dellist[wis_delnum++] = wd->id;
-
- return 0;
}
int check_ttl_wisdata ()
@@ -485,13 +475,7 @@ int mapif_parse_WisRequest (int fd)
}
else
{
-
- wd = (struct WisData *) calloc (sizeof (struct WisData), 1);
- if (wd == NULL)
- {
- printf ("inter: WisRequest: out of memory !\n");
- return 0;
- }
+ CREATE (wd, struct WisData, 1);
// Whether the failure of previous wisp/page transmission (timeout)
check_ttl_wisdata ();
@@ -546,17 +530,13 @@ int mapif_parse_WisToGM (int fd)
int mapif_parse_AccReg (int fd)
{
int j, p;
- struct accreg *reg = numdb_search (accreg_db, RFIFOL (fd, 4));
+ struct accreg *reg = numdb_search (accreg_db, (numdb_key_t)RFIFOL (fd, 4));
if (reg == NULL)
{
- if ((reg = calloc (sizeof (struct accreg), 1)) == NULL)
- {
- printf ("inter: accreg: out of memory !\n");
- exit (0);
- }
+ CREATE (reg, struct accreg, 1);
reg->account_id = RFIFOL (fd, 4);
- numdb_insert (accreg_db, RFIFOL (fd, 4), reg);
+ numdb_insert (accreg_db, (numdb_key_t)RFIFOL (fd, 4), reg);
}
for (j = 0, p = 8; j < ACCOUNT_REG_NUM && p < RFIFOW (fd, 2);