• src/doors/syncmoo1/hw_sbbs.c syncmoo1.h syncmoo1_config.c syncmoo1_doo

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jul 10 01:39:22 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7a51a27620ab77ecfc75e83d
    Modified Files:
    src/doors/syncmoo1/hw_sbbs.c syncmoo1.h syncmoo1_config.c syncmoo1_door.c
    Log Message:
    syncmoo1: name the emperor after the player, and stop littering temp files

    Three small things the door owed its players.

    The new-game "your name" prompt invented a random emperor name for everyone. 1oom already had the hook -- "-ngn <player> <name>" (game.c) writes game_opt_new.pdata[player-1].playername, and ui_new_game_name() only generates a name when that string is empty -- so the door appends the option to argv after its own sanitize pass and the player sees their BBS handle, still free
    to edit it. Truncated to 11 characters, which is what uiobj_read_str() lets that screen edit, rather than to EMPEROR_NAME_LEN's 15. Player 1 is the human in every path a door can reach: the standard new-game flow prompts PLAYER_0, -new's HUMANS defaults to 1, and the custom game's is-AI digits default to 111110.

    That makes the drop file's alias load-bearing for the first time, so settle
    who wins. DOOR32.SYS line 7 is the BBS's own statement of who the user is; -name exists for the drop-file-less dev path (-s<fd>). Until now both wrote g_alias in one left-to-right argv pass, so a trailing -name silently outranked the drop file -- it only ever behaved because the installer happened to put %f last. The drop file is now authoritative in either order. The guard is a flag set by read_door32(), not a test for an empty g_alias: a drop file with an empty line 7 is the BBS saying "no alias", not "help yourself".

    hw_mouse_set_xy() was an empty stub. 1oom calls it to drag its own hand cursor onto a widget it has focused -- we cannot move a remote terminal's physical pointer, but the game draws its cursor from an internal position that syncmoo1_input.c already feeds, so writing the same state teleports it. The hand now follows a menu hotkey instead of sitting wherever the mouse was left. (Arrow-key navigation still does not fire; uiobj's directional search never requests a warp here. Separate problem, separate fix.)

    Finally, the base config snapshot is read back into memory and its temp file deleted in the same breath, rather than at prune time. The prune runs from atexit(), and a player who drops carrier exits through sm_door_hangup()'s _exit(), which skips atexit entirely -- so every disconnected session, the common way a BBS door ends, left a ~3KB syncmoo1_base.tmp in that player's directory. Verified on both exit paths: nothing survives either.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net