Convert D2GS codebase from C to C++98

This commit is contained in:
relesgoe 2021-03-13 01:10:50 -08:00
parent aa47e986d9
commit 0ba5433743
29 changed files with 3239 additions and 142 deletions

View file

@ -76,8 +76,8 @@ typedef struct
{
PLAYERMARK PlayerMark;
DWORD dwReserved;
UCHAR CharName[16];
UCHAR AcctName[16];
char CharName[16];
char AcctName[16];
} PLAYERINFO, * PPLAYERINFO, * LPPLAYERINFO;
typedef struct
@ -87,13 +87,13 @@ typedef struct
DWORD WorldEventCurrentSpawnCount;
DWORD WorldEventLastSpawnCount;
DWORD WorldEventNextSpawnCount;
__time32_t WorldEventLastSellTime; // DWORD LastSellTickCount;
__time32_t WorldEventLastSpawnTime; // DWORD LastSpawnTickCount;
time_t WorldEventLastSellTime; // DWORD LastSellTickCount;
time_t WorldEventLastSpawnTime; // DWORD LastSpawnTickCount;
DWORD WorldEventTotalSpawn;
LPCSTR WorldEventKeyItem; // 128 bytes
} WORLDEVENT, * PWORLDEVENT, * LPWORLDEVENT;
typedef BOOL (__stdcall * D2GSStartFunc ) (LPD2GSINFO lpD2GSInfo);
typedef /*BOOL*/DWORD (__stdcall * D2GSStartFunc ) (/*LPD2GSINFO*/ LPVOID lpD2GSInfo);
typedef BOOL (__stdcall * D2GSNewEmptyGameFunc) (LPCSTR lpGameName, LPCSTR lpGamePass,
LPCSTR lpGameDesc, DWORD dwGameFlag,
BYTE bTemplate, BYTE bReserved1,

View file

@ -1,60 +1,58 @@
enable_language(C)
add_executable(d2gs WIN32
bn_types.h
bnethash.c
bnethash.cpp
bnethash.h
callback.c
callback.cpp
callback.h
charlist.c
charlist.cpp
charlist.h
config.c
config.cpp
config.h
connection.h
d2cs_d2gs_character.h
d2cs_d2gs_protocol.h
d2dbs_d2gs_protocol.h
d2gamelist.c
d2gamelist.cpp
d2gamelist.h
d2ge.c
d2ge.cpp
d2ge.h
d2gs.h
debug.c
debug.cpp
debug.h
eventlog.c
eventlog.cpp
eventlog.h
handle_s2s.c
handle_s2s.cpp
handle_s2s.h
hexdump.c
hexdump.cpp
hexdump.h
list.h
main.c
net.c
main.cpp
net.cpp
net.h
psapi.h
telnetd.c
telnetd.cpp
telnetd.h
timer.c
timer.cpp
timer.h
utils.c
utils.cpp
utils.h
vars.c
vars.cpp
vars.h
versioncheck.c
versioncheck.cpp
versioncheck.h
D2Server.ico
d2server.rc
resource.h)
target_compile_definitions(d2gs PRIVATE D2GS)
target_compile_definitions(d2gs PRIVATE D2GS _USE_32BIT_TIME_T)
target_link_libraries(d2gs PRIVATE ws2_32 d2gelib)
set_target_properties(d2gs
PROPERTIES
C_STANDARD 99
C_STANDARD_REQUIRED YES
C_EXTENSIONS NO)
CXX_STANDARD 98
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO)
install(TARGETS d2gs DESTINATION ${SBINDIR})

View file

@ -154,7 +154,7 @@ extern int bnet_hash(t_hash * hashout, unsigned int size, void const * datain)
hash_init(hashout);
data = datain;
data = (const unsigned char*)datain;
while (size>0)
{
if (size>64)

View file

@ -77,7 +77,7 @@ void charlist_flush(void)
}
void *charlist_getdata(unsigned char const *charname, int type)
void *charlist_getdata(const char* charname, int type)
{
D2CHARLIST *pcl;
unsigned int hashval;
@ -112,7 +112,7 @@ void *charlist_getdata(unsigned char const *charname, int type)
}
int charlist_insert(unsigned char *charname, void *pCharInfo, void *pGameInfo)
int charlist_insert(const char* charname, void *pCharInfo, void *pGameInfo)
{
D2CHARLIST *pcl, *ptmp;
unsigned int hashval;
@ -148,7 +148,7 @@ int charlist_insert(unsigned char *charname, void *pCharInfo, void *pGameInfo)
}
int charlist_delete(unsigned char *charname)
int charlist_delete(const char* charname)
{
D2CHARLIST *pcl, *ptmp;
unsigned int hashval;

View file

@ -24,7 +24,7 @@
/* charlist info */
typedef struct RAW_D2CHARLIST {
unsigned char charname[MAX_CHARNAME_LEN];
char charname[MAX_CHARNAME_LEN];
void *pCharInfo;
void *pGameInfo;
struct RAW_D2CHARLIST *next;
@ -36,9 +36,9 @@ unsigned int string_hash(char const *string);
int charlist_init(unsigned int tbllen);
int charlist_destroy(void);
void charlist_flush(void);
void *charlist_getdata(unsigned char const *charname, int type);
int charlist_insert(unsigned char *charname, void *pCharInfo, void *pGameInfo);
int charlist_delete(unsigned char *charname);
void *charlist_getdata(const char* charname, int type);
int charlist_insert(const char* charname, void *pCharInfo, void *pGameInfo);
int charlist_delete(const char* charname);
#endif /* INCLUDED_CHARLIST_H */

View file

@ -211,7 +211,7 @@ int RegkeyReadString(HKEY hKey, LPCTSTR name, char* buf, DWORD buflen)
return FALSE;
dwLen = buflen;
ZeroMemory(buf, buflen);
lReturn = RegQueryValueEx(hKey, name, NULL, &dwType, buf, &dwLen);
lReturn = RegQueryValueEx(hKey, name, NULL, &dwType, (LPBYTE)buf, &dwLen);
if (lReturn == ERROR_SUCCESS)
{
*(buf + buflen - 1) = 0;

View file

@ -7,6 +7,7 @@
#ifdef D2GS
# include "bn_types.h"
# include "d2gs.h"
#pragma pack(push, pack01, 1)
#endif
@ -23,9 +24,9 @@ typedef struct
bn_int checksum;
bn_int total_play_time;/* total in game play time */
bn_int reserved[6];
unsigned char charname[MAX_CHARNAME_LEN];
unsigned char account[MAX_ACCTNAME_LEN];
unsigned char realmname[MAX_REALMNAME_LEN];
char charname[MAX_CHARNAME_LEN];
char account[MAX_ACCTNAME_LEN];
char realmname[MAX_REALMNAME_LEN];
} t_d2charinfo_header;
typedef struct
@ -40,7 +41,7 @@ typedef struct
{
bn_short header; /* 0x84 0x80 */
bn_byte gfx[11];
bn_byte class;
bn_byte chclass;
bn_byte color[11];
bn_byte level;
bn_byte status;

View file

@ -237,8 +237,8 @@ int D2GSGameListDelete(D2GAMEINFO *lpGameInfo)
* Purpose: to insert a char into the game
* Return: 0(success), other(failed)
*********************************************************************/
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, UCHAR *AcctName,
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame)
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, const char* AcctName,
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame)
{
D2CHARINFO *lpCharInfo;
D2CHARINFO *lpTemp;
@ -327,8 +327,8 @@ int D2GSDeleteCharFromGameInfo(D2GAMEINFO *lpGameInfo, D2CHARINFO *lpCharInfo)
* (receive join game request, but not EnterGame event callback)
* Return: 0(success), other(failed)
*********************************************************************/
int D2GSInsertCharIntoPendingList(DWORD token, UCHAR *AcctName,
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame)
int D2GSInsertCharIntoPendingList(DWORD token, const char* AcctName,
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame)
{
D2CHARINFO *lpCharInfo;
D2CHARINFO *lpTemp;
@ -407,7 +407,7 @@ int D2GSDeletePendingChar(D2CHARINFO *lpCharInfo)
* Purpose: to insert get data request to the list
* Return: 0(success), other(failed)
*********************************************************************/
int D2GSInsertGetDataRequest(UCHAR *AcctName, UCHAR *CharName, DWORD dwClientId, DWORD dwSeqno)
int D2GSInsertGetDataRequest(const char* AcctName, const char* CharName, DWORD dwClientId, DWORD dwSeqno)
{
D2GETDATAREQUEST *lpGetDataReq;
D2GETDATAREQUEST *lpTemp;
@ -492,7 +492,7 @@ D2GAMEINFO *D2GSFindGameInfoByGameId(WORD GameId)
* Purpose: to find a game info by game name
* Return: NULL(not found or failed), other(success)
*********************************************************************/
D2GAMEINFO *D2GSFindGameInfoByGameName(UCHAR *GameName)
D2GAMEINFO *D2GSFindGameInfoByGameName(const char* GameName)
{
D2GAMEINFO *lpGame;
@ -515,7 +515,7 @@ D2GAMEINFO *D2GSFindGameInfoByGameName(UCHAR *GameName)
* Purpose: to find a char by char name in pending char list
* Return: NULL(not found or failed), other(success)
*********************************************************************/
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, UCHAR *CharName)
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, const char* CharName)
{
D2CHARINFO *lpChar;
@ -559,7 +559,7 @@ D2CHARINFO *D2GSFindPendingCharByToken(DWORD token)
* Purpose: to find a char by char name in pending char list
* Return: NULL(not found or failed), other(success)
*********************************************************************/
D2CHARINFO *D2GSFindPendingCharByCharName(UCHAR *CharName)
D2CHARINFO *D2GSFindPendingCharByCharName(const char *CharName)
{
D2CHARINFO *lpChar;
@ -637,8 +637,8 @@ void D2GSGetDataRequestTimerRoutine(void)
MOTDCLIENT* lpBuffer = NULL;
D2GETDATAREQUEST *lpGetDataReq, *lpTimeOutReq;
DWORD dwClientId;
u_char AcctName[MAX_ACCTNAME_LEN];
u_char CharName[MAX_CHARNAME_LEN];
char AcctName[MAX_ACCTNAME_LEN];
char CharName[MAX_CHARNAME_LEN];
D2GAMEINFO *lpGameInfo;
D2CHARINFO *lpCharInfo;
@ -654,7 +654,7 @@ void D2GSGetDataRequestTimerRoutine(void)
lpGetDataReq = lpGetDataReq->next;
if (lpTimeOutReq) {
dwClientId = lpTimeOutReq->ClientId;
lpBufferTemp = malloc(sizeof(MOTDCLIENT));
lpBufferTemp = static_cast<MOTDCLIENT*>(malloc(sizeof(MOTDCLIENT)));
if (!lpBufferTemp)
{
D2GSSendDatabaseCharacter(dwClientId, NULL, 0, 0, TRUE, 0, NULL, 1);
@ -712,10 +712,10 @@ void D2GSGetDataRequestTimerRoutine(void)
/*-------------------------------------------------------------------*/
void FormatTimeString(long t, u_char *buf, int len, int format)
void FormatTimeString(time_t t, char* buf, int len, int format)
{
struct tm *tm;
long now;
time_t now;
ZeroMemory(buf, len);
now = t;
@ -746,7 +746,8 @@ void D2GSShowGameList(unsigned int ns)
{
D2GAMEINFO *lpGame;
int gamecount, charcount;
unsigned char buf[256], timestr[32];
char buf[256];
char timestr[32];
gamecount = charcount = 0;
sprintf(buf, "+-No.--GameName---------GamePass---------ID----GameVer--Type--Difficulty--Ladder-----Users-CreateTime-Dis-+\r\n");
@ -794,7 +795,8 @@ void D2GSShowCharInGame(unsigned int ns, WORD GameId)
{
D2GAMEINFO *lpGame;
D2CHARINFO *lpChar;
unsigned char buf[256], timestr[32];
char buf[256];
char timestr[32];
int count;
EnterCriticalSection(&csGameList);
@ -1038,7 +1040,7 @@ int chat_message_announce_char(DWORD dwMsgType, const char *CharName, const char
D2CHARINFO *lpChar;
EnterCriticalSection(&csGameList);
lpChar = charlist_getdata(CharName, CHARLIST_GET_CHARINFO);
lpChar = (D2CHARINFO*)charlist_getdata(CharName, CHARLIST_GET_CHARINFO);
if (!lpChar) {
LeaveCriticalSection(&csGameList);
return -1;
@ -1196,7 +1198,7 @@ void D2GSCheckGameLife()
if ((curTime - lpGame->CreateTime) > d2gsconf.maxgamelife)
{
lpChar = lpGame->lpCharInfo;
overLastMinute = (((DWORD)curTime - lpGame->CreateTime) >= (d2gsconf.maxgamelife + 60));
overLastMinute = ((curTime - lpGame->CreateTime) >= (d2gsconf.maxgamelife + 60));
/*
cmp eax, edx; >= cf=0, < cf=1
sbb edi,edi -> edi - edi - cf -> 0, -1

View file

@ -13,9 +13,9 @@
/* structures */
typedef struct RAW_D2CHARINFO {
bn_char AcctName[MAX_ACCTNAME_LEN]; /* account name */
bn_char CharName[MAX_CHARNAME_LEN]; /* char name */
bn_char RealmIPName[MAX_REALMIPNAME_LEN]; /* realm name */
char AcctName[MAX_ACCTNAME_LEN]; /* account name */
char CharName[MAX_CHARNAME_LEN]; /* char name */
char RealmIPName[MAX_REALMIPNAME_LEN]; /* realm name */
bn_int token;
bn_int CharLevel;
bn_short CharClass;
@ -23,8 +23,8 @@ typedef struct RAW_D2CHARINFO {
bn_short EnterGame;
bn_short AllowLadder;
bn_short CharLockStatus;
DWORD EnterTime;
DWORD CharCreateTime;
time_t EnterTime;
time_t CharCreateTime;
DWORD ClientId;
WORD GameId;
struct RAW_D2GAMEINFO *lpGameInfo; /* pointer to the GAMEINFO */
@ -33,12 +33,12 @@ typedef struct RAW_D2CHARINFO {
} D2CHARINFO, *PD2CHARINFO, *LPD2CHARINFO;
typedef struct RAW_D2GAMEINFO {
bn_char GameName[MAX_GAMENAME_LEN];
bn_char game_pass[MAX_GAMEPASS_LEN];
bn_char game_desc[MAX_GAMEDESC_LEN];
bn_char creator_acct_name[MAX_ACCTNAME_LEN];
bn_char creator_char_name[MAX_CHARNAME_LEN];
bn_char creator_ip[MAX_REALMIPNAME_LEN];
char GameName[MAX_GAMENAME_LEN];
char game_pass[MAX_GAMEPASS_LEN];
char game_desc[MAX_GAMEDESC_LEN];
char creator_acct_name[MAX_ACCTNAME_LEN];
char creator_char_name[MAX_CHARNAME_LEN];
char creator_ip[MAX_REALMIPNAME_LEN];
bn_byte ladder;
bn_byte expansion;
bn_byte difficulty;
@ -46,7 +46,7 @@ typedef struct RAW_D2GAMEINFO {
bn_byte reserved;
WORD GameId;
WORD CharCount;
DWORD CreateTime;
time_t CreateTime;
DWORD disable;
struct RAW_D2CHARINFO *lpCharInfo;
struct RAW_D2GAMEINFO *prev;
@ -55,8 +55,8 @@ typedef struct RAW_D2GAMEINFO {
typedef struct RAW_D2GETDATAREQUEST {
bn_char AcctName[MAX_ACCTNAME_LEN]; /* account name */
bn_char CharName[MAX_CHARNAME_LEN]; /* char name */
char AcctName[MAX_ACCTNAME_LEN]; /* account name */
char CharName[MAX_CHARNAME_LEN]; /* char name */
DWORD ClientId;
DWORD Seqno;
bn_short TickCount;
@ -82,23 +82,23 @@ int D2GSGameListInsert(const char* game_name, const char* game_pass, const char
const char* creator_acct_name, const char* creator_char_name, const char* creator_ip,
UCHAR expansion, UCHAR difficulty, UCHAR hardcore, UCHAR ladder, WORD wGameId);
int D2GSGameListDelete(D2GAMEINFO *lpGameInfo);
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, UCHAR *AcctName,
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame);
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, const char* AcctName,
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame);
int D2GSDeleteCharFromGameInfo(D2GAMEINFO *lpGameInfo, D2CHARINFO *lpCharInfo);
int D2GSInsertCharIntoPendingList(DWORD token, UCHAR *AcctName,
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame);
int D2GSInsertCharIntoPendingList(DWORD token, const char* AcctName,
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame);
int D2GSDeletePendingChar(D2CHARINFO *lpCharInfo);
int D2GSInsertGetDataRequest(UCHAR *AcctName, UCHAR *CharName, DWORD dwClientId, DWORD dwSeqno);
int D2GSInsertGetDataRequest(const char* AcctName, const char* CharName, DWORD dwClientId, DWORD dwSeqno);
int D2GSDeleteGetDataRequest(D2GETDATAREQUEST *lpGetDataReq);
D2GAMEINFO *D2GSFindGameInfoByGameId(WORD GameId);
D2GAMEINFO *D2GSFindGameInfoByGameName(UCHAR *GameName);
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, UCHAR *CharName);
D2GAMEINFO *D2GSFindGameInfoByGameName(const char* GameName);
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, const char* CharName);
D2CHARINFO *D2GSFindPendingCharByToken(DWORD token);
D2CHARINFO *D2GSFindPendingCharByCharName(UCHAR *CharName);
D2CHARINFO *D2GSFindPendingCharByCharName(const char *CharName);
D2GETDATAREQUEST *D2GSFindGetDataRequestBySeqno(DWORD dwSeqno);
void D2GSPendingCharTimerRoutine(void);
void D2GSGetDataRequestTimerRoutine(void);
void FormatTimeString(long t, u_char *buf, int len, int format);
void FormatTimeString(time_t t, char* buf, int len, int format);
void D2GSShowGameList(unsigned int ns);
void D2GSShowCharInGame(unsigned int ns, WORD GameId);
void D2GSDisableGameByGameId(unsigned int ns, WORD GameId);

View file

@ -190,7 +190,7 @@ static BOOL D2GSGetInterface(void)
* Purpose: called by Game Engine when error occur
* Return: TRUE(success) or FALSE(failed)
*********************************************************************/
static DWORD __stdcall D2GSErrorHandle(void)
static int WINAPI D2GSErrorHandle(void)
{
D2GSEventLog("D2GSErrorHandle", "Error occur, exiting...\n\n");

View file

@ -16,7 +16,7 @@ void D2GEReloadConfig(void);
/* local function */
static BOOL D2GSGetInterface(void);
static DWORD __stdcall D2GSErrorHandle(void);
static int WINAPI D2GSErrorHandle(void);
extern D2GSINFO gD2GSInfo;

View file

@ -114,12 +114,12 @@ typedef struct RAW_D2GSCONFIGS {
DWORD multicpumask;
DWORD maxpreferusers;
DWORD maxpacketpersecond;
u_char adminpwd[64];
char adminpwd[64];
u_short adminport;
u_short padding;
u_char d2cssecrect[32];
u_char motd[256];
u_char serverconffile[260];
char d2cssecrect[32];
char motd[256];
char serverconffile[260];
} D2GSCONFIGS, *PD2GSCONFIGS;
@ -146,6 +146,9 @@ typedef struct AutoUpdateSetting
/* function */
int CleanupRoutineInsert(CLEANUP_ROUTINE pRoutine, char *comment);
void CloseServerMutex(void);
void D2GSShutdown(unsigned int exitcode);
void D2GSShutdownTimer(void);
void D2GSBeforeShutdown(DWORD status, DWORD seconds);
#endif /* INCLUDED_D2GS_H */

1744
src/d2gs/handle_s2s.cpp Normal file

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
/* structure */
typedef struct {
UCHAR realmname[MAX_REALMNAME_LEN];
char realmname[MAX_REALMNAME_LEN];
DWORD sessionnum;
DWORD gsactive;
} D2GSPARAM, *PD2GSPARAM, *LPD2GAPARAM;
@ -63,7 +63,7 @@ void D2GSLoadComplete(WORD wGameId, LPCSTR lpCharName, BOOL bExpansion);
/* by d2dbs */
void D2DBSSaveDataReply(int peer, LPVOID lpdata);
void D2DBSGetDataReply(int peer, LPVOID lpdata);
void D2GSSetCharLockStatus(LPCSTR lpAccountName, LPCSTR lpCharName, UCHAR *RealmName, DWORD CharLockStatus);
void D2GSSetCharLockStatus(const char* lpAccountName, const char* lpCharName, const char* RealmName, DWORD CharLockStatus);
void D2GSUnlockChar(LPCSTR lpAccountName, LPCSTR lpCharName);

View file

@ -27,14 +27,14 @@ struct list_head {
* This is only for internal list manipulation where we know
* the prev/next entries already!
*/
static __inline void __list_add(struct list_head * new,
static __inline void __list_add(struct list_head * new_entry,
struct list_head * prev,
struct list_head * next)
{
next->prev = new;
new->next = next;
new->prev = prev;
prev->next = new;
next->prev = new_entry;
new_entry->next = next;
new_entry->prev = prev;
prev->next = new_entry;
}
/**
@ -45,9 +45,9 @@ static __inline void __list_add(struct list_head * new,
* Insert a new entry after the specified head.
* This is good for implementing stacks.
*/
static __inline void list_add(struct list_head *new, struct list_head *head)
static __inline void list_add(struct list_head * new_entry, struct list_head *head)
{
__list_add(new, head, head->next);
__list_add(new_entry, head, head->next);
}
/**
@ -58,9 +58,9 @@ static __inline void list_add(struct list_head *new, struct list_head *head)
* Insert a new entry before the specified head.
* This is useful for implementing queues.
*/
static __inline void list_add_tail(struct list_head *new, struct list_head *head)
static __inline void list_add_tail(struct list_head * new_entry, struct list_head *head)
{
__list_add(new, head->prev, head);
__list_add(new_entry, head->prev, head);
}
/*

View file

@ -453,7 +453,7 @@ int D2GSNetRecvPacket(void)
WSAEVENT hEvents[4];
DWORD dwWait;
WSANETWORKEVENTS NetEvents;
u_char buffer[8192];
char buffer[8192];
int val;
int retval;
@ -572,7 +572,7 @@ int D2GSSendNetData(NETSENDBUFFER *lpnsr)
EnterCriticalSection(&csNet);
NSBGetData(lpnsr, &buf, &datalen);
if (datalen) {
bytes = send(sock, buf, datalen, 0);
bytes = send(sock, (char*)buf, datalen, 0);
if (bytes<=0) {
if (WSAGetLastError()==WSAEWOULDBLOCK) {
D2GSEventLog("D2GSSendNetData",
@ -685,7 +685,7 @@ void NRBInitialize(NETRECVBUFFER *lpnbr, u_short peer)
* Purpose: to add some new data to the NETRECVBUFFER
* Return: None
*********************************************************************/
void NRBAddNewData(NETRECVBUFFER *lpnbr, u_char *lpdata, u_int datalen)
void NRBAddNewData(NETRECVBUFFER *lpnbr, void* lpdata, u_int datalen)
{
u_int bmove;

View file

@ -91,7 +91,7 @@ void D2GSGetNetStatistic(D2GSNETSTATISTIC *pnetstat);
/* NETRECVBUFFER operator */
void NRBInitialize(NETRECVBUFFER *lpnrb, u_short peer);
void NRBAddNewData(NETRECVBUFFER *lpnrb, u_char *lpdata, u_int datalen);
void NRBAddNewData(NETRECVBUFFER *lpnrb, void* lpdata, u_int datalen);
int NRBRemovePacketOut(NETRECVBUFFER *lpnrb, D2GSPACKET *lpPkt);
void NSBInitialize(NETSENDBUFFER *lpnsr, u_short peer);
int NSBAppendData(NETSENDBUFFER *lpnsr, D2GSPACKET *lpPkt);

1355
src/d2gs/telnetd.cpp Normal file

File diff suppressed because it is too large Load diff

View file

@ -28,7 +28,7 @@
typedef struct {
char *keyword;
BOOL disable;
void (*adminfunc)(unsigned int, u_char *);
void (*adminfunc)(unsigned int, char *);
char *param;
char *annotation;
} ADMINCOMMAND, *PADMINCOMMAND;
@ -39,34 +39,34 @@ int D2GSAdminInitialize(void);
int CleanupRoutineForAdmin(void);
DWORD WINAPI admin_service(LPVOID lpParam);
DWORD WINAPI admin_thread(LPVOID lpParam);
int admin_analyse_cmd(u_char *buf, u_char *cmd, int x, int y);
int admin_analyse_cmd(char* buf, char *cmd, int x, int y);
int admin_to_stop(void);
int get_cmd_line(unsigned int ns, unsigned char *buf, int flag);
int get_cmd_line(unsigned int ns, char *buf, int flag);
int admin_getchar(unsigned int ns);
int admin_check_pass(unsigned char *pass);
int admin_check_pass(const char *pass);
void admin_logo(unsigned int ns);
void admin_help(unsigned int ns, u_char *param);
void admin_show_game_list(unsigned int ns, u_char *param);
void admin_show_char_in_game(unsigned int ns, u_char *param);
void admin_restart(unsigned int ns, u_char *param);
void admin_shutdown(unsigned int ns, u_char *param);
void admin_uptime(unsigned int ns, u_char *param);
void admin_setmaxgame(unsigned int ns, u_char *param);
void admin_disablegame(unsigned int ns, u_char *param);
void admin_enablegame(unsigned int ns, u_char *param);
void admin_setmaxgamelife(unsigned int ns, u_char *param);
void admin_getstatus(unsigned int ns, u_char *param);
void admin_getversion(unsigned int ns, u_char *param);
void admin_getcharinfo(unsigned int ns, u_char *param);
void admin_chgpasswd(unsigned int ns, u_char *param);
void admin_kick_user(unsigned int ns, u_char *param);
void admin_msg(unsigned int ns, u_char *param);
void admin_setmotd(unsigned int ns, u_char *param);
void admin_setmaxpreferusers(unsigned int ns, u_char* param);
void admin_setcpumask(unsigned int ns, u_char* param);
void admin_reloadconf(unsigned int ns, u_char* param);
void admin_showwe(unsigned int ns, u_char* param);
void admin_enablegslog(unsigned int ns, u_char* param);
void admin_help(unsigned int ns, char* param);
void admin_show_game_list(unsigned int ns, char* param);
void admin_show_char_in_game(unsigned int ns, char* param);
void admin_restart(unsigned int ns, char* param);
void admin_shutdown(unsigned int ns, char* param);
void admin_uptime(unsigned int ns, char* param);
void admin_setmaxgame(unsigned int ns, char* param);
void admin_disablegame(unsigned int ns, char* param);
void admin_enablegame(unsigned int ns, char* param);
void admin_setmaxgamelife(unsigned int ns, char* param);
void admin_getstatus(unsigned int ns, char* param);
void admin_getversion(unsigned int ns, char* param);
void admin_getcharinfo(unsigned int ns, char* param);
void admin_chgpasswd(unsigned int ns, char* param);
void admin_kick_user(unsigned int ns, char* param);
void admin_msg(unsigned int ns, char* param);
void admin_setmotd(unsigned int ns, char* param);
void admin_setmaxpreferusers(unsigned int ns, char* param);
void admin_setcpumask(unsigned int ns, char* param);
void admin_reloadconf(unsigned int ns, char* param);
void admin_showwe(unsigned int ns, char* param);
void admin_enablegslog(unsigned int ns, char* param);
#endif /* INCLUDED_TELNETD_H */

View file

@ -15,11 +15,11 @@ extern char * * strtoarray(char const * str, char const * delim, int * count)
if (!str || !delim || !count) return NULL;
temp=malloc(strlen(str)+1);
temp=static_cast<char*>(malloc(strlen(str)+1));
if (!temp) return NULL;
n = SPLIT_STRING_INIT_COUNT;
pindex=malloc(sizeof(char *) * n);
pindex=static_cast<int*>(malloc(sizeof(char *) * n));
if (!pindex) {
free(temp);
return NULL;
@ -48,7 +48,7 @@ extern char * * strtoarray(char const * str, char const * delim, int * count)
if (in_delim) {
if (*count>=n) {
n += SPLIT_STRING_INCREASEMENT;
if (!(realloc_tmp=realloc(pindex,n * sizeof(char *)))) {
if (!(realloc_tmp=static_cast<char*>(realloc(pindex,n * sizeof(char *))))) {
free(pindex);
free(temp);
return NULL;
@ -74,7 +74,7 @@ extern char * * strtoarray(char const * str, char const * delim, int * count)
free(pindex);
return NULL;
}
result=malloc(pd-temp+index_size);
result=static_cast<char*>(malloc(pd-temp+index_size));
if (!result) {
free(temp);
free(pindex);
@ -101,10 +101,10 @@ extern char * * strtoargv(char const * str, int * count)
char * realloc_tmp;
if (!str || !count) return NULL;
temp=malloc(strlen(str)+1);
temp=static_cast<char*>(malloc(strlen(str)+1));
if (!temp) return NULL;
n = SPLIT_STRING_INIT_COUNT;
pindex=malloc(n * sizeof (char *));
pindex=static_cast<int*>(malloc(n * sizeof (char *)));
if (!pindex) return NULL;
i=j=0;
@ -114,7 +114,7 @@ extern char * * strtoargv(char const * str, int * count)
if (!str[i]) break;
if ((unsigned int)(*count) >=n ) {
n += SPLIT_STRING_INCREASEMENT;
if (!(realloc_tmp=realloc(pindex,n * sizeof(char *)))) {
if (!(realloc_tmp=static_cast<char*>(realloc(pindex,n * sizeof(char *))))) {
free(pindex);
free(temp);
return NULL;
@ -148,7 +148,7 @@ extern char * * strtoargv(char const * str, int * count)
free(pindex);
return NULL;
}
result=malloc(j+index_size);
result=static_cast<char*>(malloc(j+index_size));
if (!result) {
free(temp);
free(pindex);

View file

@ -1,17 +1,11 @@
#ifndef INCLUDED_UTILS_H
#define INCLUDED_UTILS_H
#ifdef __cplusplus
extern "C" {
#endif
extern char * * strtoarray(char const * str, char const * delim, int * count);
extern char * * strtoargv(char const * str, int * count);
extern char * str_strip_affix(char * str, char const * affix);
extern char * string_color(char *str);
#ifdef __cplusplus
}
#endif
#endif