add proper fuxed-based locking for stdio
[musl] / src / stdio / flockfile.c
index 0d4c92c..a196c1e 100644 (file)
@@ -3,6 +3,8 @@
 
 void flockfile(FILE *f)
 {
-       if (!libc.threaded) pthread_self();
-       __lockfile(f);
+       while (ftrylockfile(f)) {
+               int owner = f->lock;
+               if (owner) __wait(&f->lock, &f->waiters, owner, 1);
+       }
 }