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

Changeset 3798 for trunk

Show
Ignore:
Timestamp:
07/25/08 14:21:01 (4 months ago)
Author:
sean
Message:

Verified 64-bit data definitions for linux and added 64-bit function prototypes for linux. These may enabled by setting "USE_LARGEFILE64 = true" in tango.stdc.posix.config. Untested on 64-bit linux, so all feedback welcome. This closes #656 and closes #1071

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/tango/stdc/posix/dirent.d

    r3265 r3798  
    6262    } 
    6363 
    64     dirent* readdir(DIR*); 
     64    static if( __USE_LARGEFILE64 ) 
     65    { 
     66        dirent* readdir64(DIR*); 
     67        alias   readdir64 readdir; 
     68    } 
     69    else 
     70    { 
     71        dirent* readdir(DIR*); 
     72    } 
    6573} 
    6674else version( darwin ) 
     
    114122    struct dirent 
    115123    { 
    116        uint d_fileno; 
    117        ushort d_reclen; 
    118        ubyte d_type; 
    119        ubyte d_namelen; 
    120        char d_name[256]
     124        uint      d_fileno; 
     125        ushort    d_reclen; 
     126        ubyte    d_type; 
     127        ubyte    d_namelen; 
     128        char[256] d_name
    121129    } 
    122130 
    123    struct _telldir; 
     131    struct _telldir; 
    124132    struct DIR 
    125133    { 
    126         int dd_fd; 
    127        c_long dd_loc; 
    128        c_long dd_size; 
    129        char* dd_buf; 
    130        int dd_len; 
    131        c_long dd_seek; 
    132        c_long dd_rewind; 
    133        int dd_flags; 
    134        void* dd_lock; 
    135        _telldir* dd_td; 
     134        int       dd_fd; 
     135        c_long    dd_loc; 
     136        c_long    dd_size; 
     137        char*    dd_buf; 
     138        int      dd_len; 
     139        c_long    dd_seek; 
     140        c_long    dd_rewind; 
     141        int      dd_flags; 
     142        void*    dd_lock; 
     143        _telldir* dd_td; 
    136144    } 
    137145 
     
    155163*/ 
    156164 
    157 int readdir_r(DIR*, dirent*, dirent**); 
     165version( linux ) 
     166
     167  static if( __USE_LARGEFILE64 ) 
     168  { 
     169    int   readdir_r64(DIR*, dirent*, dirent**); 
     170    alias readdir_r64 readdir_r; 
     171  } 
     172  else 
     173  { 
     174    int readdir_r(DIR*, dirent*, dirent**); 
     175  } 
     176
     177else version( darwin ) 
     178
     179    int readdir_r(DIR*, dirent*, dirent**); 
     180
     181else version( freebsd ) 
     182
     183    int readdir_r(DIR*, dirent*, dirent**); 
     184
    158185 
    159186// 
  • trunk/tango/stdc/posix/fcntl.d

    r3265 r3798  
    119119        pid_t   l_pid; 
    120120    } 
     121 
     122    static if( __USE_LARGEFILE64 ) 
     123    { 
     124        int   creat64(char*, mode_t); 
     125        alias creat64 creat; 
     126 
     127        int   open64(char*, int, ...); 
     128        alias open64 open; 
     129    } 
     130    else 
     131    { 
     132        int   creat(char*, mode_t); 
     133        int   open(char*, int, ...); 
     134    } 
    121135} 
    122136else version( darwin ) 
     
    163177        short   l_whence; 
    164178    } 
     179 
     180    int creat(char*, mode_t); 
     181    int open(char*, int, ...); 
    165182} 
    166183else version( freebsd ) 
     
    207224        short   l_whence; 
    208225    } 
    209 
    210  
    211 int creat(char*, mode_t); 
     226 
     227    int creat(char*, mode_t); 
     228    int open(char*, int, ...); 
     229
     230 
     231//int creat(char*, mode_t); 
    212232int fcntl(int, int, ...); 
    213 int open(char*, int, ...); 
     233//int open(char*, int, ...); 
    214234 
    215235// 
  • trunk/tango/stdc/posix/stdio.d

    r2809 r3798  
    8787*/ 
    8888 
     89version( linux ) 
     90{ 
     91    static if( __USE_LARGEFILE64 ) 
     92    { 
     93        int   fgetpos64(FILE*, fpos_t *); 
     94        alias fgetpos64 fgetpos; 
     95 
     96        FILE* fopen64(char*, char*); 
     97        alias fopen64 fopen; 
     98 
     99        FILE* freopen64(char*, char*, FILE*); 
     100        alias freopen64 freopen; 
     101 
     102        int   fseek64(FILE*, c_long, int); 
     103        alias fseek64 fseek; 
     104 
     105        int   fsetpos64(FILE*, fpos_t *); 
     106        alias fsetpos64 fsetpos; 
     107 
     108        FILE* tmpfile64(); 
     109        alias tmpfile64 tmpfile; 
     110    } 
     111    else 
     112    { 
     113        int   fgetpos(FILE*, fpos_t *); 
     114        FILE* fopen(char*, char*); 
     115        FILE* freopen(char*, char*, FILE*); 
     116        int   fseek(FILE*, c_long, int); 
     117        int   fsetpos(FILE*, fpos_t *); 
     118        FILE* tmpfile(); 
     119    } 
     120} 
     121 
    89122// 
    90123// C Extension (CX) 
     
    105138{ 
    106139    const L_ctermid = 9; 
     140 
     141  static if( __USE_FILE_OFFSET64 ) 
     142  { 
     143    int   fseeko64(FILE*, off_t, int); 
     144    alias fseeko64 fseeko; 
     145  } 
     146  else 
     147  { 
     148    int   fseeko(FILE*, off_t, int); 
     149  } 
     150 
     151  static if( __USE_LARGEFILE64 ) 
     152  { 
     153    off_t ftello64(FILE*); 
     154    alias ftello64 ftello; 
     155  } 
     156  else 
     157  { 
     158    off_t ftello(FILE*); 
     159  } 
     160} 
     161else 
     162{ 
     163    int   fseeko(FILE*, off_t, int); 
     164    off_t ftello(FILE*); 
    107165} 
    108166 
     
    110168FILE*  fdopen(int, char*); 
    111169int    fileno(FILE*); 
    112 int    fseeko(FILE*, off_t, int); 
    113 off_t  ftello(FILE*); 
     170//int    fseeko(FILE*, off_t, int); 
     171//off_t  ftello(FILE*); 
    114172char*  gets(char*); 
    115173FILE*  popen(char*, char*); 
  • trunk/tango/stdc/posix/stdlib.d

    r3265 r3798  
    191191    c_long lrand48(); 
    192192    char*  mktemp(char*); // LEGACY 
    193     int    mkstemp(char*); 
     193    //int    mkstemp(char*); 
    194194    c_long mrand48(); 
    195195    c_long nrand48(ushort[3]); 
     
    205205    void   srandom(uint); 
    206206    int    unlockpt(int); 
     207 
     208  static if( __USE_LARGEFILE64 ) 
     209  { 
     210    int    mkstemp64(char*); 
     211    alias  mkstemp64 mkstemp; 
     212  } 
     213  else 
     214  { 
     215    int    mkstemp(char*); 
     216  } 
    207217} 
    208218else version( darwin ) 
  • trunk/tango/stdc/posix/sys/mman.d

    r3265 r3798  
    9999version( linux ) 
    100100{ 
     101    //void* mmap(void*, size_t, int, int, int, off_t); 
     102    int   munmap(void*, size_t); 
     103 
     104  static if( __USE_LARGEFILE64 ) 
     105  { 
     106    void* mmap64(void*, size_t, int, int, int, off_t); 
     107    alias mmap64 mmap; 
     108  } 
     109  else 
     110  { 
    101111    void* mmap(void*, size_t, int, int, int, off_t); 
    102     int   munmap(void*, size_t); 
     112  } 
    103113} 
    104114else version( darwin ) 
  • trunk/tango/stdc/posix/sys/stat.d

    r3624 r3798  
    7575version( linux ) 
    7676{ 
    77   static if( __USE_LARGEFILE64 ) 
    78   { 
    79         struct stat_t 
    80         { 
    81             dev_t       st_dev; 
    82             uint        __pad1; 
    83             ino_t       __st_ino; 
    84             mode_t      st_mode; 
    85             nlink_t     st_nlink; 
    86             uid_t       st_uid; 
    87             gid_t       st_gid; 
    88             dev_t       st_rdev; 
    89             uint        __pad2; 
    90             off64_t     st_size; 
    91             blksize_t   st_blksize; 
    92             blkcnt64_t  st_blocks; 
    93  
    94           static if( false /*__USE_MISC*/ ) // true if _BSD_SOURCE || _SVID_SOURCE 
    95           { 
    96             timespec    st_atim; 
    97             timespec    st_mtim; 
    98             timespec    st_ctim; 
    99             alias st_atim.tv_sec st_atime; 
    100             alias st_mtim.tv_sec st_mtime; 
    101             alias st_ctim.tv_sec st_ctime; 
    102           } 
    103           else 
    104           { 
    105             time_t      st_atime; 
    106             c_ulong     st_atimensec; 
    107             time_t      st_mtime; 
    108             c_ulong     st_mtimensec; 
    109             time_t      st_ctime; 
    110             c_ulong     st_ctimensec; 
    111           } 
    112             ino64_t     st_ino; 
    113         } 
     77    static if( __USE_LARGEFILE64 ) 
     78    { 
     79        private alias _pad_t uint; 
    11480    } 
    11581    else 
    11682    { 
    117         struct stat_t 
    118         { 
    119             dev_t       st_dev; 
    120             ushort      __pad1; 
    121           static if( __USE_FILE_OFFSET64 ) 
    122           { 
    123             ino_t       __st_ino; 
    124           } 
    125           else 
    126           { 
    127             ino_t       st_ino; 
    128           } 
    129             mode_t      st_mode; 
    130             nlink_t     st_nlink; 
    131             uid_t       st_uid; 
    132             gid_t       st_gid; 
    133             dev_t       st_rdev; 
    134             ushort      __pad2; 
    135             off_t       st_size; 
    136             blksize_t   st_blksize; 
    137             blkcnt_t    st_blocks; 
    138           static if( false /*__USE_MISC*/ ) // true if _BSD_SOURCE || _SVID_SOURCE 
    139           { 
    140             timespec    st_atim; 
    141             timespec    st_mtim; 
    142             timespec    st_ctim; 
    143             alias st_atim.tv_sec st_atime; 
    144             alias st_mtim.tv_sec st_mtime; 
    145             alias st_ctim.tv_sec st_ctime; 
    146           } 
    147           else 
    148           { 
    149             time_t      st_atime; 
    150             c_ulong     st_atimensec; 
    151             time_t      st_mtime; 
    152             c_ulong     st_mtimensec; 
    153             time_t      st_ctime; 
    154             c_ulong     st_ctimensec; 
    155           } 
    156           static if( __USE_FILE_OFFSET64 ) 
    157           { 
    158             ino_t       st_ino; 
    159           } 
    160           else 
    161           { 
    162             c_ulong     __unused4; 
    163             c_ulong     __unused5; 
    164           } 
    165         } 
     83        private alias _pad_t ushort; 
     84    } 
     85 
     86    struct stat_t 
     87    { 
     88        dev_t       st_dev; 
     89        _pad_t      __pad1; 
     90      static if( __USE_FILE_OFFSET64 ) 
     91      { 
     92        ino_t       __st_ino; 
     93      } 
     94      else 
     95      { 
     96        ino_t       st_ino; 
     97      } 
     98        mode_t      st_mode; 
     99        nlink_t     st_nlink; 
     100        uid_t       st_uid; 
     101        gid_t       st_gid; 
     102        dev_t       st_rdev; 
     103        _pad_t      __pad2; 
     104        off_t       st_size; 
     105        blksize_t   st_blksize; 
     106        blkcnt_t    st_blocks; 
     107      static if( false /*__USE_MISC*/ ) // true if _BSD_SOURCE || _SVID_SOURCE 
     108      { 
     109        timespec    st_atim; 
     110        timespec    st_mtim; 
     111        timespec    st_ctim; 
     112        alias st_atim.tv_sec st_atime; 
     113        alias st_mtim.tv_sec st_mtime; 
     114        alias st_ctim.tv_sec st_ctime; 
     115      } 
     116      else 
     117      { 
     118        time_t      st_atime; 
     119        c_ulong     st_atimensec; 
     120        time_t      st_mtime; 
     121        c_ulong     st_mtimensec; 
     122        time_t      st_ctime; 
     123        c_ulong     st_ctimensec; 
     124      } 
     125      static if( __USE_FILE_OFFSET64 ) 
     126      { 
     127        ino_t       st_ino; 
     128      } 
     129      else 
     130      { 
     131        c_ulong     __unused4; 
     132        c_ulong     __unused5; 
     133      } 
    166134    } 
    167135 
     
    334302int    chmod(char*, mode_t); 
    335303int    fchmod(int, mode_t); 
    336 int    fstat(int, stat_t*); 
    337 int    lstat(char*, stat_t*); 
     304//int    fstat(int, stat_t*); 
     305//int    lstat(char*, stat_t*); 
    338306int    mkdir(char*, mode_t); 
    339307int    mkfifo(char*, mode_t); 
    340 int    stat(char*, stat_t*); 
     308//int    stat(char*, stat_t*); 
    341309mode_t umask(mode_t); 
     310 
     311version( linux ) 
     312{ 
     313  static if( __USE_LARGEFILE64 ) 
     314  { 
     315    int   fstat64(int, stat_t*); 
     316    alias fstat64 fstat; 
     317 
     318    int   lstat64(char*, stat_t*); 
     319    alias lstat64 lstat; 
     320 
     321    int   stat64(char*, stat_t*); 
     322    alias stat64 stat; 
     323  } 
     324  else 
     325  { 
     326    int   fstat(int, stat_t*); 
     327    int   lstat(char*, stat_t*); 
     328    int   stat(char*, stat_t*); 
     329  } 
     330} 
     331else 
     332{ 
     333    int   fstat(int, stat_t*); 
     334    int   lstat(char*, stat_t*); 
     335    int   stat(char*, stat_t*); 
     336} 
    342337 
    343338// 
  • trunk/tango/stdc/posix/unistd.d

    r3265 r3798  
    4343pid_t   fork(); 
    4444c_long  fpathconf(int, int); 
    45 int     ftruncate(int, off_t); 
     45//int     ftruncate(int, off_t); 
    4646char*   getcwd(char*, size_t); 
    4747gid_t   getegid(); 
     
    5959int     isatty(int); 
    6060int     link(char*, char*); 
    61 off_t   lseek(int, off_t, int); 
     61//off_t   lseek(int, off_t, int); 
    6262c_long  pathconf(char*, int); 
    6363int     pause(); 
     
    8181int     unlink(char*); 
    8282ssize_t write(int, void*, size_t); 
     83 
     84version( linux ) 
     85{ 
     86  static if( __USE_FILE_OFFSET64 ) 
     87  { 
     88    off_t lseek64(int, off_t, int); 
     89    alias lseek64 lseek; 
     90  } 
     91  else 
     92  { 
     93    off_t lseek(int, off_t, int); 
     94  } 
     95  static if( __USE_LARGEFILE64 ) 
     96  { 
     97    int   ftruncate64(int, off_t); 
     98    alias ftruncate64 ftruncate; 
     99  } 
     100  else 
     101  { 
     102    int   ftruncate(int, off_t); 
     103  } 
     104} 
     105else 
     106{ 
     107    int   ftruncate(int, off_t); 
     108} 
    83109 
    84110version( linux ) 
     
    475501    char*      getwd(char*); // LEGACY 
    476502    int        lchown(char*, uid_t, gid_t); 
    477     int        lockf(int, int, off_t); 
     503    //int        lockf(int, int, off_t); 
    478504    int        nice(int); 
    479     ssize_t    pread(int, void*, size_t, off_t); 
    480     ssize_t    pwrite(int, void*, size_t, off_t); 
     505    //ssize_t    pread(int, void*, size_t, off_t); 
     506    //ssize_t    pwrite(int, void*, size_t, off_t); 
    481507    pid_t      setpgrp(); 
    482508    int        setregid(gid_t, gid_t); 
     
    484510    void       swab(void*, void*, ssize_t); 
    485511    void       sync(); 
    486     int        truncate(char*, off_t); 
     512    //int        truncate(char*, off_t); 
    487513    useconds_t ualarm(useconds_t, useconds_t); 
    488514    int        usleep(useconds_t); 
    489515    pid_t      vfork(); 
     516 
     517  static if( __USE_LARGEFILE64 ) 
     518  { 
     519    int        lockf64(int, int, off_t); 
     520    alias      lockf64 lockf; 
     521 
     522    ssize_t    pread64(int, void*, size_t, off_t); 
     523    alias      pread64 pread; 
     524 
     525    ssize_t    pwrite64(int, void*, size_t, off_t); 
     526    alias      pwrite64 pwrite; 
     527 
     528    int        truncate64(char*, off_t); 
     529    alias      truncate64 truncate; 
     530  } 
     531  else 
     532  { 
     533    int        lockf(int, int, off_t); 
     534    ssize_t    pread(int, void*, size_t, off_t); 
     535    ssize_t    pwrite(int, void*, size_t, off_t); 
     536    int        truncate(char*, off_t); 
     537  } 
    490538} 
    491539else version (darwin)