repositories
/
deb_libnfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
more include cleanups it starts to look almost decent now
[deb_libnfs.git]
/
lib
/
libnfs.c
diff --git
a/lib/libnfs.c
b/lib/libnfs.c
index e2f96722b32e0f28d73007cb9f8f2466b2614254..c07a8e84b60eb7085ec655d789d4eea8badd54ef 100644
(file)
--- a/
lib/libnfs.c
+++ b/
lib/libnfs.c
@@
-17,26
+17,50
@@
/*
* 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>
#else
#include <strings.h>
-#include <sys/statvfs.h>
#include <utime.h>
#include <utime.h>
-#include <unistd.h>
-#endif/*WIN32*/
+#endif /*WIN32*/
+
+#ifdef ANDROID
+#define statvfs statfs
+#endif
#define _GNU_SOURCE
#define _GNU_SOURCE
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+
+#ifdef HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
+#include <assert.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <netinet/in.h>
+#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"
@@
-111,7
+135,7
@@
struct nfs_mcb_data {
static int nfs_lookup_path_async_internal(struct nfs_context *nfs, struct nfs_cb_data *data, struct nfs_fh3 *fh);
static int nfs_lookup_path_async_internal(struct nfs_context *nfs, struct nfs_cb_data *data, struct nfs_fh3 *fh);
-void nfs_set_auth(struct nfs_context *nfs, AUTH *auth)
+void nfs_set_auth(struct nfs_context *nfs,
struct
AUTH *auth)
{
rpc_set_auth(nfs->rpc, auth);
}
{
rpc_set_auth(nfs->rpc, auth);
}
@@
-216,11
+240,13
@@
void free_nfs_cb_data(struct nfs_cb_data *data)
-static void nfs_mount_10_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_mount_10_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-242,6
+268,8
@@
static void nfs_mount_9_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_context *nfs = data->nfs;
FSINFO3res *res = command_data;
struct nfs_context *nfs = data->nfs;
FSINFO3res *res = command_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-268,6
+296,8
@@
static void nfs_mount_8_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-292,6
+322,8
@@
static void nfs_mount_7_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
@@
-320,6
+352,8
@@
static void nfs_mount_6_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_context *nfs = data->nfs;
mountres3 *res;
struct nfs_context *nfs = data->nfs;
mountres3 *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-365,6
+399,8
@@
static void nfs_mount_5_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-388,6
+424,8
@@
static void nfs_mount_4_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
@@
-415,6
+453,8
@@
static void nfs_mount_3_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_context *nfs = data->nfs;
uint32_t mount_port;
struct nfs_context *nfs = data->nfs;
uint32_t mount_port;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-448,6
+488,8
@@
static void nfs_mount_2_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-471,6
+513,8
@@
static void nfs_mount_1_cb(struct rpc_context *rpc, int status, void *command_da
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
@@
-535,12
+579,14
@@
int nfs_mount_async(struct nfs_context *nfs, const char *server, const char *exp
* Functions to first look up a path, component by component, and then finally call a specific function once
* the filehandle for the final component is found.
*/
* Functions to first look up a path, component by component, and then finally call a specific function once
* the filehandle for the final component is found.
*/
-static void nfs_lookup_path_1_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_lookup_path_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
LOOKUP3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
LOOKUP3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-654,13
+700,15
@@
static int nfs_lookuppath_async(struct nfs_context *nfs, const char *path, nfs_c
/*
* Async stat()
*/
/*
* Async stat()
*/
-static void nfs_stat_1_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_stat_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
GETATTR3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct stat st;
{
GETATTR3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct stat st;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-734,7
+782,7
@@
int nfs_stat_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *p
/*
* Async open()
*/
/*
* Async open()
*/
-static void nfs_open_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_open_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
@@
-742,6
+790,8
@@
static void nfs_open_cb(struct rpc_context *rpc _U_, int status, void *command_d
struct nfsfh *nfsfh;
unsigned int nfsmode = 0;
struct nfsfh *nfsfh;
unsigned int nfsmode = 0;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-847,12
+897,14
@@
int nfs_open_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb c
/*
* Async pread()
*/
/*
* Async pread()
*/
-static void nfs_pread_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_pread_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
READ3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
READ3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-877,13
+929,15
@@
static void nfs_pread_cb(struct rpc_context *rpc _U_, int status, void *command_
free_nfs_cb_data(data);
}
free_nfs_cb_data(data);
}
-static void nfs_pread_mcb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_pread_mcb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_mcb_data *mdata = private_data;
struct nfs_cb_data *data = mdata->data;
struct nfs_context *nfs = data->nfs;
READ3res *res;
{
struct nfs_mcb_data *mdata = private_data;
struct nfs_cb_data *data = mdata->data;
struct nfs_context *nfs = data->nfs;
READ3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
data->num_calls--;
if (status == RPC_STATUS_ERROR) {
data->num_calls--;
if (status == RPC_STATUS_ERROR) {
@@
-1024,12
+1078,14
@@
int nfs_read_async(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t count,
/*
* Async pwrite()
*/
/*
* Async pwrite()
*/
-static void nfs_pwrite_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_pwrite_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
WRITE3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
WRITE3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-1054,13
+1110,15
@@
static void nfs_pwrite_cb(struct rpc_context *rpc _U_, int status, void *command
free_nfs_cb_data(data);
}
free_nfs_cb_data(data);
}
-static void nfs_pwrite_mcb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_pwrite_mcb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_mcb_data *mdata = private_data;
struct nfs_cb_data *data = mdata->data;
struct nfs_context *nfs = data->nfs;
WRITE3res *res;
{
struct nfs_mcb_data *mdata = private_data;
struct nfs_cb_data *data = mdata->data;
struct nfs_context *nfs = data->nfs;
WRITE3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
data->num_calls--;
if (status == RPC_STATUS_ERROR) {
data->num_calls--;
if (status == RPC_STATUS_ERROR) {
@@
-1242,12
+1300,14
@@
int nfs_fstat_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, voi
/*
* Async fsync()
*/
/*
* Async fsync()
*/
-static void nfs_fsync_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_fsync_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
COMMIT3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
COMMIT3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-1300,12
+1360,14
@@
int nfs_fsync_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, voi
/*
* Async ftruncate()
*/
/*
* Async ftruncate()
*/
-static void nfs_ftruncate_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_ftruncate_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-1401,13
+1463,15
@@
int nfs_truncate_async(struct nfs_context *nfs, const char *path, uint64_t lengt
/*
* Async mkdir()
*/
/*
* Async mkdir()
*/
-static void nfs_mkdir_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_mkdir_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
MKDIR3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
{
MKDIR3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
@@
-1490,13
+1554,15
@@
int nfs_mkdir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *
/*
* Async rmdir()
*/
/*
* Async rmdir()
*/
-static void nfs_rmdir_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_rmdir_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
RMDIR3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
{
RMDIR3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
@@
-1570,7
+1636,7
@@
int nfs_rmdir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *
/*
* Async creat()
*/
/*
* Async creat()
*/
-static void nfs_create_2_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_create_2_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
LOOKUP3res *res;
struct nfs_cb_data *data = private_data;
{
LOOKUP3res *res;
struct nfs_cb_data *data = private_data;
@@
-1578,6
+1644,8
@@
static void nfs_create_2_cb(struct rpc_context *rpc _U_, int status, void *comma
struct nfsfh *nfsfh;
char *str = data->continue_data;
struct nfsfh *nfsfh;
char *str = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-1618,13
+1686,15
@@
static void nfs_create_2_cb(struct rpc_context *rpc _U_, int status, void *comma
-static void nfs_creat_1_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_creat_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
CREATE3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
{
CREATE3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-1712,13
+1782,15
@@
int nfs_creat_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb
/*
* Async unlink()
*/
/*
* Async unlink()
*/
-static void nfs_unlink_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_unlink_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
REMOVE3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
{
REMOVE3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
@@
-1805,13
+1877,15
@@
static void free_mknod_cb_data(void *ptr)
free(data);
}
free(data);
}
-static void nfs_mknod_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_mknod_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
MKNOD3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
{
MKNOD3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
char *str = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
str = &str[strlen(str) + 1];
if (status == RPC_STATUS_ERROR) {
@@
-1909,7
+1983,7
@@
struct rdpe_lookup_cb_data {
};
/* Workaround for servers lacking READDIRPLUS, use READDIR instead and a GETATTR-loop */
};
/* Workaround for servers lacking READDIRPLUS, use READDIR instead and a GETATTR-loop */
-static void nfs_opendir3_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_opendir3_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
LOOKUP3res *res = command_data;
struct rdpe_lookup_cb_data *rdpe_lookup_cb_data = private_data;
{
LOOKUP3res *res = command_data;
struct rdpe_lookup_cb_data *rdpe_lookup_cb_data = private_data;
@@
-1919,6
+1993,8
@@
static void nfs_opendir3_cb(struct rpc_context *rpc _U_, int status, void *comma
struct nfs_context *nfs = data->nfs;
struct nfsdirent *nfsdirent = rdpe_lookup_cb_data->nfsdirent;
struct nfs_context *nfs = data->nfs;
struct nfsdirent *nfsdirent = rdpe_lookup_cb_data->nfsdirent;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
free(rdpe_lookup_cb_data);
rdpe_cb_data->getattrcount--;
free(rdpe_lookup_cb_data);
rdpe_cb_data->getattrcount--;
@@
-1963,7
+2039,7
@@
static void nfs_opendir3_cb(struct rpc_context *rpc _U_, int status, void *comma
}
}
}
}
-static void nfs_opendir2_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_opendir2_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
READDIR3res *res = command_data;
struct nfs_cb_data *data = private_data;
{
READDIR3res *res = command_data;
struct nfs_cb_data *data = private_data;
@@
-1974,6
+2050,8
@@
static void nfs_opendir2_cb(struct rpc_context *rpc _U_, int status, void *comma
uint64_t cookie;
struct rdpe_cb_data *rdpe_cb_data;
uint64_t cookie;
struct rdpe_cb_data *rdpe_cb_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
nfs_free_nfsdir(nfsdir);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
nfs_free_nfsdir(nfsdir);
@@
-2078,7
+2156,7
@@
static void nfs_opendir2_cb(struct rpc_context *rpc _U_, int status, void *comma
}
}
-static void nfs_opendir_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_opendir_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
READDIRPLUS3res *res = command_data;
struct nfs_cb_data *data = private_data;
{
READDIRPLUS3res *res = command_data;
struct nfs_cb_data *data = private_data;
@@
-2087,6
+2165,7
@@
static void nfs_opendir_cb(struct rpc_context *rpc _U_, int status, void *comman
struct entryplus3 *entry;
uint64_t cookie;
struct entryplus3 *entry;
uint64_t cookie;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
if (status == RPC_STATUS_ERROR || (status == RPC_STATUS_SUCCESS && res->status == NFS3ERR_NOTSUPP) ){
cookieverf3 cv;
if (status == RPC_STATUS_ERROR || (status == RPC_STATUS_SUCCESS && res->status == NFS3ERR_NOTSUPP) ){
cookieverf3 cv;
@@
-2248,12
+2327,14
@@
struct lseek_cb_data {
void *private_data;
};
void *private_data;
};
-static void nfs_lseek_1_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_lseek_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
GETATTR3res *res;
struct lseek_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
GETATTR3res *res;
struct lseek_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free(data);
@@
-2319,13
+2400,15
@@
int nfs_lseek_async(struct nfs_context *nfs, struct nfsfh *nfsfh, uint64_t offse
/*
* Async statvfs()
*/
/*
* Async statvfs()
*/
-static void nfs_statvfs_1_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_statvfs_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
FSSTAT3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct statvfs svfs;
{
FSSTAT3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct statvfs svfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-2352,10
+2435,12
@@
static void nfs_statvfs_1_cb(struct rpc_context *rpc _U_, int status, void *comm
svfs.f_bavail = res->FSSTAT3res_u.resok.abytes/4096;
svfs.f_files = res->FSSTAT3res_u.resok.tfiles;
svfs.f_ffree = res->FSSTAT3res_u.resok.ffiles;
svfs.f_bavail = res->FSSTAT3res_u.resok.abytes/4096;
svfs.f_files = res->FSSTAT3res_u.resok.tfiles;
svfs.f_ffree = res->FSSTAT3res_u.resok.ffiles;
+#if !defined(ANDROID)
svfs.f_favail = res->FSSTAT3res_u.resok.afiles;
svfs.f_fsid = 0;
svfs.f_flag = 0;
svfs.f_namemax = 256;
svfs.f_favail = res->FSSTAT3res_u.resok.afiles;
svfs.f_fsid = 0;
svfs.f_flag = 0;
svfs.f_namemax = 256;
+#endif
data->cb(0, nfs, &svfs, data->private_data);
free_nfs_cb_data(data);
data->cb(0, nfs, &svfs, data->private_data);
free_nfs_cb_data(data);
@@
-2388,12
+2473,14
@@
int nfs_statvfs_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void
/*
* Async readlink()
*/
/*
* Async readlink()
*/
-static void nfs_readlink_1_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_readlink_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
READLINK3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
{
READLINK3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-2450,12
+2537,14
@@
int nfs_readlink_async(struct nfs_context *nfs, const char *path, nfs_cb cb, voi
/*
* Async chmod()
*/
/*
* Async chmod()
*/
-static void nfs_chmod_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_chmod_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-2548,12
+2637,14
@@
int nfs_fchmod_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int mode, nfs
/*
* Async chown()
*/
/*
* Async chown()
*/
-static void nfs_chown_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_chown_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-2684,12
+2775,14
@@
int nfs_fchown_async(struct nfs_context *nfs, struct nfsfh *nfsfh, int uid, int
/*
* Async utimes()
*/
/*
* Async utimes()
*/
-static void nfs_utimes_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_utimes_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
SETATTR3res *res;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-2800,13
+2893,15
@@
int nfs_utime_async(struct nfs_context *nfs, const char *path, struct utimbuf *t
/*
* Async access()
*/
/*
* Async access()
*/
-static void nfs_access_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_access_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
unsigned int nfsmode = 0;
{
ACCESS3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
unsigned int nfsmode = 0;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-2913,13
+3008,15
@@
static void free_nfs_symlink_data(void *mem)
free(data);
}
free(data);
}
-static void nfs_symlink_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_symlink_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
SYMLINK3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_symlink_data *symlink_data = data->continue_data;
{
SYMLINK3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_symlink_data *symlink_data = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-3048,13
+3145,15
@@
static void free_nfs_rename_data(void *mem)
free(data);
}
free(data);
}
-static void nfs_rename_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_rename_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
RENAME3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_rename_data *rename_data = data->continue_data;
{
RENAME3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_rename_data *rename_data = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-3204,13
+3303,15
@@
static void free_nfs_link_data(void *mem)
free(data);
}
free(data);
}
-static void nfs_link_cb(struct rpc_context *rpc
_U_
, int status, void *command_data, void *private_data)
+static void nfs_link_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data)
{
LINK3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_link_data *link_data = data->continue_data;
{
LINK3res *res;
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
struct nfs_link_data *link_data = data->continue_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
@@
-3341,7
+3442,7
@@
uint64_t nfs_get_readmax(struct nfs_context *nfs)
*/
uint64_t nfs_get_writemax(struct nfs_context *nfs)
{
*/
uint64_t nfs_get_writemax(struct nfs_context *nfs)
{
- /* Some
X
DR libraries can not marshall PDUs bigger than this */
+ /* Some
Z
DR libraries can not marshall PDUs bigger than this */
if (nfs->writemax < 32768) {
return nfs->writemax;
}
if (nfs->writemax < 32768) {
return nfs->writemax;
}
@@
-3385,7
+3486,9
@@
static void mount_export_5_cb(struct rpc_context *rpc, int status, void *command
{
struct mount_cb_data *data = private_data;
{
struct mount_cb_data *data = private_data;
- if (status == RPC_STATUS_ERROR) {
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
+ if (status == RPC_STATUS_ERROR) {
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
return;
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
return;
@@
-3407,6
+3510,8
@@
static void mount_export_4_cb(struct rpc_context *rpc, int status, void *command
{
struct mount_cb_data *data = private_data;
{
struct mount_cb_data *data = private_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
@@
-3433,7
+3538,9
@@
static void mount_export_3_cb(struct rpc_context *rpc, int status, void *command
struct mount_cb_data *data = private_data;
uint32_t mount_port;
struct mount_cb_data *data = private_data;
uint32_t mount_port;
- if (status == RPC_STATUS_ERROR) {
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
+ if (status == RPC_STATUS_ERROR) {
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
return;
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
return;
@@
-3464,6
+3571,8
@@
static void mount_export_2_cb(struct rpc_context *rpc, int status, void *command
{
struct mount_cb_data *data = private_data;
{
struct mount_cb_data *data = private_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (status == RPC_STATUS_ERROR) {
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
if (status == RPC_STATUS_ERROR) {
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
@@
-3486,6
+3595,8
@@
static void mount_export_1_cb(struct rpc_context *rpc, int status, void *command
{
struct mount_cb_data *data = private_data;
{
struct mount_cb_data *data = private_data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
@@
-3511,6
+3622,8
@@
int mount_getexports_async(struct rpc_context *rpc, const char *server, rpc_cb c
{
struct mount_cb_data *data;
{
struct mount_cb_data *data;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
data = malloc(sizeof(struct mount_cb_data));
if (data == NULL) {
return -1;
data = malloc(sizeof(struct mount_cb_data));
if (data == NULL) {
return -1;
@@
-3533,6
+3646,7
@@
int mount_getexports_async(struct rpc_context *rpc, const char *server, rpc_cb c
struct rpc_context *nfs_get_rpc_context(struct nfs_context *nfs)
{
struct rpc_context *nfs_get_rpc_context(struct nfs_context *nfs)
{
+ assert(nfs->rpc->magic == RPC_CONTEXT_MAGIC);
return nfs->rpc;
}
return nfs->rpc;
}
@@
-3547,3
+3661,7
@@
const char *nfs_get_export(struct nfs_context *nfs) {
const struct nfs_fh3 *nfs_get_rootfh(struct nfs_context *nfs) {
return &nfs->rootfh;
}
const struct nfs_fh3 *nfs_get_rootfh(struct nfs_context *nfs) {
return &nfs->rootfh;
}
+
+struct nfs_fh3 *nfs_get_fh(struct nfsfh *nfsfh) {
+ return &nfsfh->fh;
+}