From 2787932886feb87cc0787df159f8f2941ef6390b Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 15 Nov 2008 13:37:54 +0000 Subject: [PATCH] Adaptions to FreeBSD. Thanks to J.R. Oldroyd. --- xorriso/xorriso.c | 14 +++++++++++--- xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/xorriso/xorriso.c b/xorriso/xorriso.c index 11b101fa..9dc7de12 100644 --- a/xorriso/xorriso.c +++ b/xorriso/xorriso.c @@ -89,6 +89,7 @@ or #include #include #include +#include /* for -charset */ #include @@ -7842,7 +7843,7 @@ int Xorriso__mode_to_perms(mode_t st_mode, char perms[10], int flag) */ int Xorriso_format_ls_l(struct XorrisO *xorriso, struct stat *stbuf, int flag) { - int show_major_minor= 0; + int show_major_minor= 0, high_shift= 0, high_mask= 0; char *rpt, perms[10], mm_text[80]; mode_t st_mode; dev_t dev, major, minor; @@ -7883,8 +7884,15 @@ int Xorriso_format_ls_l(struct XorrisO *xorriso, struct stat *stbuf, int flag) dev= stbuf->st_rdev; /* according to /usr/include/sys/sysmacros.h : gnu_dev_major(),_minor() - >>> but this looks should go to some system dependency */ - major= (((dev >> 8) & 0xfff) | ((unsigned int) (dev >> 32) & ~0xfff)) + >>> but this looks as if it should go to some system dependency + >>> in FreeBSD dev_t is 32 bit + */ + if(sizeof(dev_t) > 4) { + high_shift= 32; + high_mask= ~0xfff; + } + major= (((dev >> 8) & 0xfff) | + ((unsigned int) (dev >> high_shift) & high_mask)) & 0xffffffff; minor= (((dev & 0xff) | ((unsigned int) (dev >> 12) & ~0xff))) & 0xffffffff; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index cb0333d9..0372cbbc 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.11.12.153437" +#define Xorriso_timestamP "2008.11.15.133724"