• src/sbbs3/scfglib1.c

    From rswindell@VERT to CVS commit on Sun May 24 01:27:22 2020
    src/sbbs3 scfglib1.c 1.84 1.85
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/home/rswindell/sbbs/src/sbbs3

    Modified Files:
    scfglib1.c
    Log Message:
    Eliminated unused variable: scfgnulstr



    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to sbbs/master on Sun Aug 23 14:58:54 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/2516fbca45916c4e59431e26
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    Default to a sensible text directory setting if blank in node.cnf

    Also replaced some unsafe str function calls with safe(r) ones.

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to sbbs/master on Sun Aug 23 16:09:19 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/6b74a4a934c089505aa34852
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    Merge branch 'master' of gitlab.synchro.net:sbbs/sbbs

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to sbbs/master on Mon Sep 7 20:25:26 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/8b968e36a68de3bfba9180a6
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    We actually no longer create files in data/user/ptrs, so don't create.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to sbbs/master on Wed Nov 11 01:08:49 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/a05d497ca87075860904f160
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    Fix bug in mlong's prextrn mod enhancement

    Caused error:
    exec.cpp line 805 (sbbs_t::exec_bin) opening "s:\sbbs\exec\ÿÿÿÿÿÿÿÿ.bin" access=0
    As reported by Nelgin via IRC at 3AM Texas-time.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on macOS)@VERT to Git commit to main/sbbs/master on Sun Mar 9 22:57:35 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/7f769de4ee6fc3804410d528
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    Better config (.ini) file read error detection and reporting

    It was possibly before for fgets() failures to be pretty hard to diagnose.

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Dec 29 16:28:43 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/234c37d88a5564fec9324fa5
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    Make the default user_prompts and usercfg modules point to stock scripts

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sat May 2 16:42:49 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/cbcb74574ca2a92b1e99def4
    Modified Files:
    src/sbbs3/scfglib1.c
    Log Message:
    sbbs3 make_data_dirs(): faster startup directory verification

    On systems with many file directories (Vertrauen has thousands), the "Verifying/creating data directories" startup phase took ~8 seconds
    because each entry triggered serial stat()/mkdir() syscalls.

    Three changes drop that to ~2 seconds (4x speedup):

    1. Dedup. Most cfg->dir[i]->data_dir values default to <data_dir>dirs
    (load_cfg.c:308), which make_data_dirs() already creates near the
    top of the function. Seed a str_list with that path and skip
    md_fast() in the per-dir loop when the value matches. The seed is
    only pushed on successful creation — failure causes the loop to
    retry per entry rather than skip silently.

    2. mkdir-first via a new file-static md_fast(). md() does
    isdir()+stat() before mkpath, which on Windows fetches file
    attributes and trips Defender's "file opened" introspection.
    md_fast() issues a single MKDIR() and trusts EEXIST without
    re-stat'ing, falling back to md() only when the parent component
    is missing or an unexpected errno surfaces. The tradeoff is that
    a non-directory file at one of these paths won't be diagnosed at
    startup; the BBS reports it later when something tries to open
    files inside it. Public md() is unchanged so other callers keep
    their stricter contract.

    3. trim_trailing_slash() helper shared between md_fast() and the
    loop's cache-key computation, so the canonicalization lives in
    one place.

    Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

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