Get a list of the names of all users logged into this machine
********************************************************************/
-static char **get_logged_on_userlist(TALLOC_CTX *mem_ctx)
+static int get_logged_on_userlist(TALLOC_CTX *mem_ctx, char ***pusers)
{
char **users;
int i, num_users = 0;
if (tmp == NULL) {
TALLOC_FREE(tmp);
endutxent();
- return NULL;
+ return ENOMEM;
}
usr_infos = tmp;
usr_infos[num_users].name = talloc_strdup(usr_infos,
if (usr_infos[num_users].name == NULL) {
TALLOC_FREE(usr_infos);
endutxent();
- return NULL;
+ return ENOMEM;
}
usr_infos[num_users].login_time.tv_sec = u->ut_tv.tv_sec;
usr_infos[num_users].login_time.tv_usec = u->ut_tv.tv_usec;
}
TALLOC_FREE(usr_infos);
endutxent();
- errno = 0;
- return users;
+ *pusers = users;
+ return 0;
}
#else
-static char **get_logged_on_userlist(TALLOC_CTX *mem_ctx)
+static int get_logged_on_userlist(TALLOC_CTX *mem_ctx, char ***pusers)
{
- return NULL;
+ *pusers = NULL;
+ return 0;
}
#endif
{
struct wkssvc_NetWkstaInfo102 *info102;
char **users;
+ int ret;
info102 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo102);
if (info102 == NULL) {
info102, "%s", lp_workgroup());
info102->lan_root = "";
- users = get_logged_on_userlist(talloc_tos());
+ ret = get_logged_on_userlist(talloc_tos(), &users);
+ if (ret != 0) {
+ TALLOC_FREE(info102);
+ errno = ret;
+ return NULL;
+ }
info102->logged_on_users = talloc_array_length(users);
TALLOC_FREE(users);
{
struct wkssvc_NetWkstaEnumUsersCtr0 *ctr0;
char **users;
- int i, num_users;
+ int i, num_users, ret;
ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaEnumUsersCtr0);
if (ctr0 == NULL) {
return NULL;
}
- users = get_logged_on_userlist(talloc_tos());
- if (users == NULL && errno != 0) {
- DEBUG(1,("get_logged_on_userlist error %d: %s\n",
- errno, strerror(errno)));
+ ret = get_logged_on_userlist(talloc_tos(), &users);
+ if (ret != 0) {
+ DBG_WARNING("get_logged_on_userlist error %d: %s\n",
+ ret,
+ strerror(ret));
TALLOC_FREE(ctr0);
+ errno = ret;
return NULL;
}
struct dom_usr *dom_users;
const char *pwd_server;
char *pwd_tmp;
- int i, j, num_users, num_dom_users;
+ int i, j, num_users, num_dom_users, ret;
ctr1 = talloc(mem_ctx, struct wkssvc_NetWkstaEnumUsersCtr1);
if (ctr1 == NULL) {
return NULL;
}
- users = get_logged_on_userlist(talloc_tos());
- if (users == NULL && errno != 0) {
- DEBUG(1,("get_logged_on_userlist error %d: %s\n",
- errno, strerror(errno)));
+ ret = get_logged_on_userlist(talloc_tos(), &users);
+ if (ret != 0) {
+ DBG_WARNING("get_logged_on_userlist error %d: %s\n",
+ ret,
+ strerror(ret));
TALLOC_FREE(ctr1);
+ errno = ret;
return NULL;
}
num_users = talloc_array_length(users);