Skip to content
Snippets Groups Projects
  1. Feb 25, 2023
  2. Feb 23, 2023
  3. Feb 22, 2023
    • Rob Swindell's avatar
      Use the new UIFC input mode flags to trim spaces where inappropriate · f5e58c70
      Rob Swindell authored
      from sysop input, automatically.
      f5e58c70
    • Rob Swindell's avatar
      Add uifcapi_t.kmode that can be used to set global key-input mode flags · 640c1355
      Rob Swindell authored
      e.g. this a way to set the K_TRIM mode globally for all keyboard input
      640c1355
    • Rob Swindell's avatar
      Add input K_TRIM and K_NOSPACE mode flags · 5e0d2ef7
      Rob Swindell authored
      K_TRIM causes leading and trailing whitespace to be trimmed.
      K_NOSPACE disallows any whitespace characters to be added to the string.
      
      Previously, trailing whitespace was always trimmed. Now, only do that
      if/when K_TRIM is specified.
      5e0d2ef7
    • Rob Swindell's avatar
      Fix corrupted RFC822 msg headers when a header field was > 1024 chars · b77a0ba6
      Rob Swindell authored
      When sending an SMB message header via SMTP or POP3, some header fields (lines) could potentially be longer than 1024 and yet sockprintf() was limited to sending 1024 bytes (actually 1022 plus CRLF). This could result in some messages not being sent correctly: header field truncated, not CRLR-terminated, and notably resulting in MIME message contents not being decoded properly in a message viewer/reader. Example (Content-Type is part of the previous header field/line):
      x-ms-exchange-antispam-messagedata-0:
       =?us-ascii?Q?cm9T1Q9G65VC/lKTTqhODKhy5lHT2y6WWMb/WyvJ+EeGEwYmY7ILhzE3yfNM?=
       =?us-ascii?Q?KeFWN9T/PqHBya1plKf/sHgaw0iRmI7Hq+u9Dp4bG8OqdniKQlK+Aa27oXMd?=
       =?us-ascii?Q?Hly6OEYaSu7jbhGGY89LF0gyRVqquqxkaMfpKvG+h4cQnnu4Tl8YAKeE39a2?=
       =?us-ascii?Q?lHW3372ulmb9jvvZU72J2RtZYkuoIr+Wsqhfyuj39wTZ/+C4qKCsYrmTxrki?=
       =?us-ascii?Q?fBZ4gMPzWkrcWAr7zPcXBg8bphJJB8VJFUjQyksA3EG4dtH8+TZeEcNNBmHf?=
       =?us-ascii?Q?oCGnV9wHr9HszzrSkkZ2GGyh3QZLHAVDNe7wDXSy7HJttZugf9kNqKGeaYQL?=
       =?us-ascii?Q?TpljH1aHPe7MiSP9Dmp/xHQ/DWQOZDx5guNS+iMciMt5p5ad+SkQye0hWRhd?=
       =?us-ascii?Q?usHvpllclzIee6lxJ0VSPAzHGlAOhtOolrHdDB2ODjvkEzU7L2Fj2f5x7p9q?=
       =?us-ascii?Q?9d6sUgSz7vZVx8yyR3KPq3jIX0QUnl0xr2Mix9xcmMNcg0yFLPcznqBdLVa8?=
       =?us-ascii?Q?IC7j0+8oy4BjYxr8Z3elxMC2JKq13gPYgR95cwm6hMDiZbMB4EW/J1uJhD/I?=
       =?us-ascii?Q?RIIqTZ+Ywt8nKOfXj6/a9Aauf0wN71QKKA+in7KY9oksIhkUGvWOrtJwkVDL?=
       =?us-ascii?Q?Q2UFrBBJyQHJgumj5Y+bG8FDk/55IfyV9XYEcsdLL4bCF+HX4QPHZCw4P+li?=
       =?us-ascii?Q?bRvN+UxOO8hgXVkgB1q8mNJ62yQuaj0AContent-Type: multipart/alternative;
      	boundary="_000_SN6PR07MB454477F4C32C66D48BA0B02187A09SN6PR07MB4544namp_"
      
      Solved by using asprintf() instead of snprintf() for dynamic string formatting and allocation in one go. Using realloc() to expand the buffer for the appended/required CRLF.
      b77a0ba6
  4. Feb 21, 2023
  5. Feb 20, 2023
    • Rob Swindell's avatar
      All loadable modules can now be configured as full command-lines · add79f03
      Rob Swindell authored
      Previously, many/most loadable modules were limited to just 8 chars,
      so while technically you could include a command-line option with a
      very short module name, now all modules can be configured with full
      (up to 63 char) command-lines.
      add79f03
    • Rob Swindell's avatar
      Fix warning about signed/unsigned compare · 3cca779f
      Rob Swindell authored
      3cca779f
    • Rob Swindell's avatar
      Fix (false pos?) warnings in use of JSVALUE_TO_ASTRING only in RELEASE builds · 90dc709d
      Rob Swindell authored
      using gcc version 12.2.0 (Debian 12.2.0-14), e.g.
      
      js_console.cpp: In function ‘JSBool js_handle_ctrlkey(JSContext*, uintN, jsval*)’:
      sbbs.h:230:56: warning: writing 8 bytes into a region of size 2 [-Wstringop-overflow=]
        230 |                                         (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \
            |                                         ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        670 |                 JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      In file included from sbbs.h:255:
      /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: destination object of size 2 allocated by ‘__builtin_alloca’
         77 | #define alloca(sz) __builtin_alloca(sz)
            |                    ~~~~~~~~~~~~~~~~^~~~
      sbbs.h:228:43: note: in expansion of macro ‘alloca’
        228 |                         if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \
            |                                           ^~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        670 |                 JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      sbbs.h:230:56: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
        230 |                                         (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \
            |                                         ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        670 |                 JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: at offset 2 into destination object of size 2 allocated by ‘__builtin_alloca’
         77 | #define alloca(sz) __builtin_alloca(sz)
            |                    ~~~~~~~~~~~~~~~~^~~~
      sbbs.h:228:43: note: in expansion of macro ‘alloca’
        228 |                         if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \
            |                                           ^~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        670 |                 JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: at offset 2 into destination object of size 2 allocated by ‘__builtin_alloca’
         77 | #define alloca(sz) __builtin_alloca(sz)
            |                    ~~~~~~~~~~~~~~~~^~~~
      sbbs.h:228:43: note: in expansion of macro ‘alloca’
        228 |                         if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \
            |                                           ^~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        670 |                 JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: at offset 2 into destination object of size [1, 2] allocated by ‘__builtin_alloca’
         77 | #define alloca(sz) __builtin_alloca(sz)
            |                    ~~~~~~~~~~~~~~~~^~~~
      sbbs.h:228:43: note: in expansion of macro ‘alloca’
        228 |                         if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \
            |                                           ^~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        670 |                 JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      sbbs.h:230:56: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
        230 |                                         (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \
            |                                         ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      90dc709d
    • Rob Swindell's avatar
      Fix insufficient 'mode' string length in init() method · 440bc585
      Rob Swindell authored
      Limited to 6 chars, yet some values are as long as 12 chars.
      
      Also, eliminates this warning from RELEASE builds (only) using gcc version
      12.2.0 (Debian 12.2.0-14):
      js_uifc.c: In function ‘js_uifc_init’:
      sbbs.h:230:56: warning: writing 8 bytes into a region of size 7 [-Wstringop-overflow=]
        230 |                                         (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \
            |                                         ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_uifc.c:609:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        609 |                 JSVALUE_TO_ASTRING(cx, argv[1], mode, 7, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      In file included from sbbs.h:255:
      /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:20: note: destination object of size 7 allocated by ‘__builtin_alloca’
         77 | #define alloca(sz) __builtin_alloca(sz)
            |                    ^~~~~~~~~~~~~~~~~~~~
      sbbs.h:228:43: note: in expansion of macro ‘alloca’
        228 |                         if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \
            |                                           ^~~~~~
      sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’
        242 |         JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \
            |         ^~~~~~~~~~~~~~~~~~~
      js_uifc.c:609:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’
        609 |                 JSVALUE_TO_ASTRING(cx, argv[1], mode, 7, NULL);
            |                 ^~~~~~~~~~~~~~~~~~
      440bc585
    • Rob Swindell's avatar
      Add an 'enabled' property for QWKnet hubs, defaults to true, part 2 · 51d4a1af
      Rob Swindell authored
      Missing part of yesterday's commit, whoops
      51d4a1af
    • Rob Swindell's avatar
      Add an 'enabled' property for QWKnet hubs, defaults to true · 4656c07c
      Rob Swindell authored
      Move the pack and unpack commands to an "Advanced" sub-menu since they
      are completely optional now.
      
      Set QWKhub 'VERT' to disabled by default in a new install.
      
      Fixes issue #506
      4656c07c
    • Rob Swindell's avatar
      Resolve GCC warning · d20d7fd0
      Rob Swindell authored
      warning: passing argument 1 of ‘ra’ discards ‘const’ qualifier from
      pointer target type
      d20d7fd0
    • Rob Swindell's avatar
      7d7f6d48
  6. Feb 19, 2023
  7. Feb 18, 2023
    • Rob Swindell's avatar
      Rework NetMail routing logic to handle point destinations better · 0e38cb0f
      Rob Swindell authored
      With this commmit, the logic is now:
      
      If the NetMail destination is a point and there's no linked-node for it
         and the boss node for this point is not one of our AKAs
         then route to the boss node (no linked-node match needed)
         if the boss node matches a linked-node with a route configuration
         then route to that configured route destination (2-levels of routing
         and thus 2 "Routing NetMail" msgs will be logged in this scenario)
      
      If the NetMail destination is a point and there is a linked-node for it
         then the netmail will not be routed
      		unless that linked node has a route configuration
      
      NetMail destined for non-points are treated the same as before this
      commit.
      
      No change in the routing of echomail for points.
      
      I think this change fixes issue #520 which can be traced back to commit
      7bd42e56 for poindexter FORTRAN (REALITY), 2 years ago almost to the
      day, where that change added point->boss routing, but only if the boss
      had a matching linked-node configuration (for both echomail and
      netmail).
      
      This commit also re-thinks commit ffe69b43 (for Alterego) which
      would not route a point netmail if any our local AKAs matched the
      destination address, igorining the point value. I think what was
      intended here (I coudln't locate the original enhancmenet request or
      issue), was to not route if a local AKA was the *boss* of the point.
      And with this commit, that's now how it now works.
      
      As before, "test results appreciated".
      0e38cb0f
    • Rob Swindell's avatar
      891cb0ee
    • Rob Swindell's avatar
    • Rob Swindell's avatar
Loading