summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ft.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/tests/ft.c b/tests/ft.c
index bce51c5..7acc557 100644
--- a/tests/ft.c
+++ b/tests/ft.c
@@ -722,13 +722,15 @@ static int last_uid=-1, last_gid=-1, last_mode=-1;
if( (cur_file_stat.st_mode&07777) != (last_mode&07777) )
printf(":%03o", cur_file_stat.st_mode & 07777);
- major = (cur_file_stat.st_rdev >> 8);
- minor = (cur_file_stat.st_rdev&0xFF);
#ifdef __linux__
- major &= 0xFFF;
- minor |= ((cur_file_stat.st_rdev&0xFF000000)>>12);
+ major = ((cur_file_stat.st_rdev >> 8) & 0xfff);
+ if (sizeof(cur_file_stat.st_rdev) > 4)
+ major |= ((cur_file_stat.st_rdev >> 32) & ~0xfff);
+ minor = (cur_file_stat.st_rdev & 0xff) |
+ ((cur_file_stat.st_rdev >> 12) & ~0xff);
#else
- major &= 0xFF;
+ major = ((cur_file_stat.st_rdev >> 8) & 0xFF);
+ minor = (cur_file_stat.st_rdev&0xFF);
#endif
switch(cur_file_stat.st_mode & S_IFMT)
{