Add more media directories; mod/{textures,sounds,media}
parent
f801e16b78
commit
26666bb36f
|
@ -3931,29 +3931,40 @@ void Server::fillMediaCache()
|
||||||
{
|
{
|
||||||
DSTACK(__FUNCTION_NAME);
|
DSTACK(__FUNCTION_NAME);
|
||||||
|
|
||||||
infostream<<"Server: Calculating file checksums"<<std::endl;
|
infostream<<"Server: Calculating media file checksums"<<std::endl;
|
||||||
|
|
||||||
|
// Collect all media file paths
|
||||||
|
std::list<std::string> paths;
|
||||||
for(core::list<ModSpec>::Iterator i = m_mods.begin();
|
for(core::list<ModSpec>::Iterator i = m_mods.begin();
|
||||||
i != m_mods.end(); i++){
|
i != m_mods.end(); i++){
|
||||||
const ModSpec &mod = *i;
|
const ModSpec &mod = *i;
|
||||||
std::string filepath = mod.path + DIR_DELIM + "textures";
|
paths.push_back(mod.path + DIR_DELIM + "textures");
|
||||||
std::vector<fs::DirListNode> dirlist = fs::GetDirListing(filepath);
|
paths.push_back(mod.path + DIR_DELIM + "sounds");
|
||||||
|
paths.push_back(mod.path + DIR_DELIM + "media");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Collect media file information from paths into cache
|
||||||
|
for(std::list<std::string>::iterator i = paths.begin();
|
||||||
|
i != paths.end(); i++)
|
||||||
|
{
|
||||||
|
std::string mediapath = *i;
|
||||||
|
std::vector<fs::DirListNode> dirlist = fs::GetDirListing(mediapath);
|
||||||
for(u32 j=0; j<dirlist.size(); j++){
|
for(u32 j=0; j<dirlist.size(); j++){
|
||||||
if(dirlist[j].dir) // Ignode dirs
|
if(dirlist[j].dir) // Ignode dirs
|
||||||
continue;
|
continue;
|
||||||
std::string tname = dirlist[j].name;
|
std::string filename = dirlist[j].name;
|
||||||
// if name contains illegal characters, ignore the file
|
// if name contains illegal characters, ignore the file
|
||||||
if(!string_allowed(tname, TEXTURENAME_ALLOWED_CHARS)){
|
if(!string_allowed(filename, TEXTURENAME_ALLOWED_CHARS)){
|
||||||
errorstream<<"Server: ignoring illegal file name: \""
|
errorstream<<"Server: ignoring illegal file name: \""
|
||||||
<<tname<<"\""<<std::endl;
|
<<filename<<"\""<<std::endl;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
std::string tpath = filepath + DIR_DELIM + tname;
|
std::string filepath = mediapath + DIR_DELIM + filename;
|
||||||
// Read data
|
// Read data
|
||||||
std::ifstream fis(tpath.c_str(), std::ios_base::binary);
|
std::ifstream fis(filepath.c_str(), std::ios_base::binary);
|
||||||
if(fis.good() == false){
|
if(fis.good() == false){
|
||||||
errorstream<<"Server::fillMediaCache(): Could not open \""
|
errorstream<<"Server::fillMediaCache(): Could not open \""
|
||||||
<<tname<<"\" for reading"<<std::endl;
|
<<filename<<"\" for reading"<<std::endl;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
std::ostringstream tmp_os(std::ios_base::binary);
|
std::ostringstream tmp_os(std::ios_base::binary);
|
||||||
|
@ -3972,12 +3983,12 @@ void Server::fillMediaCache()
|
||||||
}
|
}
|
||||||
if(bad){
|
if(bad){
|
||||||
errorstream<<"Server::fillMediaCache(): Failed to read \""
|
errorstream<<"Server::fillMediaCache(): Failed to read \""
|
||||||
<<tname<<"\""<<std::endl;
|
<<filename<<"\""<<std::endl;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(tmp_os.str().length() == 0){
|
if(tmp_os.str().length() == 0){
|
||||||
errorstream<<"Server::fillMediaCache(): Empty file \""
|
errorstream<<"Server::fillMediaCache(): Empty file \""
|
||||||
<<tpath<<"\""<<std::endl;
|
<<filepath<<"\""<<std::endl;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3990,8 +4001,9 @@ void Server::fillMediaCache()
|
||||||
free(digest);
|
free(digest);
|
||||||
|
|
||||||
// Put in list
|
// Put in list
|
||||||
this->m_media[tname] = MediaInfo(tpath,digest_string);
|
this->m_media[filename] = MediaInfo(filepath, digest_string);
|
||||||
verbosestream<<"Server: sha1 for "<<tname<<"\tis "<<std::endl;
|
verbosestream<<"Server: sha1 for "<<filename<<"\tis "
|
||||||
|
<<digest_string<<std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue