WWIV Internet Network Support version 5.0 Change Log
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5.0.10 (Alpha) 2004-11-21
~~~~~~~~~~~~~~~~~~~~~~~~~
Added new NET.INI setting "RASDIAL=[Y|N]".  If Y, then it will dial the 
default internet dial item as defined by Windows.  If this action can
not complete automatically, then it will fail.  This has to be compiled 
into WINS and is not enabled by default.

Fixed an issue with messages getting stuck in the mdaemon mail server.

Updated License from Apache 1.1 to Apache 2.0

Rebranded from PPP Project to WINS - WWIV Internet Network Support.



5.0.9 (Alpha) 2003-05-21
~~~~~~~~~~~~~~~~~~~~~~~~
Started removing old Mail_Socket and just using normal SOCKET's

Made the cur_newsgroups variable of type BIGSTR since some newsgroup 
articles are crossposted so much it was corrupting the variable after
it on the stack.

Updated the disk free space routine to use GetFreeSpaceEx if available
(not statically linked, using GetProcAddress on it) so it should still
run on Win95 1st editon (Win95 OSR2 added GetFreeSpaceEx)

Alot more code cleanup and refactorings (move method mainly) on the main 
methods.

Code cleanup in exp.cpp

Fixed access violation in exp.cpp when the to: parsing dies and doesn't
check for null before calling strcpy.

Added SEH function listing when an access violation happens.

Fixed an issue where news.exe would keep trying a host after the connect
failed (just making it take a very long time)


5.0.8 (Alpha) 2002-08-28
~~~~~~~~~~~~~~~~~~~~~~~~
* Fixed block character usages everywhere ( all \xFE now, since \254 was
  bad and MSVC doesn't like low-bit characters
* Cleaned up some code, made the warning level 4 in the MSVC projects, fixed
  most of the code warnings.  Mostly unused variables, and unreachable code.
* Now built with MS Visual Studio.NET by default.  Fixed several GPF's in 
  news.exe and network.exe
* Fixed the console display to not add an extra \r\n to each line so the 
  output looks more like the 2.0 release, also removed some unneeded
  debuging statements which were cluttering up the display.
* Started cleaning up the variables and such in the code since C++ lets you 
  declare a variable where you use it, and not just at the top of the block.


5.0.7 (Alpha) 2002-06-02
~~~~~~~~~~~~~~~~~~~~~~~~
Fixed a potential GPF in ppputil when the time is really out of wack.

5.0.6 (Alpha) 2002-03-02
~~~~~~~~~~~~~~~~~~~~~~~~
* Force TZ variable to be set if it is not set, so that strftime will use the
  abbreviated time zone vs. something like "Pacific Standard Time".
* Changed version scheme to "{maj}.{min}.{buildno} {Release Status}"
* Bug Fix in sock_gets where it would return the incorrect string length as the
  return value of the function.
* Bug fix in sock_read where it would only return up to the first {CR/LF} pair,
  this was causing the qotd client not to work.
* Quit sending an initial CR/LF pair to the fortune server (in QOTD)
* Start working better stack-dump support


v5.0 Alpha-5 2001-05-24
~~~~~~~~~~~~~~~~~~~~~~~
* More work on news.cpp to make it work.
* Upped the sock_gets timeout from 10 seconds to 60 seconds to make it fail
  less often on DOG slow connections (like my news server!)
* check for null in output and log_it functions, since this may have caused
  GPF's under Windows 98SE.
* don't print out the command line arguments if they are bad, since it's
  kinda pointless anyway.
* Ported qotd.
* Added sock_read and sock_write to socketwrapper.cpp (since these are 
  similiar to some methods that qotd used).  Also modified sock_puts to use
  sock_write to remove redundant code.

v5.0 Alpha-4 2001-05-19
~~~~~~~~~~~~~~~~~~~~~~~
* Created new project for news
* Changes to make news.cpp compile.. It's still not complete nor tested yet.
* Moved char *strrep(char *str, char oldstring, char newstring) from news.cpp 
  to utility.cpp
* Added new function 'bool SetFileToCurrentTime(LPCTSTR pszFileName)', and 
  made news.cpp call this vs. old DOS setftime API call.
* Updated source files to include Apache style license.
* Added license.txt to the source directory.
* Now built against wsock32.dll instead of ws2_32.dll since some Win95 machines
  (even with the winsock2 update) were not happy with it.  And since there's
  no longer any Winsock2 specific code, we can use Winsock 1.1.
* Added tons of extra debug statements in pop.cpp which are currently disabled.
  If you need them, define "MEGA_DEBUG_LOG_INFO" at the top of pop.cpp
* Changed the default DEBUG: (whatever is in your pop message) while getting
  the message headers to only be displayed of MEGA_DEBUG_LOG_INFO is defined.
* Only display the return value of pop_top if MEGA_DEBUG_LOG_INFO is defined.
* More source code reformatting in cleanup in pop.cpp and utility.cpp
* Cleaned up which import libraries each file requires.  Now every file now 
  requires kernel32.dll and user32.dll.  pop and news also require wsock32.dll.
  This is down from the 20 or so "default" libraries that MSVC puts in 
  to a new project.  This should make the exe smaller and have fewer imports
  in the .exe structure.


v5.0 Alpha-3 2001-05-13
~~~~~~~~~~~~~~~~~~~~~~~
* in pop.cpp, renamed netdata to net_data to match the other source files.
* pop.cpp builds with utility.cpp, duplicate functions have been removed from
  the pop.cpp file.
* Added new function copyfile(char*, char*, bool) since the copyfile code in
  pop.cpp didn't overwrite, and the others did.
* Moved some mode routines from pop.cpp that were generic in nature to the
  utility.cpp file.  These include:
    char *trim(char *str);
    void go_back(int from, int to);
    int isleap(unsigned yr);
    static unsigned months_to_days(unsigned month);
    int jdate(unsigned yr, unsigned mo, unsigned day);

* Replaced the #3 char in qotd.cpp with '\003'
* Replaced the #4 chars in pop.cpp with '\004' so that it won't get munged
  in some editor.
* Started to use the previously unused POP.H file, removed duplicate 
  definitions from pop.cpp.  Moved the rest of the #define statements into 
  POP.H
* Moved 'stristr' and 'count_lines' from NEWS.CPP to utility.cpp
* Removed alot of unused #defines, and merged duplicates into utility.h
* Added guards around include files.
* Removed create_wattcp_cfg function.
* removed duplicate "char* stristr(char*, char*)".
* Removed unused variables from being read from NET.INI. These are:
	IPADDDR
	NETMASK
	DNS
	SDNS
	GATEWAY
	PPPD (DRIVER TAG)
	NOWATTCP
	SOCK_DELAY
	TIMEOUT
	RETRIES
	INACTIVE
* Moved variable instance to main from global since its not referenced outside
  of the main method.
* Removed unused variable lsl_loaded.
* changed valid_system to return bool instead of int
* changed create_contact_ppp to return a bool, reversed logic to return true
  on success instead of 0 on success.
* More changing int types to bool types, etc...
* Removed the no longer used variables from SAMPLE.INI
* Moved netnum into main since its not used outside of that method

* removed net_num since it's only set in set_net_num, and then never referenced
  outside of this function.
* made ini_section a local variable to main, now passes a C++ reference to
  parse_ini_file.
* Renamed global net_sysnum to g_nNetworkSystemNumber
* Removed unused xenviron variables.
* Make uu_packets return bool vs. int.
* Started to refactor the main method (move method, and remove temp) New
  functions so far are:
	bool ReadConfigOvr( configoverrec * pData, int nInstance )
	int  GetWWIVInstanceNum()
	bool ReadConfigDat( configrec *pData )
	bool EnsurePaths()
	void LaunchWWIVnetSoftware( int nNetNum, int argc, char* argv[] )
* Removed unused global (set but never queried) wwiv_net_no
* Don't update sentbytes and recdbytes in place.
* Changed sock_delay to a #define (for 0)
* Moved more header type stuff from pop.cpp to pop.h
* Moved function rip from pop.cpp into utility.cpp
* Changed the high-bit ascii box to '0xfe' literals ( so you can tell what 
  character it is in windows editors)
* made socketwrapper.cpp and socketwrapper.h, moved winsock wrapper code into
  these files.
* Made another tweak to sock_gets.. If there is not a \n in the buffer, it 
  will sleep (just as if there is nothing to receive) until there is something
  to receive from the socket. (or just like if it's empty, it'll wait for up 
  to 5 seconds (10 waits, for 500ms each) before just returning what is 
  currently in the internal buffer.  This should cut down on the problem I've
  seen with uuencoded packets splitting the line onto 2 lines. (and since
  uu can't handle that well, you end up manually fixing the packet, and then
  running uudecode yourself and dropping the Z###.NET file into your network
  directory... Not hard, but not fun nonetheless.



v5.0 Alpha-2 2001-05-05
~~~~~~~~~~~~~~~~~~~~~~~
* undefined __NO_POP_DELETE__ which I had defined while testing.
* Removed NSLOOKUP.CPP <-- Not needed anymore since Win32 includes this
* Removed MAKEFILE <-- Needs to be rewritten to use NMAKE and MSVC's CL
* Removed PING.CPP <-- Not needed anymore since Win32 includes this.
* Recreated the projects not to use my hosed up directory structure hardcoded
  in it.
* Made all filenames lower case instead of upper case.


v5.0 Alpha-1 2001-05-03
~~~~~~~~~~~~~~~~~~~~~~~
* Created a common header file "pppproj.h" for all .cpp to include to make 
  things easier.
* Moved most duplicate functions from the various .cpp files into utility.cpp
  ( Some duplicate functions still exist in pop.cpp, but that .exe doesn't
  link with utility.obj yet)
* Brought over wshare.h and wshare.cpp from wwiv5 for the sh_xxxx functions
  since I know these already work under WIN32 as they as supposed to work.
* Changed how uu.cpp handles the copyfile function since its return value
  was the opposite in uu.cpp than everywhere else.
* Changed copyfile to use the WIN32 API call CopyFile.
* Reformatted some source code to make it easier to read.  No tab characters
  in the source code, and the indentation is 4 characters in the reformatted
  areas.
* Changed many parameters and return values from 'int' to 'bool' when it 
  really meant a boolean datatype to make things easier to understand.
* in pop.cpp, make a pseudo implementation of sock_gets which uses winsock2
  so that the bulk of the socket code can remain in place for now.
* Fixed logic error introduced in pop.cpp which was causing it to exit before
  reading the NET: XXXXXX line from the message body, as it was quitting 
  after the headers but before the body.
* More tweaks to sock_gets to make it behave better (and more like the wattcp
  function did)
* Added stubbed #defines for many wattcp functions that aren't needed. These
  will be removed in a future revision.
* WinNT/2k is picky on memory access, Every place the code did  "if (*x)" I 
  changed it to "if (x && *x)" so that it doesn't GPF if x == NULL.
* Added NULL tests before accessing anything in argv[] if it may not exist.
* Added NULL tests before accessing the result of a strtok operation (since
  it may be NULL)
