repositories
/
deb_libnfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[win32] - fixed bad number casting when using libnfs on 64bit win8 systems - force...
[deb_libnfs.git]
/
lib
/
libnfs-sync.c
diff --git
a/lib/libnfs-sync.c
b/lib/libnfs-sync.c
index 701cd0678a747716d514227a590f8d786ca2975a..baadefa9962df6482ab938823b0da3a51d576c9d 100644
(file)
--- a/
lib/libnfs-sync.c
+++ b/
lib/libnfs-sync.c
@@
-17,27
+17,66
@@
/*
* High level api to nfs filesystems
*/
/*
* High level api to nfs filesystems
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef AROS
+#include "aros_compat.h"
+#endif
+
#ifdef WIN32
#include "win32_compat.h"
#ifdef WIN32
#include "win32_compat.h"
-#define DllExport
-#else
-#include <strings.h>
-#include <unistd.h>
+#endif
+
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+
+#ifdef ANDROID
+#define statvfs statfs
+#endif
+
+#ifdef HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+
+#ifdef HAVE_SYS_STATVFS_H
#include <sys/statvfs.h>
#include <sys/statvfs.h>
-#include <poll.h>
+#endif
+
+#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#include <sys/ioctl.h>
-#include <netdb.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#include <sys/socket.h>
-#include <net/if.h>
#endif
#endif
-#ifdef HAVE_CONFIG_H
-#include "config.h"
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@
-47,6
+86,7
@@
#include <sys/sockio.h>
#endif
#include <sys/sockio.h>
#endif
+#include "libnfs-zdr.h"
#include "libnfs.h"
#include "libnfs-raw.h"
#include "libnfs-raw-mount.h"
#include "libnfs.h"
#include "libnfs-raw.h"
#include "libnfs-raw-mount.h"
@@
-56,7
+96,7
@@
struct sync_cb_data {
int is_finished;
int status;
struct sync_cb_data {
int is_finished;
int status;
-
off
_t offset;
+
uint64
_t offset;
void *return_data;
int return_int;
};
void *return_data;
int return_int;
};
@@
-66,6
+106,8
@@
static void wait_for_reply(struct rpc_context *rpc, struct sync_cb_data *cb_data
{
struct pollfd pfd;
{
struct pollfd pfd;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
while (!cb_data->is_finished) {
pfd.fd = rpc_get_fd(rpc);
while (!cb_data->is_finished) {
pfd.fd = rpc_get_fd(rpc);
@@
-134,6
+176,8
@@
int nfs_mount(struct nfs_context *nfs, const char *server, const char *export)
struct sync_cb_data cb_data;
struct rpc_context *rpc = nfs_get_rpc_context(nfs);
struct sync_cb_data cb_data;
struct rpc_context *rpc = nfs_get_rpc_context(nfs);
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
cb_data.is_finished = 0;
if (nfs_mount_async(nfs, server, export, mount_cb, &cb_data) != 0) {
cb_data.is_finished = 0;
if (nfs_mount_async(nfs, server, export, mount_cb, &cb_data) != 0) {
@@
-164,11
+208,18
@@
static void stat_cb(int status, struct nfs_context *nfs, void *data, void *priva
nfs_set_error(nfs, "stat call failed with \"%s\"", (char *)data);
return;
}
nfs_set_error(nfs, "stat call failed with \"%s\"", (char *)data);
return;
}
-
- memcpy(cb_data->return_data, data, sizeof(struct stat));
+#ifdef WIN32
+ memcpy(cb_data->return_data, data, sizeof(struct __stat64));
+#else
+ memcpy(cb_data->return_data, data, sizeof(struct stat));
+#endif
}
}
+#ifdef WIN32
+int nfs_stat(struct nfs_context *nfs, const char *path, struct __stat64 *st)
+#else
int nfs_stat(struct nfs_context *nfs, const char *path, struct stat *st)
int nfs_stat(struct nfs_context *nfs, const char *path, struct stat *st)
+#endif
{
struct sync_cb_data cb_data;
{
struct sync_cb_data cb_data;
@@
-248,7
+299,7
@@
static void pread_cb(int status, struct nfs_context *nfs, void *data, void *priv
memcpy(buffer, (char *)data, status);
}
memcpy(buffer, (char *)data, status);
}
-int nfs_pread(struct nfs_context *nfs, struct nfsfh *nfsfh,
off_t offset, size
_t count, char *buffer)
+int nfs_pread(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64_t offset, uint64
_t count, char *buffer)
{
struct sync_cb_data cb_data;
{
struct sync_cb_data cb_data;
@@
-268,7
+319,7
@@
int nfs_pread(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_t
/*
* read()
*/
/*
* read()
*/
-int nfs_read(struct nfs_context *nfs, struct nfsfh *nfsfh,
size
_t count, char *buffer)
+int nfs_read(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64
_t count, char *buffer)
{
return nfs_pread(nfs, nfsfh, nfs_get_current_offset(nfsfh), count, buffer);
}
{
return nfs_pread(nfs, nfsfh, nfs_get_current_offset(nfsfh), count, buffer);
}
@@
-343,7
+394,7
@@
static void pwrite_cb(int status, struct nfs_context *nfs, void *data, void *pri
}
}
}
}
-int nfs_pwrite(struct nfs_context *nfs, struct nfsfh *nfsfh,
off_t offset, size
_t count, char *buf)
+int nfs_pwrite(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64_t offset, uint64
_t count, char *buf)
{
struct sync_cb_data cb_data;
{
struct sync_cb_data cb_data;
@@
-362,7
+413,7
@@
int nfs_pwrite(struct nfs_context *nfs, struct nfsfh *nfsfh, off_t offset, size_
/*
* write()
*/
/*
* write()
*/
-int nfs_write(struct nfs_context *nfs, struct nfsfh *nfsfh,
size
_t count, char *buf)
+int nfs_write(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64
_t count, char *buf)
{
return nfs_pwrite(nfs, nfsfh, nfs_get_current_offset(nfsfh), count, buf);
}
{
return nfs_pwrite(nfs, nfsfh, nfs_get_current_offset(nfsfh), count, buf);
}
@@
-417,7
+468,7
@@
static void ftruncate_cb(int status, struct nfs_context *nfs, void *data, void *
}
}
}
}
-int nfs_ftruncate(struct nfs_context *nfs, struct nfsfh *nfsfh,
off
_t length)
+int nfs_ftruncate(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64
_t length)
{
struct sync_cb_data cb_data;
{
struct sync_cb_data cb_data;
@@
-450,7
+501,7
@@
static void truncate_cb(int status, struct nfs_context *nfs, void *data, void *p
}
}
}
}
-int nfs_truncate(struct nfs_context *nfs, const char *path,
off
_t length)
+int nfs_truncate(struct nfs_context *nfs, const char *path,
uint64
_t length)
{
struct sync_cb_data cb_data;
{
struct sync_cb_data cb_data;
@@
-698,11
+749,11
@@
static void lseek_cb(int status, struct nfs_context *nfs, void *data, void *priv
}
if (cb_data->return_data != NULL) {
}
if (cb_data->return_data != NULL) {
- memcpy(cb_data->return_data, data, sizeof(
off
_t));
+ memcpy(cb_data->return_data, data, sizeof(
uint64
_t));
}
}
}
}
-int nfs_lseek(struct nfs_context *nfs, struct nfsfh *nfsfh,
off_t offset, int whence, off
_t *current_offset)
+int nfs_lseek(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64_t offset, int whence, uint64
_t *current_offset)
{
struct sync_cb_data cb_data;
{
struct sync_cb_data cb_data;
@@
-1146,7
+1197,9
@@
int nfs_link(struct nfs_context *nfs, const char *oldpath, const char *newpath)
void mount_getexports_cb(struct rpc_context *mount_context, int status, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
void mount_getexports_cb(struct rpc_context *mount_context, int status, void *data, void *private_data)
{
struct sync_cb_data *cb_data = private_data;
- exports export = *(exports *)data;
+ exports export;
+
+ assert(mount_context->magic == RPC_CONTEXT_MAGIC);
cb_data->is_finished = 1;
cb_data->status = status;
cb_data->is_finished = 1;
cb_data->status = status;
@@
-1157,6
+1210,7
@@
void mount_getexports_cb(struct rpc_context *mount_context, int status, void *da
return;
}
return;
}
+ export = *(exports *)data;
while (export != NULL) {
exports new_export;
while (export != NULL) {
exports new_export;
@@
-1228,6
+1282,8
@@
void callit_cb(struct rpc_context *rpc, int status, void *data _U_, void *privat
char hostdd[16];
struct nfs_server_list *srvr;
char hostdd[16];
struct nfs_server_list *srvr;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_CANCEL) {
return;
}
if (status == RPC_STATUS_CANCEL) {
return;
}
@@
-1281,6
+1337,8
@@
static int send_nfsd_probes(struct rpc_context *rpc, INTERFACE_INFO *InterfaceLi
{
int i=0;
{
int i=0;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
for(i = 0; i < numIfs; i++)
{
SOCKADDR *pAddress;
for(i = 0; i < numIfs; i++)
{
SOCKADDR *pAddress;
@@
-1411,6
+1469,8
@@
static int send_nfsd_probes(struct rpc_context *rpc, struct ifconf *ifc, struct
{
char *ptr;
{
char *ptr;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
for (ptr =(char *)(ifc->ifc_buf); ptr < (char *)(ifc->ifc_buf) + ifc->ifc_len; ) {
struct ifreq *ifr;
char bcdd[16];
for (ptr =(char *)(ifc->ifc_buf); ptr < (char *)(ifc->ifc_buf) + ifc->ifc_len; ) {
struct ifreq *ifr;
char bcdd[16];