From c4199f22d0f7793b70db51c01783f0d45afce3d4 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Fri, 1 Apr 2016 22:12:44 +0200
Subject: libbb: two new functions: wait_for_exitstatus(pid), xfchdir(fd)

Bartosz Golaszewski proposed xfchdir()

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 libbb/xfuncs.c        | 12 ++++++++++++
 libbb/xfuncs_printf.c |  6 ++++++
 2 files changed, 18 insertions(+)

(limited to 'libbb')

diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 206edb4a0..3f9a84ad4 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -315,3 +315,15 @@ int FAST_FUNC wait4pid(pid_t pid)
 		return WTERMSIG(status) + 0x180;
 	return 0;
 }
+
+// Useful when we do know that pid is valid, and we just want to wait
+// for it to exit. Not existing pid is fatal. waitpid() status is not returned.
+int FAST_FUNC wait_for_exitstatus(pid_t pid)
+{
+	int exit_status, n;
+
+	n = safe_waitpid(pid, &exit_status, 0);
+	if (n < 0)
+		bb_perror_msg_and_die("waitpid");
+	return exit_status;
+}
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index 73488908d..4aa1b5ce2 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -390,6 +390,12 @@ void FAST_FUNC xchdir(const char *path)
 		bb_perror_msg_and_die("can't change directory to '%s'", path);
 }
 
+void FAST_FUNC xfchdir(int fd)
+{
+	if (fchdir(fd))
+		bb_perror_msg_and_die("fchdir");
+}
+
 void FAST_FUNC xchroot(const char *path)
 {
 	if (chroot(path))
-- 
cgit v1.2.3