- Added function str2ip() to do platform-safe conversions
- Removed a bunch of unused stuff - Moved SIGILL to unix-only defines since tests and docs show that Windows doesn't issue SIGILL - Fixed several annoying compilation warnings git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10177 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
6aa16e2f75
commit
24db1473f4
@ -3977,9 +3977,9 @@ int char_lan_config_read(const char *lancfgName) {
|
||||
|
||||
if(strcmpi(w1, "subnet") == 0) {
|
||||
|
||||
subnet[subnet_count].mask = ntohl(inet_addr(w2));
|
||||
subnet[subnet_count].char_ip = ntohl(inet_addr(w3));
|
||||
subnet[subnet_count].map_ip = ntohl(inet_addr(w4));
|
||||
subnet[subnet_count].mask = str2ip(w2);
|
||||
subnet[subnet_count].char_ip = str2ip(w3);
|
||||
subnet[subnet_count].map_ip = str2ip(w4);
|
||||
subnet[subnet_count].subnet = subnet[subnet_count].char_ip&subnet[subnet_count].mask;
|
||||
if (subnet[subnet_count].subnet != (subnet[subnet_count].map_ip&subnet[subnet_count].mask)) {
|
||||
ShowError("%s: Configuration Error: The char server (%s) and map server (%s) belong to different subnetworks!\n", lancfgName, w3, w4);
|
||||
@ -4284,11 +4284,11 @@ int do_init(int argc, char **argv)
|
||||
ShowStatus("Defaulting to %s as our IP address\n", ip_str);
|
||||
if (!login_ip) {
|
||||
strcpy(login_ip_str, ip_str);
|
||||
login_ip = ntohl(inet_addr(login_ip_str));
|
||||
login_ip = str2ip(login_ip_str);
|
||||
}
|
||||
if (!char_ip) {
|
||||
strcpy(char_ip_str, ip_str);
|
||||
char_ip = ntohl(inet_addr(char_ip_str));
|
||||
char_ip = str2ip(char_ip_str);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,18 +32,9 @@ char **arg_v = NULL;
|
||||
|
||||
char *SERVER_NAME = NULL;
|
||||
char SERVER_TYPE = ATHENA_SERVER_NONE;
|
||||
static void (*term_func)(void) = NULL;
|
||||
#ifndef SVNVERSION
|
||||
static char eA_svn_version[10];
|
||||
#endif
|
||||
/*======================================
|
||||
* CORE : Set function
|
||||
*--------------------------------------
|
||||
*/
|
||||
void set_termfunc(void (*termfunc)(void))
|
||||
{
|
||||
term_func = termfunc;
|
||||
}
|
||||
|
||||
#ifndef MINICORE // minimalist Core
|
||||
// Added by Gabuzomeu
|
||||
@ -120,9 +111,8 @@ void signals_init (void)
|
||||
compat_signal(SIGSEGV, sig_proc);
|
||||
compat_signal(SIGFPE, sig_proc);
|
||||
#endif
|
||||
// Signal to create coredumps by system when necessary (crash)
|
||||
compat_signal(SIGILL, SIG_DFL);
|
||||
#ifndef _WIN32
|
||||
compat_signal(SIGILL, SIG_DFL);
|
||||
compat_signal(SIGXFSZ, sig_proc);
|
||||
compat_signal(SIGPIPE, sig_proc);
|
||||
compat_signal(SIGBUS, SIG_DFL);
|
||||
@ -189,10 +179,8 @@ const char* get_svn_revision(void)
|
||||
*/
|
||||
static void display_title(void)
|
||||
{
|
||||
//The clearscreeen is usually more of an annoyance than anything else... [Skotlex]
|
||||
// ClearScreen(); // clear screen and go up/left (0, 0 position in text)
|
||||
//ShowMessage("\n"); //A blank message??
|
||||
printf("\n");
|
||||
//ClearScreen(); // clear screen and go up/left (0, 0 position in text)
|
||||
ShowMessage("\n");
|
||||
ShowMessage(""CL_WTBL" (=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=)"CL_CLL""CL_NORMAL"\n"); // white writing (37) on blue background (44), \033[K clean until end of file
|
||||
ShowMessage(""CL_XXBL" ("CL_BT_YELLOW" (c)2005 eAthena Development Team presents "CL_XXBL")"CL_CLL""CL_NORMAL"\n"); // yellow writing (33)
|
||||
ShowMessage(""CL_XXBL" ("CL_BOLD" ______ __ __ "CL_XXBL")"CL_CLL""CL_NORMAL"\n"); // 1: bold char, 0: normal char
|
||||
@ -213,7 +201,8 @@ static void display_title(void)
|
||||
}
|
||||
|
||||
// Warning if logged in as superuser (root)
|
||||
void usercheck(void){
|
||||
void usercheck(void)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
if ((getuid() == 0) && (getgid() == 0)) {
|
||||
ShowWarning ("You are running eAthena as the root superuser.\n");
|
||||
|
@ -17,7 +17,6 @@ extern int parse_console(char* buf);
|
||||
extern const char *get_svn_revision(void);
|
||||
extern int do_init(int,char**);
|
||||
extern void set_server_type(void);
|
||||
extern void set_termfunc(void (*termfunc)(void));
|
||||
extern void do_abort(void);
|
||||
extern void do_final(void);
|
||||
|
||||
|
@ -503,8 +503,6 @@ enum {
|
||||
#define strnicmp strncasecmp
|
||||
#endif
|
||||
#else
|
||||
#define snprintf _snprintf
|
||||
#define vsnprintf _vsnprintf
|
||||
#ifndef strncmpi
|
||||
#define strncmpi strnicmp
|
||||
#endif
|
||||
|
@ -57,6 +57,7 @@
|
||||
#include "../common/timer.h"
|
||||
#include "../common/malloc.h"
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/strlib.h"
|
||||
|
||||
fd_set readfds;
|
||||
int fd_max;
|
||||
@ -1110,3 +1111,9 @@ const char* ip2str(uint32 ip, char ip_str[16])
|
||||
addr.s_addr = htonl(ip);
|
||||
return (ip_str == NULL) ? inet_ntoa(addr) : strncpy(ip_str, inet_ntoa(addr), 16);
|
||||
}
|
||||
|
||||
// Converts a dot-formatted ip string into a numeric ip.
|
||||
uint32 str2ip(const char* ip_str)
|
||||
{
|
||||
return ntohl(inet_addr(ip_str));
|
||||
}
|
||||
|
@ -128,6 +128,7 @@ void set_defaultparse(ParseFunc defaultparse);
|
||||
// hostname/ip conversion functions
|
||||
uint32 host2ip(const char* hostname);
|
||||
const char* ip2str(uint32 ip, char ip_str[16]);
|
||||
uint32 str2ip(const char* ip_str);
|
||||
#define CONVIP(ip) (ip>>24)&0xFF,(ip>>16)&0xFF,(ip>>8)&0xFF,(ip>>0)&0xFF
|
||||
|
||||
int socket_getips(uint32* ips, int max);
|
||||
|
@ -6,10 +6,6 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL (void *)0
|
||||
#endif
|
||||
|
||||
void dump(unsigned char *buffer, int num);
|
||||
|
||||
struct StringBuf {
|
||||
|
@ -387,18 +387,21 @@ int read_gm_account(void) {
|
||||
int check_ipmask(uint32 ip, const unsigned char *str)
|
||||
{
|
||||
unsigned int i = 0, m = 0;
|
||||
unsigned int ip2, mask = 0;
|
||||
unsigned char *p = (unsigned char *)&ip2, *p2 = (unsigned char *)&mask;
|
||||
uint32 ip2, mask = 0;
|
||||
uint32 a0, a1, a2, a3;
|
||||
uint8* p = (uint8 *)&ip2, *p2 = (uint8 *)&mask;
|
||||
|
||||
|
||||
// scan ip address
|
||||
if (sscanf((const char*)str, "%u.%u.%u.%u/%n", &p[3], &p[2], &p[1], &p[0], &i) != 4 || i == 0)
|
||||
if (sscanf((const char*)str, "%u.%u.%u.%u/%n", &a0, &a1, &a2, &a3, &i) != 4 || i == 0)
|
||||
return 0;
|
||||
p[0] = (uint8)a3; p[1] = (uint8)a2; p[2] = (uint8)a1; p[3] = (uint8)a0;
|
||||
|
||||
// scan mask
|
||||
if (sscanf((const char*)str+i, "%u.%u.%u.%u", &p2[3], &p2[2], &p2[1], &p2[0]) == 4) {
|
||||
;
|
||||
if (sscanf((const char*)str+i, "%u.%u.%u.%u", &a0, &a1, &a2, &a3) == 4) {
|
||||
p2[0] = (uint8)a3; p2[1] = (uint8)a2; p2[2] = (uint8)a1; p2[3] = (uint8)a0;
|
||||
} else if (sscanf((const char*)(str+i), "%u", &m) == 1 && m >= 0 && m <= 32) {
|
||||
for(i = 0; i < m && i < 32; i++)
|
||||
for(i = 32 - m; i < 32; i++)
|
||||
mask |= (1 << i);
|
||||
} else {
|
||||
ShowError("check_ipmask: invalid mask [%s].\n", str);
|
||||
@ -3445,9 +3448,9 @@ int login_lan_config_read(const char *lancfgName)
|
||||
|
||||
if(strcmpi(w1, "subnet") == 0) {
|
||||
|
||||
subnet[subnet_count].mask = ntohl(inet_addr(w2));
|
||||
subnet[subnet_count].char_ip = ntohl(inet_addr(w3));
|
||||
subnet[subnet_count].map_ip = ntohl(inet_addr(w4));
|
||||
subnet[subnet_count].mask = str2ip(w2);
|
||||
subnet[subnet_count].char_ip = str2ip(w3);
|
||||
subnet[subnet_count].map_ip = str2ip(w4);
|
||||
subnet[subnet_count].subnet = subnet[subnet_count].char_ip&subnet[subnet_count].mask;
|
||||
if (subnet[subnet_count].subnet != (subnet[subnet_count].map_ip&subnet[subnet_count].mask)) {
|
||||
ShowError("%s: Configuration Error: The char server (%s) and map server (%s) belong to different subnetworks!\n", lancfgName, w3, w4);
|
||||
|
@ -1765,9 +1765,9 @@ int login_lan_config_read(const char *lancfgName)
|
||||
|
||||
if(strcmpi(w1, "subnet") == 0) {
|
||||
|
||||
subnet[subnet_count].mask = ntohl(inet_addr(w2));
|
||||
subnet[subnet_count].char_ip = ntohl(inet_addr(w3));
|
||||
subnet[subnet_count].map_ip = ntohl(inet_addr(w4));
|
||||
subnet[subnet_count].mask = str2ip(w2);
|
||||
subnet[subnet_count].char_ip = str2ip(w3);
|
||||
subnet[subnet_count].map_ip = str2ip(w4);
|
||||
subnet[subnet_count].subnet = subnet[subnet_count].char_ip&subnet[subnet_count].mask;
|
||||
if (subnet[subnet_count].subnet != (subnet[subnet_count].map_ip&subnet[subnet_count].mask)) {
|
||||
ShowError("%s: Configuration Error: The char server (%s) and map server (%s) belong to different subnetworks!\n", lancfgName, w3, w4);
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/malloc.h"
|
||||
#include "../common/socket.h"
|
||||
#include "../common/strlib.h"
|
||||
|
||||
#include "atcommand.h"
|
||||
#include "log.h"
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "../common/malloc.h"
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/ers.h"
|
||||
#include "../common/strlib.h"
|
||||
|
||||
#include "map.h"
|
||||
#include "pc.h"
|
||||
@ -3710,7 +3711,7 @@ int battle_set_value(const char* w1, const char* w2) {
|
||||
int i;
|
||||
for(i = 0; i < sizeof(battle_data_short) / (sizeof(battle_data_short[0])); i++)
|
||||
if (strcmpi(w1, battle_data_short[i].str) == 0) {
|
||||
* battle_data_short[i].val = config_switch(w2);
|
||||
*battle_data_short[i].val = config_switch(w2);
|
||||
return 1;
|
||||
}
|
||||
for(i = 0; i < sizeof(battle_data_int) / (sizeof(battle_data_int[0])); i++)
|
||||
@ -3725,7 +3726,7 @@ int battle_get_value(const char* w1) {
|
||||
int i;
|
||||
for(i = 0; i < sizeof(battle_data_short) / (sizeof(battle_data_short[0])); i++)
|
||||
if (strcmpi(w1, battle_data_short[i].str) == 0) {
|
||||
return * battle_data_short[i].val;
|
||||
return *battle_data_short[i].val;
|
||||
}
|
||||
for(i = 0; i < sizeof(battle_data_int) / (sizeof(battle_data_int[0])); i++)
|
||||
if (strcmpi(w1, battle_data_int[i].str) == 0) {
|
||||
@ -4236,7 +4237,7 @@ void battle_validate_conf() {
|
||||
if (battle_config.any_warp_GM_min_level > 100)
|
||||
battle_config.any_warp_GM_min_level = 100;
|
||||
|
||||
if (battle_config.vending_max_value > MAX_ZENY || battle_config.vending_max_value==0)
|
||||
if (battle_config.vending_max_value > MAX_ZENY || battle_config.vending_max_value <= 0)
|
||||
battle_config.vending_max_value = MAX_ZENY;
|
||||
|
||||
if (battle_config.vending_tax > 10000)
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/version.h"
|
||||
#include "../common/nullpo.h"
|
||||
#include "../common/strlib.h"
|
||||
|
||||
#include "map.h"
|
||||
#include "chrif.h"
|
||||
|
@ -227,7 +227,7 @@ void vending_openvending(struct map_session_data *sd,int len,char *message,int f
|
||||
|
||||
vending_skill_lvl = pc_checkskill(sd, MC_VENDING);
|
||||
if(!vending_skill_lvl || !pc_iscarton(sd)) { // cart skill and cart check [Valaris]
|
||||
clif_skill_fail(sd,MC_VENDING,0,0);
|
||||
clif_skill_fail(sd, MC_VENDING, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -247,8 +247,8 @@ void vending_openvending(struct map_session_data *sd,int len,char *message,int f
|
||||
}
|
||||
sd->vending[i].amount = *(short*)(p+2+8*j);
|
||||
sd->vending[i].value = *(int*)(p+4+8*j);
|
||||
if(sd->vending[i].value > battle_config.vending_max_value)
|
||||
sd->vending[i].value=battle_config.vending_max_value;
|
||||
if(sd->vending[i].value > (unsigned int)battle_config.vending_max_value)
|
||||
sd->vending[i].value = (unsigned int)battle_config.vending_max_value;
|
||||
else if(sd->vending[i].value < 1)
|
||||
sd->vending[i].value = 1000000; // auto set to 1 million [celest]
|
||||
// カート内のアイテム数と販売するアイテム数に相違があったら中止
|
||||
|
@ -163,7 +163,7 @@ int read_map(char *name, struct map_data *m)
|
||||
void cache_map(char *name, struct map_data *m)
|
||||
{
|
||||
struct map_info info;
|
||||
long len;
|
||||
unsigned long len;
|
||||
unsigned char *write_buf;
|
||||
|
||||
// Create an output buffer twice as big as the uncompressed map... this way we're sure it fits
|
||||
@ -218,9 +218,9 @@ char *remove_extension(char *mapname)
|
||||
if (ptr) { //Check and remove extension.
|
||||
while (ptr[1] && (ptr2 = strchr(ptr+1, '.')))
|
||||
ptr = ptr2; //Skip to the last dot.
|
||||
if(stricmp(ptr,".gat") == 0 ||
|
||||
stricmp(ptr,".afm") == 0 ||
|
||||
stricmp(ptr,".af2") == 0)
|
||||
if(strcmp(ptr,".gat") == 0 ||
|
||||
strcmp(ptr,".afm") == 0 ||
|
||||
strcmp(ptr,".af2") == 0)
|
||||
*ptr = '\0'; //Remove extension.
|
||||
}
|
||||
return mapname;
|
||||
|
Loading…
x
Reference in New Issue
Block a user