assert(rpc->magic == RPC_CONTEXT_MAGIC);
- if (status == RPC_STATUS_ERROR) {
+ if (status == RPC_STATUS_ERROR) {
data->cb(rpc, status, command_data, data->private_data);
free_rpc_cb_data(data);
return;
assert(rpc->magic == RPC_CONTEXT_MAGIC);
- if (status == RPC_STATUS_ERROR) {
+ if (status == RPC_STATUS_ERROR) {
data->cb(-EFAULT, nfs, command_data, data->private_data);
free_nfs_cb_data(data);
return;
int len;
/* // -> / */
- while (str = strstr(path, "//")) {
+ while ((str = strstr(path, "//"))) {
while(*str) {
*str = *(str + 1);
str++;
}
/* /./ -> / */
- while (str = strstr(path, "/./")) {
+ while ((str = strstr(path, "/./"))) {
while(*(str + 1)) {
*str = *(str + 2);
str++;
}
/* /string/../ -> / */
- while (str = strstr(path, "/../")) {
+ while ((str = strstr(path, "/../"))) {
char *tmp;
if (!strncmp(path, "/../", 4)) {
char *tmp = &path[len - 3];
while (*--tmp != '/')
;
- *tmp = '\0';
+ *tmp = '\0';
}
}
#ifndef WIN32
st.st_blksize = 4096;
st.st_blocks = res->GETATTR3res_u.resok.obj_attributes.size / 4096;
-#endif//WIN32
+#endif//WIN32
st.st_atime = res->GETATTR3res_u.resok.obj_attributes.atime.seconds;
st.st_mtime = res->GETATTR3res_u.resok.obj_attributes.mtime.seconds;
st.st_ctime = res->GETATTR3res_u.resok.obj_attributes.ctime.seconds;
{
struct nfs_cb_data *data = private_data;
struct nfs_context *nfs = data->nfs;
+ struct nfsfh *nfsfh;
SETATTR3res *res;
assert(rpc->magic == RPC_CONTEXT_MAGIC);
return;
}
- data->cb(0, nfs, NULL, data->private_data);
+ nfsfh = malloc(sizeof(struct nfsfh));
+ if (nfsfh == NULL) {
+ rpc_set_error(nfs->rpc, "NFS: Failed to allocate nfsfh structure");
+ data->cb(-ENOMEM, nfs, rpc_get_error(nfs->rpc), data->private_data);
+ free_nfs_cb_data(data);
+ return;
+ }
+ memset(nfsfh, 0, sizeof(struct nfsfh));
+
+ if (data->continue_int & O_SYNC) {
+ nfsfh->is_sync = 1;
+ }
+
+ /* steal the filehandle */
+ nfsfh->fh = data->fh;
+ data->fh.data.data_val = NULL;
+
+ data->cb(0, nfs, nfsfh, data->private_data);
free_nfs_cb_data(data);
}
return;
}
- nfsfh = malloc(sizeof(struct nfsfh));
- if (nfsfh == NULL) {
- rpc_set_error(nfs->rpc, "NFS: Failed to allocate nfsfh structure");
- data->cb(-ENOMEM, nfs, rpc_get_error(nfs->rpc), data->private_data);
- free_nfs_cb_data(data);
- return;
- }
- memset(nfsfh, 0, sizeof(struct nfsfh));
-
- if (data->continue_int & O_SYNC) {
- nfsfh->is_sync = 1;
- }
-
- /* steal the filehandle */
- nfsfh->fh = data->fh;
- data->fh.data.data_val = NULL;
-
/* Try to truncate it if we were requested to */
if ((data->continue_int & O_TRUNC) &&
(data->continue_int & (O_RDWR|O_WRONLY))) {
SETATTR3args args;
memset(&args, 0, sizeof(SETATTR3args));
- args.object = nfsfh->fh;
+ args.object = data->fh;
args.new_attributes.size.set_it = 1;
args.new_attributes.size.set_size3_u.size = 0;
return;
}
+ nfsfh = malloc(sizeof(struct nfsfh));
+ if (nfsfh == NULL) {
+ rpc_set_error(nfs->rpc, "NFS: Failed to allocate nfsfh structure");
+ data->cb(-ENOMEM, nfs, rpc_get_error(nfs->rpc), data->private_data);
+ free_nfs_cb_data(data);
+ return;
+ }
+ memset(nfsfh, 0, sizeof(struct nfsfh));
+
+ if (data->continue_int & O_SYNC) {
+ nfsfh->is_sync = 1;
+ }
+
+ /* steal the filehandle */
+ nfsfh->fh = data->fh;
+ data->fh.data.data_val = NULL;
+
data->cb(0, nfs, nfsfh, data->private_data);
free_nfs_cb_data(data);
}
/*
* close
*/
-
+
int nfs_close_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, void *private_data)
{
if (nfsfh->fh.data.data_val != NULL){
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];
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];
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];
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];
struct mknod_cb_data *cb_data = data->continue_data;
char *str = cb_data->path;
MKNOD3args args;
-
+
str = &str[strlen(str) + 1];
args.where.dir = data->fh;
cb_data->path = strdup(path);
if (cb_data->path == NULL) {
rpc_set_error(nfs->rpc, "Out of memory, failed to allocate mode buffer for path");
- free(cb_data);
+ free(cb_data);
return -1;
}
struct entry3 *entry;
uint64_t cookie = 0;
struct rdpe_cb_data *rdpe_cb_data;
-
+
assert(rpc->magic == RPC_CONTEXT_MAGIC);
if (status == RPC_STATUS_ERROR) {
struct nfsdir *nfsdir = data->continue_data;
struct entryplus3 *entry;
uint64_t cookie = 0;
-
+
assert(rpc->magic == RPC_CONTEXT_MAGIC);
if (status == RPC_STATUS_ERROR || (status == RPC_STATUS_SUCCESS && res->status == NFS3ERR_NOTSUPP) ){
return;
}
-
+
data->cb(0, nfs, res->READLINK3res_u.resok.data, data->private_data);
free_nfs_cb_data(data);
}
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) {
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) {
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) {
/* Dont want any more callbacks even if the socket is closed */
rpc->connect_cb = NULL;
- if (status == RPC_STATUS_ERROR) {
+ if (status == RPC_STATUS_ERROR) {
data->cb(rpc, -EFAULT, command_data, data->private_data);
free_mount_cb_data(data);
return;
if (data->server == NULL) {
free_mount_cb_data(data);
return -1;
- }
+ }
if (rpc_connect_async(rpc, data->server, 111, mount_export_1_cb, data) != 0) {
free_mount_cb_data(data);
return -1;