0001-01-01 02:30:17 +02:30
/*
Unix SMB / Netbios implementation .
Version 2.0
SMB wrapper functions
Copyright ( C ) Andrew Tridgell 1998
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
0001-01-01 02:30:17 +02:30
/* NOTE: This file WILL produce compiler warnings. They are unavoidable
Do not try and get rid of them by including other include files or
by including includes . h or proto . h or you will break portability .
*/
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# include "config.h"
# include <sys/types.h>
# include <errno.h>
0001-01-01 02:30:17 +02:30
# include "realcalls.h"
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifndef NULL
# define NULL ((void *)0)
# endif
0001-01-01 02:30:17 +02:30
int open ( char * name , int flags , mode_t mode )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_open ( name , flags , mode ) ;
}
return real_open ( name , flags , mode ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE__OPEN
0001-01-01 02:30:17 +02:30
int _open ( char * name , int flags , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
return open ( name , flags , mode ) ;
0001-01-01 02:30:17 +02:30
}
# elif HAVE___OPEN
0001-01-01 02:30:17 +02:30
int __open ( char * name , int flags , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
return open ( name , flags , mode ) ;
0001-01-01 02:30:17 +02:30
}
# endif
0001-01-01 02:30:17 +02:30
# ifdef HAVE_OPEN64
0001-01-01 02:30:17 +02:30
int open64 ( char * name , int flags , mode_t mode )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_open ( name , flags , mode ) ;
}
return real_open64 ( name , flags , mode ) ;
}
# endif
0001-01-01 02:30:17 +02:30
# ifndef NO_OPEN64_ALIAS
0001-01-01 02:30:17 +02:30
# ifdef HAVE__OPEN64
0001-01-01 02:30:17 +02:30
int _open64 ( char * name , int flags , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
return open64 ( name , flags , mode ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# elif HAVE___OPEN64
0001-01-01 02:30:17 +02:30
int __open64 ( char * name , int flags , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
return open64 ( name , flags , mode ) ;
0001-01-01 02:30:17 +02:30
}
# endif
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef HAVE_PREAD
ssize_t pread ( int fd , void * buf , size_t size , off_t ofs )
{
if ( smbw_fd ( fd ) ) {
return smbw_pread ( fd , buf , size , ofs ) ;
}
return real_pread ( fd , buf , size , ofs ) ;
}
# endif
0001-01-01 02:30:17 +02:30
# if defined(HAVE_PREAD64) && defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
0001-01-01 02:30:17 +02:30
ssize_t pread64 ( int fd , void * buf , size_t size , off64_t ofs )
{
if ( smbw_fd ( fd ) ) {
return smbw_pread ( fd , buf , size , ofs ) ;
}
return real_pread64 ( fd , buf , size , ofs ) ;
}
# endif
# ifdef HAVE_PWRITE
ssize_t pwrite ( int fd , void * buf , size_t size , off_t ofs )
{
if ( smbw_fd ( fd ) ) {
return smbw_pwrite ( fd , buf , size , ofs ) ;
}
return real_pwrite ( fd , buf , size , ofs ) ;
}
# endif
0001-01-01 02:30:17 +02:30
# if defined(HAVE_PWRITE64) && defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
0001-01-01 02:30:17 +02:30
ssize_t pwrite64 ( int fd , void * buf , size_t size , off64_t ofs )
{
if ( smbw_fd ( fd ) ) {
return smbw_pwrite ( fd , buf , size , ofs ) ;
}
return real_pwrite64 ( fd , buf , size , ofs ) ;
}
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int chdir ( char * name )
0001-01-01 02:30:17 +02:30
{
return smbw_chdir ( name ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___CHDIR
0001-01-01 02:30:17 +02:30
int __chdir ( char * name )
0001-01-01 02:30:17 +02:30
{
return chdir ( name ) ;
}
# elif HAVE__CHDIR
0001-01-01 02:30:17 +02:30
int _chdir ( char * name )
0001-01-01 02:30:17 +02:30
{
return chdir ( name ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
int close ( int fd )
0001-01-01 02:30:17 +02:30
{
if ( smbw_fd ( fd ) ) {
return smbw_close ( fd ) ;
}
0001-01-01 02:30:17 +02:30
if ( smbw_local_fd ( fd ) ) {
errno = EBADF ;
return - 1 ;
}
0001-01-01 02:30:17 +02:30
return real_close ( fd ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___CLOSE
int __close ( int fd )
{
return close ( fd ) ;
}
# elif HAVE__CLOSE
int _close ( int fd )
{
return close ( fd ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int fchdir ( int fd )
{
0001-01-01 02:30:17 +02:30
return smbw_fchdir ( fd ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___FCHDIR
int __fchdir ( int fd )
{
return fchdir ( fd ) ;
}
# elif HAVE__FCHDIR
int _fchdir ( int fd )
{
return fchdir ( fd ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int fcntl ( int fd , int cmd , long arg )
0001-01-01 02:30:17 +02:30
{
if ( smbw_fd ( fd ) ) {
0001-01-01 02:30:17 +02:30
return smbw_fcntl ( fd , cmd , arg ) ;
0001-01-01 02:30:17 +02:30
}
return real_fcntl ( fd , cmd , arg ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___FCNTL
0001-01-01 02:30:17 +02:30
int __fcntl ( int fd , int cmd , long arg )
0001-01-01 02:30:17 +02:30
{
return fcntl ( fd , cmd , arg ) ;
}
# elif HAVE__FCNTL
0001-01-01 02:30:17 +02:30
int _fcntl ( int fd , int cmd , long arg )
0001-01-01 02:30:17 +02:30
{
return fcntl ( fd , cmd , arg ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef real_getdents
0001-01-01 02:30:17 +02:30
int getdents ( int fd , void * dirp , unsigned int count )
0001-01-01 02:30:17 +02:30
{
if ( smbw_fd ( fd ) ) {
return smbw_getdents ( fd , dirp , count ) ;
}
return real_getdents ( fd , dirp , count ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef HAVE___GETDENTS
0001-01-01 02:30:17 +02:30
int __getdents ( int fd , void * dirp , unsigned int count )
0001-01-01 02:30:17 +02:30
{
return getdents ( fd , dirp , count ) ;
}
# elif HAVE__GETDENTS
0001-01-01 02:30:17 +02:30
int _getdents ( int fd , void * dirp , unsigned int count )
0001-01-01 02:30:17 +02:30
{
return getdents ( fd , dirp , count ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
off_t lseek ( int fd , off_t offset , int whence )
0001-01-01 02:30:17 +02:30
{
if ( smbw_fd ( fd ) ) {
return smbw_lseek ( fd , offset , whence ) ;
}
return real_lseek ( fd , offset , whence ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___LSEEK
off_t __lseek ( int fd , off_t offset , int whence )
{
return lseek ( fd , offset , whence ) ;
}
# elif HAVE__LSEEK
off_t _lseek ( int fd , off_t offset , int whence )
{
return lseek ( fd , offset , whence ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
ssize_t read ( int fd , void * buf , size_t count )
{
if ( smbw_fd ( fd ) ) {
return smbw_read ( fd , buf , count ) ;
}
return real_read ( fd , buf , count ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___READ
ssize_t __read ( int fd , void * buf , size_t count )
{
return read ( fd , buf , count ) ;
}
# elif HAVE__READ
ssize_t _read ( int fd , void * buf , size_t count )
{
return read ( fd , buf , count ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
ssize_t write ( int fd , void * buf , size_t count )
{
if ( smbw_fd ( fd ) ) {
return smbw_write ( fd , buf , count ) ;
}
return real_write ( fd , buf , count ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE___WRITE
ssize_t __write ( int fd , void * buf , size_t count )
{
return write ( fd , buf , count ) ;
}
# elif HAVE__WRITE
ssize_t _write ( int fd , void * buf , size_t count )
{
return write ( fd , buf , count ) ;
}
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int access ( char * name , int mode )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_access ( name , mode ) ;
}
return real_access ( name , mode ) ;
}
0001-01-01 02:30:17 +02:30
int chmod ( char * name , mode_t mode )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_chmod ( name , mode ) ;
}
return real_chmod ( name , mode ) ;
}
0001-01-01 02:30:17 +02:30
int chown ( char * name , uid_t owner , gid_t group )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_chown ( name , owner , group ) ;
}
return real_chown ( name , owner , group ) ;
}
char * getcwd ( char * buf , size_t size )
{
0001-01-01 02:30:17 +02:30
return ( char * ) smbw_getcwd ( buf , size ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int mkdir ( char * name , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
if ( smbw_path ( name ) ) {
0001-01-01 02:30:17 +02:30
return smbw_mkdir ( name , mode ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
return real_mkdir ( name , mode ) ;
}
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# if HAVE___FXSTAT
int __fxstat ( int vers , int fd , void * st )
{
0001-01-01 02:30:17 +02:30
double xx [ 32 ] ;
0001-01-01 02:30:17 +02:30
int ret ;
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
if ( smbw_fd ( fd ) ) {
return smbw_fstat ( fd , st ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
ret = real_fstat ( fd , xx ) ;
xstat_convert ( vers , st , xx ) ;
return ret ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# if HAVE___XSTAT
int __xstat ( int vers , char * name , void * st )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
double xx [ 32 ] ;
0001-01-01 02:30:17 +02:30
int ret ;
0001-01-01 02:30:17 +02:30
if ( smbw_path ( name ) ) {
0001-01-01 02:30:17 +02:30
return smbw_stat ( name , st ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
ret = real_stat ( name , xx ) ;
xstat_convert ( vers , st , xx ) ;
return ret ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# if HAVE___LXSTAT
int __lxstat ( int vers , char * name , void * st )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
double xx [ 32 ] ;
0001-01-01 02:30:17 +02:30
int ret ;
if ( smbw_path ( name ) ) {
return smbw_stat ( name , st ) ;
}
0001-01-01 02:30:17 +02:30
ret = real_lstat ( name , xx ) ;
xstat_convert ( vers , st , xx ) ;
return ret ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int stat ( char * name , void * st )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
# if HAVE___XSTAT
0001-01-01 02:30:17 +02:30
return __xstat ( 0 , name , st ) ;
0001-01-01 02:30:17 +02:30
# else
if ( smbw_path ( name ) ) {
return smbw_stat ( name , st ) ;
}
return real_stat ( name , st ) ;
# endif
}
0001-01-01 02:30:17 +02:30
int lstat ( char * name , void * st )
0001-01-01 02:30:17 +02:30
{
# if HAVE___LXSTAT
0001-01-01 02:30:17 +02:30
return __lxstat ( 0 , name , st ) ;
0001-01-01 02:30:17 +02:30
# else
if ( smbw_path ( name ) ) {
return smbw_stat ( name , st ) ;
}
return real_lstat ( name , st ) ;
# endif
}
0001-01-01 02:30:17 +02:30
int fstat ( int fd , void * st )
0001-01-01 02:30:17 +02:30
{
# if HAVE___LXSTAT
0001-01-01 02:30:17 +02:30
return __fxstat ( 0 , fd , st ) ;
0001-01-01 02:30:17 +02:30
# else
if ( smbw_fd ( fd ) ) {
return smbw_fstat ( fd , st ) ;
}
return real_fstat ( fd , st ) ;
# endif
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
int unlink ( char * name )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_unlink ( name ) ;
}
return real_unlink ( name ) ;
}
0001-01-01 02:30:17 +02:30
# ifdef HAVE_UTIME
0001-01-01 02:30:17 +02:30
int utime ( char * name , void * tvp )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_utime ( name , tvp ) ;
}
return real_utime ( name , tvp ) ;
}
0001-01-01 02:30:17 +02:30
# endif
# ifdef HAVE_UTIMES
0001-01-01 02:30:17 +02:30
int utimes ( char * name , void * tvp )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_utimes ( name , tvp ) ;
}
return real_utimes ( name , tvp ) ;
}
# endif
0001-01-01 02:30:17 +02:30
int readlink ( char * path , char * buf , size_t bufsize )
{
if ( smbw_path ( path ) ) {
return smbw_readlink ( path , buf , bufsize ) ;
}
return real_readlink ( path , buf , bufsize ) ;
}
0001-01-01 02:30:17 +02:30
int rename ( char * oldname , char * newname )
0001-01-01 02:30:17 +02:30
{
int p1 , p2 ;
p1 = smbw_path ( oldname ) ;
p2 = smbw_path ( newname ) ;
if ( p1 ^ p2 ) {
/* can't cross filesystem boundaries */
errno = EXDEV ;
return - 1 ;
}
if ( p1 & & p2 ) {
return smbw_rename ( oldname , newname ) ;
}
return real_rename ( oldname , newname ) ;
}
0001-01-01 02:30:17 +02:30
int rmdir ( char * name )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
return smbw_rmdir ( name ) ;
}
return real_rmdir ( name ) ;
}
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
int symlink ( char * topath , char * frompath )
0001-01-01 02:30:17 +02:30
{
int p1 , p2 ;
p1 = smbw_path ( topath ) ;
p2 = smbw_path ( frompath ) ;
if ( p1 | | p2 ) {
/* can't handle symlinks */
errno = EPERM ;
return - 1 ;
}
return real_symlink ( topath , frompath ) ;
}
0001-01-01 02:30:17 +02:30
int dup ( int fd )
{
if ( smbw_fd ( fd ) ) {
return smbw_dup ( fd ) ;
}
return real_dup ( fd ) ;
}
int dup2 ( int oldfd , int newfd )
{
if ( smbw_fd ( newfd ) ) {
close ( newfd ) ;
}
if ( smbw_fd ( oldfd ) ) {
return smbw_dup2 ( oldfd , newfd ) ;
}
return real_dup2 ( oldfd , newfd ) ;
}
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef real_opendir
0001-01-01 02:30:17 +02:30
void * opendir ( char * name )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
0001-01-01 02:30:17 +02:30
return ( void * ) smbw_opendir ( name ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
return ( void * ) real_opendir ( name ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef real_readdir
0001-01-01 02:30:17 +02:30
void * readdir ( void * dir )
0001-01-01 02:30:17 +02:30
{
if ( smbw_dirp ( dir ) ) {
0001-01-01 02:30:17 +02:30
return ( void * ) smbw_readdir ( dir ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
return ( void * ) real_readdir ( dir ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef real_closedir
0001-01-01 02:30:17 +02:30
int closedir ( void * dir )
0001-01-01 02:30:17 +02:30
{
if ( smbw_dirp ( dir ) ) {
return smbw_closedir ( dir ) ;
}
return real_closedir ( dir ) ;
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef real_telldir
0001-01-01 02:30:17 +02:30
off_t telldir ( void * dir )
0001-01-01 02:30:17 +02:30
{
if ( smbw_dirp ( dir ) ) {
return smbw_telldir ( dir ) ;
}
return real_telldir ( dir ) ;
}
# endif
0001-01-01 02:30:17 +02:30
# ifdef real_seekdir
0001-01-01 02:30:17 +02:30
int seekdir ( void * dir , off_t offset )
0001-01-01 02:30:17 +02:30
{
if ( smbw_dirp ( dir ) ) {
smbw_seekdir ( dir , offset ) ;
0001-01-01 02:30:17 +02:30
return 0 ;
0001-01-01 02:30:17 +02:30
}
real_seekdir ( dir , offset ) ;
0001-01-01 02:30:17 +02:30
return 0 ;
0001-01-01 02:30:17 +02:30
}
# endif
0001-01-01 02:30:17 +02:30
# ifndef NO_ACL_WRAPPER
0001-01-01 02:30:17 +02:30
int acl ( char * pathp , int cmd , int nentries , void * aclbufp )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( pathp ) ) {
0001-01-01 02:30:17 +02:30
return smbw_acl ( pathp , cmd , nentries , aclbufp ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
return real_acl ( pathp , cmd , nentries , aclbufp ) ;
0001-01-01 02:30:17 +02:30
}
# endif
# ifndef NO_FACL_WRAPPER
0001-01-01 02:30:17 +02:30
int facl ( int fd , int cmd , int nentries , void * aclbufp )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
if ( smbw_fd ( fd ) ) {
0001-01-01 02:30:17 +02:30
return smbw_facl ( fd , cmd , nentries , aclbufp ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
return real_facl ( fd , cmd , nentries , aclbufp ) ;
0001-01-01 02:30:17 +02:30
}
# endif
0001-01-01 02:30:17 +02:30
int creat ( char * path , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
extern int creat_bits ;
return open ( path , creat_bits , mode ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
0001-01-01 02:30:17 +02:30
# ifdef HAVE_CREAT64
0001-01-01 02:30:17 +02:30
int creat64 ( char * path , mode_t mode )
0001-01-01 02:30:17 +02:30
{
0001-01-01 02:30:17 +02:30
extern int creat_bits ;
return open64 ( path , creat_bits , mode ) ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
# endif
0001-01-01 02:30:17 +02:30
# ifdef HAVE_STAT64
0001-01-01 02:30:17 +02:30
int stat64 ( char * name , void * st64 )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
0001-01-01 02:30:17 +02:30
double xx [ 32 ] ;
0001-01-01 02:30:17 +02:30
int ret = stat ( name , xx ) ;
stat64_convert ( xx , st64 ) ;
0001-01-01 02:30:17 +02:30
return ret ;
}
return real_stat64 ( name , st64 ) ;
}
0001-01-01 02:30:17 +02:30
int fstat64 ( int fd , void * st64 )
0001-01-01 02:30:17 +02:30
{
if ( smbw_fd ( fd ) ) {
0001-01-01 02:30:17 +02:30
double xx [ 32 ] ;
0001-01-01 02:30:17 +02:30
int ret = fstat ( fd , xx ) ;
stat64_convert ( xx , st64 ) ;
0001-01-01 02:30:17 +02:30
return ret ;
}
return real_fstat64 ( fd , st64 ) ;
}
0001-01-01 02:30:17 +02:30
int lstat64 ( char * name , void * st64 )
0001-01-01 02:30:17 +02:30
{
if ( smbw_path ( name ) ) {
0001-01-01 02:30:17 +02:30
double xx [ 32 ] ;
0001-01-01 02:30:17 +02:30
int ret = lstat ( name , xx ) ;
stat64_convert ( xx , st64 ) ;
0001-01-01 02:30:17 +02:30
return ret ;
}
return real_lstat64 ( name , st64 ) ;
}
# endif
# ifdef HAVE_LLSEEK
offset_t llseek ( int fd , offset_t ofs , int whence )
{
if ( smbw_fd ( fd ) ) {
return lseek ( fd , ofs , whence ) ;
}
return real_llseek ( fd , ofs , whence ) ;
}
# endif
# ifdef HAVE_READDIR64
0001-01-01 02:30:17 +02:30
void * readdir64 ( void * dir )
0001-01-01 02:30:17 +02:30
{
if ( smbw_dirp ( dir ) ) {
0001-01-01 02:30:17 +02:30
static double xx [ 70 ] ;
0001-01-01 02:30:17 +02:30
void * d ;
d = ( void * ) readdir ( dir ) ;
0001-01-01 02:30:17 +02:30
if ( ! d ) return NULL ;
0001-01-01 02:30:17 +02:30
dirent64_convert ( d , xx ) ;
return xx ;
0001-01-01 02:30:17 +02:30
}
0001-01-01 02:30:17 +02:30
return ( void * ) real_readdir64 ( dir ) ;
0001-01-01 02:30:17 +02:30
}
# endif
0001-01-01 02:30:17 +02:30
int fork ( void )
{
return smbw_fork ( ) ;
}
0001-01-01 02:30:17 +02:30