Path::Path(const char *p, Encoding e) { if(e == ASCII) ParsePathString(ASCIItoUCS2String(p)); else ParsePathString(URLToUCS2String(p)); }
Path::Path(const string& p, Encoding e) { if(e == ASCII) ParsePathString(ASCIItoUCS2String(p.c_str())); else ParsePathString(URLToUCS2String(p)); }
UCS2String TemporaryFile::SuggestName() { static std::atomic_int globalIndex = 0; int index = globalIndex++; char buffer[32]; sprintf(buffer, "/tmp/pov%08x.dat", index); return ASCIItoUCS2String(buffer); }
UCS2String DefaultPlatformBase::CreateTemporaryFile() { static int cnt = 0; char buffer[32]; cnt++; sprintf(buffer, "/tmp/pov%08x.dat", cnt); FILE *f = fopen(buffer, "wb"); if(f != NULL) fclose(f); return UCS2String(ASCIItoUCS2String(buffer)); }
UCS2String Path::URLToUCS2String(const string& p) const { return ASCIItoUCS2String(p.c_str()); // TODO FIXME }
void Path::SetFile(const string& p) { file = ASCIItoUCS2String(p.c_str()); }
void Path::SetFile(const char *p) { file = ASCIItoUCS2String(p); }
void Path::AppendFolder(const string& p) { folders.push_back(ASCIItoUCS2String(p.c_str())); }
void Path::AppendFolder(const char *p) { folders.push_back(ASCIItoUCS2String(p)); }
void Path::SetVolume(const string& p) { volume = ASCIItoUCS2String(p.c_str()); }
void Path::SetVolume(const char *p) { volume = ASCIItoUCS2String(p); }
UCS2String BackendSceneData::FindFile(POVMSContext ctx, const UCS2String& filename, unsigned int stype) { vector<UCS2String> filenames; UCS2String foundfile; bool tryExactFirst; // if filename extension, matches one of the standard ones, try the exact name first // (otherwise, try it last) UCS2String::size_type pos = filename.find_last_of('.'); tryExactFirst = false; if (pos != UCS2String::npos) { for (size_t i = 0; i < POV_FILE_EXTENSIONS_PER_TYPE; i++) { if ( ( strlen(gPOV_File_Extensions[stype].ext[i]) > 0 ) && ( filename.compare(pos,filename.length()-pos, ASCIItoUCS2String(gPOV_File_Extensions[stype].ext[i])) == 0 ) ) { // match tryExactFirst = true; break; } } } // build list of files to search for if (tryExactFirst) filenames.push_back(filename); // add filename with extension variants to list of files to search for for (size_t i = 0; i < POV_FILE_EXTENSIONS_PER_TYPE; i++) { if (strlen(gPOV_File_Extensions[stype].ext[i]) > 0) { UCS2String fn(filename); fn += ASCIItoUCS2String(gPOV_File_Extensions[stype].ext[i]); filenames.push_back(fn); } } if (!tryExactFirst) filenames.push_back(filename); #ifdef USE_SCENE_FILE_MAPPING // see if the file is available locally for(vector<UCS2String>::const_iterator i(filenames.begin()); i != filenames.end(); i++) { FilenameToFilenameMap::iterator ilocalfile(scene2LocalFiles.find(*i)); if(ilocalfile != scene2LocalFiles.end()) return *i; } // see if the file is available as temporary file for(vector<UCS2String>::const_iterator i(filenames.begin()); i != filenames.end(); i++) { FilenameToFilenameMap::iterator itempfile(scene2TempFiles.find(*i)); if(itempfile != scene2TempFiles.end()) return *i; } #endif // otherwise, request to find the file RenderBackend::SendFindFile(ctx, sceneId, frontendAddress, filenames, foundfile); return foundfile; }
UCS2String DefaultPlatformBase::GetTemporaryPath() { return ASCIItoUCS2String("/tmp/"); }
IMemStream::IMemStream(const unsigned char* data, size_t size, const char* formalName, POV_LONG formalStart) : IStream(ASCIItoUCS2String(formalName)), size(size), pos(0), start(data), formalStart(formalStart) { fail = false; }