Commit Graph

157 Commits

Author SHA1 Message Date
042704ddd3 Blessed by Ettore.
Guided by Jacub Stener's mail, where he explaned which icons were renamed or
added, I added a bunch of new icons to menus, fixed renamed ones. Changed Trash
and Executive summary folder type icons. Fixed art/Makefile.am for these
changes.

Also, pulled icon cache from mailer and moved it to e-util/e-gui-utils.h, made
all components and dialogs use cache and not load pixmaps every time.

Accidentally got a couple of includes fix in, but they won't break anything.

svn path=/trunk/; revision=9092
2001-04-02 03:59:11 +00:00
6ba2a1416e Check that first_colon < last_at, to prevent horrible things from
2001-03-31  Jon Trowbridge  <trow@ximian.com>

	* e-url.c (e_url_shroud): Check that first_colon < last_at,
	to prevent horrible things from happening.  Removed spew.
	(e_url_equal): Removed spew.

svn path=/trunk/; revision=9065
2001-03-31 06:08:30 +00:00
2067796514 Add support for converting e-mail addresses to links. (is_email_address):
2001-03-30  Jon Trowbridge  <trow@ximian.com>

        * e-html-utils.c (e_text_to_html_full): Add support for converting
        e-mail addresses to links.
        (is_email_address): Added.  Identifies e-mail addresses.
        (email_address_extract): Added.  Extracts a copy of the e-mail
        address from the text.

        * e-html-utils.h (E_TEXT_TO_HTML_CONVERT_ADDRESSES): Added.

        * e-url.c (e_url_shroud): Added.  Copy a url, replacing
        any plaintext passwords with a single *.
        (e_url_equal): Compare two urls, taking into account that
        they may or may not be shrouded.

2001-03-30  Jon Trowbridge  <trow@ximian.com>

        * camel-mime-message.c (camel_mime_message_set_source): Shrould
        our source URL before putting it into X-Evolution-Source.

2001-03-30  Jon Trowbridge  <trow@ximian.com>

        * mail-display.c (mail_text_write): Add (commented-out)
        E_TEXT_TO_HTML_CONVERT_ADDRESSES.

        * mail-config.c (mail_config_get_account_by_source_url):
        Call e_url_equal to compare URLs.

svn path=/trunk/; revision=9050
2001-03-30 18:05:48 +00:00
6d9167de80 Remove #include <glib.h> Shuffle some headers. Remove #include
2001-03-29  Kjartan Maraas  <kmaraas@gnome.org>

	* e-corba-utils.h: Remove #include <glib.h>
	* e-dialog-widgets.c: Shuffle some headers.
	* e-dialog-widgets.h: Remove #include <libgnomeui/gnome-propertybox.h>
	* e-gtk-utils.c: #include <gtk/gtksignal.h>
	* e-gtk-utils.h: Replace #include <gtk/gtk.h>
	* e-gui-utils.c: Replace #include <gnome.h>
	* e-html-utils.c: Shuffle headers.
	* e-iterator.c: Replace #include <gtk/gtk.h>
	* e-iterator.h: Replace #include <gtk/gtk.h>
	* e-list-iterator.c: Remove #include <gtk/gtk.h>
	* e-list-iterator.h: Replace #include <gtk/gtk.h>
	* e-list.c: Remove #include <gtk/gtk.h>
	* e-list.h: Replace #include <gtk/gtk.h>
	* e-memory.c: #include <string.h> and <stdlib.h>
	* e-msgport.c: Move around some includes. s/%d/%ld/g in a printf()
	call to fix a warning.
	* e-pilot-map.c: #include <string.h>. Replace #include <gnome.h>
	* e-pilot-util.c: Remove #include <gnome.h>
	* e-sexp.c: Remove #include <glib.h>
	* e-sexp.h: Replace #include <gtk/gtk.h>
	* e-time-utils.c: #include <string.h>
	* md5-utils.c: Shuffle headers.
	* test-ename-western-gtk.c: Replace #include <gnome.h>
	* test-ename-western.c: Same here.

svn path=/trunk/; revision=9016
2001-03-29 18:07:13 +00:00
3e105b5bb7 new function, extracted from e_text_to_html, added color parameter
2001-03-20  Radek Doulik  <rodo@ximian.com>

	* e-html-utils.c (e_text_to_html_full): new function, extracted
	from e_text_to_html, added color parameter

2001-03-19  Radek Doulik  <rodo@ximian.com>

	* e-html-utils.c (e_text_to_html): support mark citation

	* e-html-utils.h (E_TEXT_TO_HTML_MARK_CITATION): added
	E_TEXT_TO_HTML_MARK_CITATION

svn path=/trunk/; revision=8847
2001-03-20 16:50:12 +00:00
79b4221f89 added function to format just the time.
2001-03-18  Damon Chaplin  <damon@ximian.com>

	* e-time-utils.c (e_time_format_time): added function to format just
	the time.

svn path=/trunk/; revision=8822
2001-03-19 15:46:32 +00:00
13afe78350 Fix a bug noticed by kmaraas
* e-path.c (e_path_to_physical): Fix a bug noticed by kmaraas

svn path=/trunk/; revision=8763
2001-03-16 21:00:39 +00:00
aa69aa95cd Fix a bit: [mailto:foo] shouldn't grab the ']'
* e-html-utils.c (url_extract): Fix a bit: [mailto:foo] shouldn't
	grab the ']'

svn path=/trunk/; revision=8736
2001-03-15 14:36:23 +00:00
48a7e88376 update cflag macros
2001-03-12  JP Rosevear  <jpr@ximian.com>

	* Makefile.am: update cflag macros

svn path=/trunk/; revision=8648
2001-03-12 20:42:02 +00:00
bb6e7097e0 Fix an off-by-one in the "is this for real?" check so that "http:// "
* e-html-utils.c (url_extract): Fix an off-by-one in the "is this
	for real?" check so that "http:// " won't get URLified

svn path=/trunk/; revision=8581
2001-03-07 15:39:54 +00:00
0a60162f0b new files to contain functions to parse and format dates and times for
2001-03-04  Damon Chaplin  <damon@ximian.com>

	* e-time-utils.[hc]: new files to contain functions to parse and
	format dates and times for various calendar widgets.

svn path=/trunk/; revision=8546
2001-03-04 23:52:39 +00:00
ca443fec62 New function to turn foo/bar into foo/subfolders/bar. The inverse function
* e-path.c (e_path_to_physical): New function to turn foo/bar into
	foo/subfolders/bar. The inverse function doesn't exist yet because
	I didn't need it. Also, if the shell were going to use this, we'd
	need a few more tools...

	* Makefile.am (libeutil_la_SOURCES): Add e-path.[ch]

svn path=/trunk/; revision=8467
2001-03-02 00:31:23 +00:00
dbcf425277 Make it handle a NULL string as an empty string.
2001-03-01  Not Zed  <NotZed@Ximian.com>

        * e-sexp.c (e_sexp_encode_string): Make it handle a NULL string as
        an empty string.

svn path=/trunk/; revision=8448
2001-03-01 17:10:35 +00:00
c2d5b54e94 Turned off some of the debug.
2001-02-23  Not Zed  <NotZed@Ximian.com>

        * e-msgport.c : Turned off some of the debug.

svn path=/trunk/; revision=8364
2001-02-23 02:42:15 +00:00
c70f26c34b Wait a lot lot longer for threads to finish.
2001-02-23  Not Zed  <NotZed@Ximian.com>

        * e-msgport.c (e_thread_destroy): Wait a lot lot longer for
        threads to finish.

svn path=/trunk/; revision=8352
2001-02-22 22:32:29 +00:00
fc1cb88c14 Changed to allocate raw blocks for the data, and keep track of them with
2001-02-08  Not Zed  <NotZed@Ximian.com>

        * e-memory.c (EMemChunk): Changed to allocate raw blocks for the
        data, and keep track of them with an array, this is so the native
        malloc alignment is not lost at the allocation stage.

svn path=/trunk/; revision=8100
2001-02-08 03:19:37 +00:00
80697cc5ad Turn on joining of cancelled threads. (e_msgport_wait): Put a cleanup
2001-01-30  Not Zed  <NotZed@Ximian.com>

        * e-msgport.c (e_thread_destroy): Turn on joining of cancelled threads.
        (e_msgport_wait): Put a cleanup handler to clear the mp lock if it
        happens in cond_wait, since it will be locked again.

svn path=/trunk/; revision=7919
2001-01-30 23:08:25 +00:00
d057619fd6 If we have waiting threads, then dont start a new one for the NEW case.
2001-01-29  Not Zed  <NotZed@Ximian.com>

        * e-msgport.c (e_thread_put): If we have waiting threads, then
        dont start a new one for the NEW case.
        (thread_dispatch): For the NEW case, dont exit, just keep running,
        waiting for a new message to come along.
        (e_thread_destroy): When cleaning up NEW threads, cancel any
        non-busy threads.

svn path=/trunk/; revision=7883
2001-01-29 09:03:04 +00:00
7ad01f8ebe Add chunk allocators.
2001-01-24  Not Zed  <NotZed@Ximian.com>

        * e-sexp.h (ESExp): Add chunk allocators.

        * e-sexp.c: Removed some redundant debug printfs.
        (e_sexp_term_eval): Dont allocate result till we have it. so we
        can have a fatal error, and not leak it.
        (term_eval_plus): If we have to abort, free our arguments.
        (term_eval_sub): Same.
        (parse_new_term): Renamed to parse_term_new for consistency.
        Fixed callers.
        (e_sexp_result_new): Add the esexp as an argument.  Ouch, lots of
        code to change for this.  Allocate blocks from an ememchunk.
        Fixed all callers.
        (e_sexp_result_free): Same as above, free blocks from the
        ememchunk.  Fixed all callers.
        (parse_term_new):
        (parse_term_free): Similarly, add the esexp to the argument, and
        alloc/free from memchunks.  Fixed all local callers.
        (e_sexp_init): Setup the memory chunk allocators.
        (e_sexp_finalise): Destroy memchunk allocators.

svn path=/trunk/; revision=7795
2001-01-25 02:03:10 +00:00
1ec2a37465 Removed some redundant debug printfs. (e_sexp_term_eval): Dont allocate
2001-01-24  Not Zed  <NotZed@Ximian.com>

        * e-sexp.c: Removed some redundant debug printfs.
        (e_sexp_term_eval): Dont allocate result till we have it. so we
        can have a fatal error, and not leak it.
        (term_eval_plus): If we have to abort, free our arguments.
        (term_eval_sub): Same.
        (parse_new_term): Renamed to parse_term_new for consistency.
        Fixed callers.

svn path=/trunk/; revision=7766
2001-01-24 00:32:35 +00:00
73053088aa Setup error return and return error on parse error. (parse_list): Fail if
2001-01-23  Not Zed  <NotZed@Ximian.com>

        * e-sexp.c (e_sexp_parse): Setup error return and return error on
        parse error.
        (parse_list): Fail if we have a problem.
        (parse_value): Here too.
        (fatal_error): Fatal error handling function, jumps back to the
        top caller.
        (term_eval_and):
        (e_sexp_term_eval):
        (term_eval_sub):
        (term_eval_plus):
        (term_eval_gt):
        (term_eval_lt):
        (term_eval_or):  Fail on error.
        (e_sexp_term_eval): Added a comment about where this can be
        called, which is only from inside e_sexp_eval().
        (e_sexp_eval): Setup setjmp error handler.
        (e_sexp_error): Error accessor function.

        * e-sexp.h: Added a longjmp environment to the structure, and an
        error return to parse.

svn path=/trunk/; revision=7738
2001-01-23 04:34:33 +00:00
fa5982c96a New function, can't use strlen on the md5 hash because it might have null
2001-01-22  JP Rosevear  <jpr@ximian.com>

	* e-dbhash.c (md5_to_dbt): New function, can't use strlen on the md5
	hash because it might have null chars in it.
	(e_dbhash_add): use md5_to_dbt

svn path=/trunk/; revision=7726
2001-01-22 23:10:22 +00:00
bb7e98c4eb New function, name describes it well. (gtk_radio_button_select_nth): New
2001-01-17  Jason Leach  <jasonleach@usa.net>

	* e-gtk-utils.c (gtk_radio_button_get_nth_selected): New function,
	name describes it well.
	(gtk_radio_button_select_nth): New function.

svn path=/trunk/; revision=7629
2001-01-19 01:28:28 +00:00
3e5f2a63e4 Ximianified.
2001-01-17  Federico Mena Quintero  <federico@ximian.com>

	* e-dialog-widgets.[ch]: Ximianified.

svn path=/trunk/; revision=7574
2001-01-17 10:49:30 +00:00
905f29ebb3 Dup the string passed in, not the temporary string. d'oh.
2001-01-15  JP Roseveaer  <jpr@ximian.com>

	* e-pilot-util.c (e_pilot_utf8_from_pchar): Dup the string passed
	in, not the temporary string. d'oh.

svn path=/trunk/; revision=7501
2001-01-15 14:04:29 +00:00
fc9fd0c4dd #define E_THREAD_NONE as ((pthread_t)~0) and use that instead of ~0
* e-msgport.c: #define E_THREAD_NONE as ((pthread_t)~0) and use
	that instead of ~0 throughout. (pthread_t is a pointer type on my
	system, so there are lots of warnings without the cast.)

svn path=/trunk/; revision=7271
2001-01-05 20:04:15 +00:00
5674966eeb Merge from camel-mt-branch.
2000-12-24  Not Zed  <NotZed@HelixCode.com>

        * Merge from camel-mt-branch.

svn path=/trunk/; revision=7152
2000-12-24 00:58:02 +00:00
64e2a500f8 Check for null strings (e_pilot_utf8_from_pchar): ditto
2000-12-20  JP Rosevear  <jpr@helixcode.com>

	* e-pilot-util.c (e_pilot_utf8_to_pchar): Check for null strings
	(e_pilot_utf8_from_pchar): ditto

svn path=/trunk/; revision=7106
2000-12-20 21:48:10 +00:00
fff1110610 Convert cal component strings to pilot character set
2000-12-19  JP Rosevear  <jpr@helixcode.com>

	* conduits/calendar/calendar-conduit.c (local_record_from_comp):
	Convert cal component strings to pilot character set
	(comp_from_remote_record): vice versa

	* conduits/todo/todo-conduit.c: Same as above

2000-12-19  JP Rosevear  <jpr@helixcode.com>

	* conduit/address-conduit.c (local_record_from_ecard): Convert ecard
	strings to pilot encodings

2000-12-19  JP Rosevear  <jpr@helixcode.com>

	* e-pilot-util.c (e_pilot_utf8_to_pchar): Convert utf8 strings to
	pilot character set
	(e_pilot_utf8_from_pchar): vice versa

	* Makefile.am: Conditionally build e-pilot-util.[hc] because
	they depend on pilot-link stuff

svn path=/trunk/; revision=7090
2000-12-19 23:09:31 +00:00
9fc3ed958a make sure we actually make enough space for "&nbsp;".
2000-12-13  Larry Ewing  <lewing@helixcode.com>

	* e-html-utils.c (e_text_to_html): make sure we actually make
	enough space for "&nbsp;".

svn path=/trunk/; revision=6964
2000-12-13 08:52:53 +00:00
10cab4c208 Updated documentation comment.
2000-12-08  Federico Mena Quintero  <federico@helixcode.com>

	* e-dialog-widgets.c (e_dialog_editable_get): Updated
	documentation comment.

svn path=/trunk/; revision=6869
2000-12-08 21:09:31 +00:00
8044585228 New `e-corba-utils.c' module, for now just containing a function to
get a safe CORBA string from a possibly NULL string pointer.

svn path=/trunk/; revision=6786
2000-12-04 23:16:05 +00:00
3fa03e87ea Fix typename of args (for all funcs). (e_strv_set_ref): Assert the index
2000-11-30  Not Zed  <NotZed@HelixCode.com>

        * e-memory.c (e_strv_new): Fix typename of args (for all funcs).
        (e_strv_set_ref): Assert the index is in range.
        (e_strv_set_ref_free): "
        (e_strv_set): "
        (e_strv_get): "

svn path=/trunk/; revision=6733
2000-11-30 11:50:11 +00:00
fe151f1599 Plug a memleak, need to free results from term_eval(). (term_eval_gt):
2000-11-29  Not Zed  <NotZed@HelixCode.com>

        * e-sexp.c (term_eval_lt): Plug a memleak, need to free results
        from term_eval().
        (term_eval_gt):
        (term_eval_eq):

2000-11-27  Not Zed  <NotZed@HelixCode.com>

        * e-memory.c (e_mempool_new): Added some locking to global data.
        This should make the interfaces mt-safe, although each object is
        only per-thread safe.

svn path=/trunk/; revision=6710
2000-11-29 10:29:56 +00:00
17c69cb3be New function, set a reference to a string that is then owned/free'd by the
2000-11-22  Not Zed  <NotZed@HelixCode.com>

        * e-memory.c
        (e_strv_set_ref_free): New function, set a reference to a string
        that is then owned/free'd by the strv.
        (e_strv_destroy): If there are any strings to destroy, free them
        here.

svn path=/trunk/; revision=6645
2000-11-22 00:45:40 +00:00
477df7090a If we dont get a big enough chunk in the first node, give up. Otherwise we
2000-11-22  Not Zed  <NotZed@HelixCode.com>

        * e-memory.c (e_mempool_alloc): If we dont get a big enough chunk
        in the first node, give up.  Otherwise we spend too much time
        searching.
        (e_mempool_strdup): Doh, and allocate enough for the terminating
        NUL at that.

svn path=/trunk/; revision=6631
2000-11-21 14:59:13 +00:00
bb09c40e2f New function to strdup into a mempool.
2000-11-21  Not Zed  <NotZed@HelixCode.com>

        * e-memory.c
        (e_mempool_strdup): New function to strdup into a mempool.

svn path=/trunk/; revision=6630
2000-11-21 14:31:41 +00:00
4639aa999e New function to allocate a zero'd out chunk.
2000-11-21  Not Zed  <NotZed@HelixCode.com>

        * e-memory.c (e_memchunk_alloc0): New function to allocate a
        zero'd out chunk.

svn path=/trunk/; revision=6624
2000-11-21 04:01:10 +00:00
79f6be42c0 New routines for fast memory management and compact string array storage.
2000-11-20  Not Zed  <NotZed@HelixCode.com>

        * e-memory.[ch]: New routines for fast memory management and
        compact string array storage.

        * Makefile.am (libeutil_la_SOURCES): Added e-memory.[ch].

svn path=/trunk/; revision=6619
2000-11-20 23:57:32 +00:00
b24160aa2c oops thats func not *func
2000-11-09  JP Rosevear  <jpr@helixcode.com>

	* e-dbhash.h: oops thats func not *func

	* e-dbhash.c (e_dbhash_foreach_key): Memset the data DBT to 0

svn path=/trunk/; revision=6521
2000-11-09 22:18:17 +00:00
082bc288ff Build e-dbhash.[hc]
2000-11-07  JP Rosevear  <jpr@helixcode.com>

	* Makefile.am: Build e-dbhash.[hc]

	* e-dbhash.[hc]: New routines to manage a db database on disk that
	contains md5 hashed data and indexed by uids.  Provides comparison
	functions and such so the caller does not have to do the md5 bits.

2000-11-07  JP Rosevear  <jpr@helixcode.com>

	* backend/pas/pas-book.h: Update PASRequest structure

	* backend/pas/pas-book.c (impl_Evolution_Book_get_changes): update param name
	(pas_book_queue_get_changes): Use PASRequest change_id slot

	* backend/pas/pas-backend-file.c (pas_backend_file_book_view_copy):
	Properly copy change_id and change_context
	(pas_backend_file_book_view_free): Free change_id/change_context
	(pas_backend_file_changes_foreach_key): Callback to figure out the
	deleted cards
	(pas_backend_file_changes): Use new e-dbhash stuff to implement.
	Write out updated hash

	* backend/idl/addressbook.idl: Rename get_changes param

svn path=/trunk/; revision=6489
2000-11-07 22:25:34 +00:00
58909b5880 #include <string.h> to quench warning. #include <stdlib.h> for same
200-10-30  Kjartan Maraas  <kmaraas@gnome.org>

	* e-dialog-widgets.c: #include <string.h> to quench warning.
	* e-sexp.c: #include <stdlib.h> for same reason.

svn path=/trunk/; revision=6288
2000-10-31 13:36:26 +00:00
7
4edb2c4651 build md5-utils
2000-10-27    <jpr@helixcode.com>

	* Makefile.am: build md5-utils

	* md5-utils.c: Make part of util, get rid of camel stream util
	function include string.h

	* md5-utils.h: ditto

2000-10-27    <jpr@helixcode.com>

	* providers/pop3/Makefile.am: Tidy up build

	* providers/smtp/Makefile.am: ditto

	* Makefile.am:  Move md5-utils.[hc] to e-util because the
	addressbook is going to use md5 hashes for pilot syncing.
	Maybe the calendar conduits as well because this is a good idea
	Chris had.

svn path=/trunk/; revision=6234
2000-10-27 18:28:20 +00:00
7
d47425dac3 Return null if no pnode was found.
2000-10-27    <jpr@helixcode.com>

	* e-pilot-map.c (e_pilot_map_lookup_uid): Return null if no
	pnode was found.

svn path=/trunk/; revision=6229
2000-10-27 15:52:58 +00:00
e071cdeeb4 Get archive field while parsing (map_write_foreach): Write out archive
2000-10-27  JP Rosevear  <jpr@helixcode.com>

	* e-pilot-map.c (map_sax_start_element): Get archive field while
	parsing
	(map_write_foreach): Write out archive field
	(e_pilot_map_pid_is_archived): implement
	(e_pilot_map_uid_is_archived): ditto
	(e_pilot_map_insert): Insert new node structures
	(e_pilot_map_lookup_pid): Take into account the list is now
	a list of structures
	(e_pilot_map_lookup_uid): ditto

svn path=/trunk/; revision=6224
2000-10-27 12:30:27 +00:00
74c9e1118f unsigned chars.
2000-10-26  Michael Meeks  <michael@helixcode.com>

	* ename/e-address-western.c (e_address_western_is_postal):
	unsigned chars.

	* ename/e-name-western.c (e_name_western_get_one_prefix_at_str):
	cast to unsigned char.

svn path=/trunk/; revision=6212
2000-10-26 21:20:51 +00:00
0b2c3f424b Deal properly with URLs at the end of the buffer. (The old code would
* e-html-utils.c (e_text_to_html): Deal properly with URLs at the
	end of the buffer. (The old code would append a "&#0;" to the
	text.)

svn path=/trunk/; revision=6169
2000-10-25 16:07:20 +00:00
e504870c44 Lookup a pid by uid. (e_pilot_map_lookup_uid): Lookup a uid by pid. Now
2000-10-23  JP Rosevear  <jpr@helixcode.com>

	* e-pilot-map.c (e_pilot_map_lookup_pid): Lookup a pid by uid.
	(e_pilot_map_lookup_uid): Lookup a uid by pid.
	Now this is wrapped, we can store archive info internally

	* e-pilot-map.h: New accessor prototype

2000-10-23  JP Rosevear  <jpr@helixcode.com>

	* conduits/todo/todo-conduit.c (local_record_from_comp): Use
	new e-pilot-map lookup function
	(match): ditto

	* conduits/calendar/calendar-conduit.c (local_record_from_comp): Use
	new e-pilot-map lookup function
	(match): ditto

svn path=/trunk/; revision=6146
2000-10-24 16:21:10 +00:00
babd37f2f7 Remove unused GNOMELOCALEDIR setting.
* ename/Makefile.am (INCLUDES): Remove unused GNOMELOCALEDIR
	setting.

svn path=/trunk/; revision=6142
2000-10-24 03:11:20 +00:00
ecb43703f8 Use new libeconduit calls and abstraction
2000-10-23  JP Rosevear  <jpr@helixcode.com>

	* conduit/address-conduit.h: Use new libeconduit calls and
	abstraction

	* conduit/address-conduit.c: ditto

2000-10-23  JP Rosevear  <jpr@helixcode.com>

	* conduits/todo/todo-conduit.h: Use new libeconduit calls and
	abstraction

	* conduits/calendar/calendar-conduit.c: ditto

	* conduits/calendar/calendar-conduit.h: ditto

	* conduits/todo/todo-conduit.c: ditto

	* conduits/calendar/Makefile.am: Add libeconduit-static.la

	* conduits/calendar/calendar-conduit.c (post_sync): Use e_pilot_map_write
	(pre_sync): Use e_pilot_map_read

2000-10-23  JP Rosevear  <jpr@helixcode.com>

	* e-pilot-map.c: Operate with EPilotMap structure so things are
	abstract to the caller
	(e_pilot_map_pid_is_archived): Infrastructure for marking records
	as archived
	(e_pilot_map_uid_is_archived): ditto

	* e-pilot-map.h: Add more to public interface, including EPilotMap
	structure

svn path=/trunk/; revision=6134
2000-10-23 22:18:44 +00:00