PostgreSQL解読室:
expand_fmt_string()/postgresql-8.1.4
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
このページを編集する際は、[[編集に関する方針]]に従ってく...
*概要 [#xf8d4547]
-対象:8.1.4
-言語:C
-宣言・定義:[[postgresql-8.1.4/src/backend/utils/error/e...
-(概要を書いてください。)
*引数 [#y0c80717]
-const char *fmt --
-ErrorData *edata --
*実装 [#zb9f496e]
static char *
expand_fmt_string(const char *fmt, ErrorData *edata)
-[[ErrorData/postgresql-8.1.4]] -- 以下のメンバを持つ構造体
--elevelを、intとして定義
--output_to_serverを、bool(charの別名)として定義
--output_to_clientを、bool(charの別名)として定義
--show_funcnameを、bool(charの別名)として定義
--filenameを、const charへのポインタとして定義
--linenoを、intとして定義
--funcnameを、const charへのポインタとして定義
--sqlerrcodeを、intとして定義
--messageを、charへのポインタとして定義
--detailを、charへのポインタとして定義
--hintを、charへのポインタとして定義
--contextを、charへのポインタとして定義
--cursorposを、intとして定義
--internalposを、intとして定義
--internalqueryを、charへのポインタとして定義
--saved_errnoを、intとして定義
{
StringInfoData buf;
-[[StringInfoData/postgresql-8.1.4]] -- 下記メンバを持つ...
--char型へのポインタdata
--int型の変数len
--int型の変数maxlen
--int型の変数cursor
const char *cp;
initStringInfo(&buf);
-[[initStringInfo()/postgresql-8.1.4]]
for (cp = fmt; *cp; cp++)
{
if (cp[0] == '%' && cp[1] != '\0')
{
cp++;
if (*cp == 'm')
{
/*
* Replace %m by system error string. If there are a...
* the string, we'd better double them so that vsnpri...
* misinterpret.
*/
const char *cp2;
cp2 = useful_strerror(edata->saved_errno);
-[[useful_strerror()/postgresql-8.1.4]]
for (; *cp2; cp2++)
{
if (*cp2 == '%')
appendStringInfoCharMacro(&buf, '%');
-[[appendStringInfoCharMacro()/postgresql-8.1.4]]
appendStringInfoCharMacro(&buf, *cp2);
-[[appendStringInfoCharMacro()/postgresql-8.1.4]] -- 上記...
}
}
else
{
/* copy % and next char --- this avoids trouble with ...
appendStringInfoCharMacro(&buf, '%');
appendStringInfoCharMacro(&buf, *cp);
-[[appendStringInfoCharMacro()/postgresql-8.1.4]] -- 上記...
}
}
else
appendStringInfoCharMacro(&buf, *cp);
-[[appendStringInfoCharMacro()/postgresql-8.1.4]] -- 上記...
}
return buf.data;
}
*呼出元 [#kdf29475]
-[[EVALUATE_MESSAGE()/postgresql-8.1.4]]
*備考 [#t7901245]
/*
* expand_fmt_string --- process special format codes in ...
*
* We must replace %m with the appropriate strerror strin...
* won't know what to do with it.
*
* The result is a palloc'd string.
*/
*履歴 [#i81be96b]
-作者:[[testnoda/ページ作者]]
-日付:????/?/?
|更新日|更新者|更新内容|
|2007/4/24|[[testnoda/ページ作者]]|解読を一旦中止([[関数...
||||
*コメント [#s262cadc]
#comment
終了行:
このページを編集する際は、[[編集に関する方針]]に従ってく...
*概要 [#xf8d4547]
-対象:8.1.4
-言語:C
-宣言・定義:[[postgresql-8.1.4/src/backend/utils/error/e...
-(概要を書いてください。)
*引数 [#y0c80717]
-const char *fmt --
-ErrorData *edata --
*実装 [#zb9f496e]
static char *
expand_fmt_string(const char *fmt, ErrorData *edata)
-[[ErrorData/postgresql-8.1.4]] -- 以下のメンバを持つ構造体
--elevelを、intとして定義
--output_to_serverを、bool(charの別名)として定義
--output_to_clientを、bool(charの別名)として定義
--show_funcnameを、bool(charの別名)として定義
--filenameを、const charへのポインタとして定義
--linenoを、intとして定義
--funcnameを、const charへのポインタとして定義
--sqlerrcodeを、intとして定義
--messageを、charへのポインタとして定義
--detailを、charへのポインタとして定義
--hintを、charへのポインタとして定義
--contextを、charへのポインタとして定義
--cursorposを、intとして定義
--internalposを、intとして定義
--internalqueryを、charへのポインタとして定義
--saved_errnoを、intとして定義
{
StringInfoData buf;
-[[StringInfoData/postgresql-8.1.4]] -- 下記メンバを持つ...
--char型へのポインタdata
--int型の変数len
--int型の変数maxlen
--int型の変数cursor
const char *cp;
initStringInfo(&buf);
-[[initStringInfo()/postgresql-8.1.4]]
for (cp = fmt; *cp; cp++)
{
if (cp[0] == '%' && cp[1] != '\0')
{
cp++;
if (*cp == 'm')
{
/*
* Replace %m by system error string. If there are a...
* the string, we'd better double them so that vsnpri...
* misinterpret.
*/
const char *cp2;
cp2 = useful_strerror(edata->saved_errno);
-[[useful_strerror()/postgresql-8.1.4]]
for (; *cp2; cp2++)
{
if (*cp2 == '%')
appendStringInfoCharMacro(&buf, '%');
-[[appendStringInfoCharMacro()/postgresql-8.1.4]]
appendStringInfoCharMacro(&buf, *cp2);
-[[appendStringInfoCharMacro()/postgresql-8.1.4]] -- 上記...
}
}
else
{
/* copy % and next char --- this avoids trouble with ...
appendStringInfoCharMacro(&buf, '%');
appendStringInfoCharMacro(&buf, *cp);
-[[appendStringInfoCharMacro()/postgresql-8.1.4]] -- 上記...
}
}
else
appendStringInfoCharMacro(&buf, *cp);
-[[appendStringInfoCharMacro()/postgresql-8.1.4]] -- 上記...
}
return buf.data;
}
*呼出元 [#kdf29475]
-[[EVALUATE_MESSAGE()/postgresql-8.1.4]]
*備考 [#t7901245]
/*
* expand_fmt_string --- process special format codes in ...
*
* We must replace %m with the appropriate strerror strin...
* won't know what to do with it.
*
* The result is a palloc'd string.
*/
*履歴 [#i81be96b]
-作者:[[testnoda/ページ作者]]
-日付:????/?/?
|更新日|更新者|更新内容|
|2007/4/24|[[testnoda/ページ作者]]|解読を一旦中止([[関数...
||||
*コメント [#s262cadc]
#comment
ページ名: