X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=plugins%2Fvfspk3%2Fvfs.cpp;fp=plugins%2Fvfspk3%2Fvfs.cpp;h=5871f9914afa657a3c36ebff8eab1f0e1e597b05;hb=d1d8fd041cec01b7780e59e7ac19deab4730bb11;hp=44c2ebb5290630fe13f17d1415773c27f55dc8eb;hpb=bee71bf6043ec50bb9cc029d7f656920b4df2b2c;p=xonotic%2Fnetradiant.git diff --git a/plugins/vfspk3/vfs.cpp b/plugins/vfspk3/vfs.cpp index 44c2ebb5..5871f991 100644 --- a/plugins/vfspk3/vfs.cpp +++ b/plugins/vfspk3/vfs.cpp @@ -347,6 +347,9 @@ static const char* GetLatestDpkPakVersion( const char* name ){ } // release string after using +// Note: it also contains the version string, +// for …/src/map-castle_src.dpkdir/maps/castle.map +// it will return map-castle_src static char* GetCurrentMapDpkPakName(){ char* mapdir; char* mapname; @@ -356,21 +359,27 @@ static char* GetCurrentMapDpkPakName(){ mapname = string_clone( GlobalRadiant().getMapName() ); mapnamelen = string_length( mapname ); - mapdir = strrchr( mapname, '/' ); - if ( mapdir ) { - mapdir -= 12; - if ( strncmp( mapdir, ".dpkdir/maps/", 13 ) == 0 ) { - *mapdir = '\0'; - mapdir = strrchr( mapname, '/' ); - if ( mapdir ) mapdir++; - else mapdir = mapname; - result = string_clone( mapdir ); + char pattern[] = ".dpkdir/"; + char* end = strstr( mapname, ".dpkdir/" ); + if ( end ) + { + end[ 0 ] = '\0'; + + mapdir = strrchr( mapname, '/' ); + if ( mapdir ) + { + mapdir++; + } + else + { + mapdir = mapname; } + + result = string_clone( mapdir ); } string_release( mapname, mapnamelen ); return result; - } // prevent loading duplicates or circular references