コード例 #1
0
std::string StreamCache::RealFileForCacheFile( const std::string cacheFile, const std::string contentType )
{
	std::string realFile = cacheFile;

	// force extensions for some known mime types because renderer has no idea about mime types
	// FIXME: this breaks caching due to cache file name mismatch at the start of PerformRequest
	if( contentType != "" ) {
		std::string forceExtension( "" );

		if( contentType == "image/x-tga" ) {
			forceExtension = ".tga";
		}
		else if( contentType == "image/jpeg" || contentType == "image/jpg" ) {
			forceExtension = ".jpg";
		}
		else if( contentType == "image/png" ) {
			forceExtension = ".png";
		}

		// remove existing extension (if any), append forced extension
		if( forceExtension != "" ) {
			std::string::size_type dot = realFile.rfind( '.' );
			std::string::size_type slash = realFile.rfind( '/' );
			if( dot != realFile.npos && ( slash == realFile.npos || dot > slash ) ) {
				realFile = realFile.substr( 0, dot );
			}
			realFile += forceExtension;
		}
	}

	// add a link
	if( realFile != cacheFile ) {
		int filenum;
		std::string linkFile = cacheFile + LINK_EXTENSION;

		if( trap::FS_FOpenFile( linkFile.c_str(), &filenum, FS_WRITE ) >= 0 ) {
			trap::FS_Write( realFile.c_str(), realFile.length(), filenum );
			trap::FS_FCloseFile( filenum );
		}
	}

	return realFile;
}
コード例 #2
0
ファイル: fileio.c プロジェクト: ysangkok/pgp-unix-6.5.8
/* if user consents to it, change the filename extension. */
char *maybeForceExtension( struct pgpfileBones *filebPtr, char *filename,
        char *extension )
{
    struct pgpenvBones *envbPtr = filebPtr->envbPtr;
    PGPEnv *env = envbPtr->m_env;
    PGPInt32 pri;
    PGPError err;
    static char newname[MAX_PATH];

    if (!hasExtension(filename, extension)) {
        strcpy(newname, filename);
        forceExtension( filebPtr, newname, extension );
        if (!fileExists(newname)) {
            fprintf(filebPtr->pgpout,
                    LANG("\nShould '%s' be renamed to '%s' [Y/n]? "),
                    filename, newname);
            if (getyesno(filebPtr, 'y', (PGPBoolean)pgpenvGetInt( env,
                    PGPENV_BATCHMODE, &pri, &err )))
                return newname;
        }
    }
    return NULL;
}/* maybe_force_extension */