Wednesday, April 23, 2014

Thoughts on WWiV on Linux

Here are some of my thoughts on running WWiV 5 under Linux. First, it's fairly simple, especially if you do your initial 4.30 setup under dosemu instead of DosBox. The difference between the two is that DosBox creates Linux filenames which are all upper case, while dosemu creates them lower case. WWiV 5 under Linux requires them in lower care, in general. Directory names are defined via WWiV's init (or, initlite) so can be either. Some of the menus need to be upper case because they are called that way from other menus, but the extensions should be lower case. The main menu files should be lower case, but the menu editor might choke on them, so ln -s each file to an upper case filename with lower case extension. This might be required to get editing to work on the other menus as well, but I don't recall.

Aside from upper/lower case filename issues, there are a few bugs I've noticed which appear in the current build under Linux, but not Windows. First, the time left always displays as 0, which is a problem primarily for the door dropfiles. The problem appears to be that IsUserOnline() never returns true under Linux for some reason. The fix was to open utility.cpp and, within the function double nsl(), find the first if statement, and add " || 1" to the first if statement so that it always evaluates to true, instead of to false.

The second bug has to do with filenames as well. in printfile.cpp, the function printfile() doesn't build the filename.ext based on the user's ANSI settings, and only displays the filename exactly how it is passed to it. Because filenames are quite often passed without an extension so that non-ansi users will get filename.msg while ansi users will get filename.ans, this causes quite a few menus/help items to be broken by default. My solution for this was to temporarily remove the extensions from those files that are passed to printfile() without one. This means no separate ansi/non-ansi files, unfortunately. But most modern telnet clients should support ansi, so that's not a huge deal. The bigger issue is the telnet client not using the correct upper-ascii character set. FWIW, this is CP437, and is supported in both the Linux and Windows versions of putty.

In a future post, I will detail how I got DOS doors to work. This took a lot of trial and error, but ultimately worked great :)

No comments:

Post a Comment