Hello Iwata-san,
Thanks to removing the static arrays, the code got much smaller. I'm happy with this result.
(1)
+ (<literal>></literal> for messages from client to server,
+ and <literal><</literal> for messages from server to client),
I think this was meant to say "> or <". So, maybe you should remove "," at the end of the first line, and replace
"and"with "or".
(2)
+ case 8 : /* GSSENCRequest or SSLRequest */
+ /* These messsage does not reach here. */
messsage does -> messages do
(3)
+ fprintf(f, "\tAuthentication");
Why don't you move this \t in each message type to the end of:
+ fprintf(conn->Pfdebug, "%s\t%s\t%d", timestr, prefix, length);
Plus, don't we say in the manual that fields (timestamp, direction, length, message type, and message content) are
separatedby a tab?
Also, the code doesn't seem to separate the message type and content with a tab.
(4)
Where did the processing for unknown message go in pqTraceOutputMessage()? Add default label?
(5)
+ case 16: /* CancelRequest */
+ fprintf(conn->Pfdebug, "%s\t>\t%d\tCancelRequest", timestr, length);
I think this should follow pqTraceOutputMessage(). That is, each case label only print the message type name in case
othermessage types are added in the future.
Regards
Takayuki Tsunakawa