summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/Makefile.in11
-rw-r--r--source3/smbwrapper/access.c32
-rw-r--r--source3/smbwrapper/chdir.c32
-rw-r--r--source3/smbwrapper/chmod.c32
-rw-r--r--source3/smbwrapper/chown.c32
-rw-r--r--source3/smbwrapper/close.c35
-rw-r--r--source3/smbwrapper/closedir.c32
-rw-r--r--source3/smbwrapper/fchdir.c35
-rw-r--r--source3/smbwrapper/fcntl.c35
-rw-r--r--source3/smbwrapper/fstat.c84
-rw-r--r--source3/smbwrapper/getcwd.c28
-rw-r--r--source3/smbwrapper/getdents.c36
-rw-r--r--source3/smbwrapper/lseek.c35
-rw-r--r--source3/smbwrapper/lstat.c85
-rw-r--r--source3/smbwrapper/mkdir.c31
-rw-r--r--source3/smbwrapper/open.c36
-rw-r--r--source3/smbwrapper/opendir.c32
-rw-r--r--source3/smbwrapper/read.c35
-rw-r--r--source3/smbwrapper/readdir.c32
-rw-r--r--source3/smbwrapper/readlink.c32
-rw-r--r--source3/smbwrapper/realcalls.h25
-rw-r--r--source3/smbwrapper/rename.c39
-rw-r--r--source3/smbwrapper/rmdir.c31
-rw-r--r--source3/smbwrapper/seekdir.c33
-rw-r--r--source3/smbwrapper/smbw.c21
-rw-r--r--source3/smbwrapper/stat.c89
-rw-r--r--source3/smbwrapper/telldir.c32
-rw-r--r--source3/smbwrapper/unlink.c31
-rw-r--r--source3/smbwrapper/utime.c31
-rw-r--r--source3/smbwrapper/wrapped.c497
-rw-r--r--source3/smbwrapper/wrapper.h26
-rw-r--r--source3/smbwrapper/write.c35
32 files changed, 556 insertions, 1076 deletions
diff --git a/source3/Makefile.in b/source3/Makefile.in
index a8301303f1..2ae810ae2b 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -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)
diff --git a/source3/smbwrapper/access.c b/source3/smbwrapper/access.c
deleted file mode 100644
index 5194b32613..0000000000
--- a/source3/smbwrapper/access.c
+++ /dev/null
@@ -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);
-}
-
diff --git a/source3/smbwrapper/chdir.c b/source3/smbwrapper/chdir.c
deleted file mode 100644
index 3648e4431f..0000000000
--- a/source3/smbwrapper/chdir.c
+++ /dev/null
@@ -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);
-}
-
diff --git a/source3/smbwrapper/chmod.c b/source3/smbwrapper/chmod.c
deleted file mode 100644
index 50d2404a68..0000000000
--- a/source3/smbwrapper/chmod.c
+++ /dev/null
@@ -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);
-}
-
diff --git a/source3/smbwrapper/chown.c b/source3/smbwrapper/chown.c
deleted file mode 100644
index 31621d151d..0000000000
--- a/source3/smbwrapper/chown.c
+++ /dev/null
@@ -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);
-}
-
diff --git a/source3/smbwrapper/close.c b/source3/smbwrapper/close.c
deleted file mode 100644
index a0491fca56..0000000000
--- a/source3/smbwrapper/close.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/closedir.c b/source3/smbwrapper/closedir.c
deleted file mode 100644
index 23b747ebf7..0000000000
--- a/source3/smbwrapper/closedir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/fchdir.c b/source3/smbwrapper/fchdir.c
deleted file mode 100644
index 320d8fa6a4..0000000000
--- a/source3/smbwrapper/fchdir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/fcntl.c b/source3/smbwrapper/fcntl.c
deleted file mode 100644
index fab18fbdf4..0000000000
--- a/source3/smbwrapper/fcntl.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/fstat.c b/source3/smbwrapper/fstat.c
deleted file mode 100644
index dc83f4a3ca..0000000000
--- a/source3/smbwrapper/fstat.c
+++ /dev/null
@@ -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;
- }
-}
diff --git a/source3/smbwrapper/getcwd.c b/source3/smbwrapper/getcwd.c
deleted file mode 100644
index 2b0a749904..0000000000
--- a/source3/smbwrapper/getcwd.c
+++ /dev/null
@@ -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);
-}
-
diff --git a/source3/smbwrapper/getdents.c b/source3/smbwrapper/getdents.c
deleted file mode 100644
index 1ff1b6376a..0000000000
--- a/source3/smbwrapper/getdents.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/lseek.c b/source3/smbwrapper/lseek.c
deleted file mode 100644
index 3507dab690..0000000000
--- a/source3/smbwrapper/lseek.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/lstat.c b/source3/smbwrapper/lstat.c
deleted file mode 100644
index 9ddd14662f..0000000000
--- a/source3/smbwrapper/lstat.c
+++ /dev/null
@@ -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;
- }
-}
-
diff --git a/source3/smbwrapper/mkdir.c b/source3/smbwrapper/mkdir.c
deleted file mode 100644
index e28a6a59b5..0000000000
--- a/source3/smbwrapper/mkdir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/open.c b/source3/smbwrapper/open.c
deleted file mode 100644
index 935e99ad79..0000000000
--- a/source3/smbwrapper/open.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/opendir.c b/source3/smbwrapper/opendir.c
deleted file mode 100644
index 87c465a777..0000000000
--- a/source3/smbwrapper/opendir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/read.c b/source3/smbwrapper/read.c
deleted file mode 100644
index 3ca49a6309..0000000000
--- a/source3/smbwrapper/read.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/readdir.c b/source3/smbwrapper/readdir.c
deleted file mode 100644
index 044262b9f2..0000000000
--- a/source3/smbwrapper/readdir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/readlink.c b/source3/smbwrapper/readlink.c
deleted file mode 100644
index 57211326aa..0000000000
--- a/source3/smbwrapper/readlink.c
+++ /dev/null
@@ -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);
-}
-
diff --git a/source3/smbwrapper/realcalls.h b/source3/smbwrapper/realcalls.h
index 0b0a9f39cb..a234332b61 100644
--- a/source3/smbwrapper/realcalls.h
+++ b/source3/smbwrapper/realcalls.h
@@ -1,8 +1,26 @@
-#ifdef aix
+/*
+ Unix SMB/Netbios implementation.
+ Version 2.0
+ defintions of syscall entries
+ 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 "aix-syscall.h"
-#else
+/* 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
diff --git a/source3/smbwrapper/rename.c b/source3/smbwrapper/rename.c
deleted file mode 100644
index 76041f62eb..0000000000
--- a/source3/smbwrapper/rename.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/rmdir.c b/source3/smbwrapper/rmdir.c
deleted file mode 100644
index 120b6eaf22..0000000000
--- a/source3/smbwrapper/rmdir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/seekdir.c b/source3/smbwrapper/seekdir.c
deleted file mode 100644
index c84aaf4caa..0000000000
--- a/source3/smbwrapper/seekdir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/smbw.c b/source3/smbwrapper/smbw.c
index 0537996bb5..16374a7dbe 100644
--- a/source3/smbwrapper/smbw.c
+++ b/source3/smbwrapper/smbw.c
@@ -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;
}
/*****************************************************
diff --git a/source3/smbwrapper/stat.c b/source3/smbwrapper/stat.c
deleted file mode 100644
index 6721d41211..0000000000
--- a/source3/smbwrapper/stat.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/telldir.c b/source3/smbwrapper/telldir.c
deleted file mode 100644
index 13c1133c72..0000000000
--- a/source3/smbwrapper/telldir.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/unlink.c b/source3/smbwrapper/unlink.c
deleted file mode 100644
index 827485c095..0000000000
--- a/source3/smbwrapper/unlink.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/utime.c b/source3/smbwrapper/utime.c
deleted file mode 100644
index 9a269aa942..0000000000
--- a/source3/smbwrapper/utime.c
+++ /dev/null
@@ -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);
-}
diff --git a/source3/smbwrapper/wrapped.c b/source3/smbwrapper/wrapped.c
new file mode 100644
index 0000000000..71bcb76ee9
--- /dev/null
+++ b/source3/smbwrapper/wrapped.c
@@ -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);
+}
+
diff --git a/source3/smbwrapper/wrapper.h b/source3/smbwrapper/wrapper.h
index c891cd948f..d38aa4227e 100644
--- a/source3/smbwrapper/wrapper.h
+++ b/source3/smbwrapper/wrapper.h
@@ -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 *);
diff --git a/source3/smbwrapper/write.c b/source3/smbwrapper/write.c
deleted file mode 100644
index a05f55d9a4..0000000000
--- a/source3/smbwrapper/write.c
+++ /dev/null
@@ -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);
-}