• src/sbbs3/js_file.c

    From Rob Swindell@VERT to Git commit to sbbs/master on Friday, November 13, 2020 13:55:10
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/1af02470226933aa5f04a0f7
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    JS File.iniGetObject() and .iniGetAllObjects() now support blank strings

    If an .ini file is read by either the iniGetObject() or iniGetAllObjects() methods and contains a key with a blank value, that property would be created with an "undefined" value.

    Both the iniGetObject() and iniGetAllObjects() methods now accept an additional Boolean argument (which defaults to false), to specify that "blanks" are acceptable. When the "blanks" argument is true, then keys with empty values in the .ini file are created as properties with empty string values (length of 0).

    This is going to be useful for modopts.js to read potentially-blank strings from modopts.ini and differentiate between a blank string key and a missing key.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sunday, January 03, 2021 14:16:24
    https://gitlab.synchro.net/main/sbbs/-/commit/3005a5a93e57cd0f9250c319
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix File.crc32 property value on 64-bit systems (ulong is > 32-bits)

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sunday, January 24, 2021 13:52:29
    https://gitlab.synchro.net/main/sbbs/-/commit/8fdbb1692b8ad6c1959f8f3e
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    More support for !include in .ini files

    Some (important) File methods did not support .ini files that used the !include directive because they were using the xpdev iniRead* API (which performs no "pre-processing") instead of xpdev iniGet*.

    Impacted methods:
    - iniGetValue()
    - iniGetKeys()
    - iniGetObject()

    The other existing ini* methods already worked fine with nested (!include'd) .ini files. It's possible there's a slight performance penalty with the new implementation since the entire .ini file is always read for each operation and previously it was possible that only a few "lines" were read to find the key(s) of interest. However, since .ini files are not typically huge and the iniRead/file-stream method likely read large (e.g. 8-32K) blocks anyway (which is usually the entire .ini file) - I don't actually suspect any observable impact to performance.

    This change was needed for the new ctrl/modopts.d support.

    Added new method useful for debugging nested .ini files:
    - iniReadAll()

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuce@VERT to Git commit to main/sbbs/master on Monday, January 25, 2021 17:05:31
    https://gitlab.synchro.net/main/sbbs/-/commit/fb00000af4c304a5d3118bd3
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Don't throw an exception when setting or getting class properties.

    Doing so prevents extending the prototype.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuce@VERT to Git commit to main/sbbs/master on Tuesday, January 26, 2021 10:19:30
    https://gitlab.synchro.net/main/sbbs/-/commit/24a9a7d9215fe80ee6b766ee
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix error in previous commit that switch to GetInstancePrivate()

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Thursday, March 04, 2021 17:05:54
    https://gitlab.synchro.net/main/sbbs/-/commit/67c4ed071971b1428a300480
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Implement POSIX requirements for FD/Stream interactions.

    Documented here: https://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_05.html#tag_02_05_01
    This provides the best chance at read_raw() reading from the right
    location and updating the file pointer as expected while avoiding
    behaviour which is explicitly undefined by POSIX.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sunday, April 04, 2021 13:38:22
    https://gitlab.synchro.net/main/sbbs/-/commit/895d9cb37640d08e30a94ecc
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    printf usage issue caught by Coverity.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sunday, April 04, 2021 15:13:57
    https://gitlab.synchro.net/main/sbbs/-/commit/9e69e9b8e9f3e2709d7dbf4f
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix some printf argument types

    CID 319023 319065 319134

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thursday, April 22, 2021 20:22:12
    https://gitlab.synchro.net/main/sbbs/-/commit/8f79438d2ca277e2c8a25a24
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Use JS_ValueToECMAUint32 for File position, date, and length properties

    This resolves errors when setting these properties to values > 2147483647 example:
    !JavaScript /sbbs/exec/load/sauce_lib.js line 69: Error: can't convert 2430770157 to an integer

    That means you can now seek around (set position) within files > 2GB, truncate or extend a file > 2GB, or set a file's date to > Jan-19-2038.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thursday, December 30, 2021 14:31:31
    https://gitlab.synchro.net/main/sbbs/-/commit/977b5cab754b783e5b12217b
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    A few minor JSDOC fixes.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Saturday, January 01, 2022 23:58:45
    https://gitlab.synchro.net/main/sbbs/-/commit/80020e4d5e82682275fc684f
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Document the new SHA1-related File properties.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sunday, January 02, 2022 15:58:28
    https://gitlab.synchro.net/main/sbbs/-/commit/a2a9dc027839f4faf19692b3
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Need to escape backslashes in JSDOC strings

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Tuesday, March 01, 2022 22:43:08
    https://gitlab.synchro.net/main/sbbs/-/commit/77b90b5f5cb9633128efdf9d
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Zero-init write buffer in js_writebin()

    CID 350276

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Wednesday, March 02, 2022 10:07:45
    https://gitlab.synchro.net/main/sbbs/-/commit/c920d0da9c8a9ebdcc6c94ac
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix possible negative offset to lseek()

    CID 327965

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Saturday, June 25, 2022 15:20:45
    https://gitlab.synchro.net/main/sbbs/-/commit/c5ad7fc5c635cdc4db13df51
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Add support for reading/writing 8-byte (64-bit) integers in binary files

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Monday, January 16, 2023 20:41:25
    https://gitlab.synchro.net/main/sbbs/-/commit/d797b759823692f607962bf8
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Add File method: iniRemoveSections()

    to remove all sections in an .ini file or all sections with a specified
    prefix.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Tuesday, March 14, 2023 21:25:14
    https://gitlab.synchro.net/main/sbbs/-/commit/1f86e81c78290852da97a86d
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix JSDOC typo

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sunday, March 24, 2024 15:41:49
    https://gitlab.synchro.net/main/sbbs/-/commit/fb957d1d8844368b19fb5b16
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Increase size of file mode string so it's not 4 bytes.

    4-bytes is how bit a 32-bit pointer is.

    ---
    þ 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 Saturday, May 25, 2024 14:28:35
    https://gitlab.synchro.net/main/sbbs/-/commit/7dcfa20fe2f1ce9eb52a3ba1
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Don't convert/store small integers to doubles when reading/writing .ini files

    Fix issue #760

    UINT_TO_JSVAL automatically handles the storage as the necsesary underlying type in the JS engine.

    Values > 0x7fffffff (2147483647) will still be stored (and re-written) as doubles and could be problematic.

    ---
    þ 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 Friday, September 13, 2024 20:08:11
    https://gitlab.synchro.net/main/sbbs/-/commit/105627890fa49ca6a6198408
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Eliminte weird gcc (12.2) warning in release build (only)

    Increasing size of mode[] element by 2 bytes eliminated these GCC warnings
    that seem like false-positives to me:

    sbbs.h:194:48: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
    194 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \
    | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    js_file.c:225:25: note: in expansion of macro `JSSTRING_TO_STRBUF'
    225 | JSSTRING_TO_STRBUF(cx, str, p->mode, sizeof(p->mode), NULL);
    | ^~~~~~~~~~~~~~~~~~
    js_file.c:42:17: note: at offset 5 into destination object `mode' of size 5
    42 | char mode[5];
    | ^~~~

    Similar use of JSSTRING_TO_STRBUF in other files (js_console.cpp, js_archive.c) (with larger target buffers) does not trigger the same warnings.

    ---
    þ 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 Saturday, September 21, 2024 13:08:41
    https://gitlab.synchro.net/main/sbbs/-/commit/6ba59a06b546c1ed0e3b2b8b
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Add missing NULL pointer check to js_iniReadAll()

    iniReadFile() can return NULL upon file read error or malloc error. Let's not crash if that happens.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tuesday, October 01, 2024 00:11:39
    https://gitlab.synchro.net/main/sbbs/-/commit/5e1087e457db2b41dab45deb
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    File.read() encodes base64, it doesn't decode.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sunday, January 26, 2025 22:45:40
    https://gitlab.synchro.net/main/sbbs/-/commit/b580def0507913d01bd70cea
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix spurious call to JS_THIS_OBJECT()

    This appears to be why valgrind on FreeBSD was failing.
    You can't actually call this in a constructor because creating
    this is the whole point of calling it.

    ---
    þ 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 Monday, February 10, 2025 20:43:13
    https://gitlab.synchro.net/main/sbbs/-/commit/d474410052e6d6022d2b3af4
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Use iniGetSectionList() instead of iniReadSectionList()

    ... in File.iniGetSections() method

    because iniReadSectionList() doesn't recognize !include directives.

    This fixes issue #871 whereby modopts.js couldn't find sections in modopts.d/*.ini files.

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