printf("%lf") is not portable, so omit the "l".

The "l" (ell) width spec means something in the corresponding scanf usage,
but not here.  While modern POSIX says that applying "l" to "f" and other
floating format specs is a no-op, SUSv2 says it's undefined.  Buildfarm
experience says that some old compilers emit warnings about it, and at
least one old stdio implementation (mingw's "ANSI" option) actually
produces wrong answers and/or crashes.

Discussion: https://postgr.es/m/21670.1526769114@sss.pgh.pa.us
Discussion: https://postgr.es/m/c085e1da-0d64-1c15-242d-c921f32e0d5c@dunslane.net
This commit is contained in:
Tom Lane 2018-05-20 11:40:54 -04:00
parent e7a808f947
commit c6e846446d
9 changed files with 9 additions and 9 deletions

View File

@ -563,7 +563,7 @@ bt_metap(PG_FUNCTION_ARGS)
if (metad->btm_version == BTREE_VERSION) if (metad->btm_version == BTREE_VERSION)
{ {
values[j++] = psprintf("%u", metad->btm_oldest_btpo_xact); values[j++] = psprintf("%u", metad->btm_oldest_btpo_xact);
values[j++] = psprintf("%lf", metad->btm_last_cleanup_num_heap_tuples); values[j++] = psprintf("%f", metad->btm_last_cleanup_num_heap_tuples);
} }
else else
{ {

View File

@ -1678,7 +1678,7 @@ while (1)
<para> <para>
Here is an example using the data type <type>complex</type> from Here is an example using the data type <type>complex</type> from
the example in <xref linkend="xtypes"/>. The external string the example in <xref linkend="xtypes"/>. The external string
representation of that type is <literal>(%lf,%lf)</literal>, representation of that type is <literal>(%f,%f)</literal>,
which is defined in the which is defined in the
functions <function>complex_in()</function> functions <function>complex_in()</function>
and <function>complex_out()</function> functions and <function>complex_out()</function> functions

View File

@ -100,7 +100,7 @@ btree_desc(StringInfo buf, XLogReaderState *record)
{ {
xl_btree_metadata *xlrec = (xl_btree_metadata *) rec; xl_btree_metadata *xlrec = (xl_btree_metadata *) rec;
appendStringInfo(buf, "oldest_btpo_xact %u; last_cleanup_num_heap_tuples: %lf", appendStringInfo(buf, "oldest_btpo_xact %u; last_cleanup_num_heap_tuples: %f",
xlrec->oldest_btpo_xact, xlrec->oldest_btpo_xact,
xlrec->last_cleanup_num_heap_tuples); xlrec->last_cleanup_num_heap_tuples);
break; break;

View File

@ -37,7 +37,7 @@ dump_sqlda(sqlda_t *sqlda)
printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata); printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata);
break; break;
case SQLFLOAT: case SQLFLOAT:
printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata); printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
break; break;
case SQLDECIMAL: case SQLDECIMAL:
{ {

View File

@ -142,7 +142,7 @@ dump_sqlda(sqlda_t *sqlda)
printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata); printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata);
break; break;
case SQLFLOAT: case SQLFLOAT:
printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata); printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
break; break;
case SQLDECIMAL: case SQLDECIMAL:
{ {

View File

@ -337,7 +337,7 @@ if (sqlca.sqlcode < 0) exit (1);}
get_record1(); get_record1();
if (sqlca.sqlcode == ECPG_NOT_FOUND) if (sqlca.sqlcode == ECPG_NOT_FOUND)
break; break;
printf("id=%d%s t='%s'%s d1=%lf%s d2=%lf%s c = '%s'%s\n", printf("id=%d%s t='%s'%s d1=%f%s d2=%f%s c = '%s'%s\n",
myvar->id, mynullvar->id ? " (NULL)" : "", myvar->id, mynullvar->id ? " (NULL)" : "",
myvar->t, mynullvar->t ? " (NULL)" : "", myvar->t, mynullvar->t ? " (NULL)" : "",
myvar->d1, mynullvar->d1 ? " (NULL)" : "", myvar->d1, mynullvar->d1 ? " (NULL)" : "",

View File

@ -158,7 +158,7 @@ dump_sqlda(sqlda_t *sqlda)
break; break;
#endif #endif
case ECPGt_double: case ECPGt_double:
printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata); printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata);
break; break;
case ECPGt_numeric: case ECPGt_numeric:
{ {

View File

@ -101,7 +101,7 @@ main (void)
get_record1(); get_record1();
if (sqlca.sqlcode == ECPG_NOT_FOUND) if (sqlca.sqlcode == ECPG_NOT_FOUND)
break; break;
printf("id=%d%s t='%s'%s d1=%lf%s d2=%lf%s c = '%s'%s\n", printf("id=%d%s t='%s'%s d1=%f%s d2=%f%s c = '%s'%s\n",
myvar->id, mynullvar->id ? " (NULL)" : "", myvar->id, mynullvar->id ? " (NULL)" : "",
myvar->t, mynullvar->t ? " (NULL)" : "", myvar->t, mynullvar->t ? " (NULL)" : "",
myvar->d1, mynullvar->d1 ? " (NULL)" : "", myvar->d1, mynullvar->d1 ? " (NULL)" : "",

View File

@ -45,7 +45,7 @@ dump_sqlda(sqlda_t *sqlda)
break; break;
#endif #endif
case ECPGt_double: case ECPGt_double:
printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata); printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata);
break; break;
case ECPGt_numeric: case ECPGt_numeric:
{ {