use lighter internal stdio lock in getopt error printing
authorRich Felker <dalias@aerifal.cx>
Tue, 11 Sep 2018 03:04:42 +0000 (23:04 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 12 Sep 2018 18:34:33 +0000 (14:34 -0400)
the public flockfile interface is significantly heavier because it has
to handle the possibility of caller returning or thread exiting while
holding the lock.

src/misc/getopt.c

index cd1f292fb56718e23d1aba6c0a2be2c3a0dc5d30..7d7b116782300afce97dcfd8c24115b87849f4fc 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdlib.h>
 #include "libc.h"
 #include "locale_impl.h"
+#include "stdio_impl.h"
 
 char *optarg;
 int optind=1, opterr=1, optopt, __optpos, __optreset=0;
@@ -16,12 +17,12 @@ void __getopt_msg(const char *a, const char *b, const char *c, size_t l)
 {
        FILE *f = stderr;
        b = __lctrans_cur(b);
-       flockfile(f);
+       FLOCK(f);
        fputs(a, f)>=0
        && fwrite(b, strlen(b), 1, f)
        && fwrite(c, 1, l, f)==l
        && putc('\n', f);
-       funlockfile(f);
+       FUNLOCK(f);
 }
 
 int getopt(int argc, char * const argv[], const char *optstring)