Exemplo n.º 1
0
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));
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
// 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;
	}
}
Exemplo n.º 4
0
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));
}