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."); } }
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; }
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; }
/*----------------------------------------------------------------------------*/ 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; }