static pj_status_t quit_app(pj_cli_cmd_val *cval) { PJ_UNUSED_ARG(cval); pj_cli_quit(cval->sess->fe->cli, cval->sess, PJ_FALSE); return PJ_CLI_EEXIT; }
PJ_DEF(void) pj_cli_destroy(pj_cli_t *cli) { pj_cli_front_end *fe; if (!cli) return; if (!pj_cli_is_quitting(cli)) pj_cli_quit(cli, NULL, PJ_FALSE); fe = cli->fe_head.next; while (fe != &cli->fe_head) { pj_list_erase(fe); if (fe->op && fe->op->on_destroy) (*fe->op->on_destroy)(fe); fe = cli->fe_head.next; } cli->is_quitting = PJ_FALSE; pj_pool_release(cli->pool); }