По следам Почему может зависнуть вызов localtime()? понадобилась async-signal-safe реализация snprintf(), чтобы можно было реализовать человеческое логгирование в обработчиках сигналов. Нашел такую вот реализацию с непонятной лицензией: https://github.com/idning/safe_snprintf В принципе, что нужно, но она слишком кастрированная - не знает про ширину полей. Нашел не такую кастрированную reentrant реализацию в newlib но не понятно как её выдрать оттуда. Какие есть ещё идеи/реализации?