summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/script.c30
-rw-r--r--src/map/script.h3
2 files changed, 18 insertions, 15 deletions
diff --git a/src/map/script.c b/src/map/script.c
index 0d520ebc3..236bcf71e 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -1828,31 +1828,32 @@ static void read_constdb(void)
/*==========================================
* エラー表示
*------------------------------------------*/
-const char* script_print_line( const char *p, const char *mark, int line )
+static const char* script_print_line(StringBuf* buf, const char* p, const char* mark, int line)
{
int i;
if( p == NULL || !p[0] ) return NULL;
if( line < 0 )
- ShowMessage("*% 5d : ", -line);
+ StringBuf_Printf(buf, "*% 5d : ", -line);
else
- ShowMessage(" % 5d : ", line);
+ StringBuf_Printf(buf, " % 5d : ", line);
for(i=0;p[i] && p[i] != '\n';i++){
if(p + i != mark)
- ShowMessage("%c",p[i]);
+ StringBuf_Printf(buf, "%c", p[i]);
else
- ShowMessage("\'%c\'",p[i]);
+ StringBuf_Printf(buf, "\'%c\'", p[i]);
}
- ShowMessage("\n");
+ StringBuf_AppendStr(buf, "\n");
return p+i+(p[i] == '\n' ? 1 : 0);
}
-void script_error(const char *src,const char *file,int start_line, const char *error_msg, const char *error_pos)
+void script_error(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos)
{
// エラーが発生した行を求める
int j;
int line = start_line;
const char *p;
const char *linestart[5] = { NULL, NULL, NULL, NULL, NULL };
+ StringBuf buf;
for(p=src;p && *p;line++){
const char *lineend=strchr(p,'\n');
@@ -1866,16 +1867,19 @@ void script_error(const char *src,const char *file,int start_line, const char *e
p=lineend+1;
}
- ShowMessage("\a\n");
- ShowMessage("script error on %s line %d\n", file, line);
- ShowMessage(" %s\n", error_msg);
+ StringBuf_Init(&buf);
+ StringBuf_AppendStr(&buf, "\a\n");
+ StringBuf_Printf(&buf, "script error on %s line %d\n", file, line);
+ StringBuf_Printf(&buf, " %s\n", error_msg);
for(j = 0; j < 5; j++ ) {
- script_print_line( linestart[j], NULL, line + j - 5);
+ script_print_line(&buf, linestart[j], NULL, line + j - 5);
}
- p = script_print_line( p, error_pos, -line);
+ p = script_print_line(&buf, p, error_pos, -line);
for(j = 0; j < 5; j++) {
- p = script_print_line( p, NULL, line + j + 1 );
+ p = script_print_line(&buf, p, NULL, line + j + 1 );
}
+ ShowError("%s", StringBuf_Value(&buf));
+ StringBuf_Destroy(&buf);
}
/*==========================================
diff --git a/src/map/script.h b/src/map/script.h
index 7f07185a8..981c5b985 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -118,8 +118,7 @@ enum script_parse_options {
};
const char* skip_space(const char* p);
-const char* script_print_line(const char* p, const char* mark, int line);
-void script_error(const char *src,const char *file,int start_line, const char *error_msg, const char *error_pos);
+void script_error(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos);
struct script_code* parse_script(const char* src,const char* file,int line,int options);
void run_script_sub(struct script_code *rootscript,int pos,int rid,int oid, char* file, int lineno);