Lines Matching defs:pairs

892  *  _pid_/_status_ pairs (where _status_ is a
2556 struct run_exec_dup2_fd_pair *pairs = 0;
2559 pairs = (struct run_exec_dup2_fd_pair *)RSTRING_PTR(tmpbuf);
2564 pairs[i].oldfd = FIX2INT(RARRAY_PTR(elt)[1]);
2565 pairs[i].newfd = FIX2INT(RARRAY_PTR(elt)[0]); /* unique */
2566 pairs[i].older_index = -1;
2571 qsort(pairs, n, sizeof(struct run_exec_dup2_fd_pair), intcmp); /* hopefully async-signal-safe */
2573 qsort(pairs, n, sizeof(struct run_exec_dup2_fd_pair), intrcmp);
2577 int newfd = pairs[i].newfd;
2580 found = bsearch(&key, pairs, n, sizeof(struct run_exec_dup2_fd_pair), intcmp); /* hopefully async-signal-safe */
2581 pairs[i].num_newer = 0;
2583 while (pairs < found && (found-1)->oldfd == newfd)
2585 while (found < pairs+n && found->oldfd == newfd) {
2586 pairs[i].num_newer++;
2596 while (j != -1 && pairs[j].oldfd != -1 && pairs[j].num_newer == 0) {
2597 if (save_redirect_fd(pairs[j].newfd, sargp, errmsg, errmsg_buflen) < 0) /* async-signal-safe */
2599 ret = redirect_dup2(pairs[j].oldfd, pairs[j].newfd); /* async-signal-safe */
2604 rb_update_max_fd(pairs[j].newfd); /* async-signal-safe but don't need to call it in a child process. */
2605 pairs[j].oldfd = -1;
2606 j = pairs[j].older_index;
2608 pairs[j].num_newer--;
2615 if (pairs[i].oldfd == -1)
2617 if (pairs[i].oldfd == pairs[i].newfd) { /* self cycle */
2619 int fd = pairs[i].oldfd;
2634 pairs[i].oldfd = -1;
2638 extra_fd = redirect_dup(pairs[i].oldfd); /* async-signal-safe */
2646 ret = redirect_dup2(pairs[i].oldfd, extra_fd); /* async-signal-safe */
2653 pairs[i].oldfd = extra_fd;
2654 j = pairs[i].older_index;
2655 pairs[i].older_index = -1;
2657 ret = redirect_dup2(pairs[j].oldfd, pairs[j].newfd); /* async-signal-safe */
2663 pairs[j].oldfd = -1;
2664 j = pairs[j].older_index;