static bool browse_host(bool sort)
{
- int ret;
+ NTSTATUS status;
if (!grepable) {
d_printf("\n\tSharename Type Comment\n");
return false;
}
- ret = cli_RNetShareEnum(cli, browse_fn, NULL);
- if (ret == -1) {
- NTSTATUS status = cli_nt_error(cli);
+ status = cli_RNetShareEnum(cli, browse_fn, NULL);
+ if (!NT_STATUS_IS_OK(status)) {
d_printf("Error returning browse list: %s\n",
nt_errstr(status));
+ return false;
}
- return (ret != -1);
+ return true;
}
/****************************************************************************
Call a NetShareEnum - try and browse available connections on a host.
****************************************************************************/
-int cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32_t, const char *, void *), void *state)
+NTSTATUS cli_RNetShareEnum(
+ struct cli_state *cli,
+ void (*fn)(const char *, uint32_t, const char *, void *),
+ void *state)
{
uint8_t *rparam = NULL;
uint8_t *rdata = NULL;
if (!(res == 0 || res == ERRmoredata)) {
DEBUG(4,("NetShareEnum res=%d\n", res));
+ status = werror_to_ntstatus(W_ERROR(res));
goto done;
}
TALLOC_FREE(rparam);
TALLOC_FREE(rdata);
- return count;
+ return status;
}
/****************************************************************************
char *data, int drcnt, int mdrcnt,
char **rparam, unsigned int *rprcnt,
char **rdata, unsigned int *rdrcnt);
-int cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32_t, const char *, void *), void *state);
+NTSTATUS cli_RNetShareEnum(
+ struct cli_state *cli,
+ void (*fn)(const char *, uint32_t, const char *, void *),
+ void *state);
bool cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32_t stype,
void (*fn)(const char *, uint32_t, const char *, void *),
void *state);
* Only call cli_RNetShareEnum()
* on SMB1 connections, not SMB2+.
*/
- int rc = cli_RNetShareEnum(srv->cli,
- list_fn,
- (void *)dir);
- if (rc != 0) {
- status = cli_nt_error(srv->cli);
- } else {
- status = NT_STATUS_OK;
- }
+ status = cli_RNetShareEnum(
+ srv->cli,
+ list_fn,
+ (void *)dir);
}
if (!NT_STATUS_IS_OK(status)) {
/*
if (argc == 0) {
struct cli_state *cli;
- int ret;
+ NTSTATUS status;
if (c->display_usage) {
d_printf(_("Usage:\n"));
"\nEnumerating shared resources (exports) on remote server:\n\n"
"\nShare name Type Description\n"
"---------- ---- -----------\n"));
- ret = cli_RNetShareEnum(cli, long_share_fn, NULL);
+ status = cli_RNetShareEnum(cli, long_share_fn, NULL);
} else {
- ret = cli_RNetShareEnum(cli, share_fn, NULL);
+ status = cli_RNetShareEnum(cli, share_fn, NULL);
}
cli_shutdown(cli);
- return ret;
+ return NT_STATUS_IS_OK(status) ? 0 : -1;
}
return net_run_function(c, argc, argv, "net rap share", func);