+static size_t tracked_fds_list_space;
+
+
+#ifdef DEBUG
+static void tracked_fds_debug(void) {
+ size_t i;
+
+ for (i = 0; i < TRACKFDS_STATIC_COUNT; i++) {
+ if (tracked_fds[i]) {
+ debug(" tracked_fds[%d]: %d\n", i, tracked_fds[i]);
+ }
+ }
+ debug(" tracked_fds_list: %d/%d\t[%d]\n", tracked_fds_list_count,
+ tracked_fds_list_space,
+ getpid());
+ for (i = 0; i < tracked_fds_list_count; i++) {
+ debug(" tracked_fds_list[%d]: %d\n", i, tracked_fds_list[i]);
+ }
+}
+#endif
+
+static int init_tracked_fds_list(size_t count) {
+ /* Reduce reallocs. */
+ count += TRACKFDS_REALLOC_STEP;
+
+ tracked_fds_list = malloc(count * sizeof(*tracked_fds_list));
+ if (!tracked_fds_list) {
+#ifdef DEBUG
+ warning("malloc(tracked_fds_list, %d) failed [%d]\n",
+ count * sizeof(*tracked_fds_list), getpid());
+#endif
+ return 0;
+ }