* 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:
FlavioJS 2007-04-09 13:03:34 +00:00
parent 5d3ea3da27
commit cc893dbaab
10 changed files with 98 additions and 111 deletions

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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);

View File

@ -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;

View File

@ -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.

View File

@ -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.

View File

@ -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)

View File

@ -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_;

View File

@ -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;