|
From: <no...@so...> - 2002-04-25 06:28:00
|
Patches item #548448, was opened at 2002-04-25 08:27 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=304593&aid=548448&group_id=4593 Category: stable Group: None Status: Open Resolution: None Priority: 5 Submitted By: Martin Vorlaender (martinv2) Assigned to: Nobody/Anonymous (nobody) Summary: Cope with unsigned time_t type Initial Comment: While porting ht://Dig to OpenVMS/Alpha, I saw a program hang due to the fact that the time arithmetic in htdig/server.cc:Server::delay overflows if time_t is an unsigned type (which is the case in Compaq C++). To remedy it, just rearrange the calculation: diff -cdrN orig/htdig/server.cc vms/htdig/server.cc *** orig/htdig/server.cc Thu Jan 31 23:47:16 2002 --- vms/htdig/server.cc Thu Oct 4 18:17:02 2001 *************** *** 287,296 **** void Server::delay() { time_t now = time(0); ! time_t how_long = _connection_space + _last_connection - now; ! _last_connection = now; // Reset the clock for the next delay! ! if (how_long > 0) sleep(how_long); return; } --- 287,298 ---- void Server::delay() { time_t now = time(0); ! if (_connection_space > now - _last_connection) ! { ! time_t how_long = _connection_space - (now - _last_connection); sleep(how_long); + } + _last_connection = now; // Reset the clock for the next delay! return; } Some other issues in the port (more VMS specific): - file handling in htcommon/wordlist.cc: changed to only open the wordlist file once. - externalparser.cc: no fork() on VMS - used the 3.1.5 code - system() calls for sorting: replaced by system API - filenames may only contain one dot: changed to use underscore - CGI variables: added support for WWW_* variants (still used by some VMS webservers) Anyway: the port was comparably easy. What a great piece of software! Thanks. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=304593&aid=548448&group_id=4593 |