void set_setvar(const char *var, const char *val) { if (var == NULL) { void *_listvarsarg; secs_listvars(0, NULL, &_listvarsarg); set_echof(" %-16.16s %-30s[type] Description\n", "Variable name", "Value"); while ((var = secs_listvars(1, NULL, &_listvarsarg)) != NULL) { val = secs_getvar(var); if ((val != NULL) && (*val != 0)) { char *prot; if (((prot = strchr(var, ':')) == NULL) || (strcasecmp(prot+1, "password") != 0)) { const char *ret, *desc; char buf[1024]; if (strchr(val, ' ') != NULL) { snprintf(buf, sizeof(buf), "\"%s\"", val); val = buf; } ret = set_tabcomplete(curconn, var, var, strlen(var), NULL, &desc); if ((ret == NULL) || (desc == NULL) || (strcasecmp(ret, var) != 0)) desc = "[str]"; if ((1 + 16 + 1 + 30 + 1 + strlen(desc)) >= faimconf.wstatus.widthx) { set_echof(" %-16.16s %-30s\n", var, val); set_echof(" %s\n", desc); } else if (strlen(val) <= 30) set_echof(" %-16.16s %-30s %s\n", var, val, desc); else { set_echof(" %-16.16s %-30s\n", var, val); set_echof(" %-16.16s %-30s %s\n", "", "", desc); } set_echof("\n"); } } } return; } if (*var == '$') var++; if (val == NULL) echof(curconn, NULL, "$%s is \"%s\"\n", var, secs_getvar(var)); else if (secs_setvar(var, val) == 0) echof(curconn, NULL, "\"%s\" is an invalid input for $%s\n", val, var); else echof(curconn, NULL, "$%s is now \"%s\"\n", var, secs_getvar(var)); }
void bgoing(conn_t *conn, const char *buddy) { buddywin_t *bwin = conn->curbwin; buddylist_t *blist = NULL; assert(buddy != NULL); if (bwin == NULL) return; if ((blist = rgetlist(conn, buddy)) != NULL) { if ((blist->peer <= 0) && (blist->crypt != NULL)) echof(conn, NULL, "Strangeness while marking %s offline: no autopeer negotiated, but autocrypt set!\n", buddy); blist->docrypt = blist->peer = 0; if (blist->crypt != NULL) { free(blist->crypt); blist->crypt = NULL; } if (blist->tzname != NULL) { free(blist->tzname); blist->tzname = NULL; } status_echof(conn, "<font color=\"#00FFFF\">%s</font> <font color=\"#800000\">[<B>%s</B>]</font> has just logged off :(\n", user_name(NULL, 0, conn, blist), USER_GROUP(blist)); blist->offline = 1; blist->warnval = blist->typing = blist->isadmin = blist->ismobile = blist->isidle = blist->isaway = 0; } else return; do { if ((bwin->et == BUDDY) && (firetalk_compare_nicks(conn->conn, buddy, bwin->winname) == FE_SUCCESS)) { int autoclose = getvar_int(conn, "autoclose"), beeponsignon = getvar_int(conn, "beeponsignon"); assert(bwin->e.buddy == blist); window_echof(bwin, "<font color=\"#00FFFF\">%s</font> <font color=\"#800000\">[<B>%s</B>]</font> has just logged off :(\n", user_name(NULL, 0, conn, blist), USER_GROUP(blist)); if ((beeponsignon > 1) || ((awaytime == 0) && (beeponsignon == 1))) beep(); FREESTR(bwin->blurb); FREESTR(bwin->status); if (bwin->keepafterso == 1) { if ((autoclose > 0) && !USER_PERMANENT(bwin->e.buddy) && (bwin->waiting == 0)) bwin->closetime = now + 60*autoclose; } else { /* assert(bwin->waiting == 0); */ bclose(conn, bwin, 1); bwin = NULL; if ((autoclose > 0) && !USER_PERMANENT(blist)) { rdelbuddy(conn, buddy); firetalk_im_remove_buddy(conn->conn, buddy); } } bupdate(); return; } } while ((bwin = bwin->next) != conn->curbwin); }
// Listener void GameControl::onSelectionChange(int player, unsigned selection) { if (mPhase == GP_SET) { echof("Player#%d, SelectedShipId: %d, ShipType %s", player, selection, mShipyard.getNameOfShipType(selection).c_str()); mListSelections[player] = selection; } }
void bclose(conn_t *conn, buddywin_t *bwin, int _auto) { if (bwin == NULL) return; verify_winlist_sanity(conn, bwin); switch (bwin->et) { case BUDDY: if (_auto == 0) { assert(bwin->e.buddy != NULL); status_echof(conn, "Type /delbuddy to remove %s from your buddy list.\n", user_name(NULL, 0, conn, bwin->e.buddy)); STRREPLACE(lastclose, bwin->winname); } break; case CHAT: if (bwin->winname[0] != ':') firetalk_chat_part(conn->conn, bwin->winname); free(bwin->e.chat->key); bwin->e.chat->key = NULL; free(bwin->e.chat->last.line); bwin->e.chat->last.line = NULL; free(bwin->e.chat->last.name); bwin->e.chat->last.name = NULL; free(bwin->e.chat); bwin->e.chat = NULL; break; case TRANSFER: assert(bwin->e.transfer != NULL); firetalk_file_cancel(conn->conn, bwin->e.transfer->handle); echof(conn, NULL, "File transfer aborted.\n"); fremove(bwin->e.transfer); bwin->e.transfer = NULL; break; } if (bwin == bwin->next) conn->curbwin = NULL; else { int i = 0; buddywin_t *bbefore; bbefore = bwin->next; while (bbefore->next != bwin) { bbefore = bbefore->next; assert(i++ < 10000); } bbefore->next = bwin->next; if (bwin == conn->curbwin) conn->curbwin = bwin->next; } if (conn->curbwin != NULL) verify_winlist_sanity(conn, NULL); bremove(bwin); bwin = NULL; bupdate(); if (conn->curbwin != NULL) verify_winlist_sanity(conn, NULL); if (conn->curbwin != NULL) nw_touchwin(&(conn->curbwin->nwin)); else nw_touchwin(&(conn->nwin)); }