Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Ticket #1375: stdc.diff

File stdc.diff, 3.8 kB (added by Cyborg16, 15 years ago)

Correct stat_t for X86/X86_64, and small/large file support

  • tango/stdc/posix/config.d

    old new  
    1414 
    1515version( linux ) 
    1616{ 
    17     //version( none /* X86_64 */ ) 
    18     version(SMALLFILE) 
     17    version(SMALLFILE)  // Note: makes no difference in X86_64 mode. 
    1918    { 
    2019      const bool  __USE_LARGEFILE64   = false; 
    2120    } 
  • tango/stdc/posix/sys/types.d

    old new  
    3838{ 
    3939  static if( __USE_FILE_OFFSET64 ) 
    4040  { 
    41     alias long      blkcnt_t; 
    42     alias ulong     ino_t; 
    43     alias long      off_t; 
     41    alias long      off_t;      // actually C header's off64_t in this mode 
     42    alias long      blkcnt_t;   // actually C header's blkcnt64_t in this mode 
     43    alias ulong     ino64_t; 
    4444  } 
    4545  else 
    4646  { 
     47    alias c_long    off_t; 
    4748    alias c_long    blkcnt_t; 
    48     alias c_ulong   ino_t; 
    49     alias c_long    off_t; 
    5049  } 
    51     alias c_long    blksize_t; 
    5250    alias ulong     dev_t; 
    53     alias uint      gid_t; 
     51    alias c_ulong   ino_t; 
    5452    alias uint      mode_t; 
    5553    alias c_ulong   nlink_t; 
     54    alias uint      uid_t; 
     55    alias uint      gid_t; 
     56    alias c_long    blksize_t; 
    5657    alias int       pid_t; 
    5758    //size_t (defined in tango.stdc.stddef) 
    5859    alias c_long    ssize_t; 
    5960    //time_t (defined in tango.stdc.time) 
    60     alias uint      uid_t; 
    6161} 
    6262else version( darwin ) 
    6363{ 
  • tango/stdc/posix/sys/stat.d

    old new  
    8383        private alias ushort _pad_t; 
    8484    } 
    8585 
    86     struct stat_t 
     86    align (4) struct stat_t 
    8787    { 
    88         dev_t       st_dev; 
     88        dev_t       st_dev;             /* Device.  */ 
     89      version (X86_64) {} else { 
    8990        _pad_t      __pad1; 
     91      } 
    9092      static if( __USE_FILE_OFFSET64 ) 
    9193      { 
    92         ino_t       __st_ino; 
     94        ino_t      __st_ino;            /* 32bit file serial number.    */ 
    9395      } 
    9496      else 
    9597      { 
    96         ino_t       st_ino; 
     98        ino_t       st_ino;             /* File serial number.  */ 
    9799      } 
     100      version (X86_64) { 
     101        nlink_t     st_nlink; 
    98102        mode_t      st_mode; 
    99         nlink_t     st_nlink; 
    100         uid_t       st_uid; 
    101         gid_t       st_gid; 
     103      } else { 
     104        mode_t      st_mode;            /* File mode.  */ 
     105        nlink_t     st_nlink;           /* Link count.  */ 
     106      } 
     107        uid_t       st_uid;             /* User ID of the file's owner. */ 
     108        gid_t       st_gid;             /* Group ID of the file's group.*/ 
     109      version (X86_64) { 
     110        int         pad0; 
    102111        dev_t       st_rdev; 
     112      } else { 
     113        dev_t       st_rdev;            /* Device number, if device.  */ 
    103114        _pad_t      __pad2; 
    104         off_t       st_size; 
    105         blksize_t   st_blksize; 
    106         blkcnt_t    st_blocks; 
     115      } 
     116        off_t       st_size;            /* Size of file, in bytes.  */ 
     117        blksize_t   st_blksize;         /* Optimal block size for I/O.  */ 
     118        blkcnt_t    st_blocks;          /* Number 512-byte blocks allocated. */ 
    107119      static if( false /*__USE_MISC*/ ) // true if _BSD_SOURCE || _SVID_SOURCE 
    108120      { 
    109121        timespec    st_atim; 
     
    122134        time_t      st_ctime; 
    123135        c_ulong     st_ctimensec; 
    124136      } 
    125       static if( __USE_FILE_OFFSET64 ) 
     137      version (X86_64) { 
     138        c_long[3]  __unused; 
     139      } 
     140      else static if( __USE_FILE_OFFSET64 ) 
    126141      { 
    127         ino_t       st_ino; 
     142        ino64_t     st_ino;             /* File serial number.  */ 
    128143      } 
    129144      else 
    130145      {