int hgd_acmd_user_list_print(char **args) { struct hgd_user_list *list; int i, ret = HGD_FAIL; char *permstr = NULL; if (db == NULL) db = hgd_open_db(db_path, 0); if (db == NULL) goto clean; if (hgd_user_list(&list) != HGD_OK) goto clean; for (i = 0; i < list->n_users; i++) { hgd_gen_perms_str(list->users[i]->perms, &permstr); printf("%-20s %s\n", list->users[i]->name, permstr); free(permstr); } ret = HGD_OK; clean: if (list != NULL) { hgd_free_user_list(list); free(list); } return (ret); }
int hgd_cmd_user_list(struct hgd_session *sess, char **args) { struct hgd_user_list *list; int i; char *msg; (void) sess; list = hgd_acmd_user_list(args); if (list == NULL) { DPRINTF(HGD_D_WARN, "List retuned NULL," " there are either no users or" " an error occoured"); hgd_sock_send_line(sess->sock_fd, sess->ssl, "err|list_null"); goto clean; } xasprintf(&msg, "ok|%d", list->n_users); hgd_sock_send_line(sess->sock_fd, sess->ssl, msg); free(msg); for (i = 0; i < list->n_users; i++) { hgd_sock_send_line( sess->sock_fd, sess->ssl, list->users[i]->name); } clean: if (list != NULL) { hgd_free_user_list(list); free(list); } return (HGD_OK); }