* Changed db key from 'unsigned char*' to 'const char*'.
* Defined out the dump function in util.h/c. Notes: saw some suspicious code in npc.c so kept the 'const char*' propagation to a minimum for now git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10193 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
5d3ea3da27
commit
cc893dbaab
@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||
|
||||
2007/04/10
|
||||
* Changed db key from 'unsigned char*' to 'const char*'.
|
||||
* Defined out the dump function in util.h/c. [FlavioJS]
|
||||
* As an experiment Corrected many /W4 warnings on the txt login server
|
||||
* Played around with MinGW a bit today... [ultramage]
|
||||
- adjusted code so that it handles mingw-specific compatibility problems
|
||||
|
@ -157,7 +157,8 @@ typedef unsigned long int ppuint32;
|
||||
// integer with exact processor width (and best speed)
|
||||
// size_t already defined in stdio.h
|
||||
//////////////////////////////
|
||||
//
|
||||
#include <string.h>// size_t
|
||||
|
||||
#if defined(WIN32) && !defined(MINGW) // does not have a signed size_t
|
||||
//////////////////////////////
|
||||
#if defined(_WIN64) // naive 64bit windows platform
|
||||
|
@ -75,10 +75,6 @@
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/ers.h"
|
||||
|
||||
//TODO: get rid of this
|
||||
#define LOWER(c) (((c)>='A' && (c) <= 'Z') ? ((c)+('a'-'A')) : (c))
|
||||
#define UPPER(c) (((c)>='a' && (c) <= 'z') ? ((c)+('A'-'a')) : (c))
|
||||
|
||||
/*****************************************************************************\
|
||||
* (1) Private typedefs, enums, structures, defines and global variables of *
|
||||
* the database system. *
|
||||
@ -642,7 +638,7 @@ static void db_dup_key_free(DB_impl db, DBKey key)
|
||||
switch (db->type) {
|
||||
case DB_STRING:
|
||||
case DB_ISTRING:
|
||||
aFree(key.str);
|
||||
aFree((char*)key.str);
|
||||
return;
|
||||
|
||||
default:
|
||||
@ -962,7 +958,7 @@ static unsigned int db_uint_hash(DBKey key, unsigned short maxlen)
|
||||
*/
|
||||
static unsigned int db_string_hash(DBKey key, unsigned short maxlen)
|
||||
{
|
||||
unsigned char *k = key.str;
|
||||
const char *k = key.str;
|
||||
unsigned int hash = 0;
|
||||
unsigned short i;
|
||||
|
||||
@ -972,8 +968,9 @@ static unsigned int db_string_hash(DBKey key, unsigned short maxlen)
|
||||
if (maxlen == 0)
|
||||
maxlen = UINT16_MAX;
|
||||
|
||||
for (i = 0; *k; i++) {
|
||||
hash = (hash*33 + *k++)^(hash>>24);
|
||||
for (i = 0; *k; ++i) {
|
||||
hash = (hash*33 + ((unsigned char)*k))^(hash>>24);
|
||||
k++;
|
||||
if (i == maxlen)
|
||||
break;
|
||||
}
|
||||
@ -992,7 +989,7 @@ static unsigned int db_string_hash(DBKey key, unsigned short maxlen)
|
||||
*/
|
||||
static unsigned int db_istring_hash(DBKey key, unsigned short maxlen)
|
||||
{
|
||||
unsigned char *k = key.str;
|
||||
const char *k = key.str;
|
||||
unsigned int hash = 0;
|
||||
unsigned short i;
|
||||
|
||||
@ -1003,7 +1000,7 @@ static unsigned int db_istring_hash(DBKey key, unsigned short maxlen)
|
||||
maxlen = UINT16_MAX;
|
||||
|
||||
for (i = 0; *k; i++) {
|
||||
hash = (hash*33 + LOWER(*k))^(hash>>24);
|
||||
hash = (hash*33 + ((unsigned char)TOLOWER(*k)))^(hash>>24);
|
||||
k++;
|
||||
if (i == maxlen)
|
||||
break;
|
||||
@ -1044,7 +1041,7 @@ static void db_release_key(DBKey key, void *data, DBRelease which)
|
||||
#ifdef DB_ENABLE_STATS
|
||||
COUNT(db_release_key);
|
||||
#endif /* DB_ENABLE_STATS */
|
||||
if (which&DB_RELEASE_KEY) aFree(key.str); // needs to be a pointer
|
||||
if (which&DB_RELEASE_KEY) aFree((char*)key.str); // needs to be a pointer
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1083,7 +1080,7 @@ static void db_release_both(DBKey key, void *data, DBRelease which)
|
||||
#ifdef DB_ENABLE_STATS
|
||||
COUNT(db_release_both);
|
||||
#endif /* DB_ENABLE_STATS */
|
||||
if (which&DB_RELEASE_KEY) aFree(key.str); // needs to be a pointer
|
||||
if (which&DB_RELEASE_KEY) aFree((char*)key.str); // needs to be a pointer
|
||||
if (which&DB_RELEASE_DATA) aFree(data);
|
||||
}
|
||||
|
||||
@ -1893,19 +1890,18 @@ static DBOptions db_obj_options(DB self)
|
||||
}
|
||||
|
||||
/*****************************************************************************\
|
||||
* (5) Section with public functions. *
|
||||
* db_fix_options - Apply database type restrictions to the options. *
|
||||
* db_default_cmp - Get the default comparator for a type of database. *
|
||||
* db_default_hash - Get the default hasher for a type of database. *
|
||||
* db_default_release - Get the default releaser for a type of database *
|
||||
* with the specified options. *
|
||||
* db_custom_release - Get a releaser that behaves a certains way. *
|
||||
* db_alloc - Allocate a new database. *
|
||||
* db_i2key - Manual cast from 'int' to 'DBKey'. *
|
||||
* db_ui2key - Manual cast from 'unsigned int' to 'DBKey'. *
|
||||
* db_str2key - Manual cast from 'unsigned char *' to 'DBKey'. *
|
||||
* db_init - Initialize the database system. *
|
||||
* db_final - Finalize the database system. *
|
||||
* (5) Section with public functions.
|
||||
* db_fix_options - Apply database type restrictions to the options.
|
||||
* db_default_cmp - Get the default comparator for a type of database.
|
||||
* db_default_hash - Get the default hasher for a type of database.
|
||||
* db_default_release - Get the default releaser for a type of database with the specified options.
|
||||
* db_custom_release - Get a releaser that behaves a certains way.
|
||||
* db_alloc - Allocate a new database.
|
||||
* db_i2key - Manual cast from 'int' to 'DBKey'.
|
||||
* db_ui2key - Manual cast from 'unsigned int' to 'DBKey'.
|
||||
* db_str2key - Manual cast from 'unsigned char *' to 'DBKey'.
|
||||
* db_init - Initializes the database system.
|
||||
* db_final - Finalizes the database system.
|
||||
\*****************************************************************************/
|
||||
|
||||
/**
|
||||
@ -2137,8 +2133,6 @@ DB db_alloc(const char *file, int line, DBType type, DBOptions options, unsigned
|
||||
* @return The key as a DBKey union
|
||||
* @public
|
||||
* @see #DB_MANUAL_CAST_TO_UNION
|
||||
* @see #db_ui2key(unsigned int)
|
||||
* @see #db_str2key(unsigned char *)
|
||||
*/
|
||||
DBKey db_i2key(int key)
|
||||
{
|
||||
@ -2157,10 +2151,7 @@ DBKey db_i2key(int key)
|
||||
* @param key Key to be casted
|
||||
* @return The key as a DBKey union
|
||||
* @public
|
||||
* @see common\db.h#DB_MANUAL_CAST_TO_UNION
|
||||
* @see #db_i2key(int)
|
||||
* @see #db_str2key(unsigned char *)
|
||||
* @see common\db.h#db_ui2key(unsigned int)
|
||||
* @see #DB_MANUAL_CAST_TO_UNION
|
||||
*/
|
||||
DBKey db_ui2key(unsigned int key)
|
||||
{
|
||||
@ -2174,17 +2165,14 @@ DBKey db_ui2key(unsigned int key)
|
||||
}
|
||||
|
||||
/**
|
||||
* Manual cast from 'unsigned char *' to the union DBKey.
|
||||
* Manual cast from 'const char *' to the union DBKey.
|
||||
* Created for compilers that don't support casting to unions.
|
||||
* @param key Key to be casted
|
||||
* @return The key as a DBKey union
|
||||
* @public
|
||||
* @see common\db.h#DB_MANUAL_CAST_TO_UNION
|
||||
* @see #db_i2key(int)
|
||||
* @see #db_ui2key(unsigned int)
|
||||
* @see common\db.h#db_str2key(unsigned char *)
|
||||
* @see #DB_MANUAL_CAST_TO_UNION
|
||||
*/
|
||||
DBKey db_str2key(unsigned char *key)
|
||||
DBKey db_str2key(const char *key)
|
||||
{
|
||||
DBKey ret;
|
||||
|
||||
@ -2197,10 +2185,9 @@ DBKey db_str2key(unsigned char *key)
|
||||
#endif /* DB_MANUAL_CAST_TO_UNION */
|
||||
|
||||
/**
|
||||
* Initialize the database system.
|
||||
* Initializes the database system.
|
||||
* @public
|
||||
* @see #db_final(void)
|
||||
* @see common\db.h#db_init(void)
|
||||
*/
|
||||
void db_init(void)
|
||||
{
|
||||
@ -2210,12 +2197,9 @@ void db_init(void)
|
||||
}
|
||||
|
||||
/**
|
||||
* Finalize the database system.
|
||||
* Frees the memory used by the block reusage system.
|
||||
* Finalizes the database system.
|
||||
* @public
|
||||
* @see common\db.h#DB_FINAL_NODE_CHECK
|
||||
* @see #db_init(void)
|
||||
* @see common\db.h#db_final(void)
|
||||
*/
|
||||
void db_final(void)
|
||||
{
|
||||
|
@ -78,7 +78,7 @@
|
||||
* @see #DBReleaser
|
||||
* @see #db_custom_release(DBRelease)
|
||||
*/
|
||||
typedef enum {
|
||||
typedef enum DBRelease {
|
||||
DB_RELEASE_NOTHING = 0,
|
||||
DB_RELEASE_KEY = 1,
|
||||
DB_RELEASE_DATA = 2,
|
||||
@ -102,7 +102,7 @@ typedef enum {
|
||||
* @see #db_default_release(DBType,DBOptions)
|
||||
* @see #db_alloc(const char *,int,DBType,DBOptions,unsigned short)
|
||||
*/
|
||||
typedef enum {
|
||||
typedef enum DBType {
|
||||
DB_INT,
|
||||
DB_UINT,
|
||||
DB_STRING,
|
||||
@ -154,7 +154,7 @@ typedef enum db_opt {
|
||||
typedef union dbkey {
|
||||
int i;
|
||||
unsigned int ui;
|
||||
unsigned char *str;//## TODO change to 'const char *'
|
||||
const char *str;
|
||||
} DBKey;
|
||||
|
||||
/**
|
||||
@ -272,7 +272,7 @@ struct dbt {
|
||||
* @protected
|
||||
* @see #db_get(DB,DBKey)
|
||||
*/
|
||||
void *(*get)(struct dbt *dbi, DBKey key);
|
||||
void *(*get)(DB self, DBKey key);
|
||||
|
||||
/**
|
||||
* Just calls {@link DB#vgetall(DB,void **,unsigned int,DBMatch,va_list)}.
|
||||
@ -498,8 +498,8 @@ struct dbt {
|
||||
#else /* not DB_MANUAL_CAST_TO_UNION */
|
||||
# define i2key(k) ((DBKey)(int)(k))
|
||||
# define ui2key(k) ((DBKey)(unsigned int)(k))
|
||||
# define str2key(k) ((DBKey)(unsigned char *)(k))
|
||||
#endif /* DB_MANUAL_CAST_TO_UNION / not DB_MANUAL_CAST_TO_UNION */
|
||||
# define str2key(k) ((DBKey)(const char *)(k))
|
||||
#endif /* not DB_MANUAL_CAST_TO_UNION */
|
||||
|
||||
#define db_get(db,k) (db)->get((db),(k))
|
||||
#define idb_get(db,k) (db)->get((db),i2key(k))
|
||||
@ -638,9 +638,6 @@ DB db_alloc(const char *file, int line, DBType type, DBOptions options, unsigned
|
||||
* @return The key as a DBKey union
|
||||
* @public
|
||||
* @see #DB_MANUAL_CAST_TO_UNION
|
||||
* @see #db_ui2key(unsigned int)
|
||||
* @see #db_str2key(unsigned char *)
|
||||
* @see common\db.c#db_i2key(int)
|
||||
*/
|
||||
DBKey db_i2key(int key);
|
||||
|
||||
@ -651,9 +648,6 @@ DBKey db_i2key(int key);
|
||||
* @return The key as a DBKey union
|
||||
* @public
|
||||
* @see #DB_MANUAL_CAST_TO_UNION
|
||||
* @see #db_i2key(int)
|
||||
* @see #db_str2key(unsigned char *)
|
||||
* @see common\db.c#db_ui2key(unsigned int)
|
||||
*/
|
||||
DBKey db_ui2key(unsigned int key);
|
||||
|
||||
@ -664,18 +658,14 @@ DBKey db_ui2key(unsigned int key);
|
||||
* @return The key as a DBKey union
|
||||
* @public
|
||||
* @see #DB_MANUAL_CAST_TO_UNION
|
||||
* @see #db_i2key(int)
|
||||
* @see #db_ui2key(unsigned int)
|
||||
* @see common\db.c#db_str2key(unsigned char *)
|
||||
*/
|
||||
DBKey db_str2key(unsigned char *key);
|
||||
DBKey db_str2key(const char *key);
|
||||
#endif /* DB_MANUAL_CAST_TO_UNION */
|
||||
|
||||
/**
|
||||
* Initialize the database system.
|
||||
* @public
|
||||
* @see #db_final(void)
|
||||
* @see common\db.c#db_init(void)
|
||||
*/
|
||||
void db_init(void);
|
||||
|
||||
@ -684,7 +674,6 @@ void db_init(void);
|
||||
* Frees the memory used by the block reusage system.
|
||||
* @public
|
||||
* @see #db_init(void)
|
||||
* @see common\db.c#db_final(void)
|
||||
*/
|
||||
void db_final(void);
|
||||
|
||||
|
@ -349,7 +349,7 @@ static void ers_obj_destroy(ERS self)
|
||||
* @see #ers_root
|
||||
* @see #ers_num
|
||||
*/
|
||||
ERS ers_new(size_t size)
|
||||
ERS ers_new(uint32 size)
|
||||
{
|
||||
ERS_impl obj;
|
||||
uint32 i;
|
||||
|
@ -142,7 +142,7 @@ typedef struct eri {
|
||||
* @param The requested size of the entry in bytes
|
||||
* @return Interface of the object
|
||||
*/
|
||||
ERS ers_new(size_t size);
|
||||
ERS ers_new(uint32 size);
|
||||
|
||||
/**
|
||||
* Print a report about the current state of the Entry Reusage System.
|
||||
|
@ -4,6 +4,8 @@
|
||||
#ifndef _MALLOC_H_
|
||||
#define _MALLOC_H_
|
||||
|
||||
#include "../common/cbasetypes.h"
|
||||
|
||||
// Q: What are the 'a'-variant allocation functions?
|
||||
// A: They allocate memory from the stack, which is automatically
|
||||
// freed when the invoking function returns.
|
||||
|
@ -1,6 +1,12 @@
|
||||
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
|
||||
// For more information, see LICENCE in the main folder
|
||||
|
||||
#include "../common/cbasetypes.h"
|
||||
#include "../common/mmo.h"
|
||||
#include "../common/malloc.h"
|
||||
#include "../common/showmsg.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
@ -14,42 +20,41 @@
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include "utils.h"
|
||||
#include "../common/mmo.h"
|
||||
#include "../common/malloc.h"
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/cbasetypes.h"
|
||||
|
||||
void dump(unsigned char* buffer, int num)
|
||||
#ifdef UTIL_DUMP
|
||||
void dump(const unsigned char* buffer, int num)
|
||||
{
|
||||
int icnt, jcnt;
|
||||
int icnt, jcnt;
|
||||
|
||||
printf(" Hex ASCII\n");
|
||||
printf(" ----------------------------------------------- ----------------");
|
||||
printf(" Hex ASCII\n");
|
||||
printf(" ----------------------------------------------- ----------------");
|
||||
|
||||
for (icnt = 0; icnt < num; icnt += 16) {
|
||||
printf("\n%p ", &buffer[icnt]);
|
||||
for (jcnt = icnt; jcnt < icnt + 16; ++jcnt) {
|
||||
if (jcnt < num) {
|
||||
printf("%02hX ", buffer[jcnt]);
|
||||
} else
|
||||
printf(" ");
|
||||
}
|
||||
for (icnt = 0; icnt < num; icnt += 16)
|
||||
{
|
||||
printf("\n%p ", &buffer[icnt]);
|
||||
for (jcnt = icnt; jcnt < icnt + 16; ++jcnt)
|
||||
{
|
||||
if (jcnt < num)
|
||||
printf("%02hX ", buffer[jcnt]);
|
||||
else
|
||||
printf(" ");
|
||||
}
|
||||
|
||||
printf(" | ");
|
||||
printf(" | ");
|
||||
|
||||
for (jcnt = icnt; jcnt < icnt + 16; ++jcnt) {
|
||||
if (jcnt < num) {
|
||||
if (buffer[jcnt] > 31 && buffer[jcnt] < 127)
|
||||
printf("%c", buffer[jcnt]);
|
||||
else
|
||||
printf(".");
|
||||
} else
|
||||
printf(" ");
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
for (jcnt = icnt; jcnt < icnt + 16; ++jcnt)
|
||||
{
|
||||
if (jcnt < num) {
|
||||
if (buffer[jcnt] > 31 && buffer[jcnt] < 127)
|
||||
printf("%c", buffer[jcnt]);
|
||||
else
|
||||
printf(".");
|
||||
} else
|
||||
printf(" ");
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
// Allocate a StringBuf [MouseJstr]
|
||||
struct StringBuf * StringBuf_Malloc()
|
||||
@ -141,7 +146,7 @@ char * StringBuf_Value(struct StringBuf *sbuf)
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
char* checkpath(char *path, const char *srcpath)
|
||||
static char* checkpath(char *path, const char *srcpath)
|
||||
{ // just make sure the char*path is not const
|
||||
char *p=path;
|
||||
if(NULL!=path && NULL!=srcpath)
|
||||
@ -202,7 +207,7 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
|
||||
|
||||
#define MAX_DIR_PATH 2048
|
||||
|
||||
char* checkpath(char *path, const char*srcpath)
|
||||
static char* checkpath(char *path, const char*srcpath)
|
||||
{ // just make sure the char*path is not const
|
||||
char *p=path;
|
||||
if(NULL!=path && NULL!=srcpath)
|
||||
|
@ -6,7 +6,11 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
void dump(unsigned char *buffer, int num);
|
||||
// Function that dumps the hex of the first num bytes of the buffer to the screen
|
||||
//#define UTIL_DUMP
|
||||
#ifdef UTIL_DUMP
|
||||
void dump(const unsigned char* buffer, int num);
|
||||
#endif
|
||||
|
||||
struct StringBuf {
|
||||
char *buf_;
|
||||
|
@ -1,12 +1,6 @@
|
||||
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
|
||||
// For more information, see LICENCE in the main folder
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "../common/cbasetypes.h"
|
||||
#include "../common/timer.h"
|
||||
#include "../common/nullpo.h"
|
||||
@ -17,7 +11,6 @@
|
||||
#include "../common/db.h"
|
||||
#include "map.h"
|
||||
#include "log.h"
|
||||
#include "npc.h"
|
||||
#include "clif.h"
|
||||
#include "intif.h"
|
||||
#include "pc.h"
|
||||
@ -29,11 +22,18 @@
|
||||
#include "battle.h"
|
||||
#include "skill.h"
|
||||
#include "unit.h"
|
||||
#include "npc.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
|
||||
|
||||
|
||||
struct npc_src_list {
|
||||
struct npc_src_list * next;
|
||||
// struct npc_src_list * prev; //[Shinomori]
|
||||
char name[4];
|
||||
};
|
||||
|
||||
@ -67,7 +67,7 @@ static struct
|
||||
{ //Holds pointers to the commonly executed scripts for speedup. [Skotlex]
|
||||
struct npc_data *nd;
|
||||
struct event_data *event[UCHAR_MAX];
|
||||
unsigned char *event_name[UCHAR_MAX];
|
||||
const char *event_name[UCHAR_MAX];
|
||||
unsigned char event_count;
|
||||
} script_event[NPCE_MAX];
|
||||
|
||||
@ -320,7 +320,7 @@ int npc_event_sub(struct map_session_data *, struct event_data *, const unsigned
|
||||
*/
|
||||
int npc_event_doall_sub(DBKey key,void *data,va_list ap)
|
||||
{
|
||||
unsigned char*p = key.str;
|
||||
const char*p = key.str;
|
||||
struct event_data *ev;
|
||||
int *c;
|
||||
int rid;
|
||||
@ -362,7 +362,7 @@ int npc_event_doall_id(const unsigned char *name, int rid)
|
||||
|
||||
int npc_event_do_sub(DBKey key,void *data,va_list ap)
|
||||
{
|
||||
unsigned char *p = key.str;
|
||||
const char *p = key.str;
|
||||
struct event_data *ev;
|
||||
int *c;
|
||||
const unsigned char *name;
|
||||
@ -511,7 +511,7 @@ int npc_cleareventtimer(struct npc_data *nd)
|
||||
|
||||
int npc_do_ontimer_sub(DBKey key,void *data,va_list ap)
|
||||
{
|
||||
unsigned char *p = key.str;
|
||||
const char *p = key.str;
|
||||
struct event_data *ev = (struct event_data *)data;
|
||||
int *c = va_arg(ap,int *);
|
||||
// struct map_session_data *sd=va_arg(ap,struct map_session_data *);
|
||||
@ -2900,10 +2900,10 @@ int npc_script_event(TBL_PC* sd, int type) {
|
||||
|
||||
static int npc_read_event_script_sub(DBKey key,void *data,va_list ap)
|
||||
{
|
||||
unsigned char *p = key.str;
|
||||
const char *p = key.str;
|
||||
unsigned char *name = va_arg(ap,unsigned char *);
|
||||
struct event_data **event_buf = va_arg(ap,struct event_data**);
|
||||
unsigned char **event_name = va_arg(ap,unsigned char **);
|
||||
const char **event_name = va_arg(ap,const char **);
|
||||
unsigned char *count = va_arg(ap,char *);;
|
||||
|
||||
if (*count >= UCHAR_MAX) return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user