mirror of
https://github.com/samba-team/samba.git
synced 2025-02-24 13:57:43 +03:00
simplied the layout of the smbwrapper code. All those 3 line files
were getting unwieldy
This commit is contained in:
parent
c0931b6770
commit
a59d4e93da
@ -193,16 +193,7 @@ RPCCLIENT_OBJ = rpcclient/rpcclient.o \
|
||||
# rpcclient/cmd_netlogon.o \
|
||||
# rpcclient/cmd_srvsvc.o
|
||||
|
||||
SMBWRAPPER_OBJ = smbwrapper/open.o smbwrapper/stat.o \
|
||||
smbwrapper/smbw.o smbwrapper/fstat.o smbwrapper/read.o \
|
||||
smbwrapper/lstat.o smbwrapper/close.o smbwrapper/getdents.o \
|
||||
smbwrapper/fcntl.o smbwrapper/access.o smbwrapper/chdir.o \
|
||||
smbwrapper/write.o smbwrapper/readlink.o smbwrapper/unlink.o \
|
||||
smbwrapper/rename.o smbwrapper/utime.o smbwrapper/chown.o \
|
||||
smbwrapper/chmod.o smbwrapper/lseek.o smbwrapper/getcwd.o \
|
||||
smbwrapper/mkdir.o smbwrapper/rmdir.o smbwrapper/fchdir.o \
|
||||
smbwrapper/opendir.o smbwrapper/readdir.o smbwrapper/telldir.o \
|
||||
smbwrapper/seekdir.o smbwrapper/closedir.o \
|
||||
SMBWRAPPER_OBJ = smbwrapper/smbw.o smbwrapper/wrapped.o \
|
||||
$(LIBSMB_OBJ) $(PARAM_OBJ) \
|
||||
$(UBIQX_OBJ) $(LIB_OBJ)
|
||||
|
||||
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int access(const char *name, int mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_access(name, mode);
|
||||
}
|
||||
|
||||
return real_access(name, mode);
|
||||
}
|
||||
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __chdir; __chdir = chdir");
|
||||
#endif
|
||||
|
||||
int chdir(const char *name)
|
||||
{
|
||||
return smbw_chdir(name);
|
||||
}
|
||||
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int chmod(const char *name,mode_t mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_chmod(name, mode);
|
||||
}
|
||||
|
||||
return real_chmod(name, mode);
|
||||
}
|
||||
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int chown(const char *name,uid_t owner, gid_t group)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_chown(name, owner, group);
|
||||
}
|
||||
|
||||
return real_chown(name, owner, group);
|
||||
}
|
||||
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __close; __close = close");
|
||||
#endif
|
||||
|
||||
ssize_t close(int fd)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_close(fd);
|
||||
}
|
||||
|
||||
return real_close(fd);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int closedir(DIR *dir)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
return smbw_closedir(dir);
|
||||
}
|
||||
|
||||
return real_closedir(dir);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __fchdir; __fchdir = fchdir");
|
||||
#endif
|
||||
|
||||
int fchdir(int fd)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_fchdir(fd);
|
||||
}
|
||||
|
||||
return real_fchdir(fd);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __fcntl; __fcntl = fcntl");
|
||||
#endif
|
||||
|
||||
int fcntl(int fd, int cmd, long arg)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_fcntl(fd);
|
||||
}
|
||||
|
||||
return real_fcntl(fd, cmd, arg);
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int __fxstat(int vers, int fd, struct stat *st)
|
||||
{
|
||||
struct kernel_stat kbuf;
|
||||
int ret;
|
||||
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_fstat(fd, st);
|
||||
}
|
||||
|
||||
switch (vers) {
|
||||
case _STAT_VER_LINUX_OLD:
|
||||
/* Nothing to do. The struct is in the form the kernel expects
|
||||
it to be. */
|
||||
return real_fstat(fd, (struct kernel_stat *)st);
|
||||
break;
|
||||
|
||||
case _STAT_VER_LINUX:
|
||||
/* Do the system call. */
|
||||
ret = real_fstat(fd, &kbuf);
|
||||
|
||||
st->st_dev = kbuf.st_dev;
|
||||
#ifdef _HAVE___PAD1
|
||||
st->__pad1 = 0;
|
||||
#endif
|
||||
st->st_ino = kbuf.st_ino;
|
||||
st->st_mode = kbuf.st_mode;
|
||||
st->st_nlink = kbuf.st_nlink;
|
||||
st->st_uid = kbuf.st_uid;
|
||||
st->st_gid = kbuf.st_gid;
|
||||
st->st_rdev = kbuf.st_rdev;
|
||||
#ifdef _HAVE___PAD2
|
||||
st->__pad2 = 0;
|
||||
#endif
|
||||
st->st_size = kbuf.st_size;
|
||||
st->st_blksize = kbuf.st_blksize;
|
||||
st->st_blocks = kbuf.st_blocks;
|
||||
st->st_atime = kbuf.st_atime;
|
||||
#ifdef _HAVE___UNUSED1
|
||||
st->__unused1 = 0;
|
||||
#endif
|
||||
st->st_mtime = kbuf.st_mtime;
|
||||
#ifdef _HAVE___UNUSED2
|
||||
st->__unused2 = 0;
|
||||
#endif
|
||||
st->st_ctime = kbuf.st_ctime;
|
||||
#ifdef _HAVE___UNUSED3
|
||||
st->__unused3 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED4
|
||||
st->__unused4 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED5
|
||||
st->__unused5 = 0;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
char *getcwd(char *buf, size_t size)
|
||||
{
|
||||
return smbw_getcwd(buf, size);
|
||||
}
|
||||
|
@ -1,36 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __getdents; __getdents = getdents");
|
||||
#endif
|
||||
|
||||
int getdents(unsigned int fd, struct dirent *dirp, unsigned int count)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_getdents(fd, dirp, count);
|
||||
}
|
||||
|
||||
return real_getdents(fd, dirp, count);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __lseek; __lseek = lseek");
|
||||
#endif
|
||||
|
||||
ssize_t lseek(int fd, off_t offset, int whence)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_lseek(fd, offset, whence);
|
||||
}
|
||||
|
||||
return real_lseek(fd, offset, whence);
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int __lxstat(int vers, const char *name, struct stat *st)
|
||||
{
|
||||
struct kernel_stat kbuf;
|
||||
int ret;
|
||||
|
||||
if (smbw_path(name)) {
|
||||
return smbw_stat(name, st);
|
||||
}
|
||||
|
||||
switch (vers) {
|
||||
case _STAT_VER_LINUX_OLD:
|
||||
/* Nothing to do. The struct is in the form the kernel expects
|
||||
it to be. */
|
||||
return real_lstat(name, (struct kernel_stat *)st);
|
||||
break;
|
||||
|
||||
case _STAT_VER_LINUX:
|
||||
/* Do the system call. */
|
||||
ret = real_lstat(name, &kbuf);
|
||||
|
||||
st->st_dev = kbuf.st_dev;
|
||||
#ifdef _HAVE___PAD1
|
||||
st->__pad1 = 0;
|
||||
#endif
|
||||
st->st_ino = kbuf.st_ino;
|
||||
st->st_mode = kbuf.st_mode;
|
||||
st->st_nlink = kbuf.st_nlink;
|
||||
st->st_uid = kbuf.st_uid;
|
||||
st->st_gid = kbuf.st_gid;
|
||||
st->st_rdev = kbuf.st_rdev;
|
||||
#ifdef _HAVE___PAD2
|
||||
st->__pad2 = 0;
|
||||
#endif
|
||||
st->st_size = kbuf.st_size;
|
||||
st->st_blksize = kbuf.st_blksize;
|
||||
st->st_blocks = kbuf.st_blocks;
|
||||
st->st_atime = kbuf.st_atime;
|
||||
#ifdef _HAVE___UNUSED1
|
||||
st->__unused1 = 0;
|
||||
#endif
|
||||
st->st_mtime = kbuf.st_mtime;
|
||||
#ifdef _HAVE___UNUSED2
|
||||
st->__unused2 = 0;
|
||||
#endif
|
||||
st->st_ctime = kbuf.st_ctime;
|
||||
#ifdef _HAVE___UNUSED3
|
||||
st->__unused3 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED4
|
||||
st->__unused4 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED5
|
||||
st->__unused5 = 0;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int mkdir(const char *name, mode_t mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_mkdir(name, mode);
|
||||
}
|
||||
|
||||
return real_mkdir(name, mode);
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __open; __open = open");
|
||||
#endif
|
||||
|
||||
int open(const char *name, int flags, mode_t mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_open(name, flags, mode);
|
||||
}
|
||||
|
||||
return real_open(name, flags, mode);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
DIR *opendir(const char *name)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_opendir(name);
|
||||
}
|
||||
|
||||
return real_opendir(name);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __read; __read = read");
|
||||
#endif
|
||||
|
||||
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);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
struct dirent *readdir(DIR *dir)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
return smbw_readdir(dir);
|
||||
}
|
||||
|
||||
return real_readdir(dir);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -1,8 +1,26 @@
|
||||
#ifdef aix
|
||||
/*
|
||||
Unix SMB/Netbios implementation.
|
||||
Version 2.0
|
||||
defintions of syscall entries
|
||||
Copyright (C) Andrew Tridgell 1998
|
||||
|
||||
#include "aix-syscall.h"
|
||||
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.
|
||||
|
||||
#else
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
/* this file is partly derived from zlibc by Alain Knaff */
|
||||
|
||||
#define real_access(fn, mode) (syscall(SYS_access, (fn), (mode)))
|
||||
#define real_chdir(fn) (syscall(SYS_chdir, (fn)))
|
||||
@ -48,5 +66,4 @@
|
||||
#define real_utime(fn, buf) (syscall(SYS_utime, (fn), (buf)))
|
||||
#define real_utimes(fn, buf) (syscall(SYS_utimes, (fn), (buf)))
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1,39 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int rename(const char *oldname,const char *newname)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int rmdir(const char *name)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_rmdir(name);
|
||||
}
|
||||
|
||||
return real_rmdir(name);
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
void seekdir(DIR *dir, off_t offset)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
smbw_seekdir(dir, offset);
|
||||
return;
|
||||
}
|
||||
|
||||
real_seekdir(dir, offset);
|
||||
}
|
@ -119,9 +119,9 @@ void smbw_init(void)
|
||||
/*****************************************************
|
||||
determine if a file descriptor is a smb one
|
||||
*******************************************************/
|
||||
BOOL smbw_fd(int fd)
|
||||
int smbw_fd(int fd)
|
||||
{
|
||||
if (smbw_busy) return False;
|
||||
if (smbw_busy) return 0;
|
||||
return (fd >= SMBW_FD_OFFSET);
|
||||
}
|
||||
|
||||
@ -307,7 +307,7 @@ char *smbw_parse_path(const char *fname, char *server, char *share, char *path)
|
||||
determine if a path name (possibly relative) is in the
|
||||
smb name space
|
||||
*******************************************************/
|
||||
BOOL smbw_path(const char *path)
|
||||
int smbw_path(const char *path)
|
||||
{
|
||||
fstring server, share;
|
||||
pstring s;
|
||||
@ -315,10 +315,10 @@ BOOL smbw_path(const char *path)
|
||||
int l=strlen(SMBW_PREFIX)-1;
|
||||
|
||||
if (path[0] == '/' && strncmp(path,SMBW_PREFIX,l)) {
|
||||
return False;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (smbw_busy) return False;
|
||||
if (smbw_busy) return 0;
|
||||
|
||||
smbw_init();
|
||||
|
||||
@ -328,10 +328,10 @@ BOOL smbw_path(const char *path)
|
||||
|
||||
if (strncmp(cwd,SMBW_PREFIX,l) == 0 &&
|
||||
(cwd[l] == '/' || cwd[l] == 0)) {
|
||||
return True;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return False;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
@ -501,14 +501,15 @@ struct smbw_dir *smbw_dir(int fd)
|
||||
/*****************************************************
|
||||
check if a DIR* is one of ours
|
||||
*******************************************************/
|
||||
BOOL smbw_dirp(struct smbw_dir *d)
|
||||
int smbw_dirp(DIR *dirp)
|
||||
{
|
||||
struct smbw_dir *d = (struct smbw_dir *)dirp;
|
||||
struct smbw_dir *dir;
|
||||
|
||||
for (dir=smbw_dirs;dir;dir=dir->next) {
|
||||
if (dir == d) return True;
|
||||
if (dir == d) return 1;
|
||||
}
|
||||
return False;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
|
@ -1,89 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int __xstat(int vers, const char *name, struct stat *st)
|
||||
{
|
||||
struct kernel_stat kbuf;
|
||||
int ret;
|
||||
|
||||
if (smbw_path(name)) {
|
||||
return smbw_stat(name, st);
|
||||
}
|
||||
|
||||
switch (vers) {
|
||||
case _STAT_VER_LINUX_OLD:
|
||||
/* Nothing to do. The struct is in the form the kernel expects
|
||||
it to be. */
|
||||
return real_stat(name, (struct kernel_stat *)st);
|
||||
break;
|
||||
|
||||
case _STAT_VER_LINUX:
|
||||
/* Do the system call. */
|
||||
ret = real_stat(name, &kbuf);
|
||||
|
||||
st->st_dev = kbuf.st_dev;
|
||||
#ifdef _HAVE___PAD1
|
||||
st->__pad1 = 0;
|
||||
#endif
|
||||
st->st_ino = kbuf.st_ino;
|
||||
st->st_mode = kbuf.st_mode;
|
||||
st->st_nlink = kbuf.st_nlink;
|
||||
st->st_uid = kbuf.st_uid;
|
||||
st->st_gid = kbuf.st_gid;
|
||||
st->st_rdev = kbuf.st_rdev;
|
||||
#ifdef _HAVE___PAD2
|
||||
st->__pad2 = 0;
|
||||
#endif
|
||||
st->st_size = kbuf.st_size;
|
||||
st->st_blksize = kbuf.st_blksize;
|
||||
st->st_blocks = kbuf.st_blocks;
|
||||
st->st_atime = kbuf.st_atime;
|
||||
#ifdef _HAVE___UNUSED1
|
||||
st->__unused1 = 0;
|
||||
#endif
|
||||
st->st_mtime = kbuf.st_mtime;
|
||||
#ifdef _HAVE___UNUSED2
|
||||
st->__unused2 = 0;
|
||||
#endif
|
||||
st->st_ctime = kbuf.st_ctime;
|
||||
#ifdef _HAVE___UNUSED3
|
||||
st->__unused3 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED4
|
||||
st->__unused4 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED5
|
||||
st->__unused5 = 0;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int stat(const char *name, struct stat *st)
|
||||
{
|
||||
return __xstat(_STAT_VER, name, st);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
off_t telldir(DIR *dir)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
return smbw_telldir(dir);
|
||||
}
|
||||
|
||||
return real_telldir(dir);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int unlink(const char *name)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_unlink(name);
|
||||
}
|
||||
|
||||
return real_unlink(name);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
int utime(const char *name,struct timeval *tvp)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_utime(name, tvp);
|
||||
}
|
||||
|
||||
return real_utime(name, tvp);
|
||||
}
|
497
source/smbwrapper/wrapped.c
Normal file
497
source/smbwrapper/wrapped.c
Normal file
@ -0,0 +1,497 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __open; __open = open");
|
||||
#endif
|
||||
|
||||
int open(const char *name, int flags, mode_t mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_open(name, flags, mode);
|
||||
}
|
||||
|
||||
return real_open(name, flags, mode);
|
||||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __chdir; __chdir = chdir");
|
||||
#endif
|
||||
|
||||
int chdir(const char *name)
|
||||
{
|
||||
return smbw_chdir(name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __close; __close = close");
|
||||
#endif
|
||||
|
||||
ssize_t close(int fd)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_close(fd);
|
||||
}
|
||||
|
||||
return real_close(fd);
|
||||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __fchdir; __fchdir = fchdir");
|
||||
#endif
|
||||
|
||||
int fchdir(int fd)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_fchdir(fd);
|
||||
}
|
||||
|
||||
return real_fchdir(fd);
|
||||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __fcntl; __fcntl = fcntl");
|
||||
#endif
|
||||
|
||||
int fcntl(int fd, int cmd, long arg)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_fcntl(fd);
|
||||
}
|
||||
|
||||
return real_fcntl(fd, cmd, arg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __getdents; __getdents = getdents");
|
||||
#endif
|
||||
|
||||
int getdents(unsigned int fd, struct dirent *dirp, unsigned int count)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_getdents(fd, dirp, count);
|
||||
}
|
||||
|
||||
return real_getdents(fd, dirp, count);
|
||||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __lseek; __lseek = lseek");
|
||||
#endif
|
||||
|
||||
ssize_t lseek(int fd, off_t offset, int whence)
|
||||
{
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_lseek(fd, offset, whence);
|
||||
}
|
||||
|
||||
return real_lseek(fd, offset, whence);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __read; __read = read");
|
||||
#endif
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __write; __write = write");
|
||||
#endif
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
int access(const char *name, int mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_access(name, mode);
|
||||
}
|
||||
|
||||
return real_access(name, mode);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int chmod(const char *name,mode_t mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_chmod(name, mode);
|
||||
}
|
||||
|
||||
return real_chmod(name, mode);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int chown(const char *name,uid_t owner, gid_t group)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_chown(name, owner, group);
|
||||
}
|
||||
|
||||
return real_chown(name, owner, group);
|
||||
}
|
||||
|
||||
int closedir(DIR *dir)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
return smbw_closedir(dir);
|
||||
}
|
||||
|
||||
return real_closedir(dir);
|
||||
}
|
||||
|
||||
|
||||
int __fxstat(int vers, int fd, struct stat *st)
|
||||
{
|
||||
struct kernel_stat kbuf;
|
||||
int ret;
|
||||
|
||||
if (smbw_fd(fd)) {
|
||||
return smbw_fstat(fd, st);
|
||||
}
|
||||
|
||||
switch (vers) {
|
||||
case _STAT_VER_LINUX_OLD:
|
||||
/* Nothing to do. The struct is in the form the kernel expects
|
||||
it to be. */
|
||||
return real_fstat(fd, (struct kernel_stat *)st);
|
||||
break;
|
||||
|
||||
case _STAT_VER_LINUX:
|
||||
/* Do the system call. */
|
||||
ret = real_fstat(fd, &kbuf);
|
||||
|
||||
st->st_dev = kbuf.st_dev;
|
||||
#ifdef _HAVE___PAD1
|
||||
st->__pad1 = 0;
|
||||
#endif
|
||||
st->st_ino = kbuf.st_ino;
|
||||
st->st_mode = kbuf.st_mode;
|
||||
st->st_nlink = kbuf.st_nlink;
|
||||
st->st_uid = kbuf.st_uid;
|
||||
st->st_gid = kbuf.st_gid;
|
||||
st->st_rdev = kbuf.st_rdev;
|
||||
#ifdef _HAVE___PAD2
|
||||
st->__pad2 = 0;
|
||||
#endif
|
||||
st->st_size = kbuf.st_size;
|
||||
st->st_blksize = kbuf.st_blksize;
|
||||
st->st_blocks = kbuf.st_blocks;
|
||||
st->st_atime = kbuf.st_atime;
|
||||
#ifdef _HAVE___UNUSED1
|
||||
st->__unused1 = 0;
|
||||
#endif
|
||||
st->st_mtime = kbuf.st_mtime;
|
||||
#ifdef _HAVE___UNUSED2
|
||||
st->__unused2 = 0;
|
||||
#endif
|
||||
st->st_ctime = kbuf.st_ctime;
|
||||
#ifdef _HAVE___UNUSED3
|
||||
st->__unused3 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED4
|
||||
st->__unused4 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED5
|
||||
st->__unused5 = 0;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *getcwd(char *buf, size_t size)
|
||||
{
|
||||
return smbw_getcwd(buf, size);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int __lxstat(int vers, const char *name, struct stat *st)
|
||||
{
|
||||
struct kernel_stat kbuf;
|
||||
int ret;
|
||||
|
||||
if (smbw_path(name)) {
|
||||
return smbw_stat(name, st);
|
||||
}
|
||||
|
||||
switch (vers) {
|
||||
case _STAT_VER_LINUX_OLD:
|
||||
/* Nothing to do. The struct is in the form the kernel expects
|
||||
it to be. */
|
||||
return real_lstat(name, (struct kernel_stat *)st);
|
||||
break;
|
||||
|
||||
case _STAT_VER_LINUX:
|
||||
/* Do the system call. */
|
||||
ret = real_lstat(name, &kbuf);
|
||||
|
||||
st->st_dev = kbuf.st_dev;
|
||||
#ifdef _HAVE___PAD1
|
||||
st->__pad1 = 0;
|
||||
#endif
|
||||
st->st_ino = kbuf.st_ino;
|
||||
st->st_mode = kbuf.st_mode;
|
||||
st->st_nlink = kbuf.st_nlink;
|
||||
st->st_uid = kbuf.st_uid;
|
||||
st->st_gid = kbuf.st_gid;
|
||||
st->st_rdev = kbuf.st_rdev;
|
||||
#ifdef _HAVE___PAD2
|
||||
st->__pad2 = 0;
|
||||
#endif
|
||||
st->st_size = kbuf.st_size;
|
||||
st->st_blksize = kbuf.st_blksize;
|
||||
st->st_blocks = kbuf.st_blocks;
|
||||
st->st_atime = kbuf.st_atime;
|
||||
#ifdef _HAVE___UNUSED1
|
||||
st->__unused1 = 0;
|
||||
#endif
|
||||
st->st_mtime = kbuf.st_mtime;
|
||||
#ifdef _HAVE___UNUSED2
|
||||
st->__unused2 = 0;
|
||||
#endif
|
||||
st->st_ctime = kbuf.st_ctime;
|
||||
#ifdef _HAVE___UNUSED3
|
||||
st->__unused3 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED4
|
||||
st->__unused4 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED5
|
||||
st->__unused5 = 0;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int mkdir(const char *name, mode_t mode)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_mkdir(name, mode);
|
||||
}
|
||||
|
||||
return real_mkdir(name, mode);
|
||||
}
|
||||
|
||||
|
||||
void seekdir(DIR *dir, off_t offset)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
smbw_seekdir(dir, offset);
|
||||
return;
|
||||
}
|
||||
|
||||
real_seekdir(dir, offset);
|
||||
}
|
||||
|
||||
|
||||
int __xstat(int vers, const char *name, struct stat *st)
|
||||
{
|
||||
struct kernel_stat kbuf;
|
||||
int ret;
|
||||
|
||||
if (smbw_path(name)) {
|
||||
return smbw_stat(name, st);
|
||||
}
|
||||
|
||||
switch (vers) {
|
||||
case _STAT_VER_LINUX_OLD:
|
||||
/* Nothing to do. The struct is in the form the kernel expects
|
||||
it to be. */
|
||||
return real_stat(name, (struct kernel_stat *)st);
|
||||
break;
|
||||
|
||||
case _STAT_VER_LINUX:
|
||||
/* Do the system call. */
|
||||
ret = real_stat(name, &kbuf);
|
||||
|
||||
st->st_dev = kbuf.st_dev;
|
||||
#ifdef _HAVE___PAD1
|
||||
st->__pad1 = 0;
|
||||
#endif
|
||||
st->st_ino = kbuf.st_ino;
|
||||
st->st_mode = kbuf.st_mode;
|
||||
st->st_nlink = kbuf.st_nlink;
|
||||
st->st_uid = kbuf.st_uid;
|
||||
st->st_gid = kbuf.st_gid;
|
||||
st->st_rdev = kbuf.st_rdev;
|
||||
#ifdef _HAVE___PAD2
|
||||
st->__pad2 = 0;
|
||||
#endif
|
||||
st->st_size = kbuf.st_size;
|
||||
st->st_blksize = kbuf.st_blksize;
|
||||
st->st_blocks = kbuf.st_blocks;
|
||||
st->st_atime = kbuf.st_atime;
|
||||
#ifdef _HAVE___UNUSED1
|
||||
st->__unused1 = 0;
|
||||
#endif
|
||||
st->st_mtime = kbuf.st_mtime;
|
||||
#ifdef _HAVE___UNUSED2
|
||||
st->__unused2 = 0;
|
||||
#endif
|
||||
st->st_ctime = kbuf.st_ctime;
|
||||
#ifdef _HAVE___UNUSED3
|
||||
st->__unused3 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED4
|
||||
st->__unused4 = 0;
|
||||
#endif
|
||||
#ifdef _HAVE___UNUSED5
|
||||
st->__unused5 = 0;
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int stat(const char *name, struct stat *st)
|
||||
{
|
||||
return __xstat(_STAT_VER, name, st);
|
||||
}
|
||||
|
||||
|
||||
off_t telldir(DIR *dir)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
return smbw_telldir(dir);
|
||||
}
|
||||
|
||||
return real_telldir(dir);
|
||||
}
|
||||
|
||||
|
||||
int unlink(const char *name)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_unlink(name);
|
||||
}
|
||||
|
||||
return real_unlink(name);
|
||||
}
|
||||
|
||||
|
||||
int utime(const char *name,struct timeval *tvp)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_utime(name, tvp);
|
||||
}
|
||||
|
||||
return real_utime(name, tvp);
|
||||
}
|
||||
|
||||
DIR *opendir(const char *name)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_opendir(name);
|
||||
}
|
||||
|
||||
return real_opendir(name);
|
||||
}
|
||||
|
||||
|
||||
struct dirent *readdir(DIR *dir)
|
||||
{
|
||||
if (smbw_dirp(dir)) {
|
||||
return smbw_readdir(dir);
|
||||
}
|
||||
|
||||
return real_readdir(dir);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
int rename(const char *oldname,const char *newname)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
int rmdir(const char *name)
|
||||
{
|
||||
if (smbw_path(name)) {
|
||||
return smbw_rmdir(name);
|
||||
}
|
||||
|
||||
return real_rmdir(name);
|
||||
}
|
||||
|
@ -1,3 +1,24 @@
|
||||
/*
|
||||
Unix SMB/Netbios implementation.
|
||||
Version 2.0
|
||||
SMB wrapper functions - definitions
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <syscall.h>
|
||||
@ -9,3 +30,8 @@
|
||||
#include <sys/time.h>
|
||||
#include "kernel_stat.h"
|
||||
#include "realcalls.h"
|
||||
|
||||
|
||||
int smbw_path(const char *path);
|
||||
int smbw_fd(int fd);
|
||||
int smbw_dirp(DIR *);
|
||||
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
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 02139, USA.
|
||||
*/
|
||||
|
||||
#include "wrapper.h"
|
||||
|
||||
#ifdef linux
|
||||
__asm__(".globl __write; __write = write");
|
||||
#endif
|
||||
|
||||
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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user