+ flagmask=QUFLAG_ALL & ~(QUFLAG_SUSPENDED | QUFLAG_GLINE | QUFLAG_DELAYEDGLINE);
+ if (UIsDev(rup))
+ flagmask=QUFLAG_ALL;
+
+ if (UHasSuspension(target)) {
+ char expiresbuf[100];
+ char *reason, *suspendtype, *whom;
+
+ CCASSERT(sizeof(expiresbuf) > TIMELEN);
+
+ if(UIsDelayedGline(target)) {
+ suspendtype = "delayed gline";
+ } else if(UIsGline(target)) {
+ suspendtype = "gline";
+ } else if(UIsSuspended(target)) {
+ suspendtype = "suspended";
+ } else {
+ suspendtype = "???";
+ }
+
+ if(target->suspendexp) {
+ if(time(NULL) >= target->suspendexp) {
+ strlcpy(expiresbuf, "(next auth)", sizeof(expiresbuf));
+ } else {
+ q9strftime(expiresbuf, sizeof(expiresbuf), target->suspendexp);
+ }
+ } else {
+ strlcpy(expiresbuf, "(never)", sizeof(expiresbuf));
+ }
+
+ if(cs_privcheck(QPRIV_VIEWSUSPENDEDBY, sender)) {
+ reguser *trup = findreguserbyID(target->suspendby);
+ if(trup) {
+ whom = trup->username;
+ } else {
+ whom = "(unknown)";
+ }
+ } else {
+ whom = "(hidden)";
+ }
+
+ if(target->suspendreason && target->suspendreason->content) {
+ reason = target->suspendreason->content;
+ } else {
+ reason = "(none)";
+ }
+
+ chanservstdmessage(sender, QM_USERSUSPENDEDTYPE, suspendtype);
+ chanservstdmessage(sender, QM_USERSUSPENDEDBY, whom);
+ chanservstdmessage(sender, QM_USERSUSPENDEDREASON, reason);
+ chanservstdmessage(sender, QM_USERSUSPENDEDAT, target->suspendtime);
+ chanservstdmessage(sender, QM_USERSUSPENDEDEXPIRY, expiresbuf);
+ }