github.com/afumu/libc@v0.0.6/musl/src/stdio/perror.c (about) 1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include "stdio_impl.h" 5 6 void perror(const char *msg) 7 { 8 FILE *f = stderr; 9 char *errstr = strerror(errno); 10 11 FLOCK(f); 12 13 /* Save stderr's orientation and encoding rule, since perror is not 14 * permitted to change them. */ 15 void *old_locale = f->locale; 16 int old_mode = f->mode; 17 18 if (msg && *msg) { 19 fwrite(msg, strlen(msg), 1, f); 20 fputc(':', f); 21 fputc(' ', f); 22 } 23 fwrite(errstr, strlen(errstr), 1, f); 24 fputc('\n', f); 25 26 f->mode = old_mode; 27 f->locale = old_locale; 28 29 FUNLOCK(f); 30 }