コード例 #1
0
ファイル: spair.c プロジェクト: daersc/spair
static void
pair_roundrobin(void)
{
	Player *list = NULL, *lptr = NULL;
	Round  *hist = NULL, *rptr = NULL;
	char   *buffer = NULL;
	size_t buflen  = 0;
	unsigned int i;
	while (getline(&buffer, &buflen, stdin) != -1) {
		Player *player = malloc(sizeof(Player));
		size_t pos;
		if (!player) {
			perror(_("Could not allocate memory for player"));
			goto cleanup;
		}
		for (pos = 0; pos < buflen; pos++) {
			if (buffer[pos] == '\n') {
				buffer[pos] = '\0';
				break;
			}
		}
		player->next = NULL;
		player->name = malloc(sizeof(char) * (strlen(buffer)+1));
		if (!player->name) {
			perror(_("Could not allocate memory for player's name"));
			free(player);
			goto cleanup;
		}
		strcpy(player->name, buffer);
		if (lptr) lptr->next = player;
		else list = player;
		lptr = player;
	}

	hist = rptr = roundrobin(list);
	i = 1;
	while (rptr) {
		Pairing *pptr = rptr->pairings;
		printf(i==1 ? "%s %u\n" : "\n%s %u\n", _("Round"), i);
		while (pptr) {
			printf(" %20s : %-20s\n", pptr->white ? pptr->white->name : _("<bye>"),
			                          pptr->black ? pptr->black->name : _("<bye>"));
			pptr = pptr->next;
		}
		rptr = rptr->next;
		i++;
	}

	cleanup:
	free(buffer);
	free_players(list);
	free_rounds(hist);
}
コード例 #2
0
ファイル: formula_cmd.c プロジェクト: Ceiu/hyperspace-asss
EXPORT int MM_formula_cmd(int action, Imodman *mm_, Arena *arena)
{
	if (action == MM_LOAD)
	{
		mm = mm_;
		lm = mm->GetInterface(I_LOGMAN, ALLARENAS);
		cmd = mm->GetInterface(I_CMDMAN, ALLARENAS);
		pd = mm->GetInterface(I_PLAYERDATA, ALLARENAS);
		chat = mm->GetInterface(I_CHAT, ALLARENAS);
		formula = mm->GetInterface(I_FORMULA, ALLARENAS);
		cfg = mm->GetInterface(I_CONFIG, ALLARENAS);

		if (!lm || !cmd || !pd || !chat || !formula || !cfg)
			return MM_FAIL;

		pdata_key = pd->AllocatePlayerData(sizeof(PData));
		if (pdata_key == -1)
			return MM_FAIL;

		mm->RegCallback(CB_PLAYERACTION, player_action, ALLARENAS);

		init_players();

		cmd->AddCommand("formula", Cformula, ALLARENAS, formula_help);
		cmd->AddCommand("unset", Cunset, ALLARENAS, unset_help);
		cmd->AddCommand("vars", Cvars, ALLARENAS, vars_help);

		return MM_OK;
	}
	else if (action == MM_UNLOAD)
	{
		cmd->RemoveCommand("formula", Cformula, ALLARENAS);
		cmd->RemoveCommand("unset", Cunset, ALLARENAS);
		cmd->RemoveCommand("vars", Cvars, ALLARENAS);

		mm->UnregCallback(CB_PLAYERACTION, player_action, ALLARENAS);

		free_players();

		pd->FreePlayerData(pdata_key);

		mm->ReleaseInterface(lm);
		mm->ReleaseInterface(cmd);
		mm->ReleaseInterface(pd);
		mm->ReleaseInterface(chat);
		mm->ReleaseInterface(formula);
		mm->ReleaseInterface(cfg);

		return MM_OK;
	}
	return MM_FAIL;
}
コード例 #3
0
ファイル: spair.c プロジェクト: daersc/spair
static void
print_pairing_table(unsigned int count)
{
	Player *list = NULL, *lptr = NULL;
	Round  *hist = NULL, *rptr = NULL;
	char   buffer[32];
	unsigned int i;
	for (i=1; i<=count; i++) {
		Player *player = malloc(sizeof(Player));
		if (!player) {
			perror(_("Could not allocate memory for player"));
			goto cleanup;
		}
		sprintf(buffer, "%u", i);
		player->next = NULL;
		player->name = malloc(sizeof(char)*(strlen(buffer)+1));
		if (!player->name) {
			perror(_("Could not allocate memory for player's name"));
			free(player);
			goto cleanup;
		}
		strcpy(player->name, buffer);
		if (lptr) lptr->next = player;
		else list = player;
		lptr = player;
	}

	hist = rptr = roundrobin(list);
	i = 1;
	while (rptr) {
		Pairing *pptr = rptr->pairings;
		printf("%s %u:", _("Round"), i);
		while (pptr) {
			printf("\t%s-%s", pptr->white ? pptr->white->name : "/",
			                 pptr->black ? pptr->black->name : "/");
			pptr = pptr->next;
		}
		printf("\n");
		rptr = rptr->next;
		i++;
	}

	cleanup:
	free_players(list);
	free_rounds(hist);
}
コード例 #4
0
ファイル: end_zappy.c プロジェクト: feldma/Zappy
void		free_zappy()
{
  int		i;
  int		j;

  i = 0;
  if (g_zappy->team_name)
    free(g_zappy->team_name);
  while (g_zappy->map && i < g_zappy->height && g_zappy->map[i])
    {
      j = 0;
      while (j < g_zappy->width)
	free_list_no_free_data(g_zappy->map[i][j++].players);
      free(g_zappy->map[i++]);
    }
  if (g_zappy->map)
    free(g_zappy->map);
  free_players(g_zappy->players);
  close(g_zappy->fd);
  if (g_zappy->log)
    fclose(g_zappy->log);
}
コード例 #5
0
ファイル: scrabble_logic.c プロジェクト: happyniss/scrabble-c
void free_turn(turn *t) {
  free_players(t->p1);
  free((void *) t);
}