Ejemplo n.º 1
0
void w32g_initialize(void)
{
    char buffer[MAXPATH + 1024];
    char *p;

    hInst = GetModuleHandle(0);
  
    IniFile = S_IniFile;
    ConfigFile = S_ConfigFile;
    PlaylistFile = S_PlaylistFile;
    PlaylistHistoryFile = S_PlaylistHistoryFile;
    MidiFileOpenDir = S_MidiFileOpenDir;
    ConfigFileOpenDir = S_ConfigFileOpenDir;
    PlaylistFileOpenDir = S_PlaylistFileOpenDir;
    DocFileExt = S_DocFileExt;
    OutputName = S_OutputName;
  
    IniFile[0] = '\0';
    ConfigFile[0] = '\0';
    PlaylistFile[0] = '\0';
    PlaylistHistoryFile[0] = '\0';
    MidiFileOpenDir[0] = '\0';
    ConfigFileOpenDir[0] = '\0';
    PlaylistFileOpenDir[0] = '\0';
    OutputName[0] = '\0';
    strcpy(DocFileExt,DEFAULT_DOCFILEEXT);
    strcpy(SystemFont,"MS 明朝");
    strcpy(PlayerFont,"MS 明朝");
    strcpy(WrdFont,"MS 明朝");
    strcpy(DocFont,"MS 明朝");
    strcpy(ListFont,"MS 明朝");
    strcpy(TracerFont,"MS 明朝");

    if(GetModuleFileName(hInst, buffer, MAXPATH))
    {
	if((p = pathsep_strrchr(buffer)) != NULL)
	{
	    p++;
	    *p = '\0';
	}
	else
	{
	    buffer[0] = '.';
	    buffer[1] = PATH_SEP;
	    buffer[2] = '\0';
	}
    }
    else
    {
	buffer[0] = '.';
	buffer[1] = PATH_SEP;
	buffer[2] = '\0';
    }
    strncpy(IniFile, buffer, MAXPATH);
    IniFile[MAXPATH] = '\0';
    strcat(IniFile,"timpp32g.ini");
	timidity_window_inifile = S_timidity_window_inifile;
	strncpy(timidity_window_inifile, buffer, 200);
    timidity_window_inifile[200] = '\0';
    strcat(timidity_window_inifile,"timidity_window.ini");
    st_default = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));
    sp_default = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));
    st_current = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));
    sp_current = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));
    st_temp = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));
    sp_temp = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));

    SaveSettingPlayer(sp_current);
    SaveSettingTiMidity(st_current);
    if(IniVersionCheck())
    {
	LoadIniFile(sp_current, st_current);
	ApplySettingPlayer(sp_current);
	ApplySettingTiMidity(st_current);
	w32g_has_ini_file = 1;
    }
    else
    {
	sprintf(buffer,
"Ini file is not found, or old format is found.\n"
"Do you want to initialize the ini file?\n\n"
"Ini file path: %s",
		IniFile);

	if(MessageBox(0, buffer, "TiMidity Notice", MB_YESNO) == IDYES)
	{
	    SaveIniFile(sp_current, st_current);
	    w32g_has_ini_file = 1;
	}
	else
	{
	    w32g_has_ini_file = 0;
	}
    }

    memcpy(sp_default, sp_current, sizeof(SETTING_PLAYER));
    memcpy(st_default, st_current, sizeof(SETTING_TIMIDITY));

    memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER));
    memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY));

    w32g_i_init();
}
Ejemplo n.º 2
0
/*******************************************************************************
函数名称: IniWriteString
功能说明: 将值写入ini文件的指定字段
输入参数:
    v_pszFileName    : 要写入的ini文件名
    v_pszSection     : 要写入的section的名字
    v_pszKey         : 要写入的key的名字
    v_pszValue       : 要写入的value值
输出参数: 无
返 回 值:
    >=0: 成功
    < 0: 错误代码
说    明: 无
*******************************************************************************/
int IniWriteString(
    const char *v_pszFileName, const char *v_pszSection, const char *v_pszKey,
    const char *v_pszValue)
{
	char *pszWrBuf = NULL;
	char *pszBuf = NULL;
	int iFileSize = 0;
	int iRet = 0;
	int iSecStart = UNKNOW_POS;
    int iSecEnd = 0;
    int iKeyStart= 0;
    int iKeyEnd = 0;
    int iValueStart = 0;
    int iValueEnd = 0;
    int iValueSize = (int)strlen(v_pszValue);

	/* 检查参数 */
    if ((NULL == v_pszFileName) || (0 == strlen(v_pszFileName)))
    {
        return -INI_ERR_NO_FILE_NAME;
    }

    if ((NULL == v_pszSection) || (0 == strlen(v_pszSection)))
    {
        return -INI_ERR_NO_SECTION;
    }

    if ((NULL == v_pszKey) || (0 == strlen(v_pszKey)))
    {
        return -INI_ERR_NO_KEY;
    }

    if (NULL == v_pszValue)
    {
        return -INI_ERR_NO_VALUE;
    }

    /* 分配内存 */
    pszBuf = malloc(INI_MAX_FILE_SIZE);
    if (NULL == pszBuf)
    {
        return -INI_ERR_MALLOC;
    }

    /* 分配内存 */
    pszWrBuf = malloc(INI_MAX_FILE_SIZE);
    if (NULL == pszWrBuf)
    {
        free(pszBuf);
        return -INI_ERR_MALLOC;
    }

    memset(pszWrBuf, 0, INI_MAX_FILE_SIZE);

    /* 载入文件 */
	if (0 == LoadIniFile(v_pszFileName, pszBuf, &iFileSize))
	{ /* 载入成功 */
		ParseFile(pszBuf, v_pszSection, v_pszKey, &iSecStart, &iSecEnd,
            &iKeyStart, &iKeyEnd, &iValueStart, &iValueEnd);
	}

	if (UNKNOW_POS == iSecStart)
	{ /* section位置未初始化 */
		if (0 == iFileSize)
		{ /* 无文件 */
			sprintf(pszWrBuf + iFileSize, "[%s]\n%s=%s\n",
                v_pszSection, v_pszKey, v_pszValue);
		}
		else
		{ /* 无指定的section */
			memcpy(pszWrBuf,pszBuf,iFileSize);
			sprintf(pszWrBuf + iFileSize, "\n[%s]\n%s=%s\n",
                v_pszSection, v_pszKey, v_pszValue);
		}
	}
	else if (UNKNOW_POS == iKeyStart)
	{ /* 有指定的section,但是没有指定的key */
		memcpy(pszWrBuf, pszBuf, iSecEnd);
		sprintf(pszWrBuf + iSecEnd, "%s=%s\n", v_pszKey, v_pszValue);
		memcpy(pszWrBuf + iSecEnd + strlen(v_pszKey) + iValueSize + 2,
            pszBuf + iSecEnd, iFileSize - iSecEnd);
	}
	else
	{ /* 有指定的section,也有指定的key */
		memcpy(pszWrBuf, pszBuf, iValueStart);
		memcpy(pszWrBuf + iValueStart, v_pszValue, iValueSize);
		memcpy(pszWrBuf + iValueStart + iValueSize, pszBuf + iValueEnd,
            iFileSize - iValueEnd);
	}

	iRet = SaveIniFile(v_pszFileName, pszWrBuf);

    free(pszWrBuf);
    free(pszBuf);

    return iRet;
}