xmove_fd(xopen(...), ...) is a common pattern. Add a helper for that. On x86-64, this compiles to 18 bytes, so just a few call sites need to be converted for a net win.
Signed-off-by: Rasmus Villemoes <[email protected]> --- include/libbb.h | 1 + libbb/xfuncs_printf.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/libbb.h b/include/libbb.h index ece03e7d8..bdd99403d 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -608,6 +608,7 @@ int open3_or_warn(const char *pathname, int flags, int mode) FAST_FUNC; int open_or_warn(const char *pathname, int flags) FAST_FUNC; int xopen3(const char *pathname, int flags, int mode) FAST_FUNC; int xopen(const char *pathname, int flags) FAST_FUNC; +void xopen_as(const char *pathname, int flags, int fd) FAST_FUNC; int xopen_nonblocking(const char *pathname) FAST_FUNC; int xopen_as_uid_gid(const char *pathname, int flags, uid_t u, gid_t g) FAST_FUNC; int open_or_warn_stdin(const char *pathname) FAST_FUNC; diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index f0399ca45..255e80190 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -160,6 +160,12 @@ int FAST_FUNC xopen(const char *pathname, int flags) return xopen3(pathname, flags, 0666); } +// Die if we can't open a file as a given fd. +void FAST_FUNC xopen_as(const char *pathname, int flags, int fd) +{ + return xmove_fd(xopen(pathname, flags), fd); +} + // Warn if we can't open a file and return a fd. int FAST_FUNC open3_or_warn(const char *pathname, int flags, int mode) { -- 2.29.2 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
