X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lib%2Flibnfs.c;h=029c9c94d1f82795a5104e456caec30fdbbc4e3e;hb=8aab33e33c541a8ac66c031d9b6f7b7f764143ed;hp=b6bd822ebabf2eda89eef9b04ecee4a845055c91;hpb=6d89ace041388b1770167eb473ac539ae74f37db;p=deb_libnfs.git diff --git a/lib/libnfs.c b/lib/libnfs.c index b6bd822..029c9c9 100644 --- a/lib/libnfs.c +++ b/lib/libnfs.c @@ -173,6 +173,18 @@ char *nfs_get_error(struct nfs_context *nfs) return rpc_get_error(nfs->rpc); }; +static int nfs_set_context_args(struct nfs_context *nfs, char *arg, char *val) +{ + if (!strncmp(arg, "tcp-syncnt", 10)) { + rpc_set_tcp_syncnt(nfs_get_rpc_context(nfs), atoi(val)); + } else if (!strncmp(arg, "uid", 3)) { + rpc_set_uid(nfs_get_rpc_context(nfs), atoi(val)); + } else if (!strncmp(arg, "gid", 3)) { + rpc_set_gid(nfs_get_rpc_context(nfs), atoi(val)); + } + return 0; +} + static struct nfs_url *nfs_parse_url(struct nfs_context *nfs, const char *url, int dir, int incomplete) { struct nfs_url *urls; @@ -189,6 +201,7 @@ static struct nfs_url *nfs_parse_url(struct nfs_context *nfs, const char *url, i return NULL; } + memset(urls, 0x00, sizeof(struct nfs_url)); urls->server = strdup(url + 6); if (urls->server == NULL) { nfs_destroy_url(urls); @@ -265,11 +278,6 @@ flags: } } - if (urls->server && strlen(urls->server) <= 1) { - free(urls->server); - urls->server = NULL; - } - while (flagsp != NULL && *(flagsp+1) != 0) { strp = flagsp + 1; flagsp = strchr(strp, '&'); @@ -280,16 +288,15 @@ flags: if (strp2) { *strp2 = 0; strp2++; - if (!strncmp(strp, "tcp-syncnt", 10)) { - rpc_set_tcp_syncnt(nfs->rpc, atoi(strp2)); - } else if (!strncmp(strp, "uid", 3)) { - rpc_set_uid(nfs->rpc, atoi(strp2)); - } else if (!strncmp(strp, "gid", 3)) { - rpc_set_gid(nfs->rpc, atoi(strp2)); - } + nfs_set_context_args(nfs, strp, strp2); } } + if (urls->server && strlen(urls->server) <= 1) { + free(urls->server); + urls->server = NULL; + } + return urls; } @@ -646,7 +653,7 @@ static void nfs_mount_7_cb(struct rpc_context *rpc, int status, void *command_da return; } - if (rpc_nfs_null_async(rpc, nfs_mount_8_cb, data) != 0) { + if (rpc_nfs3_null_async(rpc, nfs_mount_8_cb, data) != 0) { data->cb(-ENOMEM, nfs, command_data, data->private_data); free_nfs_cb_data(data); return; @@ -720,7 +727,7 @@ static void nfs_mount_5_cb(struct rpc_context *rpc, int status, void *command_da return; } - if (rpc_mount_mnt_async(rpc, nfs_mount_6_cb, nfs->export, data) != 0) { + if (rpc_mount3_mnt_async(rpc, nfs_mount_6_cb, nfs->export, data) != 0) { data->cb(-ENOMEM, nfs, command_data, data->private_data); free_nfs_cb_data(data); return; @@ -748,7 +755,7 @@ static void nfs_mount_4_cb(struct rpc_context *rpc, int status, void *command_da return; } - if (rpc_mount_null_async(rpc, nfs_mount_5_cb, data) != 0) { + if (rpc_mount3_null_async(rpc, nfs_mount_5_cb, data) != 0) { data->cb(-ENOMEM, nfs, command_data, data->private_data); free_nfs_cb_data(data); return; @@ -3910,7 +3917,7 @@ static void mount_export_4_cb(struct rpc_context *rpc, int status, void *command return; } - if (rpc_mount_export_async(rpc, mount_export_5_cb, data) != 0) { + if (rpc_mount3_export_async(rpc, mount_export_5_cb, data) != 0) { data->cb(rpc, -ENOMEM, command_data, data->private_data); free_mount_cb_data(data); return;