[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Sat Dec 6 18:38:03 MST 2014
The branch, master has been updated
via 49e208c smbd: Use read_data() in notify_inotify
via b322ea2 lib: Add a simple read_data call without NTSTATUS
via 78d1c04 lib: Make write_data take a const void *
via 0013001 lib: Split out write_data[_iov]
via 214fc09 lib: Split out iov_buf[len]
via a8491cb lib: read_data->read_data_ntstatus
via 97b2570 lib: Split out sys_[read|write] & friends
via a25e913 ctdb: ctdb_protocol.h references struct sockaddr
via a2d6511 Fix signed/unsigned comparisons
via 6a3db15 ctdbd_conn: Accept msgs to all registered srvids
from ecd0e6e rwrap: Bump version to 1.1.0.
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 49e208c2b34616d4308e0a3fcf3029c72ee7059f
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 14:41:42 2014 +0000
smbd: Use read_data() in notify_inotify
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Sun Dec 7 02:37:04 CET 2014 on sn-devel-104
commit b322ea2059604ed94aa2170e634a59cdb4561681
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 14:35:14 2014 +0000
lib: Add a simple read_data call without NTSTATUS
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 78d1c04e1ac48711ad6aa3d08b33a51848c49303
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 14:29:26 2014 +0000
lib: Make write_data take a const void *
This aligns it with write(2)
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 0013001e702a091b102c3a9a531d12e1d8d97828
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 14:25:56 2014 +0000
lib: Split out write_data[_iov]
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 214fc09a3443ab62772666a985975fa548b215fa
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 14:21:17 2014 +0000
lib: Split out iov_buf[len]
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit a8491cb95a2c181d40b0b94cceff8d69d137935c
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 14:06:49 2014 +0000
lib: read_data->read_data_ntstatus
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 97b2570a5e526273476d3990bcef0ac074b34d67
Author: Volker Lendecke <vl at samba.org>
Date: Wed Nov 19 13:33:06 2014 +0000
lib: Split out sys_[read|write] & friends
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit a25e913cf58c0490755d5a555e2175ae2e74e24e
Author: Volker Lendecke <vl at samba.org>
Date: Wed Dec 3 16:02:35 2014 +0100
ctdb: ctdb_protocol.h references struct sockaddr
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit a2d6511f909f2bd16907997d06500598a5099941
Author: Volker Lendecke <vl at samba.org>
Date: Fri Dec 5 14:38:48 2014 +0100
Fix signed/unsigned comparisons
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 6a3db15810a01dc51faf39ea355525bc4c598758
Author: Volker Lendecke <vl at samba.org>
Date: Fri Nov 21 16:20:10 2014 +0100
ctdbd_conn: Accept msgs to all registered srvids
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
ctdb/include/ctdb_protocol.h | 2 +
lib/util/genrand.c | 2 +-
lib/util/util_id.c | 4 +-
source3/include/proto.h | 12 +-
source3/lib/ctdbd_conn.c | 50 ++++++--
lib/util/close_low_fd.c => source3/lib/iov_buf.c | 64 +++++-----
lib/util/close_low_fd.h => source3/lib/iov_buf.h | 15 +--
source3/lib/messages.c | 1 +
source3/lib/messages_ctdbd.c | 1 +
source3/lib/recvfile.c | 1 +
source3/lib/sys_rw.c | 101 ++++++++++++++++
lib/util/close_low_fd.h => source3/lib/sys_rw.h | 24 ++--
source3/lib/sys_rw_data.c | 129 +++++++++++++++++++++
.../close_low_fd.h => source3/lib/sys_rw_data.h | 22 ++--
source3/lib/system.c | 90 --------------
source3/lib/util.c | 2 +
source3/lib/util_file.c | 1 +
source3/lib/util_sock.c | 127 +-------------------
source3/lib/util_transfer_file.c | 1 +
source3/libsmb/unexpected.c | 1 +
source3/modules/vfs_aio_fork.c | 2 +
source3/modules/vfs_aio_linux.c | 1 +
source3/modules/vfs_aio_posix.c | 1 +
source3/modules/vfs_default.c | 1 +
source3/modules/vfs_fruit.c | 1 +
source3/modules/vfs_preopen.c | 1 +
source3/modules/vfs_smb_traffic_analyzer.c | 1 +
source3/nmbd/asyncdns.c | 5 +-
source3/printing/print_cups.c | 1 +
source3/printing/printing.c | 1 +
source3/rpc_server/samr/srv_samr_chgpasswd.c | 1 +
source3/smbd/files.c | 2 +-
source3/smbd/notify_inotify.c | 11 +-
source3/smbd/process.c | 1 +
source3/smbd/reply.c | 4 +-
source3/smbd/scavenger.c | 1 +
source3/smbd/smb2_read.c | 1 +
source3/torture/torture.c | 1 +
source3/utils/smbfilter.c | 1 +
source3/winbindd/winbindd_dual.c | 7 +-
source3/wscript_build | 12 +-
41 files changed, 405 insertions(+), 302 deletions(-)
copy lib/util/close_low_fd.c => source3/lib/iov_buf.c (52%)
copy lib/util/close_low_fd.h => source3/lib/iov_buf.h (74%)
create mode 100644 source3/lib/sys_rw.c
copy lib/util/close_low_fd.h => source3/lib/sys_rw.h (54%)
create mode 100644 source3/lib/sys_rw_data.c
copy lib/util/close_low_fd.h => source3/lib/sys_rw_data.h (59%)
Changeset truncated at 500 lines:
diff --git a/ctdb/include/ctdb_protocol.h b/ctdb/include/ctdb_protocol.h
index 15d9fc5..3cecc12 100644
--- a/ctdb/include/ctdb_protocol.h
+++ b/ctdb/include/ctdb_protocol.h
@@ -20,6 +20,8 @@
#ifndef _CTDB_PROTOCOL_H
#define _CTDB_PROTOCOL_H
+#include <sys/socket.h>
+
/* location of daemon socket, set at configure time */
#ifdef SOCKPATH
#define CTDB_SOCKET SOCKPATH
diff --git a/lib/util/genrand.c b/lib/util/genrand.c
index 0e5902f..c0163f4 100644
--- a/lib/util/genrand.c
+++ b/lib/util/genrand.c
@@ -526,7 +526,7 @@ _PUBLIC_ char** generate_unique_strs(TALLOC_CTX *mem_ctx, size_t len,
{
const char *c_list = "abcdefghijklmnopqrstuvwxyz0123456789+_-#.,";
const unsigned c_size = 42;
- int i, j;
+ size_t i, j;
unsigned rem;
char ** strs = NULL;
diff --git a/lib/util/util_id.c b/lib/util/util_id.c
index d5a8c66..c5bf911 100644
--- a/lib/util/util_id.c
+++ b/lib/util/util_id.c
@@ -28,7 +28,7 @@
bool add_gid_to_array_unique(TALLOC_CTX *mem_ctx, gid_t gid,
gid_t **gids, uint32_t *num_gids)
{
- int i;
+ uint32_t i;
if ((*num_gids != 0) && (*gids == NULL)) {
/*
@@ -61,7 +61,7 @@ bool add_gid_to_array_unique(TALLOC_CTX *mem_ctx, gid_t gid,
bool add_uid_to_array_unique(TALLOC_CTX *mem_ctx, uid_t uid,
uid_t **uids, uint32_t *num_uids)
{
- int i;
+ uint32_t i;
if ((*num_uids != 0) && (*uids == NULL)) {
/*
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 82e1032..82b2fb5 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -242,11 +242,6 @@ int sys_set_nfs_quota(const char *path, const char *bdev,
/* The following definitions come from lib/system.c */
-ssize_t sys_read(int fd, void *buf, size_t count);
-ssize_t sys_write(int fd, const void *buf, size_t count);
-ssize_t sys_writev(int fd, const struct iovec *iov, int iovcnt);
-ssize_t sys_pread(int fd, void *buf, size_t count, off_t off);
-ssize_t sys_pwrite(int fd, const void *buf, size_t count, off_t off);
ssize_t sys_send(int s, const void *msg, size_t len, int flags);
ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
int sys_fcntl_ptr(int fd, int cmd, void *arg);
@@ -570,11 +565,8 @@ NTSTATUS read_fd_with_timeout(int fd, char *buf,
size_t mincnt, size_t maxcnt,
unsigned int time_out,
size_t *size_ret);
-NTSTATUS read_data(int fd, char *buffer, size_t N);
-ssize_t write_data(int fd, const char *buffer, size_t N);
-ssize_t iov_buflen(const struct iovec *iov, int iovlen);
-uint8_t *iov_buf(TALLOC_CTX *mem_ctx, const struct iovec *iov, int iovcnt);
-ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt);
+NTSTATUS read_data_ntstatus(int fd, char *buffer, size_t N);
+
bool send_keepalive(int client);
NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf,
unsigned int timeout,
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c
index a26f410..c41ec53 100644
--- a/source3/lib/ctdbd_conn.c
+++ b/source3/lib/ctdbd_conn.c
@@ -23,6 +23,7 @@
#include "serverid.h"
#include "ctdbd_conn.h"
#include "system/select.h"
+#include "lib/sys_rw_data.h"
#include "messages.h"
@@ -54,6 +55,7 @@ struct ctdbd_connection {
uint32_t reqid;
uint32_t our_vnn;
uint64_t rand_srvid;
+ uint64_t *srvids;
int fd;
struct tevent_fd *fde;
@@ -109,10 +111,43 @@ static void ctdb_packet_dump(struct ctdb_req_header *hdr)
NTSTATUS register_with_ctdbd(struct ctdbd_connection *conn, uint64_t srvid)
{
+ NTSTATUS status;
int cstatus;
- return ctdbd_control(conn, CTDB_CURRENT_NODE,
- CTDB_CONTROL_REGISTER_SRVID, srvid, 0,
- tdb_null, NULL, NULL, &cstatus);
+ size_t num_srvids;
+ uint64_t *tmp;
+
+ status = ctdbd_control(conn, CTDB_CURRENT_NODE,
+ CTDB_CONTROL_REGISTER_SRVID, srvid, 0,
+ tdb_null, NULL, NULL, &cstatus);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ num_srvids = talloc_array_length(conn->srvids);
+
+ tmp = talloc_realloc(conn, conn->srvids, uint64_t,
+ num_srvids + 1);
+ if (tmp == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ conn->srvids = tmp;
+
+ conn->srvids[num_srvids] = srvid;
+ return NT_STATUS_OK;
+}
+
+static bool ctdb_is_our_srvid(struct ctdbd_connection *conn, uint64_t srvid)
+{
+ size_t i, num_srvids;
+
+ num_srvids = talloc_array_length(conn->srvids);
+
+ for (i=0; i<num_srvids; i++) {
+ if (srvid == conn->srvids[i]) {
+ return true;
+ }
+ }
+ return false;
}
/*
@@ -345,7 +380,7 @@ static NTSTATUS ctdb_read_packet(int fd, TALLOC_CTX *mem_ctx,
}
}
- status = read_data(fd, (char *)&msglen, sizeof(msglen));
+ status = read_data_ntstatus(fd, (char *)&msglen, sizeof(msglen));
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -362,8 +397,8 @@ static NTSTATUS ctdb_read_packet(int fd, TALLOC_CTX *mem_ctx,
req->length = msglen;
- status = read_data(fd, ((char *)req) + sizeof(msglen),
- msglen - sizeof(msglen));
+ status = read_data_ntstatus(fd, ((char *)req) + sizeof(msglen),
+ msglen - sizeof(msglen));
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -661,8 +696,7 @@ static NTSTATUS ctdb_handle_message(struct messaging_context *msg_ctx,
return NT_STATUS_OK;
}
- /* only messages to our pid or the broadcast are valid here */
- if (msg->srvid != getpid() && msg->srvid != MSG_SRVID_SAMBA) {
+ if (!ctdb_is_our_srvid(conn, msg->srvid)) {
DEBUG(0,("Got unexpected message with srvid=%llu\n",
(unsigned long long)msg->srvid));
return NT_STATUS_OK;
diff --git a/lib/util/close_low_fd.c b/source3/lib/iov_buf.c
similarity index 52%
copy from lib/util/close_low_fd.c
copy to source3/lib/iov_buf.c
index b11d25f..dd99da3 100644
--- a/lib/util/close_low_fd.c
+++ b/source3/lib/iov_buf.c
@@ -1,6 +1,6 @@
/*
* Unix SMB/CIFS implementation.
- * Samba utility functions
+ * Samba system utilities
* Copyright (C) Volker Lendecke 2014
*
* This program is free software; you can redistribute it and/or modify
@@ -19,47 +19,47 @@
#include "replace.h"
#include "system/filesys.h"
-#include "close_low_fd.h"
+#include "iov_buf.h"
-_PUBLIC_ int close_low_fd(int fd)
+ssize_t iov_buflen(const struct iovec *iov, int iovcnt)
{
-#ifndef VALGRIND
- int ret, dev_null;
+ size_t buflen = 0;
+ int i;
- dev_null = open("/dev/null", O_RDWR, 0);
+ for (i=0; i<iovcnt; i++) {
+ size_t thislen = iov[i].iov_len;
+ size_t tmp = buflen + thislen;
- if ((dev_null == -1) && (errno = ENFILE)) {
- /*
- * Try to free up an fd
- */
- ret = close(fd);
- if (ret != 0) {
- return errno;
+ if ((tmp < buflen) || (tmp < thislen)) {
+ /* overflow */
+ return -1;
}
+ buflen = tmp;
}
+ return buflen;
+}
+
+uint8_t *iov_buf(TALLOC_CTX *mem_ctx, const struct iovec *iov, int iovcnt)
+{
+ int i;
+ ssize_t buflen;
+ uint8_t *buf, *p;
- dev_null = open("/dev/null", O_RDWR, 0);
- if (dev_null == -1) {
- dev_null = open("/dev/null", O_WRONLY, 0);
+ buflen = iov_buflen(iov, iovcnt);
+ if (buflen == -1) {
+ return NULL;
}
- if (dev_null == -1) {
- return errno;
+ buf = talloc_array(mem_ctx, uint8_t, buflen);
+ if (buf == NULL) {
+ return NULL;
}
- if (dev_null == fd) {
- /*
- * This can happen in the ENFILE case above
- */
- return 0;
- }
+ p = buf;
+ for (i=0; i<iovcnt; i++) {
+ size_t len = iov[i].iov_len;
- ret = dup2(dev_null, fd);
- if (ret == -1) {
- int err = errno;
- close(dev_null);
- return err;
+ memcpy(p, iov[i].iov_base, len);
+ p += len;
}
- close(dev_null);
-#endif
- return 0;
+ return buf;
}
diff --git a/lib/util/close_low_fd.h b/source3/lib/iov_buf.h
similarity index 74%
copy from lib/util/close_low_fd.h
copy to source3/lib/iov_buf.h
index 954d1d2..a884bdb 100644
--- a/lib/util/close_low_fd.h
+++ b/source3/lib/iov_buf.h
@@ -1,6 +1,6 @@
/*
* Unix SMB/CIFS implementation.
- * Samba utility functions
+ * Samba system utilities
* Copyright (C) Volker Lendecke 2014
*
* This program is free software; you can redistribute it and/or modify
@@ -17,12 +17,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _CLOSE_LOW_FD_H
-#define _CLOSE_LOW_FD_H
+#ifndef __LIB_IOV_BUF_H__
+#define __LIB_IOV_BUF_H__
-/*
- * Redirect "fd" to /dev/null
- */
-int close_low_fd(int fd);
+#include <unistd.h>
+#include <talloc.h>
+
+ssize_t iov_buflen(const struct iovec *iov, int iovlen);
+uint8_t *iov_buf(TALLOC_CTX *mem_ctx, const struct iovec *iov, int iovcnt);
#endif
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index d4c580f..5b4daa2 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -52,6 +52,7 @@
#include "lib/util/tevent_unix.h"
#include "lib/background.h"
#include "lib/messages_dgm.h"
+#include "lib/iov_buf.h"
struct messaging_callback {
struct messaging_callback *prev, *next;
diff --git a/source3/lib/messages_ctdbd.c b/source3/lib/messages_ctdbd.c
index eb7e929..59f5976 100644
--- a/source3/lib/messages_ctdbd.c
+++ b/source3/lib/messages_ctdbd.c
@@ -20,6 +20,7 @@
#include "includes.h"
#include "messages.h"
#include "util_tdb.h"
+#include "lib/iov_buf.h"
/*
* It is not possible to include ctdb.h and tdb_compat.h (included via
diff --git a/source3/lib/recvfile.c b/source3/lib/recvfile.c
index 273c51f..403d5e8 100644
--- a/source3/lib/recvfile.c
+++ b/source3/lib/recvfile.c
@@ -25,6 +25,7 @@
#include "includes.h"
#include "system/filesys.h"
+#include "lib/sys_rw.h"
/* Do this on our own in TRANSFER_BUF_SIZE chunks.
* It's safe to make direct syscalls to lseek/write here
diff --git a/source3/lib/sys_rw.c b/source3/lib/sys_rw.c
new file mode 100644
index 0000000..6d8f149
--- /dev/null
+++ b/source3/lib/sys_rw.c
@@ -0,0 +1,101 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * Samba system utilities
+ * Copyright (C) Andrew Tridgell 1992-1998
+ * Copyright (C) Jeremy Allison 1998-2005
+ * Copyright (C) Timur Bakeyev 2005
+ * Copyright (C) Bjoern Jacke 2006-2007
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "replace.h"
+#include "system/filesys.h"
+#include "lib/sys_rw.h"
+
+/*******************************************************************
+A read wrapper that will deal with EINTR/EWOULDBLOCK
+********************************************************************/
+
+ssize_t sys_read(int fd, void *buf, size_t count)
+{
+ ssize_t ret;
+
+ do {
+ ret = read(fd, buf, count);
+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN ||
+ errno == EWOULDBLOCK));
+
+ return ret;
+}
+
+/*******************************************************************
+A write wrapper that will deal with EINTR/EWOULDBLOCK.
+********************************************************************/
+
+ssize_t sys_write(int fd, const void *buf, size_t count)
+{
+ ssize_t ret;
+
+ do {
+ ret = write(fd, buf, count);
+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN ||
+ errno == EWOULDBLOCK));
+
+ return ret;
+}
+
+/*******************************************************************
+A writev wrapper that will deal with EINTR.
+********************************************************************/
+
+ssize_t sys_writev(int fd, const struct iovec *iov, int iovcnt)
+{
+ ssize_t ret;
+
+ do {
+ ret = writev(fd, iov, iovcnt);
+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN ||
+ errno == EWOULDBLOCK));
+
+ return ret;
+}
+
+/*******************************************************************
+A pread wrapper that will deal with EINTR
+********************************************************************/
+
+ssize_t sys_pread(int fd, void *buf, size_t count, off_t off)
+{
+ ssize_t ret;
+
+ do {
+ ret = pread(fd, buf, count, off);
+ } while (ret == -1 && errno == EINTR);
+ return ret;
+}
+
+/*******************************************************************
+A write wrapper that will deal with EINTR
+********************************************************************/
+
+ssize_t sys_pwrite(int fd, const void *buf, size_t count, off_t off)
+{
+ ssize_t ret;
+
+ do {
+ ret = pwrite(fd, buf, count, off);
+ } while (ret == -1 && errno == EINTR);
+ return ret;
+}
diff --git a/lib/util/close_low_fd.h b/source3/lib/sys_rw.h
similarity index 54%
copy from lib/util/close_low_fd.h
copy to source3/lib/sys_rw.h
index 954d1d2..ee1584e 100644
--- a/lib/util/close_low_fd.h
+++ b/source3/lib/sys_rw.h
@@ -1,7 +1,10 @@
/*
* Unix SMB/CIFS implementation.
- * Samba utility functions
- * Copyright (C) Volker Lendecke 2014
+ * Samba system utilities
+ * Copyright (C) Andrew Tridgell 1992-1998
+ * Copyright (C) Jeremy Allison 1998-2005
+ * Copyright (C) Timur Bakeyev 2005
+ * Copyright (C) Bjoern Jacke 2006-2007
*
* 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
@@ -17,12 +20,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _CLOSE_LOW_FD_H
-#define _CLOSE_LOW_FD_H
+#ifndef __LIB_SYS_RW_H__
+#define __LIB_SYS_RW_H__
-/*
- * Redirect "fd" to /dev/null
- */
-int close_low_fd(int fd);
+#include <unistd.h>
+
+struct iovec;
+
+ssize_t sys_read(int fd, void *buf, size_t count);
+ssize_t sys_write(int fd, const void *buf, size_t count);
+ssize_t sys_writev(int fd, const struct iovec *iov, int iovcnt);
+ssize_t sys_pread(int fd, void *buf, size_t count, off_t off);
+ssize_t sys_pwrite(int fd, const void *buf, size_t count, off_t off);
#endif
diff --git a/source3/lib/sys_rw_data.c b/source3/lib/sys_rw_data.c
new file mode 100644
index 0000000..353dbe7
--- /dev/null
+++ b/source3/lib/sys_rw_data.c
@@ -0,0 +1,129 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * Samba system utilities
--
Samba Shared Repository
More information about the samba-cvs
mailing list