Esempio n. 1
0
int GetIniString( char *pszSection, char *pszEntry, char *pszDefault,
                  char *pszReturnBuffer, int nBufferLen, char *pszFileName)
{
    FILE *pfile;
    int	nReturn = 0;

    /* open the file */
    pfile = fopen( pszFileName, "rt" );

    if ( pfile )
    {
        /* find the right section */
        if (FindIniSection( pfile, pszSection ) )
        {
            /* find the right entry and read the value */
            if ( GetIniEntry( pfile, pszEntry, pszReturnBuffer, nBufferLen ) )
            {
                /* success */
                nReturn = strlen( pszReturnBuffer );
            }
        }
        fclose(pfile);
    }

    /* if we did not find the file, section or entry...	    */
    if ( nReturn == 0 )
    {
        /* copy the default string into the buffer */
        strncpy( pszReturnBuffer, pszDefault, nBufferLen );
        nReturn = strlen( pszReturnBuffer );
    }


    return( nReturn );
}
Esempio n. 2
0
char *IniStrValue(LIST *o, char *key)
{
	INI_ENTRY *e;
	// Validate arguments
	if (o == NULL || key == NULL)
	{
		return 0;
	}

	e = GetIniEntry(o, key);
	if (e == NULL)
	{
		return "";
	}

	return e->Value;
}
Esempio n. 3
0
// Get a value from the INI
UINT IniIntValue(LIST *o, char *key)
{
	INI_ENTRY *e;
	// Validate arguments
	if (o == NULL || key == NULL)
	{
		return 0;
	}

	e = GetIniEntry(o, key);
	if (e == NULL)
	{
		return 0;
	}

	return ToInt(e->Value);
}
Esempio n. 4
0
wchar_t *IniUniStrValue(LIST *o, char *key)
{
	INI_ENTRY *e;
	// 引数チェック
	if (o == NULL || key == NULL)
	{
		return 0;
	}

	e = GetIniEntry(o, key);
	if (e == NULL)
	{
		return L"";
	}

	return e->UnicodeValue;
}
Esempio n. 5
0
UINT64 IniInt64Value(LIST *o, char *key)
{
	INI_ENTRY *e;
	// 引数チェック
	if (o == NULL || key == NULL)
	{
		return 0;
	}

	e = GetIniEntry(o, key);
	if (e == NULL)
	{
		return 0;
	}

	return ToInt64(e->Value);
}
Esempio n. 6
0
/*
	利用可能なコマンドラインオプション

	/ch				物理チャンネル (e.g. /ch 13)
	/chi			チャンネルインデックス
	/chspace		チューニング空間 (e.g. /chspace 1)
	/d				ドライバの指定 (e.g. /d BonDriver.dll)
	/f /fullscreen	フルスクリーン
	/ini			INIファイル名
	/init			初期設定ダイアログを表示する
	/inikey			INIファイルの値を設定
	/log			終了時にログを保存する
	/max			最大化状態で起動
	/min			最小化状態で起動
	/tray			起動時にタスクトレイに格納
	/posx			ウィンドウの左位置の指定
	/posy			ウィンドウの上位置の指定
	/width			ウィンドウの幅の指定
	/height			ウィンドウの高さの指定
	/mute			消音
	/nd				TSプロセッサーを無効にする
	/nid			ネットワークID
	/nodriver		BonDriverを読み込まない
	/nodshow		DirectShowの初期化をしない
	/noplugin		プラグインを読み込まない
	/noview			プレビュー無効
	/mpeg2			MPEG-2を有効
	/h264			H.264を有効
	/h265			H.265を有効
	/1seg			ワンセグモード
	/nr				ネットワークリモコンを使用する
	/p /port		UDP のポート番号 (e.g. /p 1234)
	/plugin-		指定されたプラグインを読み込まない
	/plugindir		プラグインのフォルダ
	/rch			リモコンチャンネル
	/rec			録画
	/reccurservice	現在のサービスのみ録画
	/recstarttime	録画開始日時
	/recdelay		録画までの時間
	/recduration	録画時間
	/recexit		録画終了時にプログラムを終了
	/recfile		録画ファイル名
	/reconly		録画専用モード
	/recstop		録画停止
	/s				複数起動しない
	/sid			サービスID
	/silent			エラー時にダイアログを表示しない
	/standby		待機状態で起動
	/tsid			トランスポートストリームID
	/volume			音量
	/noepg			EPG情報の取得を行わない
	/epg			EPG番組表を表示する
	/epgonly		EPG番組表のみ表示する
	/epgtuner		EPG番組表のデフォルトチューナー
	/epgspace		EPG番組表のデフォルトチューニング空間
	/home			ホーム画面表示
	/chdisplay		チャンネル選択画面表示
	/style			スタイルファイル名
	/command		コマンド実行
	/jumplist		ジャンプリストからの起動
*/
void CCommandLineOptions::Parse(LPCWSTR pszCmdLine)
{
	CArgsParser Args(pszCmdLine);

	if (Args.IsEnd())
		return;
	do {
		if (Args.IsSwitch()) {
			if (!Args.GetOption(TEXT("1seg"),&m_f1Seg)
					&& !Args.GetOption(TEXT("ch"),&m_Channel)
					&& !Args.GetOption(TEXT("chdisplay"),&m_fChannelDisplay)
					&& !Args.GetOption(TEXT("chi"),&m_ChannelIndex)
					&& !Args.GetOption(TEXT("chspace"),&m_TuningSpace)
					&& !Args.GetOption(TEXT("command"),&m_Command)
					&& !Args.GetOption(TEXT("d"),&m_DriverName)
					&& !Args.GetOption(TEXT("epg"),&m_fShowProgramGuide)
					&& !Args.GetOption(TEXT("epgonly"),&m_fProgramGuideOnly)
					&& !Args.GetOption(TEXT("epgspace"),&m_ProgramGuideSpace)
					&& !Args.GetOption(TEXT("epgtuner"),&m_ProgramGuideTuner)
					&& !Args.GetOption(TEXT("f"),&m_fFullscreen)
					&& !Args.GetOption(TEXT("fullscreen"),&m_fFullscreen)
					&& !Args.GetOption(TEXT("h264"),&m_fH264)
					&& !Args.GetOption(TEXT("h265"),&m_fH265)
					&& !Args.GetOption(TEXT("height"),&m_WindowHeight)
					&& !Args.GetOption(TEXT("home"),&m_fHomeDisplay)
					&& !Args.GetOption(TEXT("ini"),&m_IniFileName)
					&& !Args.GetOption(TEXT("init"),&m_fInitialSettings)
					&& !Args.GetOption(TEXT("jumplist"),&m_fJumpList)
					&& !Args.GetOption(TEXT("log"),&m_fSaveLog)
					&& !Args.GetOption(TEXT("max"),&m_fMaximize)
					&& !Args.GetOption(TEXT("min"),&m_fMinimize)
					&& !Args.GetOption(TEXT("mpeg2"),&m_fMpeg2)
					&& !Args.GetOption(TEXT("mute"),&m_fMute)
					&& !Args.GetOption(TEXT("nd"),&m_fNoTSProcessor)
					&& !Args.GetOption(TEXT("nodriver"),&m_fNoDriver)
					&& !Args.GetOption(TEXT("nodshow"),&m_fNoDirectShow)
					&& !Args.GetOption(TEXT("noepg"),&m_fNoEpg)
					&& !Args.GetOption(TEXT("noplugin"),&m_fNoPlugin)
					&& !Args.GetOption(TEXT("noview"),&m_fNoView)
					&& !Args.GetOption(TEXT("nr"),&m_fUseNetworkRemocon)
					&& !Args.GetOption(TEXT("nid"),&m_NetworkID)
					&& !Args.GetOption(TEXT("p"),&m_UDPPort)
					&& !Args.GetOption(TEXT("port"),&m_UDPPort)
					&& !Args.GetOption(TEXT("posx"),&m_WindowLeft)
					&& !Args.GetOption(TEXT("posy"),&m_WindowTop)
					&& !Args.GetOption(TEXT("plugindir"),&m_PluginsDirectory)
					&& !Args.GetOption(TEXT("pluginsdir"),&m_PluginsDirectory)
					&& !Args.GetOption(TEXT("rec"),&m_fRecord)
					&& !Args.GetOption(TEXT("reccurservice"),&m_fRecordCurServiceOnly)
					&& !Args.GetOption(TEXT("recstarttime"),&m_RecordStartTime)
					&& !Args.GetDurationOption(TEXT("recdelay"),&m_RecordDelay)
					&& !Args.GetDurationOption(TEXT("recduration"),&m_RecordDuration)
					&& !Args.GetOption(TEXT("recexit"),&m_fExitOnRecordEnd)
					&& !Args.GetOption(TEXT("recfile"),&m_RecordFileName)
					&& !Args.GetOption(TEXT("reconly"),&m_fRecordOnly)
					&& !Args.GetOption(TEXT("recstop"),&m_fRecordStop)
					&& !Args.GetOption(TEXT("rch"),&m_ControllerChannel)
					&& !Args.GetOption(TEXT("s"),&m_fSingleTask)
					&& !Args.GetOption(TEXT("sid"),&m_ServiceID)
					&& !Args.GetOption(TEXT("silent"),&m_fSilent)
					&& !Args.GetOption(TEXT("standby"),&m_fStandby)
					&& !Args.GetOption(TEXT("style"),&m_StyleFileName)
					&& !Args.GetOption(TEXT("tray"),&m_fTray)
					&& !Args.GetOption(TEXT("tsid"),&m_TransportStreamID)
					&& !Args.GetOption(TEXT("volume"),&m_Volume)
					&& !Args.GetOption(TEXT("width"),&m_WindowWidth)) {
				if (Args.IsOption(TEXT("inikey"))) {
					if (Args.Next()) {
						IniEntry Entry;
						if (GetIniEntry(Args.GetText(),&Entry))
							m_IniValueList.push_back(Entry);
					}
				} else if (Args.IsOption(TEXT("plugin-"))) {
					if (Args.Next()) {
						TCHAR szPlugin[MAX_PATH];
						if (Args.GetText(szPlugin,MAX_PATH))
							m_NoLoadPlugins.push_back(TVTest::String(szPlugin));
					}
				} else if (Args.IsOption(TEXT("did"))) {
					if (Args.Next()) {
						const WCHAR DID=Args.GetText()[0];

						if (DID>=L'A' && DID<=L'Z')
							m_TvRockDID=DID-L'A';
						else if (DID>=L'a' && DID<=L'z')
							m_TvRockDID=DID-L'a';
					}
				}
#ifdef _DEBUG
				else {
					TRACE(TEXT("Unknown command line option %s\n"),Args.GetText());
					// プラグインで解釈するオプションもあるので…
					//GetAppClass().AddLong(TEXT("不明なコマンドラインオプション %s を無視します。"),Args.GetText());
				}
#endif
			}
		} else {
			// なぜかudp://@:1234のようにポートを指定できると思っている人が多いので、対応しておく
			if (::wcsncmp(Args.GetText(),L"udp://@:",8)==0)
				m_UDPPort=::_wtoi(Args.GetText()+8);
		}
	} while (Args.Next());
	if (m_fRecordOnly) {
		m_fNoDirectShow=true;
	}

/*
#ifdef _DEBUG
	// コマンドラインの解析のテスト
	{
		CArgsParser Args(L"/d 120 /d -45 /d 1h30m5s /t 2011/12/25-1:30:25 /t 1:30 /t 12/25 /t 12/25-1:30 /t 12/25-26:25");
		do {
			if (Args.IsSwitch()) {
				int Duration;
				FILETIME Time;
				if (Args.GetDurationOption(L"d",&Duration)) {
					TRACE(L"Commandline parse test : \"%s\" %d\n",
						  Args.GetText(),Duration);
				} else if (Args.GetOption(L"t",&Time)) {
					SYSTEMTIME st;
					::FileTimeToSystemTime(&Time,&st);
					TRACE(L"Commandline parse test : \"%s\" %d/%d/%d %d:%d:%d\n",
						  Args.GetText(),
						  st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
				}
			}
		} while (Args.Next());
	}
#endif
*/
}