+inline static size_t update_environment_buffer_size(void) {
+ assert(initialized);
+
+ /* Use the maximum count (TRACKFDS_STATIC_COUNT) of used descriptors
+ * because it's simple and small enough not to be a problem.
+ *
+ * An integer (32-bit) has at most 10 digits, + 1 for the comma after each
+ * number. Bigger file descriptors (which shouldn't occur in reality) are
+ * skipped. */
+ return (TRACKFDS_STATIC_COUNT + tracked_fds_list_count)
+ * (10 + 1) + 1 /* to fit '\0' */;
+}
+static void update_environment(void) {
+#ifdef DEBUG
+ debug("update_environment()\t\t[%d]\n", getpid());
+#endif
+
+ /* If we haven't parsed the environment we also haven't modified it - so
+ * nothing to do. */
+ if (!initialized) {
+ return;
+ }
+
+ int saved_errno = errno;
+
+ char env[update_environment_buffer_size()];
+ env[0] = 0;
+
+ update_environment_buffer(env);
+
+#if 0
+ debug(" setenv(\"%s\", \"%s\", 1)\n", ENV_NAME_PRIVATE_FDS, env);