-#define std(flags, file) \
- {0,0,0,flags,file,{0},0,__sF+file,__sclose,__sread,__sseek,__swrite, \
- {0}, __sFX + file}
- /* p r w flags file _bf z cookie close read seek write */
- /* _ub _extra */
+#define std(flags, file) { \
+ ._flags = (flags), \
+ ._file = (file), \
+ ._cookie = __sF + (file), \
+ ._close = __sclose, \
+ ._read = __sread, \
+ ._seek = __sseek, \
+ ._write = __swrite, \
+ ._extra = __sFX + file, \
+}
+#define __sFXInit {.fl_mutex = PTHREAD_MUTEX_INITIALIZER}
+ /* set counted */
+#define __sFXInit3 {.fl_mutex = PTHREAD_MUTEX_INITIALIZER, .counted = 1}
+
+static int __scounted; /* streams counted against STREAM_MAX */
+static int __stream_max;
+
+#if !TARGET_OS_EMBEDDED
+/* usual and usual_extra are data pigs. See 7929728. For embedded we should
+ * always allocate dynamically, and probably should for desktop too. */