From dfb7b664299f5af5503d14bf914c5ca4bfb745be Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 7 Mar 2007 16:47:51 +0000 Subject: - Made the map server abort when it can't open the mapcache file. - Added a normalizing function to map.c which handles removing the extension of the map name. - Applied said function when reading maps from maps_athena, since the mapcache lookup fails without it (maps are stored there without extensions) - TODO: Apply the normalizing function everywhere when parsing map related scripts. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9973 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/map.c | 22 ++++++++++++++++++++-- src/map/map.h | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/map/map.c b/src/map/map.c index 2ae720ddf..48ca20dff 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2447,6 +2447,20 @@ struct map_cache_info { FILE *map_cache_fp; +char *map_normalize_name(char *mapname) +{ + char *ptr, *ptr2; + ptr = strchr(mapname, '.'); + if (ptr) { //Check and remove extension. + while (ptr[1] && (ptr2 = strchr(ptr+1, '.'))) + ptr = ptr2; //Skip to the last dot. + if(stricmp(ptr,".gat") == 0 || + stricmp(ptr,".afm") == 0) + *ptr = '\0'; //Remove extension. + } + return mapname; +} + int map_readmap(struct map_data *m) { int i; @@ -2489,7 +2503,8 @@ int map_addmap(char *mapname) { CL_WHITE"%s"CL_RESET"', the limit of maps has been reached.\n",mapname); return 1; } - memcpy(map[map_num].name, mapname, MAP_NAME_LENGTH-1); + + memcpy(map[map_num].name, map_normalize_name(mapname), MAP_NAME_LENGTH-1); map_num++; return 0; } @@ -2529,7 +2544,10 @@ int map_readallmaps() int maps_removed = 0; if(!(map_cache_fp = fopen(map_cache_file, "rb"))) - ShowError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", map_cache_file); + { + ShowFatalError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", map_cache_file); + exit(1); //No use launching server if maps can't be read. + } ShowStatus("Loading maps...\n"); diff --git a/src/map/map.h b/src/map/map.h index 087f1e4e4..9ddf153aa 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -1388,6 +1388,7 @@ int map_foreachiddb(int (*)(DBKey,void*,va_list),...); void map_addnickdb(struct map_session_data *); struct map_session_data * map_nick2sd(char*); int compare_item(struct item *a, struct item *b); +char *map_normalize_name(char *mapname); // ‚»‚Ì‘¼ int map_check_dir(int s_dir,int t_dir); -- cgit v1.2.3-70-g09d2