Exemplo n.º 1
0
/*  
    Constructor
    function open(options: Object = null): File
    NOTE: options can be an options hash or as mode string
 */
static EjsObj *openFile(Ejs *ejs, EjsFile *fp, int argc, EjsObj **argv)
{
    EjsObj  *options;
    cchar   *mode;
    int     perms, omode;

    if (argc < 0 || argc > 1) {
        ejsThrowArgError(ejs, "Bad args");
        return 0;
    }
    options = argv[0];
    if (argc == 0 || !ejsIsDefined(ejs, options)) {
        omode = O_RDONLY | O_BINARY;
        perms = EJS_FILE_PERMS;
        fp->mode = EJS_FILE_READ;
        mode = "r";
    } else {
        if (ejsIs(ejs, options, String)) {
            mode = ejsToMulti(ejs, options);
            perms = EJS_FILE_PERMS;
        } else {
            perms = ejsGetNumOption(ejs, options, "permissions", EJS_FILE_PERMS, 1);
            mode = getStrOption(ejs, options, "mode", "r", 1);
            if (ejs->exception) {
                return 0;
            }
        }
        omode = mapMode(mode);
        if (!(omode & O_WRONLY)) {
            fp->mode |= EJS_FILE_READ;
        }
        if (omode & (O_WRONLY | O_RDWR)) {
            fp->mode |= EJS_FILE_WRITE;
        }
    }
    fp->modeString = sclone(mode);
    fp->perms = perms;

    if (fp->file) {
        mprCloseFile(fp->file);
    }
    fp->file = mprOpenFile(fp->path, omode, perms);
    if (fp->file == 0) {
        ejsThrowIOError(ejs, "Cannot open %s", fp->path);
        return 0;
    }
    if (options) {
        ejsSetPathAttributes(ejs, fp->path, options);
    }
#if ME_CC_MMU && FUTURE
    mprGetPathInfo(&fp->info);
    fp->mapped = mapFile(fp, fp->info.size, MPR_MAP_READ | MPR_MAP_WRITE);
#endif
    fp->mode |= EJS_FILE_OPEN;
    return (EjsObj*) fp;
}
Exemplo n.º 2
0
int iniRead()
{
	FILE* fp = NULL;
	fp = fopen(FBARL_INI_PATH, "r");
	if(fp) 
	{
		char* pszStrOption = NULL;

		// -----------------------------------------------------------------------------------------
		// Rom path options
		// -----------------------------------------------------------------------------------------
		pszStrOption = getStrOption(fp, "rompath_1:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[0], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_2:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[1], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_3:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[2], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_4:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[3], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_5:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[4], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_6:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[5], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_7:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[6], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_8:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[7], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_9:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[8], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_10:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[9], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_11:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[10], pszStrOption);

		pszStrOption = getStrOption(fp, "rompath_12:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szROMPaths[11], pszStrOption);			

		// -----------------------------------------------------------------------------------------
		// Custom System Filters options
		// -----------------------------------------------------------------------------------------
		if(!getBoolOption(fp, "filter_capcom_misc:\""	, &g_opt_bCustomSysFilter[0])) {return 0;}
		if(!getBoolOption(fp, "filter_cave:\""			, &g_opt_bCustomSysFilter[1])) {return 0;}
		if(!getBoolOption(fp, "filter_cps1:\""			, &g_opt_bCustomSysFilter[2])) {return 0;}
		if(!getBoolOption(fp, "filter_cps2:\""			, &g_opt_bCustomSysFilter[3])) {return 0;}
		if(!getBoolOption(fp, "filter_cps3:\""			, &g_opt_bCustomSysFilter[4])) {return 0;}
		if(!getBoolOption(fp, "filter_dataeast:\""		, &g_opt_bCustomSysFilter[5])) {return 0;}
		if(!getBoolOption(fp, "filter_galaxian:\""		, &g_opt_bCustomSysFilter[6])) {return 0;}
		if(!getBoolOption(fp, "filter_irem:\""			, &g_opt_bCustomSysFilter[7])) {return 0;}
		if(!getBoolOption(fp, "filter_kaneko:\""		, &g_opt_bCustomSysFilter[8])) {return 0;}
		if(!getBoolOption(fp, "filter_konami:\""		, &g_opt_bCustomSysFilter[9])) {return 0;}
		if(!getBoolOption(fp, "filter_neogeo:\""		, &g_opt_bCustomSysFilter[10])) {return 0;}
		if(!getBoolOption(fp, "filter_pacman:\""		, &g_opt_bCustomSysFilter[11])) {return 0;}
		if(!getBoolOption(fp, "filter_pgm:\""			, &g_opt_bCustomSysFilter[12])) {return 0;}
		if(!getBoolOption(fp, "filter_psikyo:\""		, &g_opt_bCustomSysFilter[13])) {return 0;}
		if(!getBoolOption(fp, "filter_sega:\""			, &g_opt_bCustomSysFilter[14])) {return 0;}
		if(!getBoolOption(fp, "filter_seta:\""			, &g_opt_bCustomSysFilter[15])) {return 0;}
		if(!getBoolOption(fp, "filter_taito:\""			, &g_opt_bCustomSysFilter[16])) {return 0;}
		if(!getBoolOption(fp, "filter_technos:\""		, &g_opt_bCustomSysFilter[17])) {return 0;}
		if(!getBoolOption(fp, "filter_toaplan:\""		, &g_opt_bCustomSysFilter[18])) {return 0;}
		if(!getBoolOption(fp, "filter_misc_pre90:\""	, &g_opt_bCustomSysFilter[19])) {return 0;}
		if(!getBoolOption(fp, "filter_misc_post90:\""	, &g_opt_bCustomSysFilter[20])) {return 0;}

		// -----------------------------------------------------------------------------------------
		// Enable / Disable Neo-Geo UNI-BIOS
		// -----------------------------------------------------------------------------------------
		if(!getBoolOption(fp, "use_ng_unibios:\"", &g_opt_bUseUNIBIOS)) {return 0;}
		

		// -----------------------------------------------------------------------------------------
		// Active System Filter
		// -----------------------------------------------------------------------------------------
		if(!getIntOption(fp, "filter_active:\"", &g_opt_nActiveSysFilter)) {return 0;}

		// -----------------------------------------------------------------------------------------
		// Enable / Disable display of missing games
		// -----------------------------------------------------------------------------------------
		if(!getBoolOption(fp, "display_missing:\"", &g_opt_bDisplayMissingGames)) {return 0;}

		// -----------------------------------------------------------------------------------------
		// Auto aspect ratio option
		// -----------------------------------------------------------------------------------------
		if(!getBoolOption(fp, "auto_ar:\"", &g_opt_bAutoAspectRatio)) {return 0;}

		// -----------------------------------------------------------------------------------------
		// Alternate RetroArch menu key combo option
		// -----------------------------------------------------------------------------------------
		if(!getBoolOption(fp, "alt_menu_key_combo:\"", &g_opt_bUseAltMenuKeyCombo)) {return 0;}

		// -----------------------------------------------------------------------------------------
		// Game System Input preset options
		// -----------------------------------------------------------------------------------------
		pszStrOption = getStrOption(fp, "input_capcom_misc:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[0], pszStrOption);

		pszStrOption = getStrOption(fp, "input_cave:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[1], pszStrOption);

		pszStrOption = getStrOption(fp, "input_cps1:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[2], pszStrOption);

		pszStrOption = getStrOption(fp, "input_cps2:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[3], pszStrOption);

		pszStrOption = getStrOption(fp, "input_cps3:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[4], pszStrOption);

		pszStrOption = getStrOption(fp, "input_dataeast:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[5], pszStrOption);

		pszStrOption = getStrOption(fp, "input_galaxian:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[6], pszStrOption);

		pszStrOption = getStrOption(fp, "input_irem:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[7], pszStrOption);

		pszStrOption = getStrOption(fp, "input_kaneko:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[8], pszStrOption);

		pszStrOption = getStrOption(fp, "input_konami:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[9], pszStrOption);

		pszStrOption = getStrOption(fp, "input_neogeo:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[10], pszStrOption);

		pszStrOption = getStrOption(fp, "input_pacman:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[11], pszStrOption);

		pszStrOption = getStrOption(fp, "input_pgm:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[12], pszStrOption);

		pszStrOption = getStrOption(fp, "input_psikyo:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[13], pszStrOption);

		pszStrOption = getStrOption(fp, "input_sega:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[14], pszStrOption);

		pszStrOption = getStrOption(fp, "input_seta:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[15], pszStrOption);

		pszStrOption = getStrOption(fp, "input_taito:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[16], pszStrOption);

		pszStrOption = getStrOption(fp, "input_technos:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[17], pszStrOption);

		pszStrOption = getStrOption(fp, "input_toaplan:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[18], pszStrOption);

		pszStrOption = getStrOption(fp, "input_misc_pre90:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[19], pszStrOption);

		pszStrOption = getStrOption(fp, "input_misc_post90:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szInputCFG[20], pszStrOption);

		// -----------------------------------------------------------------------------------------
		// Auto Input Configuration creation option
		// -----------------------------------------------------------------------------------------
		if(!getBoolOption(fp, "input_auto_create:\"", &g_opt_bAutoInputCfgCreate)) {return 0;}	

		// -----------------------------------------------------------------------------------------
		// Texture options
		// -----------------------------------------------------------------------------------------
		pszStrOption = getStrOption(fp, "texture_main_menu:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_MAIN_MENU], pszStrOption);

		pszStrOption = getStrOption(fp, "texture_gamelist:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_GAME_LIST], pszStrOption);

		pszStrOption = getStrOption(fp, "texture_zipinfo:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_ZIP_INFO], pszStrOption);

		pszStrOption = getStrOption(fp, "texture_rominfo:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_ROM_INFO], pszStrOption);

		pszStrOption = getStrOption(fp, "texture_options:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_OPTIONS], pszStrOption);

		pszStrOption = getStrOption(fp, "texture_filebrowser:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_FILEBROWSER], pszStrOption);

		pszStrOption = getStrOption(fp, "texture_preview:\"");
		if(pszStrOption == NULL) {return 0;}
		strcpy(g_opt_szTextures[TEX_PREVIEW], pszStrOption);

		// -----------------------------------------------------------------------------------------

		if(pszStrOption) { free(pszStrOption); *&pszStrOption = NULL; }
		
		fclose(fp);
		return 1;
	} else {
		return 0;
	}
	return 0;
}