summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2022-01-13 12:56:10 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2022-01-13 12:56:10 +0100
commitc2788f88f430da8ae5fb5f293b13fc2b167ea2fe (patch)
tree44e3fd94292a3ef13ecdbf14d469459e00be1150 /libbb
parent931c55f9e2b41473132683488820c6fb7c47506b (diff)
downloadbusybox-c2788f88f430da8ae5fb5f293b13fc2b167ea2fe.tar.gz
libbb: introduce and use chdir_or_warn()
function old new delta chdir_or_warn - 37 +37 send_cgi_and_exit 720 711 -9 xchdir 27 15 -12 setup_environment 233 217 -16 fork_job 449 433 -16 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/4 up/down: 37/-53) Total: -16 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/setup_environment.c3
-rw-r--r--libbb/xfuncs_printf.c11
2 files changed, 10 insertions, 4 deletions
diff --git a/libbb/setup_environment.c b/libbb/setup_environment.c
index 37777204e..3549e2099 100644
--- a/libbb/setup_environment.c
+++ b/libbb/setup_environment.c
@@ -37,8 +37,7 @@ void FAST_FUNC setup_environment(const char *shell, int flags, const struct pass
/* Change the current working directory to be the home directory
* of the user */
if (flags & SETUP_ENV_CHDIR) {
- if (chdir(pw->pw_dir) != 0) {
- bb_error_msg("can't change directory to '%s'", pw->pw_dir);
+ if (chdir_or_warn(pw->pw_dir) != 0) {
xchdir((flags & SETUP_ENV_TO_TMP) ? "/tmp" : "/");
}
}
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index fc630d176..842d10cd2 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -415,11 +415,18 @@ void FAST_FUNC xseteuid(uid_t euid)
if (seteuid(euid)) bb_simple_perror_msg_and_die("seteuid");
}
+int FAST_FUNC chdir_or_warn(const char *path)
+{
+ int r = chdir(path);
+ if (r != 0)
+ bb_perror_msg("can't change directory to '%s'", path);
+ return r;
+}
// Die if we can't chdir to a new path.
void FAST_FUNC xchdir(const char *path)
{
- if (chdir(path))
- bb_perror_msg_and_die("can't change directory to '%s'", path);
+ if (chdir_or_warn(path) != 0)
+ xfunc_die();
}
void FAST_FUNC xfchdir(int fd)