diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/Makefile.in | 2 | ||||
-rw-r--r-- | libbb/run_parts.c | 4 | ||||
-rw-r--r-- | libbb/xstat.c | 11 |
3 files changed, 13 insertions, 4 deletions
diff --git a/libbb/Makefile.in b/libbb/Makefile.in index b4ee3f501..159957aa4 100644 --- a/libbb/Makefile.in +++ b/libbb/Makefile.in @@ -26,7 +26,7 @@ LIBBB-y:= \ restricted_shell.c run_parts.c run_shell.c safe_read.c safe_write.c \ safe_strncpy.c setup_environment.c sha1.c simplify_path.c \ trim.c u_signal_names.c vdprintf.c verror_msg.c \ - vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c \ + vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c xstat.c \ xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \ get_terminal_width_height.c fclose_nonstdin.c fflush_stdout_and_exit.c \ getopt_ulflags.c default_error_retval.c wfopen_input.c speed_table.c \ diff --git a/libbb/run_parts.c b/libbb/run_parts.c index 7f5fe459b..864460d0d 100644 --- a/libbb/run_parts.c +++ b/libbb/run_parts.c @@ -76,9 +76,7 @@ int run_parts(char **args, const unsigned char test_mode, char **env) filename = concat_path_file(arg0, namelist[i]->d_name); - if (stat(filename, &st) < 0) { - bb_perror_msg_and_die("failed to stat component %s", filename); - } + xstat(filename, &st); if (S_ISREG(st.st_mode) && !access(filename, X_OK)) { if (test_mode) { puts(filename); diff --git a/libbb/xstat.c b/libbb/xstat.c new file mode 100644 index 000000000..ca6686403 --- /dev/null +++ b/libbb/xstat.c @@ -0,0 +1,11 @@ +/* + * xstat.c - a stat() which dies on failure with meaningful error message + */ +#include <unistd.h> +#include "libbb.h" + +void xstat(const char *name, struct stat *stat_buf) +{ + if (stat(name, stat_buf)) + bb_perror_msg_and_die("Can't stat '%s'", name); +} |