char *name_to_id(char *s) { if (strchr(s, '.')) { /* server */ u_server *sv = u_server_by_name(s); return sv ? (sv->sid[0] ? sv->sid : NULL) : NULL; } else { u_user *u = u_user_by_nick(s); return u ? u->uid : NULL; } }
u_entity *u_entity_from_name(u_entity *e, char *s) { if (!s) return NULL; if (strchr(s, '.')) { if (!(e->v.sv = u_server_by_name(s))) return NULL; make_server(e); } else { if (!(e->v.u = u_user_by_nick(s))) return NULL; make_user(e); } return e; }
u_conn *ref_link(u_conn *ctx, char *ref) { if (ctx && ctx->ctx == CTX_SERVER && isdigit(ref[0])) { if (ref[3]) { u_user *u = u_user_by_uid(ref); return u ? u->link : NULL; } else { u_server *sv = u_server_by_sid(ref); return sv ? sv->link : NULL; } } else { if (!strchr(ref, '.')) { u_user *u = u_user_by_nick(ref); return u ? u->link : NULL; } else { u_server *sv = u_server_by_name(ref); return sv ? sv->link : NULL; } } }