Hello, Could you let me review this patch?

> >> * merged Dean's doc
> >> * allow NULL as width

I understand that this patch aims pure expansion of format's
current behavior and to mimic the printf in SUS glibc (*1).

(*1) http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

This patch seems to preserve the behaviors of current
implement. And also succeeds in mimicking almost of SUS without
very subtle difference.

Attached is the new patch which I've edited following the
comments below and some fixed of typos, and added a few regtests.

If you have no problem with this, I'll send this to committer.

What do you think of this?


My comments are below,

======================================
Following is a comment about the behavior.

 - The minus('-') is a flag, not a sign nor a operator. So this
   seems permitted to appear more than one time. For example,
   printf(">>%-------10s<<", "hoge") yields the output
   ">>hoge______<<" safely. This is consistent with the behavior
   when negative value is supplied to '-*' conversion.


Followings are some comments about coding,

in text_format_parse_digits,

  - is_valid seems to be the primary return value so returning
    this as function's return value should make the caller more
    simple.

  - Although the compiler should deal properly with that, I don't
    think it proper to use the memory pointed by function
    parameters as local working storage. *inum and *is_valid in
    the while loop should be replaced with local variables and
    set them after the values are settled.

for TEXT_FORMAT_NEXT_CHAR,

  - This macro name sounds somewhat confusing and this could be
    used also in text_format_parse_digits. I propose
    FORWARD_PARSE_POINT instead. Also I removed end_ptr from
    macro parameters but I'm not sure of the pertinence of that.

for text_format_parse_format:

  - Using start_ptr as a working pointer makes the name
    inappropriate.

  - Out parameters seems somewhat redundant. indirect_width and
    indirect_width_parameter could be merged using 0 to indicate
    unnumbered.

for text_format:

  - maximum number of function argument limited to FUNC_MAX_ARGS
    (100), so no need to care of wrap around of argument index, I
    suppose.

  - Something seems confusing at the lines follow

    |  /* Not enough arguments?  Deduct 1 to avoid counting format string. */
    | if (arg > nargs - 1)

    This expression does not have so special meaning. The maximum
    index in an zero-based array should not be equal to or larger
    than the number of the elements of it. If that's not your
    intent, some rewrite would be needed..

  - Only int4 is directly read for width value in the latest
    patch, but int2 can also be directly readable and it should
    be needed.

regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center

Attachment: format-width-20130228.patch.bz2
Description: Binary data

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to