• src/sbbs3/js_file.c

    From rswindell@1:103/705 to CVS commit on Mon Apr 2 15:37:56 2018
    src/sbbs3 js_file.c 1.170 1.171
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv11679

    Modified Files:
    js_file.c
    Log Message:
    The 'e' (exclusive-open) mode flag (introduced in v3.12) never worked. It was simply ignored when converted to the underlying open mode passed to sopen(). Deprecate this flag and log a warning when it is detected as used in a script: Deprecated open flag used: 'e'
    Added 'x' (exclsuive-open) mode flag which:
    1. was tested to work as intended
    2. is consistent with the C11 standard for fopen() mode flags
    3. won't cause existing scripts to suddenly break

    --- SBBSecho 3.04-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Mon Apr 2 16:22:57 2018
    src/sbbs3 js_file.c 1.171 1.172
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv14685

    Modified Files:
    js_file.c
    Log Message:
    Updated JS warning when using old/deprecated file open mode 'e':
    "Deprecated file open mode: 'e'"
    If this is your script generating this warning, either remove the 'e' from
    the File open() mode string (it had no effect anyway) or change to 'x' to
    get the real/working exclusive-open functionality (added in v3.17).


    --- SBBSecho 3.04-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Tue Aug 28 14:47:10 2018
    src/sbbs3 js_file.c 1.172 1.173
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv16344

    Modified Files:
    js_file.c
    Log Message:
    New File properties to change .ini file style attributes:
    - ini_key_len
    - ini_key_prefix
    - ini_section_separator
    - ini_value_separator
    - ini_bit_separator
    - ini_literal_separator


    --- SBBSecho 3.06-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Tue Aug 28 15:47:26 2018
    src/sbbs3 js_file.c 1.173 1.174
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/home/rswindell/sbbs/src/sbbs3

    Modified Files:
    js_file.c
    Log Message:
    Fix a number of problems in the previous commit (ini styles).
    Also, the File() constructor will now properly complain if no filename
    is passed.


    --- SBBSecho 3.06-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Wed Jan 9 02:54:45 2019
    src/sbbs3 js_file.c 1.174 1.175
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv20725

    Modified Files:
    js_file.c
    Log Message:
    Updated JSDOCS descriptions of File.ini methods.


    --- SBBSecho 3.06-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Thu Jan 10 03:51:00 2019
    src/sbbs3 js_file.c 1.175 1.176
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/home/rswindell/jsdocs/src/sbbs3

    Modified Files:
    js_file.c
    Log Message:
    Fix JSDOCS_BUILD issue introduced in previous commit.


    --- SBBSecho 3.06-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Sun Mar 24 01:55:39 2019
    src/sbbs3 js_file.c 1.177 1.178
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv24534

    Modified Files:
    js_file.c
    Log Message:
    Updated JS doc strings.

    --- SBBSecho 3.07-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Sun Jul 14 20:35:45 2019
    src/sbbs3 js_file.c 1.180 1.181
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv2257

    Modified Files:
    js_file.c
    Log Message:
    Fix long-standing issue with File.attributes on Windows: the value *read*
    was based on _finddata_t.attrib value while the value *written* was based on struct stat.st_mode, and totally incompatible.
    Just use the stat/chmod compatible value for both read and write (for all OSes). If you need the old Windows-centric attribute values (e.g. to determine "hidden" or "archive" attributes), use file_attrib() instead.


    --- SBBSecho 3.07-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Wed Jul 17 20:14:48 2019
    src/sbbs3 js_file.c 1.181 1.182
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv18853

    Modified Files:
    js_file.c
    Log Message:
    Bug in JSDOCS: File.iniSetAllObjects returns a Boolean, not an Array.

    --- SBBSecho 3.07-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Thu Aug 15 11:34:04 2019
    src/sbbs3 js_file.c 1.182 1.183
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv6042

    Modified Files:
    js_file.c
    Log Message:
    Fix "off-by-one" error in File.readln() and readAll() with regards to the 'maxlen' argument. E.g. passing 10 would result in a maximum read string length of 9 characters.


    --- SBBSecho 3.08-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Tue Aug 20 19:28:01 2019
    src/sbbs3 js_file.c 1.183 1.184
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv21798

    Modified Files:
    js_file.c
    Log Message:
    Fix potential double-close() call in File.open() method implementation:
    if fdopen() failed, we'd close the file descriptor but leave it dangling with
    a >= 0 value and then call close() again on it later in the function.


    --- SBBSecho 3.08-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Wed Aug 21 11:32:34 2019
    src/sbbs3 js_file.c 1.184 1.185
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv20572

    Modified Files:
    js_file.c
    Log Message:
    Report a JS warning, with details, when fdopen() fails.


    --- SBBSecho 3.08-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From deuce@1:103/705 to CVS commit on Tue Aug 27 09:47:58 2019
    src/sbbs3 js_file.c 1.185 1.186
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv11820

    Modified Files:
    js_file.c
    Log Message:
    Actually honour File.network_byte_order.



    --- SBBSecho 3.09-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Wed Sep 18 23:03:53 2019
    src/sbbs3 js_file.c 1.186 1.187
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv17577

    Modified Files:
    js_file.c
    Log Message:
    Address some debug-log output issues with the File object:
    "4294967295 File closed"
    "0000 File closed: /path/to/file"


    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Wed Sep 18 23:49:02 2019
    src/sbbs3 js_file.c 1.187 1.188
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv27489

    Modified Files:
    js_file.c
    Log Message:
    Don't leak FILE streams for calls to js_CreateFileObject(), setting external
    to TRUE meant the FILE* (created with fdopen) would never be closed. So we now duplicate the file descriptor and get rid of the external flag, always closing Files (FILE streams) upon File object finalize.
    This fixes the resource leak leading to the eventual "Error 24 opening ..." in the ircd.js when loaded via jsexec, on Windows. This error happened after
    169 calls to load(true,...), because each background load creates 3 Files
    (for stdin/out/err) and those FILE streams were never closed/freed, and
    169 * 3 = 507, plus a few open files = 512, the maximum number of open file streams in the Microsoft CRTL apparently. Thanks to Deuce for recognizing these numbers as "magic" and pointing to the likely cause.


    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From deuce@1:103/705 to CVS commit on Wed Sep 18 23:54:49 2019
    src/sbbs3 js_file.c 1.188 1.189
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv29285

    Modified Files:
    js_file.c
    Log Message:
    Even more leak paranoia...
    If dup() fails, return NULL
    If callog() fails, fclose() the new FILE*
    No functional change (hopefully).



    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Sun Apr 5 22:21:02 2020
    src/sbbs3 js_file.c 1.190 1.191
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv9740

    Modified Files:
    js_file.c
    Log Message:
    Don't try to convert null or undefined arguments to integers.
    Moved some dbprintf() lines around a bit.

    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Mon Apr 6 18:31:21 2020
    src/sbbs3 js_file.c 1.191 1.192
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv15683

    Modified Files:
    js_file.c
    Log Message:
    Special handling of negative numbers in the writeBin() method implementation. JS numbers are double-precision floating points (doubles) and doubles cannot
    be converted to unsigned integers uniformly across all architectures (e.g. specifically on ARM, negative numbers would mostly get converted to 0U).

    For details, see https://www.embeddeduse.com/2013/08/25/casting-a-negative-float-to-an-unsigned-int/

    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Sat Apr 11 19:25:31 2020
    src/sbbs3 js_file.c 1.192 1.193
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv18066

    Modified Files:
    js_file.c
    Log Message:
    Added optional "lowercase" argument to File.iniGetObject() and iniGetAllObjects() to sort of "normalize" the key names into easily-useable (and consistent) JavaScript property names.

    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Sun Apr 12 00:27:25 2020
    src/sbbs3 js_file.c 1.193 1.194
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv428

    Modified Files:
    js_file.c
    Log Message:
    Restore the previous behavior of File.iniGetObject(null), even though not documented (it says if the section is *undefined*, the root section is read)

    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Sun Apr 12 00:58:01 2020
    src/sbbs3 js_file.c 1.194 1.195
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv4839

    Modified Files:
    js_file.c
    Log Message:
    Document the iniGetObject(null) behavior.

    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From rswindell@1:103/705 to CVS commit on Thu Apr 16 22:37:14 2020
    src/sbbs3 js_file.c 1.195 1.196
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv894

    Modified Files:
    js_file.c
    Log Message:
    Update to File.iniGetAllObjects(): read the .ini file all in one go using iniReadFile():
    - enables the use of the !include directive in the read .in file
    - reduces rewinds/re-reads of the .ini file, speeding up the total operation

    I also removed the old crash dump comments from here.

    --- SBBSecho 3.10-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to sbbs/master on Fri Nov 13 13:55:10 2020
    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 stringsIf 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.
    --- SBBSecho 3.11-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sun Jan 3 14:16:24 2021
    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)
    --- SBBSecho 3.12-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sun Jan 24 13:52:29 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/8fdbb1692b8ad6c1959f8f3e
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    More support for !include in .ini filesSome (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()
    --- SBBSecho 3.12-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deuce@1:103/705 to Git commit to main/sbbs/master on Mon Jan 25 17:05:31 2021
    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.
    --- SBBSecho 3.12-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deuce@1:103/705 to Git commit to main/sbbs/master on Tue Jan 26 10:19:30 2021
    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()
    --- SBBSecho 3.12-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Thu Mar 4 17:05:54 2021
    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_01This provides the best chance at read_raw() reading from the rightlocation and updating the file pointer as expected while avoidingbehaviour which is explicitly undefined by POSIX.
    --- SBBSecho 3.13-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sun Apr 4 13:38:22 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/895d9cb37640d08e30a94ecc
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    printf usage issue caught by Coverity.
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sun Apr 4 15:13:57 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/9e69e9b8e9f3e2709d7dbf4f
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix some printf argument typesCID 319023 319065 319134
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Thu Apr 22 20:22:12 2021
    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 propertiesThis resolves errors when setting these properties to values > 2147483647example:!JavaScript /sbbs/exec/load/sauce_lib.js line 69: Error: can't convert2430770157 to an integerThat means you can now seek around (set position) within files > 2GB, truncateor extend a file > 2GB, or set a file's date to > Jan-19-2038.
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Thu Dec 30 14:31:31 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/977b5cab754b783e5b12217b
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    A few minor JSDOC fixes.
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sat Jan 1 23:58:45 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/80020e4d5e82682275fc684f
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Document the new SHA1-related File properties.
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sun Jan 2 15:58:28 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/a2a9dc027839f4faf19692b3
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Need to escape backslashes in JSDOC strings
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Tue Mar 1 22:43:08 2022
    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
    --- SBBSecho 3.15-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Wed Mar 2 10:07:45 2022
    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
    --- SBBSecho 3.15-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Sat Jun 25 15:20:45 2022
    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
    --- SBBSecho 3.15-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Mon Jan 16 20:41:25 2023
    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 specifiedprefix.
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (in GitKraken)@1:103/705 to Git commit to main/sbbs/master on Tue Mar 14 21:25:14 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/1f86e81c78290852da97a86d
    Modified Files:
    src/sbbs3/js_file.c
    Log Message:
    Fix JSDOC typo
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Deucе@1:103/705 to Git commit to main/sbbs/master on Sun Mar 24 15:41:49 2024
    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.
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)