static int script_chanrec_add(struct userrec *u, char *chan) { if (!findchan_by_dname(chan)) return(-1); if (get_chanrec(u, chan) != NULL) return(-1); add_chanrec(u, chan); return(0); }
static void add_chanrec_by_handle(struct userrec *bu, char *hand, char *chname) { struct userrec *u; u = get_user_by_handle(bu, hand); if (!u) return; if (!get_chanrec(u, chname)) add_chanrec(u, chname); }
static void cmd_pls_chrec(int idx, char *par) { char *nick = NULL, *chn = NULL; struct chanset_t *chan = NULL; struct userrec *u1 = NULL; struct chanuserrec *chanrec = NULL; if (!par[0]) { dprintf(idx, "Usage: +chrec <user> [channel]\n"); return; } nick = newsplit(&par); u1 = get_user_by_handle(userlist, nick); if (!u1) { dprintf(idx, "No such user.\n"); return; } if (!par[0]) chan = findchan_by_dname(dcc[idx].u.chat->con_chan); else { chn = newsplit(&par); chan = findchan_by_dname(chn); } if (!chan) { dprintf(idx, "No such channel.\n"); return; } get_user_flagrec(dcc[idx].user, &user, chan->dname); get_user_flagrec(u1, &victim, chan->dname); if (privchan(user, chan, PRIV_OP)) { dprintf(idx, "No such channel.\n"); return; } if ((!glob_master(user) && !chan_master(user)) || /* drummer */ (chan_owner(victim) && !chan_owner(user) && !glob_owner(user)) || (glob_owner(victim) && !glob_owner(user))) { dprintf(idx, "You have no permission to do that.\n"); return; } chanrec = get_chanrec(u1, chan->dname); if (chanrec) { dprintf(idx, "User %s already has a channel record for %s.\n", nick, chan->dname); return; } putlog(LOG_CMDS, "*", "#%s# +chrec %s %s", dcc[idx].nick, nick, chan->dname); add_chanrec(u1, chan->dname); dprintf(idx, "Added %s channel record for %s.\n", chan->dname, nick); if (conf.bot->hub) write_userfile(idx); }