--- a/src/chess/pgn.c Fri May 22 18:34:02 2026 +0200 +++ b/src/chess/pgn.c Tue May 26 15:21:42 2026 +0200 @@ -250,6 +250,11 @@ return date; } +const char *pgn_player_name(GameState *gamestate, uint8_t color) { + const char *name = color == WHITE ? gamestate->wname : gamestate->bname; + return name[0] != '\0' ? name : "Anonymous"; +} + void write_pgn(FILE* stream, GameState *gamestate, GameInfo *gameinfo, bool export_comments) { /* STR tag pairs */ @@ -257,9 +262,8 @@ fprintf(stream, "[Site \"%s\"]\n", "Somewhere on Earth"); fprintf(stream, "[Date \"%s\"]\n", pgn_date(gamestate)); fprintf(stream, "[Round \"%s\"]\n", "-"); - // TODO: maybe allow players to enter their names before game starts - fprintf(stream, "[White \"%s\"]\n", "Anonymous"); - fprintf(stream, "[Black \"%s\"]\n", "Anonymous"); + fprintf(stream, "[White \"%s\"]\n", pgn_player_name(gamestate, WHITE)); + fprintf(stream, "[Black \"%s\"]\n", pgn_player_name(gamestate, BLACK)); char *result; if (gamestate->stalemate || gamestate->remis) {