summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/map/script.c b/src/map/script.c
index 0b4374887..07f642dc6 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -52,7 +52,7 @@ static int script_pos,script_size;
char *str_buf;
int str_pos,str_size;
-static struct {
+static struct str_data_struct {
int type;
int str;
int backpatch;
@@ -306,7 +306,7 @@ int mapreg_setreg(int num,int val);
int mapreg_setregstr(int num,const char *str);
struct {
- int (*func)();
+ int (*func)(struct script_state *);
char *name;
char *arg;
} buildin_func[]={
@@ -559,7 +559,7 @@ static int search_str(const unsigned char *p)
int i;
i=str_hash[calc_hash(p)];
while(i){
- if(strcmp(str_buf+str_data[i].str,p)==0){
+ if(strcmp(str_buf+str_data[i].str,(char *) p)==0){
return i;
}
i=str_data[i].next;
@@ -577,10 +577,10 @@ static int add_str(const unsigned char *p)
int i;
char *lowcase;
- lowcase=aStrdup(p);
+ lowcase=aStrdup((char *) p);
for(i=0;lowcase[i];i++)
lowcase[i]=tolower(lowcase[i]);
- if((i=search_str(lowcase))>=0){
+ if((i=search_str((unsigned char *) lowcase))>=0){
aFree(lowcase);
return i;
}
@@ -592,7 +592,7 @@ static int add_str(const unsigned char *p)
} else {
i=str_hash[i];
for(;;){
- if(strcmp(str_buf+str_data[i].str,p)==0){
+ if(strcmp(str_buf+str_data[i].str,(char *) p)==0){
return i;
}
if(str_data[i].next==0)
@@ -603,22 +603,22 @@ static int add_str(const unsigned char *p)
}
if(str_num>=str_data_size){
str_data_size+=128;
- str_data=aRealloc(str_data,sizeof(str_data[0])*str_data_size);
+ str_data=(struct str_data_struct *) aRealloc(str_data,sizeof(str_data[0])*str_data_size);
memset(str_data + (str_data_size - 128), '\0', 128);
}
- while(str_pos+(int)strlen(p)+1>=str_size){
+ while(str_pos+(int)strlen((char *) p)+1>=str_size){
str_size+=256;
str_buf=(char *)aRealloc(str_buf,str_size);
memset(str_buf + (str_size - 256), '\0', 256);
}
- strcpy(str_buf+str_pos,p);
+ strcpy(str_buf+str_pos, (char *) p);
str_data[str_num].type=C_NOP;
str_data[str_num].str=str_pos;
str_data[str_num].next=0;
str_data[str_num].func=NULL;
str_data[str_num].backpatch=-1;
str_data[str_num].label=-1;
- str_pos+=strlen(p)+1;
+ str_pos+=strlen( (char *) p)+1;
return str_num++;
}
@@ -631,7 +631,7 @@ static void check_script_buf(int size)
{
if(script_pos+size>=script_size){
script_size+=SCRIPT_BLOCK_SIZE;
- script_buf=(char *)aRealloc(script_buf,script_size);
+ script_buf=(unsigned char *)aRealloc(script_buf,script_size);
memset(script_buf + script_size - SCRIPT_BLOCK_SIZE, '\0',
SCRIPT_BLOCK_SIZE);
}
@@ -792,7 +792,7 @@ static void disp_error_message(const char *mes,const unsigned char *pos)
for(line=startline,p=startptr;p && *p;line++){
linestart=p;
- lineend=strchr(p,'\n');
+ lineend=(unsigned char *) strchr((char *) p,'\n');
if(lineend){
c=*lineend;
*lineend=0;
@@ -842,9 +842,9 @@ unsigned char* parse_simpleexpr(unsigned char *p)
}
} else if(isdigit(*p) || ((*p=='-' || *p=='+') && isdigit(p[1]))){
char *np;
- i=strtoul(p,&np,0);
+ i=strtoul((char *) p,&np,0);
add_scripti(i);
- p=np;
+ p=(unsigned char *) np;
} else if(*p=='"'){
add_scriptc(C_STR);
p++;
@@ -871,12 +871,12 @@ unsigned char* parse_simpleexpr(unsigned char *p)
disp_error_message("unexpected character",p);
exit(1);
}
- p2=skip_word(p);
+ p2=(char *) skip_word(p);
c=*p2; *p2=0; // 名前をadd_strする
l=add_str(p);
parse_cmd=l; // warn_*_mismatch_paramnumのために必要
- if(l==search_str("if")) // warn_cmd_no_commaのために必要
+ if(l== search_str((unsigned char *) "if")) // warn_cmd_no_commaのために必要
parse_cmd_if++;
/*
// 廃止予定のl14/l15,およびプレフィックスlの警告
@@ -887,11 +887,12 @@ unsigned char* parse_simpleexpr(unsigned char *p)
disp_error_message("prefix 'l' is DEPRECATED. use prefix '@' instead.",p2);
}
*/
- *p2=c; p=p2;
+ *p2=c;
+ p=(unsigned char *) p2;
if(str_data[l].type!=C_FUNC && c=='['){
// array(name[i] => getelementofarray(name,i) )
- add_scriptl(search_str("getelementofarray"));
+ add_scriptl(search_str((unsigned char *) "getelementofarray"));
add_scriptc(C_ARG);
add_scriptl(l);
p=parse_subexpr(p+1,-1);
@@ -929,14 +930,14 @@ unsigned char* parse_subexpr(unsigned char *p,int limit)
p=skip_space(p);
if(*p=='-'){
- tmpp=skip_space(p+1);
+ tmpp=(char *) skip_space((unsigned char *) (p+1));
if(*tmpp==';' || *tmpp==','){
add_scriptl(LABEL_NEXTLINE);
p++;
return p;
}
}
- tmpp=p;
+ tmpp=(char *) p;
if((op=C_NEG,*p=='-') || (op=C_LNOT,*p=='!') || (op=C_NOT,*p=='~')){
p=parse_subexpr(p+1,100);
add_scriptc(op);
@@ -968,13 +969,13 @@ unsigned char* parse_subexpr(unsigned char *p,int limit)
const char *plist[128];
if( str_data[func].type!=C_FUNC ){
- disp_error_message("expect function",tmpp);
+ disp_error_message("expect function",(unsigned char *) tmpp);
exit(0);
}
add_scriptc(C_ARG);
do {
- plist[i]=p;
+ plist[i]=(char *) p;
p=parse_subexpr(p,-1);
p=skip_space(p);
if(*p==',') p++;
@@ -984,7 +985,7 @@ unsigned char* parse_subexpr(unsigned char *p,int limit)
p=skip_space(p);
i++;
} while(*p && *p!=')' && i<128);
- plist[i]=p;
+ plist[i]=(char *) p;
if(*(p++)!=')'){
disp_error_message("func request '(' ')'",p);
exit(1);
@@ -995,7 +996,7 @@ unsigned char* parse_subexpr(unsigned char *p,int limit)
int j=0;
for(j=0;arg[j];j++) if(arg[j]=='*')break;
if( (arg[j]==0 && i!=j) || (arg[j]=='*' && i<j) ){
- disp_error_message("illegal number of parameters",plist[(i<j)?i:j]);
+ disp_error_message("illegal number of parameters",(unsigned char *) (plist[(i<j)?i:j]));
}
}
} else {
@@ -1052,19 +1053,19 @@ unsigned char* parse_line(unsigned char *p)
parse_cmd_if=0; // warn_cmd_no_commaのために必要
// 最初は関数名
- p2=p;
+ p2=(char *) p;
p=parse_simpleexpr(p);
p=skip_space(p);
cmd=parse_cmd;
if( str_data[cmd].type!=C_FUNC ){
- disp_error_message("expect command",p2);
+ disp_error_message("expect command",(unsigned char *) p2);
// exit(0);
}
add_scriptc(C_ARG);
while(p && *p && *p!=';' && i<128){
- plist[i]=p;
+ plist[i]=(char *) p;
p=parse_expr(p);
p=skip_space(p);
@@ -1076,7 +1077,7 @@ unsigned char* parse_line(unsigned char *p)
p=skip_space(p);
i++;
}
- plist[i]=p;
+ plist[i]=(char *) p;
if(!p || *(p++)!=';'){
disp_error_message("need ';'",p);
exit(1);
@@ -1088,7 +1089,7 @@ unsigned char* parse_line(unsigned char *p)
int j=0;
for(j=0;arg[j];j++) if(arg[j]=='*')break;
if( (arg[j]==0 && i!=j) || (arg[j]=='*' && i<j) ){
- disp_error_message("illegal number of parameters",plist[(i<j)?i:j]);
+ disp_error_message("illegal number of parameters",(unsigned char *) (plist[(i<j)?i:j]));
}
}
@@ -1104,7 +1105,7 @@ static void add_buildin_func(void)
{
int i,n;
for(i=0;buildin_func[i].func;i++){
- n=add_str(buildin_func[i].name);
+ n=add_str((unsigned char *) buildin_func[i].name);
str_data[n].type=C_FUNC;
str_data[n].val=i;
str_data[n].func=buildin_func[i].func;