Following up Tom's complaint about behaviour of pgindent, I have been
wrestling with it a bit. I noticed several things.
First awk on my box spits out fairly useless warnings about regular
expressions containing a literal '\*'. These warnings are silenced by
replacing those with '[*]', which should have the same effect.
Second, the script issues warnings about how somebody hopes that I
installed indent.bsd.patch. Yes I did, and the messages are just
annoying noise, so I propose to get rid of them. The usual rule of unix
utilities is to be silent on success, and I think we should follow it.
Third, as mentioned in that other thread I think we should put the
exclusion of certain typedef symbols into the pgindent script.
The attached patch does all three of these things.
I'm not done yet - I am seeing issues with at least two files:
contrib/fuzzystrmatch/dmetaphone.c and
src/backend/tsearch/wparser_def.c, that I need to chase down.
Ideally, this hodegpodge of awk and sed pipes would be replaced by a
perl script that would do all that inline much more efficiently, along
with some more features. But that's a longer term project.
cheers
andrew
*** src/tools/pgindent/pgindent 2009-06-15 18:09:49.000000000 -0400
--- /usr/local/bin/pgindent 2010-04-03 11:46:29.000000000 -0400
***************
*** 39,45 ****
then echo "You appear to have GNU indent rather than BSD indent." >&2
echo "See the pgindent/README file for a description of its problems." >&2
EXTRA_OPTS="-cdb -bli0 -npcs -cli4 -sc"
! else echo "Hope you installed /src/tools/pgindent/indent.bsd.patch." >&2
EXTRA_OPTS="-cli1"
fi
--- 39,45 ----
then echo "You appear to have GNU indent rather than BSD indent." >&2
echo "See the pgindent/README file for a description of its problems." >&2
EXTRA_OPTS="-cdb -bli0 -npcs -cli4 -sc"
! else
EXTRA_OPTS="-cli1"
fi
***************
*** 138,144 ****
# We get the list of typedef's from /src/tools/find_typedef
indent -bad -bap -bc -bl -d0 -cdb -nce -nfc1 -di12 -i4 -l79 \
-lp -nip -npro -bbb $EXTRA_OPTS \
! `cat "$TYPEDEFS" | sed -e '/^$/d' -e 's/.*/-T& /'` \
/tmp/$$a >/tmp/$$ 2>&1
if [ "$?" -ne 0 -o -s /tmp/$$ ]
--- 138,144 ----
# We get the list of typedef's from /src/tools/find_typedef
indent -bad -bap -bc -bl -d0 -cdb -nce -nfc1 -di12 -i4 -l79 \
-lp -nip -npro -bbb $EXTRA_OPTS \
! `egrep -v '^(FD_SET|date|interval|timestamp|ANY)$' "$TYPEDEFS" | sed -e '/^$/d' -e 's/.*/-T& /'` \
/tmp/$$a >/tmp/$$ 2>&1
if [ "$?" -ne 0 -o -s /tmp/$$ ]
***************
*** 226,232 ****
skips--;
if (line1 ~ / *{$/ &&
line2 ~ /^$/ &&
! line3 ~ / *\/\*$/)
{
print line1;
print line3;
--- 226,232 ----
skips--;
if (line1 ~ / *{$/ &&
line2 ~ /^$/ &&
! line3 ~ / *\/[*]$/)
{
print line1;
print line3;
***************
*** 252,258 ****
{
if (NR != 1)
{
! if ($0 ~ "/\* _PGMV")
{
# remove tag
sub(" _PGMV", "", $0);
--- 252,258 ----
{
if (NR != 1)
{
! if ($0 ~ "/[*] _PGMV")
{
# remove tag
sub(" _PGMV", "", $0);
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers