Example #1
0
local void Cvars(const char *cmd, const char *params, Player *p, const Target *target)
{
	PData *pdata = PPDATA(p, pdata_key);
	LinkedList list;

	LLInit(&list);

	HashEnum(pdata->vars, enum_vars, &list);

	if (LLGetHead(&list) != NULL)
	{
		Link *link;
		StringBuffer sb;
		SBInit(&sb);

		chat->SendMessage(p, "Variables:");

		for (link = LLGetHead(&list); link; link = link->next)
		{
			SBPrintf(&sb, ", %s", (const char*)link->data);
		}
		chat->SendWrappedText(p, SBText(&sb, 2));
		SBDestroy(&sb);

		LLEmpty(&list);
	}
	else
	{
		chat->SendMessage(p, "No Variables.");
	}
}
Example #2
0
local int CanChangeToShip(Player *p, int new_ship, int is_changing, char *err_buf, int buf_len)
{
	shipmask_t playerMask = GetAllowableShips(p, p->p_freq, NULL, 0);
	int allow = !SHIPMASK_HAS(new_ship, playerMask);

	if (err_buf && !allow)
	{
		StringBuffer shipsDescriptor;

		SBInit(&shipsDescriptor);

		if (playerMask != SHIPMASK_NONE)
		{
			int i;
			for (i = 0; i < SHIP_SPEC; ++i)
			{
				if (SHIPMASK_HAS(i, playerMask))
				{
					SBPrintf(&shipsDescriptor, ", %i", i+1);
				}
			}
		}

		if (playerMask == SHIPMASK_NONE)
			snprintf(err_buf, buf_len, "You may not leave spectator mode on this frequency.");
		else
			snprintf(err_buf, buf_len, "Your allowed ships on this frequency are: %s", SBText(&shipsDescriptor, 2));

		SBDestroy(&shipsDescriptor);
	}

	return allow;
}
Example #3
0
int main(void){
    OS_Init();
    LEDsInit();
    switchesInit(&leftSwitch, &rightSwitch, SWITCH_PRIO);
    SBInit(SYS_CLK_FREQ/SBUS_FREQ, SBUS_ID, SBUS_PRIO);
    OS_AddThread(&IdleTask, 128, 7);
    OS_Launch(SYS_CLK_FREQ/OS_FREQ);
    return 0;
}
Example #4
0
File: api.c Project: Cppowboy/mtcp
/*----------------------------------------------------------------------------*/
static inline int 
CopyFromUser(mtcp_manager_t mtcp, tcp_stream *cur_stream, char *buf, int len)
{
	struct tcp_send_vars *sndvar = cur_stream->sndvar;
	int sndlen;
	int ret;

	sndlen = MIN((int)sndvar->snd_wnd, len);
	if (sndlen <= 0) {
		errno = EAGAIN;
		return -1;
	}

	/* allocate send buffer if not exist */
	if (!sndvar->sndbuf) {
		sndvar->sndbuf = SBInit(mtcp->rbm_snd, sndvar->iss + 1);
		if (!sndvar->sndbuf) {
			cur_stream->close_reason = TCP_NO_MEM;
			/* notification may not required due to -1 return */
			errno = ENOMEM;
			return -1;
		}
	}

	ret = SBPut(mtcp->rbm_snd, sndvar->sndbuf, buf, sndlen);
	assert(ret == sndlen);
	sndvar->snd_wnd = sndvar->sndbuf->size - sndvar->sndbuf->len;
	if (ret <= 0) {
		TRACE_ERROR("SBPut failed. reason: %d (sndlen: %u, len: %u\n", 
				ret, sndlen, sndvar->sndbuf->len);
		errno = EAGAIN;
		return -1;
	}
	
	if (sndvar->snd_wnd <= 0) {
		TRACE_SNDBUF("%u Sending buffer became full!! snd_wnd: %u\n", 
				cur_stream->id, sndvar->snd_wnd);
	}

	return ret;
}