int main(int argc, char **argv) { FILE *file; char name[MAX_NAME_LENGTH], clan[MAX_NAME_LENGTH]; struct player_array array = PLAYER_ARRAY_ZERO; unsigned i; load_config(); if (argc != 2) { fprintf(stderr, "usage: %s <clan_name>\n", argv[0]); return EXIT_FAILURE; } /* Load players */ sprintf(path, "%s/clans/%s", config.root, argv[1]); if (!(file = fopen(path, "r"))) return perror(path), EXIT_FAILURE; while (fscanf(file, " %s", name) == 1) { struct player player; if (!read_player(&player, name)) strcpy(player.clan, argv[1]); add_player(&array, &player); } fclose(file); /* Sort players */ qsort(array.players, array.length, sizeof(*array.players), cmp_player); /* Eventually, print them */ hex_to_string(argv[1], clan); print_header(&CTF_TAB, clan, NULL); printf("<h2>%s</h2>\n", clan); printf("<p>%u member(s)</p>\n", array.length); printf("<table><thead><tr><th></th><th>Name</th><th>Clan</th><th>Score</th></tr></thead>\n<tbody>\n"); for (i = 0; i < array.length; i++) html_print_player(&array.players[i], 0); printf("</tbody></table>\n"); print_footer(); return EXIT_SUCCESS; }
int main(int argc, char **argv) { struct list list = LIST_ZERO; size_t length; load_config(); if (argc != 2) { fprintf(stderr, "usage: %s <query>\n", argv[0]); return EXIT_FAILURE; } /* No need to search when the query is too long or empty */ length = strlen(argv[1]); if (length > 0 && length < NAME_LENGTH) search(argv[1], &list); CUSTOM_TAB.name = "Search results"; CUSTOM_TAB.href = ""; html_header(&CUSTOM_TAB, "Search results", argv[1]); if (list.length == 0) { printf("No players found"); } else { struct result *result; printf("<table><thead><tr><th></th><th>Name</th><th>Clan</th><th>Score</th></tr></thead><tbody>\n"); for (result = list.first; result; result = result->next) { if (!result->is_loaded) read_player(&result->player, result->name); html_print_player(&result->player, 1); } printf("</tbody></table>\n"); } html_footer(); return EXIT_SUCCESS; }