• text/menu/boolsrch.msgctrl/text.dat src/sbbs3/prntfile.cpp readmail.cp

    From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Sun May 17 18:45:24 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/76dba467f3e2f89c579797cd
    Added Files:
    text/menu/boolsrch.msg
    Modified Files:
    ctrl/text.dat src/sbbs3/prntfile.cpp readmail.cpp readmsgs.cpp sbbs.h scandirs.cpp scansubs.cpp text_defaults.c
    Log Message:
    boolsrch: add inline help via '?' at search prompts

    Sysops asked for a user-discoverable way to learn the boolean-search
    syntax. Now: at any boolean-search prompt, entering a lone '?' displays text/menu/boolsrch.msg (a one-screen quick reference covering the
    operators, quoted whole-word match, grouping, and a few worked
    examples), then re-prompts for the search query. Any other input is
    treated as a normal query.

    SearchStringPrompt: "Text to search for (?=help): " — the prompt
    itself now hints at the binding so the help path is discoverable
    without needing to read the docs first.

    sbbs_t::get_search_string(buf, maxlen, kmode) wraps the
    bputs(SearchStringPrompt) / getstr() / strcmp(buf, "?") / menu()
    loop so the six call sites that prompt for a boolean query don't
    each have to reimplement it:

    scansubs.cpp (2 sites - single sub, group/all)
    scandirs.cpp (2 sites - single dir, group/all)
    readmsgs.cpp ('F' rebind inside the message read loop)
    readmail.cpp ('/' search at the mail-read prompt)

    Also caught a stale getstr(str, 40, ...) in scandirs.cpp:64 that
    the earlier buffer-size pass missed; now uses the helper's 120-byte
    cap like every other call site.

    The file-pager '/' sub-prompt (P_SEEK in prntfile.cpp) intentionally
    does NOT use the helper - displaying the help menu mid-pager would
    scroll the screen and break the 'stay in place' invariant. The pager
    already has its own '?' binding (SeekHelp) for in-pager help, and
    its search sub-prompt continues to treat '?' as a literal character.

    text.dat record 076 (SearchStringPrompt) updated; textgen regenerated text_defaults.c. No new enum, so text.h / text_id.c / text.js are
    unchanged.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)