Re: Allowing printf("%m") only where it actually works
Tom Lane <tgl@sss.pgh.pa.us>
Attachments
- 0001-get-compiler-warnings-for-misuse-of-percent-m-2.patch (text/x-diff) patch 0001
- 0002-prevent-errno-in-ereport-3.patch (text/x-diff) patch 0002
In the hopes of getting the cfbot un-stuck (it's currently trying to test a known-not-to-work patch), here are updated versions of the two live patches we have in this thread. 0001 is the patch I originally proposed to adjust printf archetypes. 0002 is Thomas's patch to blow up on errno references in ereport/elog, plus changes in src/common/exec.c to prevent that from blowing up. (I went with the minimum-footprint way, for now; making exec.c's error handling generally nicer seems like a task for another day.) I think 0002 is probably pushable, really. The unresolved issue about 0001 is whether it will create a spate of warnings on Windows builds, and if so what to do about it. We might learn something from the cfbot about that, but I think the full buildfarm is going to be the only really authoritative answer. There's also the matter of providing similar safety for GetLastError calls, but I think that deserves to be a separate patch ... and I don't really want to take point on it since I lack a Windows machine. regards, tom lane
Commits
-
In pg_log_generic(), be more paranoid about preserving errno.
- cf665ad4c89e 12.0 landed
- fb30c9c1c5c3 13.0 landed
-
Make src/common/exec.c's error logging less ugly.
- b6b297d20df9 12.0 landed
-
Select appropriate PG_PRINTF_ATTRIBUTE for recent NetBSD.
- aed9fa0bd897 12.0 landed
-
Fix detection of the result type of strerror_r().
- e5baf8c27e6c 9.4.20 landed
- 8b36dc588d10 9.5.15 landed
- 7871a36255e2 11.0 landed
- 2855421ec728 9.6.11 landed
- 0aa1e0ef167d 10.6 landed
- 08aad3c81eff 9.3.25 landed
-
Try another way to detect the result type of strerror_r().
- 751f532b9766 12.0 landed
-
Clean up *printf macros to avoid conflict with format archetypes.
- 8b91d258844a 12.0 landed
-
Fix link failures due to snprintf/strerror changes.
- a6b88d682cbe 12.0 landed
-
Implement %m in src/port/snprintf.c, and teach elog.c to rely on that.
- d6c55de1f99a 12.0 landed
-
Always use our own versions of *printf().
- 96bf88d52711 12.0 landed
-
Incorporate strerror_r() into src/port/snprintf.c, too.
- 758ce9b77948 12.0 landed
-
Convert elog.c's useful_strerror() into a globally-used strerror wrapper.
- 26e9d4d4ef16 12.0 landed
-
Revert "Distinguish printf-like functions that support %m from those that don't."
- 46b5e7c4b5be 12.0 landed
-
Produce compiler errors if errno is referenced inside elog/ereport calls.
- a2a8acd15217 12.0 landed
-
Distinguish printf-like functions that support %m from those that don't.
- 3a60c8ff892a 12.0 landed
-
Fix unportable usage of printf("%m").
- a13b47a59ffc 11.0 cited
-
Be more robust when strerror() doesn't give a useful result.
- 8e68816cc256 9.4.0 cited