nfs_opendir() switch to using READDIRPLUS3 instead of READDIR3 when reading directo...
[deb_libnfs.git] / lib / libnfs.c
index edaeca4df06fb3afdc6ecbc090494fe807663521..2e504a40cae616eb62bc0869e58ce00e26b36350 100644 (file)
@@ -107,7 +107,7 @@ static int nfs_lookup_path_async_internal(struct nfs_context *nfs, struct nfs_cb
 
 void nfs_set_auth(struct nfs_context *nfs, struct AUTH *auth)
 {
-       return rpc_set_auth(nfs->rpc, auth);
+       rpc_set_auth(nfs->rpc, auth);
 }
 
 int nfs_get_fd(struct nfs_context *nfs)
@@ -557,7 +557,7 @@ static int nfs_lookup_path_async_internal(struct nfs_context *nfs, struct nfs_cb
        }
 
        path = data->path;
-       str = index(path, '/');
+       str = strchr(path, '/');
        if (str != NULL) {
                *str = 0;
                data->path = str+1;
@@ -1333,7 +1333,7 @@ int nfs_mkdir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *
                return -1;
        }
 
-       ptr = rindex(new_path, '/');
+       ptr = strrchr(new_path, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", path);
                return -1;
@@ -1414,7 +1414,7 @@ int nfs_rmdir_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void *
                return -1;
        }
 
-       ptr = rindex(new_path, '/');
+       ptr = strrchr(new_path, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", path);
                return -1;
@@ -1546,7 +1546,7 @@ int nfs_creat_async(struct nfs_context *nfs, const char *path, int mode, nfs_cb
                return -1;
        }
 
-       ptr = rindex(new_path, '/');
+       ptr = strrchr(new_path, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", path);
                return -1;
@@ -1626,7 +1626,7 @@ int nfs_unlink_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void
                return -1;
        }
 
-       ptr = rindex(new_path, '/');
+       ptr = strrchr(new_path, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", path);
                return -1;
@@ -1651,13 +1651,13 @@ int nfs_unlink_async(struct nfs_context *nfs, const char *path, nfs_cb cb, void
  */
 static void nfs_opendir_cb(struct rpc_context *rpc _U_, int status, void *command_data, void *private_data)
 {
-       READDIR3res *res;
+       READDIRPLUS3res *res;
        struct nfs_cb_data *data = private_data;
        struct nfs_context *nfs = data->nfs;
        struct nfsdir *nfsdir = data->continue_data;;
-       struct entry3 *entry;
+       struct entryplus3 *entry;
        uint64_t cookie;
-       
+
        if (status == RPC_STATUS_ERROR) {
                data->cb(-EFAULT, nfs, command_data, data->private_data);
                nfs_free_nfsdir(nfsdir);
@@ -1683,7 +1683,7 @@ static void nfs_opendir_cb(struct rpc_context *rpc _U_, int status, void *comman
                return;
        }
 
-       entry =res->READDIR3res_u.resok.reply.entries;
+       entry =res->READDIRPLUS3res_u.resok.reply.entries;
        while (entry != NULL) {
                struct nfsdirent *nfsdirent;
 
@@ -1712,9 +1712,9 @@ static void nfs_opendir_cb(struct rpc_context *rpc _U_, int status, void *comman
                entry  = entry->nextentry;
        }
 
-       if (res->READDIR3res_u.resok.reply.eof == 0) {
-               if (rpc_nfs_readdir_async(nfs->rpc, nfs_opendir_cb, &data->fh, cookie, res->READDIR3res_u.resok.cookieverf, 20000, data) != 0) {
-                       rpc_set_error(nfs->rpc, "RPC error: Failed to send READDIR call for %s", data->path);
+       if (res->READDIRPLUS3res_u.resok.reply.eof == 0) {
+               if (rpc_nfs_readdirplus_async(nfs->rpc, nfs_opendir_cb, &data->fh, cookie, res->READDIRPLUS3res_u.resok.cookieverf, 8192, data) != 0) {
+                       rpc_set_error(nfs->rpc, "RPC error: Failed to send READDIRPLUS call for %s", data->path);
                        data->cb(-ENOMEM, nfs, rpc_get_error(nfs->rpc), data->private_data);
                        nfs_free_nfsdir(nfsdir);
                        data->continue_data = NULL;
@@ -1737,8 +1737,8 @@ static int nfs_opendir_continue_internal(struct nfs_context *nfs, struct nfs_cb_
        cookieverf3 cv;
 
        bzero(cv, sizeof(cookieverf3));
-       if (rpc_nfs_readdir_async(nfs->rpc, nfs_opendir_cb, &data->fh, 0, (char *)&cv, 20000, data) != 0) {
-               rpc_set_error(nfs->rpc, "RPC error: Failed to send READDIR call for %s", data->path);
+       if (rpc_nfs_readdirplus_async(nfs->rpc, nfs_opendir_cb, &data->fh, 0, (char *)&cv, 8192, data) != 0) {
+               rpc_set_error(nfs->rpc, "RPC error: Failed to send READDIRPLUS call for %s", data->path);
                data->cb(-ENOMEM, nfs, rpc_get_error(nfs->rpc), data->private_data);
                free_nfs_cb_data(data);
                return -1;
@@ -2528,7 +2528,7 @@ int nfs_symlink_async(struct nfs_context *nfs, const char *oldpath, const char *
                return -1;
        }
 
-       ptr = rindex(symlink_data->newpathparent, '/');
+       ptr = strrchr(symlink_data->newpathparent, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", oldpath);
                free_nfs_symlink_data(symlink_data);
@@ -2674,7 +2674,7 @@ int nfs_rename_async(struct nfs_context *nfs, const char *oldpath, const char *n
                free_nfs_rename_data(rename_data);
                return -1;
        }
-       ptr = rindex(rename_data->oldpath, '/');
+       ptr = strrchr(rename_data->oldpath, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", oldpath);
                free_nfs_rename_data(rename_data);
@@ -2691,7 +2691,7 @@ int nfs_rename_async(struct nfs_context *nfs, const char *oldpath, const char *n
                free_nfs_rename_data(rename_data);
                return -1;
        }
-       ptr = rindex(rename_data->newpath, '/');
+       ptr = strrchr(rename_data->newpath, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", newpath);
                free_nfs_rename_data(rename_data);
@@ -2837,7 +2837,7 @@ int nfs_link_async(struct nfs_context *nfs, const char *oldpath, const char *new
                free_nfs_link_data(link_data);
                return -1;
        }
-       ptr = rindex(link_data->newpath, '/');
+       ptr = strrchr(link_data->newpath, '/');
        if (ptr == NULL) {
                rpc_set_error(nfs->rpc, "Invalid path %s", newpath);
                free_nfs_link_data(link_data);