aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/tools/pgindent/pgindent338
1 files changed, 176 insertions, 162 deletions
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index b2710790096..15f30e6a30f 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -34,10 +34,24 @@ do
\2;g' |
detab -t4 -qc |
# work around bug where function that defines no local variables misindents
-# switch() case lines and line after #else
- sed 's,^{$,{\
-int pgindent_func_no_var_fix;\
-,g' |
+# switch() case lines and line after #else. Do not do with for struct/enum.
+ awk ' BEGIN {line1 = ""; line2 = ""}
+ {
+ line2 = $0;
+ if (NR >= 2 &&
+ line2 ~ "^{[ ]*$" &&
+ line1 !~ "^struct" &&
+ line1 !~ "^enum" &&
+ line1 !~ "^typedef")
+ printf "int pgindent_func_no_var_fix;";
+ if (NR >= 2)
+ print line1;
+ line1 = line2;
+ }
+ END {
+ if (NR >= 1)
+ print line1;
+ }' |
# protect backslashes in DATA()
sed 's;^DATA(.*$;/*&*/;' |
# protect wrapping in CATALOG()
@@ -1277,153 +1291,153 @@ int pgindent_func_no_var_fix;\
-Tyy_state_type \
-Tz_stream \
-Tz_streamp \
--T BOOKMARK \
--T BOOL \
--T BYTE \
--T BindInfoClass \
--T COL_INFO \
--T CONN_Status \
--T ColumnInfoClass \
--T ConnInfo \
--T ConnectionClass \
--T DATE_STRUCT \
--T DWORD \
--T DataSourceToDriverProc \
--T DriverToDataSourceProc \
--T EnvironmentClass \
--T FIELD_INFO \
--T FILE \
--T GLOBAL_VALUES \
--T HDBC \
--T HENV \
--T HSTMT \
--T HWND \
--T LO_ARG \
--T LPARAM \
--T Oid \
--T PTR \
--T ParameterInfoClass \
--T ProtocolVersion \
--T QResultClass \
--T QueryInfo \
--T QueryResultCode \
--T RETCODE \
--T SDOUBLE \
--T SDWORD \
--T SFLOAT \
--T SIMPLE_TIME \
--T SQLBIGINT \
--T SQLCHAR \
--T SQLDOUBLE \
--T SQLFLOAT \
--T SQLGUID \
--T SQLINTEGER \
--T SQLINTERVAL \
--T SQLREAL \
--T SQLSCHAR \
--T SQLSMALLINT \
--T SQLUBIGINT \
--T SQLUINTEGER \
--T SQLUSMALLINT \
--T SQL_DATE_STRUCT \
--T SQL_DAY_SECOND_STRUCT \
--T SQL_INTERVAL_STRUCT \
--T SQL_TIMESTAMP_STRUCT \
--T SQL_TIME_STRUCT \
--T SQL_YEAR_MONTH_STRUCT \
--T SSHOR \
--T STMT_Status \
--T SWORD \
--T SocketClass \
--T StartupPacket \
--T StartupPacket6_2 \
--T StatementClass \
--T StatementOptions \
--T TABLE_INFO \
--T TIMESTAMP_STRUCT \
--T TIME_STRUCT \
--T TupleField \
--T TupleListClass \
--T TupleNode \
--T UCHAR \
--T UDWORD \
--T UWORD \
--T WORD \
--T WPARAM \
--T _LIB_VERSION_TYPE \
--T _RuneEntry \
--T _RuneLocale \
--T _RuneRange \
--T caddr_t \
--T char \
--T clock_t \
--T clockid_t \
--T daddr_t \
--T dev_t \
--T div_t \
--T double \
--T fd_mask \
--T fd_set \
--T fixpt_t \
--T float \
--T fpos_t \
--T gid_t \
--T in_addr_t \
--T in_port_t \
--T ino_t \
--T int \
--T int16_t \
--T int16m_t \
--T int32_t \
--T int32m_t \
--T int64_t \
--T int64m_t \
--T int8_t \
--T int8m_t \
--T key_t \
--T ldiv_t \
--T mode_t \
--T nlink_t \
--T off_t \
--T pid_t \
--T q128_t \
--T qaddr_t \
--T quad_t \
--T register_t \
--T rune_t \
--T sa_family_t \
--T segsz_t \
--T sig_atomic_t \
--T sig_t \
--T sigset_t \
--T size_t \
--T slock_t \
--T socklen_t \
--T ssize_t \
--T stack_t \
--T swblk_t \
--T time_t \
--T u_char \
--T u_int \
--T u_int16_t \
--T u_int16m_t \
--T u_int32_t \
--T u_int32m_t \
--T u_int64_t \
--T u_int64m_t \
--T u_int8_t \
--T u_int8m_t \
--T u_long \
--T u_quad_t \
--T u_short \
--T uid_t \
--T uint \
--T ushort \
--T va_list \
--T vm_offset_t \
--T vm_size_t \
--T void \
--T wchar_t \
+-TBOOKMARK \
+-TBOOL \
+-TBYTE \
+-TBindInfoClass \
+-TCOL_INFO \
+-TCONN_Status \
+-TColumnInfoClass \
+-TConnInfo \
+-TConnectionClass \
+-TDATE_STRUCT \
+-TDWORD \
+-TDataSourceToDriverProc \
+-TDriverToDataSourceProc \
+-TEnvironmentClass \
+-TFIELD_INFO \
+-TFILE \
+-TGLOBAL_VALUES \
+-THDBC \
+-THENV \
+-THSTMT \
+-THWND \
+-TLO_ARG \
+-TLPARAM \
+-TOid \
+-TPTR \
+-TParameterInfoClass \
+-TProtocolVersion \
+-TQResultClass \
+-TQueryInfo \
+-TQueryResultCode \
+-TRETCODE \
+-TSDOUBLE \
+-TSDWORD \
+-TSFLOAT \
+-TSIMPLE_TIME \
+-TSQLBIGINT \
+-TSQLCHAR \
+-TSQLDOUBLE \
+-TSQLFLOAT \
+-TSQLGUID \
+-TSQLINTEGER \
+-TSQLINTERVAL \
+-TSQLREAL \
+-TSQLSCHAR \
+-TSQLSMALLINT \
+-TSQLUBIGINT \
+-TSQLUINTEGER \
+-TSQLUSMALLINT \
+-TSQL_DATE_STRUCT \
+-TSQL_DAY_SECOND_STRUCT \
+-TSQL_INTERVAL_STRUCT \
+-TSQL_TIMESTAMP_STRUCT \
+-TSQL_TIME_STRUCT \
+-TSQL_YEAR_MONTH_STRUCT \
+-TSSHOR \
+-TSTMT_Status \
+-TSWORD \
+-TSocketClass \
+-TStartupPacket \
+-TStartupPacket6_2 \
+-TStatementClass \
+-TStatementOptions \
+-TTABLE_INFO \
+-TTIMESTAMP_STRUCT \
+-TTIME_STRUCT \
+-TTupleField \
+-TTupleListClass \
+-TTupleNode \
+-TUCHAR \
+-TUDWORD \
+-TUWORD \
+-TWORD \
+-TWPARAM \
+-T_LIB_VERSION_TYPE \
+-T_RuneEntry \
+-T_RuneLocale \
+-T_RuneRange \
+-Tcaddr_t \
+-Tchar \
+-Tclock_t \
+-Tclockid_t \
+-Tdaddr_t \
+-Tdev_t \
+-Tdiv_t \
+-Tdouble \
+-Tfd_mask \
+-Tfd_set \
+-Tfixpt_t \
+-Tfloat \
+-Tfpos_t \
+-Tgid_t \
+-Tin_addr_t \
+-Tin_port_t \
+-Tino_t \
+-Tint \
+-Tint16_t \
+-Tint16m_t \
+-Tint32_t \
+-Tint32m_t \
+-Tint64_t \
+-Tint64m_t \
+-Tint8_t \
+-Tint8m_t \
+-Tkey_t \
+-Tldiv_t \
+-Tmode_t \
+-Tnlink_t \
+-Toff_t \
+-Tpid_t \
+-Tq128_t \
+-Tqaddr_t \
+-Tquad_t \
+-Tregister_t \
+-Trune_t \
+-Tsa_family_t \
+-Tsegsz_t \
+-Tsig_atomic_t \
+-Tsig_t \
+-Tsigset_t \
+-Tsize_t \
+-Tslock_t \
+-Tsocklen_t \
+-Tssize_t \
+-Tstack_t \
+-Tswblk_t \
+-Ttime_t \
+-Tu_char \
+-Tu_int \
+-Tu_int16_t \
+-Tu_int16m_t \
+-Tu_int32_t \
+-Tu_int32m_t \
+-Tu_int64_t \
+-Tu_int64m_t \
+-Tu_int8_t \
+-Tu_int8m_t \
+-Tu_long \
+-Tu_quad_t \
+-Tu_short \
+-Tuid_t \
+-Tuint \
+-Tushort \
+-Tva_list \
+-Tvm_offset_t \
+-Tvm_size_t \
+-Tvoid \
+-Twchar_t \
/tmp/$$a >/tmp/$$ 2>&1
if [ "$?" -ne 0 -o -s /tmp/$$ ]
then echo "$FILE"
@@ -1439,7 +1453,7 @@ int pgindent_func_no_var_fix;\
# pull in #endif comments
sed 's;^#endif[ ][ ]*/\*;#endif /*;' |
# add space after comments that start on tab stops
- sed 's:\([^ ]\)/\*.*\*/\)$:\1 \2:' |
+ sed 's:\([^ ]\)\(/\*.*\*/\)$:\1 \2:' |
# work around #else indenting next line if #ifdef defines variables at top
# work around misindenting of function with no variables defined
awk '
@@ -1458,7 +1472,7 @@ int pgindent_func_no_var_fix;\
sed 's;^\([A-Za-z_][^ ]*\)[ ][ ]*\*$;\1 *;' |
# remove un-needed braces around single statements
awk '
- {
+ {
line3 = $0;
if (skips > 0)
skips--;
@@ -1478,14 +1492,14 @@ int pgindent_func_no_var_fix;\
line2 = line3;
}
END {
- if (skips <= 1)
+ if (NR > 1 && skips <= 1)
print line1;
- if (skips <= 2)
+ if (NR > 2 && skips <= 2)
print line2;
}' |
# remove blank line between opening brace and block comment
awk '
- {
+ {
line3 = $0;
if (skips > 0)
skips--;
@@ -1506,14 +1520,14 @@ int pgindent_func_no_var_fix;\
line2 = line3;
}
END {
- if (skips <= 1)
+ if (NR > 1 && skips <= 1)
print line1;
- if (skips <= 2)
+ if (NR > 2 && skips <= 2)
print line2;
}' |
# remove blank line before #endif
awk ' BEGIN {line1 = ""; line2 = ""; skips = 0}
- {
+ {
line2 = $0;
if (skips > 0)
skips--;
@@ -1530,19 +1544,19 @@ int pgindent_func_no_var_fix;\
line1 = line2;
}
END {
- if (skips <= 1)
+ if (NR > 1 && skips <= 1)
print line1;
}' |
# add blank line before #endif if it is the last line in the file
awk ' BEGIN {line1 = ""; line2 = ""}
- {
+ {
line2 = $0;
if (NR >= 2)
print line1;
line1 = line2;
}
END {
- if (line2 ~ "^#endif")
+ if (NR > 1 && line2 ~ "^#endif")
printf "\n";
print line1;
}' |