libbb: add xfstat function
function old new delta xfstat - 25 +25 mkfs_ext2_main 2421 2423 +2 mkfs_reiser_main 1197 1194 -3 next 312 307 -5 ar_main 533 522 -11 mkfs_minix_main 2938 2924 -14 mkfs_vfat_main 1511 1495 -16 writeTarFile 272 255 -17 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/6 up/down: 27/-66) Total: -39 bytes Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
@@ -323,9 +323,7 @@ static void do_skip(priv_dumper_t *dumper, const char *fname, int statok)
|
||||
struct stat sbuf;
|
||||
|
||||
if (statok) {
|
||||
if (fstat(STDIN_FILENO, &sbuf)) {
|
||||
bb_simple_perror_msg_and_die(fname);
|
||||
}
|
||||
xfstat(STDIN_FILENO, &sbuf, fname);
|
||||
if (!(S_ISCHR(sbuf.st_mode) || S_ISBLK(sbuf.st_mode) || S_ISFIFO(sbuf.st_mode))
|
||||
&& dumper->pub.dump_skip >= sbuf.st_size
|
||||
) {
|
||||
|
||||
@@ -133,7 +133,7 @@ int FAST_FUNC update_passwd(const char *filename,
|
||||
goto close_old_fp;
|
||||
|
||||
created:
|
||||
if (!fstat(old_fd, &sb)) {
|
||||
if (fstat(old_fd, &sb) == 0) {
|
||||
fchmod(new_fd, sb.st_mode & 0777); /* ignore errors */
|
||||
fchown(new_fd, sb.st_uid, sb.st_gid);
|
||||
}
|
||||
|
||||
@@ -436,6 +436,16 @@ void FAST_FUNC xstat(const char *name, struct stat *stat_buf)
|
||||
bb_perror_msg_and_die("can't stat '%s'", name);
|
||||
}
|
||||
|
||||
void FAST_FUNC xfstat(int fd, struct stat *stat_buf, const char *errmsg)
|
||||
{
|
||||
/* errmsg is usually a file name, but not always:
|
||||
* xfstat may be called in a spot where file name is no longer
|
||||
* available, and caller may give e.g. "can't stat input file" string.
|
||||
*/
|
||||
if (fstat(fd, stat_buf))
|
||||
bb_simple_perror_msg_and_die(errmsg);
|
||||
}
|
||||
|
||||
// selinux_or_die() - die if SELinux is disabled.
|
||||
void FAST_FUNC selinux_or_die(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user