1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

[svn] Applied Roger Beeman's mktime_from_utc fix published in

<Pine.HPX.4.02.10104181128180.6232-100000@mail1.cisco.com>.
Also, minor doc fixes.
This commit is contained in:
hniksic 2001-04-24 17:50:22 -07:00
parent d80f6cbe8c
commit 9ae0328c3d
3 changed files with 47 additions and 20 deletions

View File

@ -1,3 +1,13 @@
2001-04-25 Roger L. Beeman <beeman@cisco.com>
* http.c (http_atotm): Initialize t.tm_isdst to 0.
(mktime_from_utc): Prevent mktime() from having discontinuities at
DST transition points.
2001-04-25 Hrvoje Niksic <hniksic@arsdigita.com>
* html-url.c (get_urls_html): Fix documentation.
2001-04-25 Hrvoje Niksic <hniksic@arsdigita.com> 2001-04-25 Hrvoje Niksic <hniksic@arsdigita.com>
* url.c (UNSAFE_CHAR): Reimplement using a static table. * url.c (UNSAFE_CHAR): Reimplement using a static table.

View File

@ -365,7 +365,11 @@ handle_link (struct collect_urls_closure *closure, const char *link_uri,
closure->tail = closure->head = newel; closure->tail = closure->head = newel;
} }
/* #### Document what this does. /* Examine name and attributes of TAG and take appropriate action.
What will be done depends on TAG's category and attribute values.
Tags of TC_LINK category have attributes that contain links to
follow; tags of TC_SPEC category need to be handled specially.
#### It would be nice to split this into several functions. */ #### It would be nice to split this into several functions. */
static void static void
@ -523,13 +527,12 @@ collect_tags_mapper (struct taginfo *tag, void *arg)
} }
} }
/* Scan FILE, retrieving links to HTML documents from it. Each link is /* Analyze HTML tags FILE and construct a list of URLs referenced from
it. It merges relative links in FILE with THIS_URL. It is aware
of <base href=...> and does the right thing.
Similar to get_urls_file, but for HTML files. FILE is scanned as If dash_p_leaf_HTML is non-zero, only the elements needed to render
an HTML document. get_urls_html() constructs the URLs from the FILE ("non-external" links) will be returned. */
relative href-s.
If SILENT is non-zero, do not barf on baseless relative links. */
urlpos * urlpos *
get_urls_html (const char *file, const char *this_url, int dash_p_leaf_HTML, get_urls_html (const char *file, const char *this_url, int dash_p_leaf_HTML,
int *meta_disallow_follow) int *meta_disallow_follow)

View File

@ -1828,17 +1828,37 @@ The sizes do not match (local %ld) -- retrieving.\n"), local_size);
than local timezone (mktime assumes the latter). than local timezone (mktime assumes the latter).
Contributed by Roger Beeman <beeman@cisco.com>, with the help of Contributed by Roger Beeman <beeman@cisco.com>, with the help of
Mark Baushke <mdb@cisco.com> and the rest of the Gurus at CISCO. */ Mark Baushke <mdb@cisco.com> and the rest of the Gurus at CISCO.
Further improved by Roger with assistance from Edward J. Sabol
based on input by Jamie Zawinski. */
static time_t static time_t
mktime_from_utc (struct tm *t) mktime_from_utc (struct tm *t)
{ {
time_t tl, tb; time_t tl, tb;
struct tm *tg;
tl = mktime (t); tl = mktime (t);
if (tl == -1) if (tl == -1)
return -1; {
tb = mktime (gmtime (&tl)); t->tm_hour--;
return (tl <= tb ? (tl + (tl - tb)) : (tl - (tb - tl))); tl = mktime (t);
if (tl == -1)
return -1; /* can't deal with output from strptime */
tl += 3600;
}
tg = gmtime (&tl);
tg->tm_isdst = 0;
tb = mktime (tg);
if (tb == -1)
{
tg->tm_hour--;
tb = mktime (tg);
if (tb == -1)
return -1; /* can't deal with output from gmtime */
tb += 3600;
}
return (tl - (tb - tl));
} }
/* Check whether the result of strptime() indicates success. /* Check whether the result of strptime() indicates success.
@ -1888,15 +1908,9 @@ http_atotm (char *time_string)
{ {
struct tm t; struct tm t;
/* Roger Beeman says: "This function dynamically allocates struct tm /* According to Roger Beeman, we need to initialize tm_isdst, since
t, but does no initialization. The only field that actually strptime won't do it. */
needs initialization is tm_isdst, since the others will be set by t.tm_isdst = 0;
strptime. Since strptime does not set tm_isdst, it will return
the data structure with whatever data was in tm_isdst to begin
with. For those of us in timezones where DST can occur, there
can be a one hour shift depending on the previous contents of the
data area where the data structure is allocated." */
t.tm_isdst = -1;
/* Note that under foreign locales Solaris strptime() fails to /* Note that under foreign locales Solaris strptime() fails to
recognize English dates, which renders this function useless. I recognize English dates, which renders this function useless. I