Mercurial > noffle
view src/util.h @ 279:49b452b667a6 noffle
[svn] * src/util.c: localTimeDiff() cached its value and recalculated it every
hour of clock time, regardless of the time the calculated was based on.
This is potentially dangerous at daylight saving changes. So instead
use the cached last result only when the new request is to be based on
a time in the same hour as the cached result.
* src/util.c: Replace the alternate Utl_mktimeGMT() implementation used when
timegm() is not available. The previous version, as suggested by the
glibc timegm() man page, used setenv() and unsetenv() for changing the
environment. These aren't POSIX function, and the POSIX putenv()
(a) is tricky to manage if the same var is being constantly update and
memory isn't to leak, and (b) provides no way to remove an environment
entry. So change to an implementation Wget uses. This should compile on
not glibc systems - the previous version failed to build on Solaris.
author | bears |
---|---|
date | Sun, 17 Nov 2002 15:18:19 +0000 |
parents | 3477050e8d10 |
children | 95697d7c97a1 |
line wrap: on
line source
/* util.h Miscellaneous helper functions. $Id: util.h 403 2002-11-10 11:32:17Z bears $ */ #ifndef UTL_H #define UTL_H #if HAVE_CONFIG_H #include <config.h> #endif #include <signal.h> #if TIME_WITH_SYS_TIME #include <sys/time.h> #include <time.h> #else #if HAVE_SYS_TIME_H #include <sys/time.h> #else #include <time.h> #endif #endif #include "common.h" typedef void (*SignalHandler)( int ); /* Find first non-whitespace character after <token> tokens in string <line>. Return pointer to end of string, if parsing failed. */ const char * Utl_restOfLn( const char *line, unsigned int token ); void Utl_toLower( Str line ); /* Read a line from string. Return NULL if pos == NULL or no more line to read */ const char * Utl_getLn( Str result, const char *p ); /* Go back to last line. */ const char * Utl_ungetLn( const char *str, const char *p ); /* Read a header line from string. Reads continuation lines if necessary. Line is returned as formatted, including '\n's. Return NULL if pos == NULL or no more line to read. */ const char * Utl_getHeaderLn( Str result, const char *p ); /* Strip white spaces from left and right side. Return pointer to new start. This is within line. */ char * Utl_stripWhiteSpace( char *line ); /* Strip comment from a line. Comments start with '#'. */ void Utl_stripComment( char *line ); /* Write timestamp into <file>. */ void Utl_stamp( Str file ); /* Get time stamp from <file> */ Bool Utl_getStamp( time_t *result, Str file ); /* Like mktime, but GMT */ time_t Utl_mktimeGMT( struct tm *t ); /* Put SonOfRFC1036 compliant date string into res. */ void Utl_newsDate( time_t t, Str res ); /* Attempt to parse a SonOfRFC1036 compliant date string. Return -1 on fail. */ time_t Utl_parseNewsDate( const char *s ); void Utl_cpyStr( Str dst, const char *src ); void Utl_cpyStrN( Str dst, const char *src, int n ); void Utl_catStr( Str dst, const char *src ); void Utl_catStrN( Str dst, const char *src, int n ); /* String allocation and copying. */ void Utl_allocAndCpy( char **dst, const char *src ); /* Install signal handler. */ SignalHandler Utl_installSignalHandler( int sig, SignalHandler handler ); /* Obtain this system FQDN. */ Bool Utl_getFQDN( Str result ); #endif