mirror of https://github.com/MidnightCommander/mc
Clarify usage of st_rdev. Use it if HAVE_STRUCT_STAT_ST_RDEV is defined.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
d1c2c2d47e
commit
bf40acf420
|
@ -967,7 +967,9 @@ vfs_s_default_stat (struct vfs_class *me, mode_t mode)
|
|||
st.st_mode = mode;
|
||||
st.st_ino = 0;
|
||||
st.st_dev = 0;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
st.st_rdev = 0;
|
||||
#endif
|
||||
st.st_uid = getuid ();
|
||||
st.st_gid = getgid ();
|
||||
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
|
|
|
@ -186,9 +186,13 @@ main (int argc, char **argv)
|
|||
die ();
|
||||
if (fstat (console_fd, &st) < 0 || !S_ISCHR (st.st_mode))
|
||||
die ();
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
if ((st.st_rdev & 0xff00) != 0x0400)
|
||||
die ();
|
||||
console_minor = (int) (st.st_rdev & 0x00ff);
|
||||
#else
|
||||
console_minor = 1; /* FIXME */
|
||||
#endif
|
||||
if (console_minor < 1 || console_minor > 63)
|
||||
die ();
|
||||
if (st.st_uid != uid)
|
||||
|
|
|
@ -1602,7 +1602,13 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx,
|
|||
if (S_ISCHR (src_stat.st_mode) || S_ISBLK (src_stat.st_mode) || S_ISFIFO (src_stat.st_mode)
|
||||
|| S_ISNAM (src_stat.st_mode) || S_ISSOCK (src_stat.st_mode))
|
||||
{
|
||||
while (mc_mknod (dst_vpath, src_stat.st_mode & ctx->umask_kill, src_stat.st_rdev) < 0
|
||||
dev_t rdev = 0;
|
||||
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
rdev = src_stat.st_rdev;
|
||||
#endif
|
||||
|
||||
while (mc_mknod (dst_vpath, src_stat.st_mode & ctx->umask_kill, rdev) < 0
|
||||
&& !ctx->skip_all)
|
||||
{
|
||||
return_status = file_error (_("Cannot create special file \"%s\"\n%s"), dst_path);
|
||||
|
|
|
@ -388,6 +388,7 @@ cpio_create_entry (struct vfs_class *me, struct vfs_s_super *super, struct stat
|
|||
/* cppcheck-suppress syntaxError */
|
||||
case S_IFNAM:
|
||||
#endif
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
if ((st->st_size != 0) && (st->st_rdev == 0x0001))
|
||||
{
|
||||
/* FIXME: representation of major/minor differs between */
|
||||
|
@ -395,6 +396,7 @@ cpio_create_entry (struct vfs_class *me, struct vfs_s_super *super, struct stat
|
|||
st->st_rdev = (unsigned) st->st_size;
|
||||
st->st_size = 0;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -583,7 +585,9 @@ cpio_read_bin_head (struct vfs_class *me, struct vfs_s_super *super)
|
|||
st.st_nlink = u.buf.c_nlink;
|
||||
st.st_uid = u.buf.c_uid;
|
||||
st.st_gid = u.buf.c_gid;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
st.st_rdev = u.buf.c_rdev;
|
||||
#endif
|
||||
st.st_size = (u.buf.c_filesizes[0] << 16) | u.buf.c_filesizes[1];
|
||||
st.st_atime = st.st_mtime = st.st_ctime = (u.buf.c_mtimes[0] << 16) | u.buf.c_mtimes[1];
|
||||
|
||||
|
@ -650,7 +654,9 @@ cpio_read_oldc_head (struct vfs_class *me, struct vfs_s_super *super)
|
|||
u.st.st_nlink = hd.c_nlink;
|
||||
u.st.st_uid = hd.c_uid;
|
||||
u.st.st_gid = hd.c_gid;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
u.st.st_rdev = hd.c_rdev;
|
||||
#endif
|
||||
u.st.st_size = hd.c_filesize;
|
||||
u.st.st_atime = u.st.st_mtime = u.st.st_ctime = hd.c_mtime;
|
||||
|
||||
|
@ -726,7 +732,9 @@ cpio_read_crc_head (struct vfs_class *me, struct vfs_s_super *super)
|
|||
u.st.st_nlink = hd.c_nlink;
|
||||
u.st.st_uid = hd.c_uid;
|
||||
u.st.st_gid = hd.c_gid;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
u.st.st_rdev = makedev (hd.c_rdev, hd.c_rdevmin);
|
||||
#endif
|
||||
u.st.st_size = hd.c_filesize;
|
||||
u.st.st_atime = u.st.st_mtime = u.st.st_ctime = hd.c_mtime;
|
||||
|
||||
|
|
|
@ -401,7 +401,10 @@ tar_fill_stat (struct vfs_s_super *archive, struct stat *st, union record *heade
|
|||
st->st_mode |= S_IFREG;
|
||||
|
||||
st->st_dev = 0;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
st->st_rdev = 0;
|
||||
#endif
|
||||
|
||||
switch (arch->type)
|
||||
{
|
||||
case TAR_USTAR:
|
||||
|
@ -420,9 +423,12 @@ tar_fill_stat (struct vfs_s_super *archive, struct stat *st, union record *heade
|
|||
{
|
||||
case LF_BLK:
|
||||
case LF_CHR:
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
st->st_rdev =
|
||||
(tar_from_oct (8, header->header.devmajor) << 8) |
|
||||
tar_from_oct (8, header->header.devminor);
|
||||
makedev (tar_from_oct (8, header->header.devmajor),
|
||||
tar_from_oct (8, header->header.devminor));
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -119,7 +119,9 @@ fill_stat_struct (struct stat *etalon_stat, int iterator)
|
|||
etalon_stat->st_nlink = 10;
|
||||
etalon_stat->st_uid = 500;
|
||||
etalon_stat->st_gid = 500;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
etalon_stat->st_rdev = 0;
|
||||
#endif
|
||||
etalon_stat->st_size = 4096;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
etalon_stat->st_blksize = 512;
|
||||
|
@ -138,7 +140,9 @@ fill_stat_struct (struct stat *etalon_stat, int iterator)
|
|||
etalon_stat->st_nlink = 10;
|
||||
etalon_stat->st_uid = 500;
|
||||
etalon_stat->st_gid = 500;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
etalon_stat->st_rdev = 0;
|
||||
#endif
|
||||
etalon_stat->st_size = 11;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
etalon_stat->st_blksize = 512;
|
||||
|
@ -157,7 +161,9 @@ fill_stat_struct (struct stat *etalon_stat, int iterator)
|
|||
etalon_stat->st_nlink = 10;
|
||||
etalon_stat->st_uid = 500;
|
||||
etalon_stat->st_gid = 500;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
etalon_stat->st_rdev = 0;
|
||||
#endif
|
||||
etalon_stat->st_size = 4096;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
etalon_stat->st_blksize = 512;
|
||||
|
@ -176,7 +182,9 @@ fill_stat_struct (struct stat *etalon_stat, int iterator)
|
|||
etalon_stat->st_nlink = 10;
|
||||
etalon_stat->st_uid = 500;
|
||||
etalon_stat->st_gid = 500;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
etalon_stat->st_rdev = 0;
|
||||
#endif
|
||||
etalon_stat->st_size = 4096;
|
||||
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
etalon_stat->st_blksize = 512;
|
||||
|
@ -275,7 +283,9 @@ START_PARAMETRIZED_TEST (test_vfs_parse_ls_lga, test_vfs_parse_ls_lga_ds)
|
|||
mctest_assert_int_eq (etalon_stat.st_mode, test_stat.st_mode);
|
||||
mctest_assert_int_eq (etalon_stat.st_uid, test_stat.st_uid);
|
||||
mctest_assert_int_eq (etalon_stat.st_gid, test_stat.st_gid);
|
||||
#ifdef HAVE_STRUCT_STAT_ST_RDEV
|
||||
mctest_assert_int_eq (etalon_stat.st_rdev, test_stat.st_rdev);
|
||||
#endif
|
||||
mctest_assert_int_eq (etalon_stat.st_size, test_stat.st_size);
|
||||
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
mctest_assert_int_eq (etalon_stat.st_blksize, test_stat.st_blksize);
|
||||
|
|
Loading…
Reference in New Issue