* Tweeked the declaration and initialization defines for vectors.
* Made do_sockets leave the for loop as soon as the readable number of sockets returned by select is found. * Made all posix compliant systems that support it and FreeBSD >= 5.1 (implements it but doesn't have the posix defines) use the precise and consistent tick() implementation. * Minor tweek to HEAP_SEARCH (same variable can be used in from and to). * Fixed the map server not exiting when make_listen_bind fails and returns -1. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11983 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
a91d8177c6
commit
4dcf5bb0b9
@ -3,6 +3,16 @@ Date Added
|
|||||||
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
|
2007/12/27
|
||||||
|
* Tweeked the declaration and initialization defines for vectors.
|
||||||
|
* Made do_sockets leave the for loop as soon as the readable number of
|
||||||
|
sockets returned by select is found.
|
||||||
|
* Made all posix compliant systems that support it and FreeBSD >= 5.1
|
||||||
|
(implements it but doesn't have the posix defines) use the precise and
|
||||||
|
consistent tick() implementation.
|
||||||
|
* Minor tweek to HEAP_SEARCH (same variable can be used in from and to).
|
||||||
|
* Fixed the map server not exiting when make_listen_bind fails and
|
||||||
|
returns -1. [FlavioJS]
|
||||||
2007/12/26
|
2007/12/26
|
||||||
* Fixed the incorrect interpretation of the map-cell height information
|
* Fixed the incorrect interpretation of the map-cell height information
|
||||||
stored in .gat files; this was causing an overall of 20000 cells to
|
stored in .gat files; this was causing an overall of 20000 cells to
|
||||||
|
@ -854,11 +854,23 @@ void linkdb_final ( struct linkdb_node** head );
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Declares an anonymous vector struct.
|
||||||
|
///
|
||||||
|
/// @param __type Type of data
|
||||||
|
#define VECTOR_DECL(__type) \
|
||||||
|
struct { \
|
||||||
|
size_t _max_; \
|
||||||
|
size_t _len_; \
|
||||||
|
__type* _data_; \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// Declares a named vector struct.
|
/// Declares a named vector struct.
|
||||||
///
|
///
|
||||||
/// @param __name Structure name
|
/// @param __name Structure name
|
||||||
/// @param __type Type of data
|
/// @param __type Type of data
|
||||||
#define VECTOR_STRUCT(__name,__type) \
|
#define VECTOR_STRUCT_DECL(__name,__type) \
|
||||||
struct __name { \
|
struct __name { \
|
||||||
size_t _max_; \
|
size_t _max_; \
|
||||||
size_t _len_; \
|
size_t _len_; \
|
||||||
@ -867,7 +879,16 @@ void linkdb_final ( struct linkdb_node** head );
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// Declares a named vector struct variable.
|
/// Declares and initializes an anonymous vector variable.
|
||||||
|
///
|
||||||
|
/// @param __type Type of data
|
||||||
|
/// @param __var Variable name
|
||||||
|
#define VECTOR_VAR(__type,__var) \
|
||||||
|
VECTOR_DECL(__type) __var = {0,0,NULL}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Declares and initializes a named vector variable.
|
||||||
///
|
///
|
||||||
/// @param __name Structure name
|
/// @param __name Structure name
|
||||||
/// @param __var Variable name
|
/// @param __var Variable name
|
||||||
@ -876,16 +897,11 @@ void linkdb_final ( struct linkdb_node** head );
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// Declares a vector variable with an anonymous struct.
|
/// Initializes a vector.
|
||||||
///
|
///
|
||||||
/// @param __type Type of data
|
/// @param __vec Vector
|
||||||
/// @param __var Variable name
|
#define VECTOR_INIT(__vec) \
|
||||||
#define VECTOR_VAR(__type,__var) \
|
memset(&(__vec), 0, sizeof(__vec))
|
||||||
struct { \
|
|
||||||
size_t _max_; \
|
|
||||||
size_t _len_; \
|
|
||||||
__type* _data_; \
|
|
||||||
} __var = {0,0,NULL}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -716,11 +716,13 @@ int do_sockets(int next)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// otherwise assume that the fd_set is a bit-array and enumerate it in a standard way
|
// otherwise assume that the fd_set is a bit-array and enumerate it in a standard way
|
||||||
//TODO: select() returns the number of readable sockets; use that to exit the fd_max loop faster
|
for( i = 1; ret && i < fd_max; ++i )
|
||||||
for (i = 1; i < fd_max; i++)
|
|
||||||
{
|
{
|
||||||
if(sFD_ISSET(i,&rfd) && session[i])
|
if(sFD_ISSET(i,&rfd) && session[i])
|
||||||
|
{
|
||||||
session[i]->func_recv(i);
|
session[i]->func_recv(i);
|
||||||
|
--ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -12,8 +12,10 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h> // GetTickCount()
|
#include <windows.h> // GetTickCount()
|
||||||
#else
|
#else
|
||||||
|
#include <unistd.h>
|
||||||
#include <sys/time.h> // struct timeval, gettimeofday()
|
#include <sys/time.h> // struct timeval, gettimeofday()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -93,7 +95,7 @@ static unsigned int tick(void)
|
|||||||
{
|
{
|
||||||
#if defined(WIN32)
|
#if defined(WIN32)
|
||||||
return GetTickCount();
|
return GetTickCount();
|
||||||
#elif defined(__FREEBSD__)
|
#elif (defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) /* posix compliant */) || (defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 500005 /* FreeBSD >= 5.1.0 */)
|
||||||
struct timespec tval;
|
struct timespec tval;
|
||||||
clock_gettime(CLOCK_MONOTONIC, &tval);
|
clock_gettime(CLOCK_MONOTONIC, &tval);
|
||||||
return tval.tv_sec * 1000 + tval.tv_nsec / 1000000;
|
return tval.tv_sec * 1000 + tval.tv_nsec / 1000000;
|
||||||
@ -147,8 +149,8 @@ unsigned int gettick(void)
|
|||||||
#define HEAP_SEARCH(target,from,to,pos) \
|
#define HEAP_SEARCH(target,from,to,pos) \
|
||||||
do { \
|
do { \
|
||||||
int max,pivot; \
|
int max,pivot; \
|
||||||
pos = from; \
|
|
||||||
max = to; \
|
max = to; \
|
||||||
|
pos = from; \
|
||||||
while (pos < max) { \
|
while (pos < max) { \
|
||||||
pivot = (pos + max) / 2; \
|
pivot = (pos + max) / 2; \
|
||||||
if (DIFF_TICK(target, timer_data[timer_heap[pivot]].tick) < 0) \
|
if (DIFF_TICK(target, timer_data[timer_heap[pivot]].tick) < 0) \
|
||||||
|
@ -12043,7 +12043,8 @@ int do_init_clif(void)
|
|||||||
packetdb_readdb();
|
packetdb_readdb();
|
||||||
|
|
||||||
set_defaultparse(clif_parse);
|
set_defaultparse(clif_parse);
|
||||||
if (!make_listen_bind(bind_ip,map_port)) {
|
if( make_listen_bind(bind_ip,map_port) == -1 )
|
||||||
|
{
|
||||||
ShowFatalError("can't bind game port\n");
|
ShowFatalError("can't bind game port\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -374,10 +374,10 @@ struct status_change_entry {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct status_change {
|
struct status_change {
|
||||||
unsigned int option;// effect state
|
unsigned int option;// effect state (bitfield)
|
||||||
unsigned int opt3;// skill state
|
unsigned int opt3;// skill state (bitfield)
|
||||||
unsigned short opt1;// body state
|
unsigned short opt1;// body state
|
||||||
unsigned short opt2;// health state
|
unsigned short opt2;// health state (bitfield)
|
||||||
unsigned char count;
|
unsigned char count;
|
||||||
//TODO: See if it is possible to implement the following SC's without requiring extra parameters while the SC is inactive.
|
//TODO: See if it is possible to implement the following SC's without requiring extra parameters while the SC is inactive.
|
||||||
unsigned char jb_flag; //Joint Beat type flag
|
unsigned char jb_flag; //Joint Beat type flag
|
||||||
|
Loading…
x
Reference in New Issue
Block a user