- Dec 11, 2021
-
-
Eric Oulashin authored
menus to use DDLightbarMenu instead of SlyEdit's own lightbar code. This allowed the elimination of most of the rest of SlyEdit's own lightbar code, reducing the size of SlyEdit.js by about 40Kb. It also provides some consistency in behavior by using a common menu component. Also, to support some additional required behaviors by SlyEdit, added the following 'event' functions to the DDLightbarMenu class: ValidateSelectItem(pItemRetval): For validating that the user can select an item. Takes the item's return value, and returns a bool to indicate whether the item can be selected. OnItemSelect(pItemRetval, pSelected): A function that is called when an item is being selected (or de-selected, when multi-select is enabled). The parameters are the item's return value and a boolean to indicate whether the item was selected or de-selected. Also, added an explicit DoKeyDown() function to DDLightbarMenu to support scrolling the menu down when desired (special case for SlyEdit's quote selection window).
-
- Dec 10, 2021
-
-
Deucе authored
-
- Dec 08, 2021
-
-
Rob Swindell authored
dd_lightbar_menu: Made a fix (kludge?) to properly write menu items with the check character See merge request !127
-
Eric Oulashin authored
(multi-selected) in a borderless menu (vs. a menu with borders).
-
- Dec 07, 2021
-
-
Deucе authored
This was preventing cryptlib from working with socket descriptors over FD_SETSIZE despite being patched to use poll() to avoid the issue it's protecting against. May fix the various SSH/SSL internal error issues.
-
- Dec 06, 2021
-
-
Rob Swindell authored
This build is touchy and requires an explicit path to a Win10 SDK directory, so just disable by default for (for debug build). We still want this built by default for CI, which are release builds.
-
Rob Swindell authored
Don't treat CRYPT_ERROR_COMPLETE (-24) as a socket error during upload since it's an indication that the remote closed the connection and is the normal "end of file/transfer" indicator, not an error. 'rd' is already 0 in this case, so no need to set at all (since recv() returns 0 upon disconnect and that's what we're emulating here). Fixes issue #309 reported by Jas Hud.
-
Rob Swindell authored
While debugging a SyncTERM upload issue, I came across some scenarios where an out of control file transfer could not be aborted via local key press (e.g. Ctrl-C, Ctrl-Break). We use zm.local_abort for all local abort indications (even for X/YMODEM). <shrug>
-
- Dec 03, 2021
-
-
Rob Swindell authored
Regenerated for MSVC2019, the Synchronet virtual UART/FOSSIL driver (VDD) can be built from Visual Studio again (the makevdd.bat can probably go away now). I haven't had an MSVC project to build this DLL since the old MSVC 6.0 sbbsexec.dsp file. A few oddities about this project: 1. xpdev files had to directly included/compiled in this project rather than linking with the xpdev_mt.lib because __stdcall calling convention is required for compatibility with ntvdm.lib and xpdev_mt.lib is built using __cdecl calling convention (the default). Rather than re-introducing the calling convention game-playing that I just recently removed (e.g. #define DLLCALL), just build the required xpdev files directly as part of this project. Perhaps there is a more elegant solution that I'll revisit later. 2. The absolute path of my install Windows 10 SDK directories had to be specified (for include and library paths) to find vdd_svc.h and ntvdm.lib. Weird thing is that I didn't have to do anything hacky like this with the command-line/batch file build method. Again, there's probably a better solution I'm not seeing. But as is, this project might not build on other systems. So why use this rather than the brute-force batch file (makevdd.bat)? Well, this should be a little easier to get into CI/nightly builds and the resulting release build was 30KB (instead of 150KB), so that's good. Before: 1AA00 size of code AA00 size of initialized data 0 size of uninitialized data After: 4C00 size of code 2A00 size of initialized data 0 size of uninitialized data Those default DLL project build options include some good optimization flags apparently.
-
Rob Swindell authored
For some reason this deprecation warning is being treated as an error (and only with newer Windows platform SDKs). Just disable this warning for the GetVersionEx line. See https://stackoverflow.com/questions/22303824/warning-c4996-getversionexw-was-declared-deprecated for details.
-
- Dec 01, 2021
-
-
Rob Swindell authored
Allow "FOSSIL Only" as a configuration option for external programs in SCFG. This is a much easier method of disabling the virtual UART support in the Virtual UART/FOSSIL device driver (if/when necessary) than editing the sbbsexec.ini file (which is still supported).
-
Rob Swindell authored
Function 0Ch (peek) never worked correctly (character was not returned in AX); I guess nothing uses this function (?). Function 01h (transmit char w/wait) now will set the timeout flag (0x8000) in the AX if the VDD_WRITE function fails (returns value other than 1). Optimize Function 18h (read block) - no need for the extra VDD_STATUS call. Use newly defined FOSSIL macros instead of magic numbers of port status bits. Log the git branch/hash values to the Windows debug log (via sbbsexec.dll).
-
Rob Swindell authored
The sem_wait() call from vdd_read() that was fixed in the previous commit to this file was a bad idea to begin with: There is (often) not a 1:1 ratio of bytes in the receive ring buffer and the semaphore count, so we'd often halt here waiting for the semaphore to be signaled even though there were still characters in the receive buffer. This caused (new) stalls/hangs in keyboard input in DOS door games. We didn't see this previously because the sem_wait() call just didn't work (wrong semaphore pointer value). Now, call sem_trywait_block() in vdd_read(), but only if the RingBufRead() returned 0 (no bytes read) and even then, only block/wait for a maximum of 30 seconds (same as X00 FOSSIL driver). This blocking behavior is specified for FOSSIL function 02h (Get received character with wait) and would not have worked previous to the previous "fix", so now we have that corrected behavior too. The FTSC spec says the wait is indefinite, but I think a 30 second timeout (ala X00) is more reasonable. Log the git brach/hash instead of the old CVS revision. GetMailSlotInfo() apparently always fails on Windows 7 with error 87 (even using Microsoft's own sample code), so lower the log message severity of that failure from ERR to DEBUG. Apparently this is pretty harmless anyway as nothing really needs the write-mailslot status. <shrug>
-
Rob Swindell authored
Is this the point when the lost chars problem happens?
-
- Nov 30, 2021
-
-
Rob Swindell authored
-
Rob Swindell authored
As reported via irc by Nelgin, the setcap target was not being passed to 'make -C src/sbbs3' by default (on Linux) due to a misplaced paren.
-
Rob Swindell authored
Yes, you can run 16-bit DOS doors on 64-bit (x64) Windows now. Install NTVDMx64 (http://www.columbia.edu/~em36/ntvdmx64.html, it's not as onerous as it sounds) and re-enable DOS program support in SBBS (i.e. make sure "NO_DOS" is not in your sbbs.ini [bbs] Options value) and voila: DOS doors work. This change adds an empty init routine to sbbsexec.dll since older versions of NTVDM (which NTVDMx64 is based on) required one. Also, the sbbsexec.dll should be located in your Synchronet "exec" directory when using NTVDMx64 (in addition to or instead of your Windows/System32 directory).
-
Rob Swindell authored
Using options (e.g. RINGBUF_MUTEX) from old sbbsexec.dsp
-
Rob Swindell authored
Missing part of commit 4da964dd
-
Rob Swindell authored
Introduced in Revision 1.16 (CVS) Wed May 10 08:52:11 2006 UTC (15 years, 6 months ago) by rswindell This was supposed to wait (block) until there was a new received byte (the ringbuf semaphore was signaled), but we were passing the sem_t value rather than the pointer to the sem_t. Since sem_t (on Windows) is a HANDLE (which is a void*), there was no compiler warning or error. Type-safety in C sucks. So, this just never worked (I'm assuming the call would just fail). I discovered this bug while working on NTVDMx64 support and in that case, this call would block/wait forever. Simple one character fix.
-
- Nov 28, 2021
- Nov 26, 2021
-
-
echicken authored
-
echicken authored
-
echicken authored
-
echicken authored
But also, this needs some revision since I'm supposed to send the header all at once and probably shouldn't be doing a bunch of individual sendBin calls.
-
echicken authored
Added incomplete send of haproxy protocol header. Need to sort out lookup of target (BBS) IP address.
-
echicken authored
other unnecessary work - if the BBS is using HAProxy but we can't do the thing with the stuff because we don't have the things.
-
echicken authored
then throw an error if X-Forwarded-For header was not received, or otherwise do the HAProxy thing upon connecting.
-
echicken authored
-
echicken authored
like to mangle these unless you tell them not to. Capture the value of the X-Forwarded-For header, if present, and stash it in FWebSocketHeader['X-Forwarded-For'].
-
echicken authored
-
- Nov 24, 2021
-
-
Rob Swindell authored
As a work around for TradeWars 2 (v11.14 and v11.20) FOSSIL support: This door game would never call the FOSSIL "get received character" function (02h) . But I did notice that it was calling the "Keyboard read" functions. I never implemented the "Keyboard read" functions (figured the door game could read the keyboard itself if it wanted to), but appparently TW2 won't ever read the COM port (using function 02h) unless the Keyboard read function returns AX=0xFFFF (no keyboard data available). So now, I just do that and TW2 works (with FOSSIL I/O). Incremented the revision to 26. Logging the Git branch/hash and other helpful FOSSIL-debug stuff now.
-
Rob Swindell authored
Needed the actually mapping of XTRN_UART -> EX_UART mode flag here.
-
- Nov 23, 2021
-
-
Rob Swindell authored
When configuring an external program, a Win32 sysop can now choose to *only* enable the virtual UART (and not the FOSSIL driver) feature of the Synchronet virtual UART/FOSSIL driver (dosxtrn.exe/sbbsexec.dll). Some programs (e.g. TradeWars 2) will always use the FOSSIL driver if one is detected and in order to force the use of COM/UART driver for I/O (if that is desired), then one must disable the FOSSIL driver. It's a rare use case, but I can see the potential need. Renamed the "Intercept I/O" option in SCFG to "I/O Method" and make it clear that "Socket" (for native programs) and "FOSSIL or UART" (for 16-bit DOS programs) is the default method (what was previously identified as "No" I/O Interception). If a sysop want to disable the virtual UART support (on Win32, e.g. so *only* FOSSIL is available to one or all DOS programs), they do that via their sbbsexec.ini file.
-
Rob Swindell authored
-
Rob Swindell authored
This change needed to build dosxtrn.exe (again).
-
- Nov 19, 2021
-
-
Rob Swindell authored
warning: format ‘%lx’ expects argument of type ‘long unsigned int’
-
- Nov 18, 2021
-
-
Rob Swindell authored
-
Rob Swindell authored
The internal line editor's quoting feature add some hard-coded strings ("Done" and "All") and the (L)ist key was hard-coded. Use the text.dat string (new and pre-existing) for these now. Also, use the new sbbs_t *_key() methods for referencing the configured key bindings (via text.dat) for these common key-stroke commands. Convert the text.dat strings for keys (e.g. YNQP) to uppercase always as well.
-