summaryrefslogtreecommitdiff
path: root/source3/smbwrapper
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbwrapper')
-rw-r--r--source3/smbwrapper/realcalls.c1
-rw-r--r--source3/smbwrapper/realcalls.h3
-rw-r--r--source3/smbwrapper/smbw.c2
-rw-r--r--source3/smbwrapper/smbw_dir.c6
-rw-r--r--source3/smbwrapper/smbw_stat.c1
-rw-r--r--source3/smbwrapper/wrapped.c9
-rw-r--r--source3/smbwrapper/wrapper.h100
7 files changed, 16 insertions, 106 deletions
diff --git a/source3/smbwrapper/realcalls.c b/source3/smbwrapper/realcalls.c
index a453aff3ea..a7a4c75020 100644
--- a/source3/smbwrapper/realcalls.c
+++ b/source3/smbwrapper/realcalls.c
@@ -20,7 +20,6 @@
*/
#include "includes.h"
-#include "wrapper.h"
#ifdef REPLACE_UTIME
int real_utime(const char *name, struct utimbuf *buf)
diff --git a/source3/smbwrapper/realcalls.h b/source3/smbwrapper/realcalls.h
index 83c7cccf20..76e233bc9b 100644
--- a/source3/smbwrapper/realcalls.h
+++ b/source3/smbwrapper/realcalls.h
@@ -36,7 +36,10 @@
#define real_chmod(fn, mode) (syscall(SYS_chmod,(fn), (mode)))
#define real_chown(fn, owner, group) (syscall(SYS_chown,(fn),(owner),(group)))
+#ifdef SYS_getdents
#define real_getdents(fd, dirp, count) (syscall(SYS_getdents, (fd), (dirp), (count)))
+#endif
+
#define real_link(fn1, fn2) (syscall(SYS_link, (fn1), (fn2)))
#define real_open(fn,flags,mode) (syscall(SYS_open, (fn), (flags), (mode)))
diff --git a/source3/smbwrapper/smbw.c b/source3/smbwrapper/smbw.c
index a4d2033c49..9fd6ebd317 100644
--- a/source3/smbwrapper/smbw.c
+++ b/source3/smbwrapper/smbw.c
@@ -20,7 +20,7 @@
*/
#include "includes.h"
-#include "wrapper.h"
+#include "realcalls.h"
pstring smbw_cwd;
diff --git a/source3/smbwrapper/smbw_dir.c b/source3/smbwrapper/smbw_dir.c
index f6d648b91f..37926b0407 100644
--- a/source3/smbwrapper/smbw_dir.c
+++ b/source3/smbwrapper/smbw_dir.c
@@ -20,7 +20,7 @@
*/
#include "includes.h"
-#include "wrapper.h"
+#include "realcalls.h"
extern pstring smbw_cwd;
extern fstring smbw_prefix;
@@ -321,15 +321,19 @@ int smbw_getdents(unsigned int fd, struct dirent *dirp, int count)
}
while (count>=DIRP_SIZE && (dir->offset < dir->count)) {
+#if HAVE_DIRENT_D_OFF
dirp->d_off = (dir->offset+1)*DIRP_SIZE;
+#endif
dirp->d_reclen = DIRP_SIZE;
fstrcpy(&dirp->d_name[0], dir->list[dir->offset].name);
dirp->d_ino = smbw_inode(dir->list[dir->offset].name);
dir->offset++;
count -= dirp->d_reclen;
+#if HAVE_DIRENT_D_OFF
if (dir->offset == dir->count) {
dirp->d_off = -1;
}
+#endif
dirp = (struct dirent *)(((char *)dirp) + DIRP_SIZE);
n++;
}
diff --git a/source3/smbwrapper/smbw_stat.c b/source3/smbwrapper/smbw_stat.c
index a6d01f66d6..ec920eb176 100644
--- a/source3/smbwrapper/smbw_stat.c
+++ b/source3/smbwrapper/smbw_stat.c
@@ -20,7 +20,6 @@
*/
#include "includes.h"
-#include "wrapper.h"
extern int DEBUGLEVEL;
diff --git a/source3/smbwrapper/wrapped.c b/source3/smbwrapper/wrapped.c
index 291da8301f..427075f1fe 100644
--- a/source3/smbwrapper/wrapped.c
+++ b/source3/smbwrapper/wrapped.c
@@ -23,7 +23,12 @@
/* we don't want prototypes for this code */
#define NO_PROTO
-#include "wrapper.h"
+#include "includes.h"
+
+#ifdef LINUX
+#include "kernel_stat.h"
+#endif
+#include "realcalls.h"
int open(const char *name, int flags, mode_t mode)
{
@@ -203,7 +208,7 @@
-#ifdef HAVE_GETDENTS
+#ifdef real_getdents
int getdents(int fd, struct dirent *dirp, unsigned int count)
{
if (smbw_fd(fd)) {
diff --git a/source3/smbwrapper/wrapper.h b/source3/smbwrapper/wrapper.h
index 3e7d754c9b..e69de29bb2 100644
--- a/source3/smbwrapper/wrapper.h
+++ b/source3/smbwrapper/wrapper.h
@@ -1,100 +0,0 @@
-/*
- 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"
-
-#ifdef NO_PROTO
-/* get rid of prototypes */
-#define _NO_PROTO
-
-#ifdef HAVE_SYS_CDEFS_H
-#include <sys/cdefs.h>
-#ifdef __P
-#undef __P
-#define __P(x) ()
-#endif
-#endif
-#endif
-
-
-#ifdef HAVE_SYSCALL_H
-#include <syscall.h>
-#elif HAVE_SYS_SYSCALL_H
-#include <sys/syscall.h>
-#endif
-
-#ifdef HAVE_SYS_ACL_H
-#include <sys/acl.h>
-#endif
-
-#ifdef HAVE_SYS_FCNTL_H
-#include <sys/fcntl.h>
-#endif
-
-/* yuck! */
-#define DIRP_SIZE (256 + 32)
-
-#include <stdio.h>
-#include <dirent.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#ifdef LINUX
-#include "kernel_stat.h"
-#endif
-#include "realcalls.h"
-
-int smbw_dirp(DIR *dirp);
-int smbw_fd(int fd);
-int smbw_dir_open(const char *fname);
-int smbw_dir_close(int fd);
-int smbw_stat(const char *fname, struct stat *st);
-off_t smbw_dir_lseek(int fd, off_t offset, int whence);
-int smbw_path(const char *path);
-int smbw_open(const char *fname, int flags, mode_t mode);
-int smbw_chdir(const char *name);
-int smbw_close(int fd);
-int smbw_fchdir(unsigned int fd);
-int smbw_fcntl(int fd, int cmd, long arg);
-int smbw_getdents(unsigned int fd, struct dirent *dirp, int count);
-off_t smbw_lseek(int fd, off_t offset, int whence);
-ssize_t smbw_read(int fd, void *buf, size_t count);
-ssize_t smbw_write(int fd, void *buf, size_t count);
-int smbw_access(const char *name, int mode);
-int smbw_chmod(const char *fname, mode_t newmode);
-int smbw_chown(const char *fname, uid_t owner, gid_t group);
-int smbw_closedir(DIR *d);
-int smbw_fstat(int fd, struct stat *st);
-char *smbw_getcwd(char *buf, size_t size);
-int smbw_stat(const char *fname, struct stat *st);
-int smbw_mkdir(const char *fname, mode_t mode);
-void smbw_seekdir(DIR *d, off_t offset);
-off_t smbw_telldir(DIR *d);
-int smbw_unlink(const char *fname);
-int smbw_utime(const char *fname,void *buf);
-DIR *smbw_opendir(const char *fname);
-struct dirent *smbw_readdir(DIR *d);
-int smbw_readlink(const char *path, char *buf, size_t bufsize);
-int smbw_rename(const char *oldname, const char *newname);
-int smbw_rmdir(const char *fname);
-