1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-15 00:29:49 +02:00
Commit Graph

368 Commits

Author SHA1 Message Date
David Shaw
a5b708ba9c * http.c (connect_server): free (rather than xfree) the result of
getsrv().
2009-04-03 03:38:59 +00:00
David Shaw
0f8b0fc195 * Makefile.am: Make srv.c part of libcompat instead of libutil.
* srv.c (getsrv): Raise maximum packet size to 2048, as PACKETSZ is
too small these days.  Use libc malloc and free as we're part of
libcompat now which may not be linked to memory.c.
2009-04-03 03:33:57 +00:00
David Shaw
da66b1d69e * iobuf.c (fd_cache_synchronize): New. fsync() a file in cache.
(iobuf_ioctl): Called here, for ioctl 4.  (fd_cache_invalidate): Pass
return code from close() back to iobuf_ioctl().
2009-03-20 20:33:14 +00:00
David Shaw
f801e0f9a8 * http.c (do_parse_uri): Properly handle IPv6 literal addresses as per
RFC-2732.  Adapted from patch by Phil Pennock.
2009-03-13 17:51:05 +00:00
David Shaw
81723b397a * Makefile.am, http.c (start_server): Minor tweaks to get http-test
compiling again.
2009-03-13 17:27:35 +00:00
David Shaw
564436af6f * Makefile.am: Use $(CC) instead of "cc" to compile, as the user might
be overriding the compiler.
2008-09-05 21:01:17 +00:00
Werner Koch
6ae5af5d7a Fix possible NULL argument to printf 2008-08-19 19:36:04 +00:00
David Shaw
3f4fb20cc3 * argparse.c (default_strusage): Update copyright date. 2008-03-06 17:22:41 +00:00
Werner Koch
aa9aec7068 Comment typ fixes.
Workaround for bad translations of the capability menu.
2007-12-03 14:41:38 +00:00
Werner Koch
9a2a818887 Switched to GPLv3.
Updated gettext.
2007-10-23 10:48:09 +00:00
Werner Koch
d1a13319bb Improved detection of ketrings specified several times. 2007-08-24 09:51:58 +00:00
David Shaw
20af3fea15 Move some ascii_foo functions to libcompat 2007-04-16 22:32:28 +00:00
Werner Koch
d54ee32837 util/
* secmem.c (init_pool): Avoid assigning a negative value to a
	size_t.
./
	* acinclude.m4: Fix last change.  Make test self-conatined by
	checking for sysconf and getpagesize.  Remove indentation for the
	sake of broken C-89 cpps.
2007-04-16 15:37:45 +00:00
David Shaw
3a2e31ff19 Use sysconf() when possible as not all platforms have getpagesize(). 2007-04-16 13:37:09 +00:00
David Shaw
0b677ba499 * argparse.c (default_strusage): Copyright 2007.
* cert.c, srv.c, pka.c: Need arpa/inet.h for ntohs().
2007-04-15 16:37:01 +00:00
Werner Koch
958c2a6f69 [W32] Make use of the LANGUAGE envvar. 2007-02-26 14:26:32 +00:00
Werner Koch
22be39dfac * secmem.c (ptr_into_pool_p): New.
(m_is_secure): Implement in terms of above.  Also check that the
        pool has been initialized.
2007-02-12 14:13:37 +00:00
David Shaw
f6e12f4b46 * http.c (do_parse_uri): Remove the hkp port 11371 detection. We
implement hkp in the keyserver handler, and the support here makes it
appear like a bad hkp request actually succeeded.
2007-02-11 03:10:12 +00:00
David Shaw
67c18b8c3c * ttyio.c (do_get): Assume that anything read from the user without
echoing to the screen is sensitive and put it in secure memory.
Suggested by Benjamin Bennett.
2007-02-01 04:21:07 +00:00
Werner Koch
60044dd11b Fix bug#739 (proxy/shutdown) 2006-12-14 09:55:32 +00:00
David Shaw
4739851ef4 * strsep.c (strsep): It's strsep, not strsep2 from testing. (If I had
a dollar for every time I've done that...)
2006-10-03 00:36:18 +00:00
David Shaw
6f32b4e4d1 Move strsep() and ascii_isspace() to libcompat. 2006-09-28 19:53:17 +00:00
David Shaw
b17fcc5d51 Put in the basic wiring (just hextobyte for now) for a libcompat.a that
can contain replacement files that can be linked to keyserver helpers
without bringing in the whole libutil.a.  libutil.a contains a complete 
copy of libcompat.a so we only need to link to one of them.
2006-09-28 19:36:55 +00:00
Werner Koch
064a4a6240 Fixed bug 479. Not a real good fix but a reliable one which limits possible
breakage of other partys of the code.
2006-07-31 10:16:33 +00:00
Marcus Brinkmann
bd5aa4864d 2006-07-29 Marcus Brinkmann <marcus@g10code.de>
* secmem.c (init_pool): Close FD after establishing the mapping.
2006-07-29 00:09:24 +00:00
David Shaw
4fbf91ad9e * http.c (send_request): A zero-length proxy is the same as no proxy at
all.  Suggested by J. Scott Berg.
2006-07-20 22:26:29 +00:00
David Shaw
975da08004 * configure.ac: Fix resolver autoconf code so it works (fails)
properly with uClibc.
2006-07-08 23:29:25 +00:00
Werner Koch
a3883eb71d About to do a new release 2006-06-25 12:03:38 +00:00
David Shaw
45c1414a2f * miscutil.c (make_printable_string): Fix bug where some control
characters lose part of their ASCII representation.
2006-04-17 20:54:15 +00:00
David Shaw
8df71cf868 * memory.c (realloc): Revert m_guard fix and stick an #error in there to
inform people not to use it.
2006-04-11 19:45:44 +00:00
Werner Koch
168583e596 Add new regression test 2006-04-11 07:49:25 +00:00
David Shaw
4af2725d32 * memory.c (realloc): Fix compile problem with --enable-m-guard. 2006-04-06 17:58:13 +00:00
David Shaw
f99dec9e53 * cert.c (main): Fix test program build warning on OSX. 2006-03-30 14:13:35 +00:00
David Shaw
e0ad2bda52 * cert.c (get_cert): Handle the fixed IPGP type with fingerprint. 2006-03-16 22:40:04 +00:00
David Shaw
cc9a71c6ce * argparse.c (default_strusage): Update copyright year to 2006. 2006-03-09 03:31:28 +00:00
David Shaw
ca6c57bc8a * http.c (send_request): A zero length proxy is the same as no proxy. 2006-02-19 21:03:01 +00:00
Werner Koch
966cd80d88 Fixed a wrong return code with gpg --verify 2006-02-14 10:17:57 +00:00
David Shaw
23cfe019e9 * cert.c (get_cert): Disable IPGP types for now until the format questions
in the draft are settled.

* srv.c (getsrv): Error on oversize SRV responses.
2006-01-26 16:51:04 +00:00
David Shaw
74117cf4d3 * cert.c (get_cert): Properly chase down CNAMEs pointing to CERTs. 2005-12-24 15:35:39 +00:00
David Shaw
7f13d486b0 New code to do DNS CERT queries. 2005-12-23 18:15:24 +00:00
David Shaw
5e08b08da8 * srv.c, Makefile.am: Only build srv.c if we need to. 2005-12-23 05:00:55 +00:00
David Shaw
b12d50dccd * ttyio.c (tty_enable_completion, tty_disable_completion): Add checks
for no_terminal so we don't try to open("/dev/tty") when invoked with
--no-tty.
2005-12-12 03:56:01 +00:00
David Shaw
bc1c4af8c3 Some cleanup so we don't build files that are completely ifdeffed out.
This causes a warning on Sun's cc.  Do the internal regex code as well for
consistency.
2005-12-06 20:54:05 +00:00
David Shaw
a635daa6b6 * mkdtemp.c (mkdtemp): Fix warning.
* secmem.c, assuan-buffer.c, dotlock.c: Fix a few warnings from printf-ing
%p where the arg wasn't void *.
2005-12-06 18:24:57 +00:00
David Shaw
2a662f7870 Fix various build warnings reported by Joe Vender on MinGW. 2005-11-03 04:46:20 +00:00
Werner Koch
bd1df0119c Renamed g10.c to gpg.c
Filelength fixes for W32.
2005-10-05 16:58:50 +00:00
David Shaw
cb00951803 * fileutil.c (untilde): New. Expand ~/foo and ~username/foo filenames
into full paths using $HOME if possible, or getpwuid/getpwnam if
necessary. (make_filename): Use it here.
2005-08-31 15:36:50 +00:00
Werner Koch
1d139c8147 Implemented PKA trust model 2005-07-28 19:30:13 +00:00
Werner Koch
986a137c58 Implemented PKA trust model 2005-07-28 18:59:36 +00:00
Werner Koch
a1cdf3c75f Converted all m_free to xfree etc. 2005-07-27 18:10:56 +00:00
Werner Koch
a486501c0b * gpg.sgml (http):
* g10.c, options.h: New option --exit-on-status-write-error.
* status.c (write_status_text): Make use of this option.
2005-07-22 16:28:40 +00:00
Werner Koch
6dc5a11997 * tdbio.c (open_db): Check for EROFS. Suggested by Bryce Nichols.
* ttyio.c (do_get): Move printing of the prompt after disabling
echo.  Suggested by Scott Worley.
2005-07-18 17:58:25 +00:00
David Shaw
c5a94d29ce * http.c (make_radix64_string): Add '=' padding as per standard.
(send_request, http_open, http_open_document): Clean up auth code.
Can now support different auth for a proxy and the file being
requested via that proxy.  Unescape auth strings.
2005-06-23 04:23:37 +00:00
David Shaw
825d12638b * memrchr.c (memrchr): Not all compilers allow initializing based on a
variable that is also being initialized.  Noted by Nelson H. F. Beebe.
2005-06-22 20:05:21 +00:00
David Shaw
c8d1036b26 * http.c (send_request, http_open, http_open_document): Pass in auth
and proxyauth that can override the in-url auth.
2005-06-22 04:12:40 +00:00
David Shaw
b967d27173 * http.c (send_request): Need == after the radix64-encoded basic auth
string.
2005-06-22 03:20:43 +00:00
David Shaw
dddcb6d90c * dotlock.c [HAVE_DOSISH_SYSTEM]: Fix unused function warnings on mingw32.
Noted by Joe Vender.
2005-06-08 22:54:02 +00:00
Werner Koch
a6a93ac540 * keydb.h [!ENABLE_AGENT_SUPPORT]: Define dummy types.
* cardglue.c (assuan_strerror, assuan_transact): Dummy functions
        if not build with agent support.

	* zh_TW.po, zh_CN.po, es.po, ro.po: Updated.

        * tr.po: Updated from TP.  Note: this is an exception in general
        translations from the Robot are not anymore accepted.

        * regcomp.c (MB_CUR_MAX) [_WIN32]: Define it only if not defined.
2005-05-31 10:11:01 +00:00
Werner Koch
7d4043ca57 Updated FSF street address and preparations for a release candidate. 2005-05-31 08:39:18 +00:00
David Shaw
e5a100c7c6 * strgutil.c (set_native_charset) [_WIN32]: Add alias for codepage
CP65001 to utf-8.
2005-05-30 03:46:17 +00:00
Werner Koch
be2aa37dbf * cardglue.c (send_status_info): Make CTRL optional.
(agent_scd_writekey, inq_writekey_parms): New.
(agent_openpgp_storekey): Removed.
* cardglue.h: Add a few more error code mappings.
* keygen.c (copy_mpi): Removed.
(save_unprotected_key_to_card): Changed to use agent_scd_writekey.
* app-common.h, app-openpgp.c, tlv.c, tlv.h: Updated from newer
version in gnupg 1.9 CVS.
2005-05-21 14:04:32 +00:00
David Shaw
ef92ff6e08 Remove add_days_to_timestamp (unused) 2005-05-05 22:21:34 +00:00
David Shaw
4f996cc5b8 Fix minor build problem on OSX (need a replacement for memrchr) 2005-04-12 16:08:51 +00:00
Werner Koch
80f4424658 Changes to make use of code taken from libassuan. This replaces the
old ad-hoc connection code to gpg-agent.  We do need this for the
forthcoming diversion of card code to an already running gpg-agent
with card-support.
2005-04-05 17:09:13 +00:00
Werner Koch
31135aff14 * keyedit.c (command_generator, keyedit_completion): Changed
indentation.
* card-util.c (command_generator, card_edit_completion): Ditto.
2005-03-21 15:24:48 +00:00
David Shaw
9c3484924b * ttyio.c (tty_enable_completion, tty_disable_completion): Enable and
disable readline completion. (init_ttyfp): Completion is disabled by
default.
2005-03-18 20:17:38 +00:00
Werner Koch
a177090f37 * card-util.c (card_status): Use isotimestamp and not the
localized asctimestamp to match the timezone used in the key
information.

* miscutil.c (isotimestamp): New.
2005-03-14 20:41:20 +00:00
Werner Koch
1ccebd117d (secmem_realloc): Take control information into account
when checking whether a resize is needed.
2005-03-10 09:52:05 +00:00
Werner Koch
e011ee08e2 (GNUPG_CHECK_GNUMAKE): Removed. Not needed for
decent automakes.
2005-02-04 10:18:46 +00:00
Werner Koch
57ec15c0bb Last changes for W32 2005-02-03 11:16:27 +00:00
David Shaw
f7a0254e63 * http.c (connect_server): Fix fd leak when connecting to a round-robin
server set that has some down servers.  Noted by Phil Pennock.
2005-02-01 20:55:35 +00:00
Werner Koch
5bda87bd6e * g10.c (i18n_init) [W32]: Pass registry key to gettext
initialization.
* gpgv.c (i18n_init) [W32]: Ditto.

* simple-gettext.c (set_gettext_file): Use MO files depending on
the installation directory.  Add new arg REGKEY.
2005-01-20 11:42:03 +00:00
Werner Koch
cc19a07082 Same for
--without-included-regex.
2005-01-17 10:19:57 +00:00
David Shaw
522fd5bc82 * http.c (connect_server): Use INADDR_NONE instead of SOCKET_ERROR.
Noted by Timo.
2005-01-13 22:09:33 +00:00
Werner Koch
9dc1bcc4ea (set_native_charset): Assume that ASCII,
ANSI_X3.4-1968 and 646 are actually meant as Latin-1.  If
nl_langinfo is not available get the charset from environment
variables. For W32 use GetACP as error fallback.  Removed Latin-15
to Latin-1 aliasing.
2005-01-06 11:51:49 +00:00
David Shaw
f539f3d2b2 Better implementation for the SRV check. We don't need to actually check
all the header files individually since the SRV test compile uses them
together.
2004-12-29 00:58:05 +00:00
Werner Koch
be4bb5a88b (handle_iconv_error): Turn diagnostics into warnings
so that gpg does not return with failure.
(native_to_utf8, utf8_to_native): Ditto.
2004-12-20 08:55:03 +00:00
David Shaw
005b1d7960 Readline fix to be robust against platforms where readline has its own
dependencies.  We play guess-the-depedency for a while, and try termcap,
curses, and ncurses.
2004-12-18 22:23:49 +00:00
David Shaw
2b9e678fde * configure.ac: Check for arpa/nameser.h.
* srv.h: Don't include arpa/nameser.h unless we have it.  Include
"types.h" for u16.
2004-12-16 18:36:42 +00:00
David Shaw
e79f2db8e4 * g10.c (main): Add --require-secmem/--no-require-secmem to cause gpg to
exit if it cannot lock memory.  Also remove --nrsign-key and --nrlsign-key
since this can better be done via --edit-key.

* secmem.c (secmem_init): Return a flag to indicate whether we got the
lock.

* memory.h: Return a flag to indicate whether we got the lock.
2004-12-16 05:16:09 +00:00
Werner Koch
5bc5baf304 (fd_cache_strcmp): New. Use whenever we compare
filenames for the fd_cache. This is needed because the backslash
is an alias for a slash under W32. Reported by Tobias Winkler.
2004-12-06 10:32:20 +00:00
David Shaw
9cc9a79047 * http.c (send_request): Include the port if non-80 in the Host: header.
Noted by Jason Harris.
2004-12-03 20:23:12 +00:00
Timo Schulz
37ecd725e5 2004-11-03 Timo Schulz <twoaday@g10code.com>
* strgutil.c (w32_strerror): New.
        * ttyio.c (init_ttyfp, tty_printf, do_get): Use it here.
        * iobuf.c (fd_cache_open, file_filter): Likewise.
        (iobuf_seek, translate_file_handle): Likewise.
2004-11-03 20:03:46 +00:00
Werner Koch
b467558d9e * strgutil.c (load_libiconv): Use log_info to avoid failures when
iconv.dll is not installed.
2004-11-03 16:40:29 +00:00
Werner Koch
36ca1121b5 (get_string): Removed debugging hack. 2004-10-30 22:49:09 +00:00
Werner Koch
e216c20f40 * dynload.h: Always use it for _WIN32.
* LINGUAS: Better don't have comments in this file.

* mk-w32-dist: Use utf-8 encoding for all MO files.

* simple-gettext.c: Removed windows.h.
(get_string): On the fly translation from utf-8 to active
character set.

* strgutil.c (load_libiconv) [_WIN32]: new.
(set_native_charset) [_WIN32]: Call it here and autodetect the
used code page.
(native_to_utf8, utf8_to_native): Reverted arguments for
iconv_open.
(handle_iconv_error): Made this function match iconv_open argumnet
ordering.
(utf8_to_native): Disable all quoting for DELIM == -1.
2004-10-27 16:32:51 +00:00
Werner Koch
ea62673cdc (load_libiconv) [_WIN32]: new.
(set_native_charset) [_WIN32]: Call it here and autodetect the
used code page.
(native_to_utf8, utf8_to_native): Reverted arguments for
iconv_open.
(handle_iconv_error): Made this function match iconv_open argumnet
ordering.
2004-10-27 12:04:14 +00:00
Werner Koch
a3d48b3bb2 (mem2str): Translated comment to English.
(handle_iconv_error) [USE_GNUPG_ICONV]: New.
(set_native_charset) [USE_GNUPG_ICONV]: Added iconv based
conversion checks.
(native_to_utf8, utf8_to_native): Added iconv based conversion.
2004-10-26 12:43:49 +00:00
Werner Koch
0ebf79c824 * configure.ac: Remove the check for asprintf
* app-common.h (app_openpgp_storekey: Add prototype.

* app-openpgp.c (do_sign): Replace asprintf by direct allocation.
This avoids problems with missing vasprintf implementations.

* card-util.c (generate_card_keys): Add a #warning for gnupg 1.9
and use the same string there.

* util.h [!HAVE_VASPRINTF]: Removed prototype.

* vasprintf.c: Removed. It was used only at one place and I don't
want to get into build problems in 1.4.
2004-10-21 16:56:22 +00:00
David Shaw
83d3914317 * http.c (connect_server, send_request): Use the URI scheme as the SRV tag
rather than hard-coding _hkp.
2004-10-18 15:51:43 +00:00
David Shaw
4d79b138ac * http.c (connect_server): [_WIN32] actually fill in the sin_addr so we
aren't always talking to localhost.  Add some general sanity checking of
parameters learned from gethostbyname().
2004-10-16 21:31:36 +00:00
Werner Koch
f81ad507f0 New. Taken from gnupg 1.9. 2004-10-15 09:38:27 +00:00
Werner Koch
299ab4e48d (iobuf_get_fd): Removed double check on directfp and
cats it to FILEP becuase directfp is actually a void *.  Notes by
Stefan.
2004-10-14 07:20:54 +00:00
Werner Koch
161286635c * configure.ac: Actually name the option --disable-finger and not
http.  Add option --enable-selinux-support.

* logger.c (g10_log_error_f, g10_log_fatal_f, g10_log_info_f)
(g10_log_debug_f, print_prefix_f): Removed.

* iobuf.c (iobuf_is_pipe_filename): New.
(iobuf_get_fd): New.
2004-10-13 18:08:39 +00:00
Werner Koch
620ac79ebf * configure.ac: Actually name the option --disable-finger and not
http.

* openfile.c (overwrite_filep, make_outfile_name, open_outfile)
(open_sigfile): Use iobuf_is_pipe_filename to check for pipes so
that special filesnames are taken into account. This is bug 327.
* tdbdump.c (import_ownertrust): Ditto.
* sign.c (write_plaintext_packet): Ditto.
* progress.c (handle_progress): Ditto.
* plaintext.c (handle_plaintext): Ditto.
* encode.c (encode_simple, encode_crypt): Ditto.

* iobuf.c (iobuf_is_pipe_filename): New.
* fileutil.c (is_file_compressed): Use it here.
2004-10-13 09:59:46 +00:00
David Shaw
d0a1816d7f * iobuf.c (pop_filter): Make static.
* dotlock.c (destroy_dotlock): New.  Remove the handle from the list of
locks. (release_dotlock): Don't act if we don't have any locks at all.
From Werner on stable branch.
2004-09-30 14:26:36 +00:00
David Shaw
440e9a9979 * http.c (make_radix64_string, do_parse_uri, send_request): Add basic auth
for proxies and direct requests.  Suggested by Florent Thoumie.
2004-09-10 21:16:47 +00:00
David Shaw
5494eb1bb6 * http.c (main): Fix test code for http-test. 2004-09-10 18:56:52 +00:00
Werner Koch
06853bbc4d * README: Doc --disable-card-support and --without-readline.
* configure.ac: Check for readline.  Make enable-card-support the
default.  New option --without-readline.  Allow the use of either
the development or the stable libusb.

* cardglue.h: Add members for CA fingerprints.
* cardglue.c (agent_release_card_info): Invalid them.
(learn_status_cb): Store them.

* app-common.h, app-openpgp.c, iso7816.c, iso7816.h
* apdu.c, apdu.h, ccid-driver.c, ccid-driver.h
* card-util.c: Updated from current gnupg-1.9.

* ccid-driver.h (CCID_DRIVER_ERR_ABORTED): New.
* ccid-driver.c (ccid_open_reader): Support the stable 0.1 version
of libusb.
(ccid_get_atr): Handle short messages.
* apdu.c (my_rapdu_get_status): Implemented.
* apdu.c: Include <signal.h>.
* apdu.c (reader_table_s):  Add function pointers for the backends.
(apdu_close_reader, apdu_get_status, apdu_activate)
(send_apdu): Make use of them.
(new_reader_slot): Intialize them to NULL.
(dump_ccid_reader_status, ct_dump_reader_status): New.
(dump_pcsc_reader_status): New.
(open_ct_reader, open_pcsc_reader, open_ccid_reader)
(open_osc_reader, open_rapdu_reader): Intialize function pointers.
(ct_activate_card, ct_send_apdu, pcsc_send_apdu, osc_send_apdu)
(error_string): Removed.  Replaced by apdu_strerror.
(get_ccid_error_string): Removed.
(ct_activate_card): Remove the unused loop.
(reset_ct_reader): Implemented.
(ct_send_apdu): Activate the card if not yet done.
(pcsc_send_apdu): Ditto.
* ccid-driver.h: Add error codes.
* ccid-driver.c: Implement more or less proper error codes all
over the place.
* apdu.c (apdu_send_direct): New.
(get_ccid_error_string): Add some error code mappings.
(send_apdu): Pass error codes along for drivers already supporting
them.
(host_sw_string): New.
(get_ccid_error_string): Use above.
(send_apdu_ccid): Reset the reader if it has not yet been done.
(open_ccid_reader): Don't care if the ATR can't be read.
(apdu_activate_card): New.
(apdu_strerror): New.
(dump_reader_status): Only enable it with opt.VERBOSE.
* iso7816.c (map_sw): Add mappings for the new error codes.
* apdu.c (open_ct_reader, open_pcsc_reader, open_ccid_reader)
(reset_ccid_reader, open_osc_reader): Call dump_reader_status only
in verbose mode.
* app-openpgp.c (do_getattr): Fix for sending CA-FPR.
* app-openpgp.c (app_openpgp_readkey): Fixed check for valid
exponent.
* app-openpgp.c (do_setattr): Sync FORCE_CHV1.
* card-util.c (change_login): Kludge to allow reading data from a
file.
(card_edit): Pass ARG_STRING to change_login.
(card_status): Print CA fingerprints.
(change_cafpr): New.
(card_edit): New command CAFPR.

* errors.h (G10ERR_NO_CARD, G10ERR_CANCELED): New error codes.

* errors.c (g10_errstr): New error codes G10ERR_NO_CARD,
G10ERR_CANCELED.
2004-09-09 18:18:36 +00:00
Werner Koch
bfc45cc8bc * configure.ac: Check for readline.
* signal.c (got_fatal_signal): Do readline cleanup.  Print signal
number if we can't print the name. Use new autoconf macro
HAVE_DECL_SYS_SIGLIST.
(get_signal_name): Removed.

* ttyio.c (tty_get): Add readline support.
2004-09-09 17:04:44 +00:00