PPP Project version 5.0 Change Log ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.0.6 (Alpha) 2001-0?-?? ~~~~~~~~~~~~~~~~~~~~~~~~ * 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) * 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)