Commit Graph

13693 Commits

Author SHA1 Message Date
Roland McGrath
450cd55b9a * sysdeps/i386/sysdep.h (CALL_MCOUNT): Fix typo in last change. 2005-04-29 18:33:46 +00:00
Roland McGrath
cb8d9c9382 2005-04-29 Roland McGrath <roland@redhat.com>
* sysdeps/i386/sysdep.h (CALL_MCOUNT): Fix typo in last change.
2005-04-29 18:33:41 +00:00
Ulrich Drepper
458901c61e * nis/nis_table.c: Fix realloc handling.
* nis/nis_removemember.c: Likewise.
2005-04-29 09:19:34 +00:00
Ulrich Drepper
da4b5d7cdf [BZ #798]
2005-04-28  Ulrich Drepper  <drepper@redhat.com>
	[BZ #798]
	* nscd/Makefile: Help losers who use --with-headers.
2005-04-29 02:08:51 +00:00
Ulrich Drepper
9393da4659 Help losers who use --with-headers. 2005-04-29 02:07:46 +00:00
Roland McGrath
453d8199be [BZ #781, BZ #796]
2005-04-28  Roland McGrath  <roland@redhat.com>
	[BZ #796]
	* sysdeps/unix/sysv/linux/dl-sysdep.h: New file.
	Define NEED_DL_SYSINFO_DSO for all platforms.

	* sysdeps/generic/dl-sysdep.h: Remove multiple inclusion protection.
	* sysdeps/alpha/dl-sysdep.h: Likewise.
	Use #include_next instead of duplicating generic file's contents.
	* sysdeps/ia64/dl-sysdep.h: Likewise.
	* sysdeps/sparc/dl-sysdep.h: Likewise.

2005-03-22  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/powerpc/powerpc64/memset.S (memset): Make ___memset local.

2005-03-07  Steven Munroe  <sjmunroe@us.ibm.com>

	[BZ #781]
	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_TGKILL): Define for powerpc32/64 starting with 2.6.1.
	(__ASSUME_UTIMES): Define for powerpc32/64 starting with 2.6.1.
	(__ASSUME_FADVISE64_64_SYSCALL): Define for powerpc32 only starting
	with 2.6.1.
	(__ASSUME_WAITID_SYSCALL): Don't define for powerpc32/64.
2005-04-28 22:31:00 +00:00
Roland McGrath
0e03d56254 2005-03-22 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/memset.S (memset): Make ___memset local.
2005-04-28 22:20:48 +00:00
Ulrich Drepper
62d01985e9 * sysdeps/i386/sysdep.h: Add cfi instrumentation to asm fragments.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/socket.S: Remove now duplicate
	cfi_startproc and cfi_endproc.
2005-04-28 21:11:47 +00:00
Ulrich Drepper
b1ecbed20b * configure.in: Remove ultrasparc names. 2005-04-28 18:33:03 +00:00
Ulrich Drepper
8406a53a25 * sysdeps/i386/i686/memcmp.S: Move misplaced END.
2005-03-27  Bruno Haible  <bruno@clisp.org>

	Make it possible for multiple threads to use gettext() in different
	locales.
	* intl/dcigettext.c (HAVE_PER_THREAD_LOCALE): New macro.
	(struct known_translation_t): If HAVE_PER_THREAD_LOCALE, add localename
	field.
	(transcmp): If HAVE_PER_THREAD_LOCALE, compare localename fields.
	(DCIGETTEXT): If HAVE_PER_THREAD_LOCALE, fill the localename field in
	search and newp.

	* intl/tst-gettext4.c: New file.
	* intl/tst-gettext4.sh: New file.
	* intl/tst-gettext4-de.po: New file.
	* intl/tst-gettext4-fr.po: New file.
	* intl/tst-gettext5.c: New file.
	* intl/tst-gettext5.sh: New file.
	* intl/Makefile (distribute): Add tst-gettext4.sh, tst-gettext4-de.po,
	tst-gettext4-fr.po, tst-gettext5.sh.
	(multithread-test-srcs): New variable.
	(test-srcs): Add its contents.
	(tests): Depend on tst-gettext4.out, tst-gettext5.out.
	(tst-gettext4.out, tst-gettext5.out): New rules.
	(CFLAGS-tst-gettext4.c, CFLAGS-tst-gettext5.c): New variables.
	Add rule for linking the multithread-test-srcs with the appropriate
	thread-library.

2005-04-28  Ulrich Drepper  <drepper@redhat.com>

	* po/rw.po: New file.  From translation team.
2005-04-28 18:21:03 +00:00
Ulrich Drepper
572028fa7e * scripts/config.guess: Update from upstream.
* scripts/config.sub: Likewise.
2005-04-28 15:32:56 +00:00
Ulrich Drepper
d14df06cfe * SUPPORTED: Add UTF-8 locales where UTF-8 was not already supported. 2005-04-28 14:22:16 +00:00
Ulrich Drepper
75596b98a1 * nscd/connections.c (nscd_run): Use time() value in prune_cache
call, not timeout value, since the latter might be from another clock.
2005-04-28 06:27:13 +00:00
Ulrich Drepper
ad52908115 * sysdeps/pthread/getcpuclockid.c: Include spinlock.h.
Fix a typo in kernel-posix-cpy-timers.h include name, use <> instead
	of "" includes.
	(pthread_getcpuclockid): Fix 2 typos.
2005-04-27 16:56:50 +00:00
Ulrich Drepper
45bc95b581 Use <> instead of "" includes. 2005-04-27 16:51:52 +00:00
Roland McGrath
5e2d8ac83c [BZ #877]
* posix/unistd.h: Remove __nonnull from acct decl.
2005-04-27 09:56:16 +00:00
Roland McGrath
fb1887c7f9 [BZ #877]
2005-04-27  Roland McGrath  <roland@redhat.com>
	[BZ #877]
	* posix/unistd.h: Remove __nonnull from acct decl.
2005-04-27 09:49:39 +00:00
Ulrich Drepper
dea9968599 * tst-cancel17.c (do_test): Add arbitrary factor to make sure
aio_write blocks.
2005-04-27 08:21:37 +00:00
Ulrich Drepper
6bdfb89a67 (do_test): Add arbitrary factor to make sure aio_write blocks. 2005-04-27 08:20:41 +00:00
Roland McGrath
84060bad82 * rt/tst-cpuclock1.c: New file.
* rt/tst-cpuclock2.c: New file.
	* rt/tst-cputimer1.c: New file.
	* rt/tst-cputimer2.c: New file.
	* rt/tst-cputimer3.c: New file.
	* rt/Makefile (tests): Add them.

	* sysdeps/unix/sysv/linux/kernel-posix-cpu-timers.h: New file.
	* sysdeps/unix/sysv/linux/clock_getcpuclockid.c: New file.
	* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c
	(HAS_CPUCLOCK): New macro.
	(clock_getcpuclockid): Function removed.
	#include the new linux file to define it instead.
	* sysdeps/unix/clock_gettime.c [HP_TIMING_AVAIL] (hp_timing_gettime):
	New function, broken out of ...
	(clock_gettime) [HP_TIMING_AVAIL]: ... here.  Call it.
	(realtime_gettime): New function, broken out of ...
	(clock_gettime) [! HANDLED_REALTIME]: ... here.  Call it.
	(clock_gettime) [SYSDEP_GETTIME_CPU]: Use new macro in default case.
	* sysdeps/unix/sysv/linux/clock_gettime.c (SYSCALL_GETTIME): New macro.
	(SYSDEP_GETTIME_CPUTIME): New macro.
	(SYSDEP_GETTIME): Use both.
	[! __ASSUME_POSIX_TIMERS] (maybe_syscall_gettime): New function, broken
	out of ...
	(SYSDEP_GETTIME): ... here.  Use it.
	[__NR_clock_gettime] (HANDLED_CPUTIME): Define it.
	(SYSDEP_GETTIME_CPUTIME): New macro.  Handle CPU timers by trying
	kernel support and falling back to hp-timing code.
	* sysdeps/posix/clock_getres.c
	[HP_TIMING_AVAIL] (hp_timing_getres): New function, broken out of ...
	(clock_getres) [HP_TIMING_AVAIL]: ... here.  Call it.
	(realtime_getres): New function, broken out of ...
	(clock_getres) [! HANDLED_REALTIME]: ... here.  Call it.
	(clock_getres) [SYSDEP_GETRES_CPU]: Use new macro in default case.
	* sysdeps/unix/sysv/linux/clock_getres.c (SYSCALL_GETRES): New macro.
	(SYSDEP_GETRES_CPUTIME): New macro.
	(SYSDEP_GETRES): Use both.
	[! __ASSUME_POSIX_TIMERS] (maybe_syscall_getres): New function, broken
	out of ...
	(SYSDEP_GETRES): ... here.  Use it.
	[__NR_clock_getres] (HANDLED_CPUTIME): Define it.
	(SYSDEP_GETRES_CPUTIME): New macro.  Handle CPU timers by trying
	kernel support and falling back to hp-timing code.
	* sysdeps/unix/sysv/linux/clock_nanosleep.c: Handle
	CLOCK_PROCESS_CPUTIME_ID and CLOCK_PROCESS_THREAD_ID specially,
	translating to the kernel clockid_t for our own process/thread clock.
2005-04-27 08:03:47 +00:00
Roland McGrath
2f4f3bd4a9 2005-04-27 Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/kernel-posix-cpu-timers.h: New file.
	* sysdeps/unix/sysv/linux/clock_getcpuclockid.c: New file.
	* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c
	(HAS_CPUCLOCK): New macro.
	(clock_getcpuclockid): Function removed.
	#include the new linux file to define it instead.
	* sysdeps/unix/clock_gettime.c [HP_TIMING_AVAIL] (hp_timing_gettime):
	New function, broken out of ...
	(clock_gettime) [HP_TIMING_AVAIL]: ... here.  Call it.
	(realtime_gettime): New function, broken out of ...
	(clock_gettime) [! HANDLED_REALTIME]: ... here.  Call it.
	(clock_gettime) [SYSDEP_GETTIME_CPU]: Use new macro in default case.
	* sysdeps/unix/sysv/linux/clock_gettime.c (SYSCALL_GETTIME): New macro.
	(SYSDEP_GETTIME_CPUTIME): New macro.
	(SYSDEP_GETTIME): Use both.
	[! __ASSUME_POSIX_TIMERS] (maybe_syscall_gettime): New function, broken
	out of ...
	(SYSDEP_GETTIME): ... here.  Use it.
	[__NR_clock_gettime] (HANDLED_CPUTIME): Define it.
	(SYSDEP_GETTIME_CPUTIME): New macro.  Handle CPU timers by trying
	kernel support and falling back to hp-timing code.
	* sysdeps/posix/clock_getres.c
	[HP_TIMING_AVAIL] (hp_timing_getres): New function, broken out of ...
	(clock_getres) [HP_TIMING_AVAIL]: ... here.  Call it.
	(realtime_getres): New function, broken out of ...
	(clock_getres) [! HANDLED_REALTIME]: ... here.  Call it.
	(clock_getres) [SYSDEP_GETRES_CPU]: Use new macro in default case.
	* sysdeps/unix/sysv/linux/clock_getres.c (SYSCALL_GETRES): New macro.
	(SYSDEP_GETRES_CPUTIME): New macro.
	(SYSDEP_GETRES): Use both.
	[! __ASSUME_POSIX_TIMERS] (maybe_syscall_getres): New function, broken
	out of ...
	(SYSDEP_GETRES): ... here.  Use it.
	[__NR_clock_getres] (HANDLED_CPUTIME): Define it.
	(SYSDEP_GETRES_CPUTIME): New macro.  Handle CPU timers by trying
	kernel support and falling back to hp-timing code.
	* sysdeps/unix/sysv/linux/clock_nanosleep.c: Handle
	CLOCK_PROCESS_CPUTIME_ID and CLOCK_PROCESS_THREAD_ID specially,
	translating to the kernel clockid_t for our own process/thread clock.
2005-04-27 08:01:41 +00:00
Ulrich Drepper
0f888d8ec6 * stdlib/test-canon.c: Make doesExist a directory and add more tests
for the new error case.

2004-06-02  Dmitry V. Levin  <ldv@altlinux.org>
	    Ranjani Murthy <ranmur@gmail.com>

	* stdlib/canonicalize.c (__realpath): Change realpath(3) to
	return NULL and set errno to ENOTDIR for such pathnames like
	"/path/to/existing-non-directory/".
2005-04-27 07:37:00 +00:00
Ulrich Drepper
935f3e6715 * time/strptime_l.c (__strptime_internal): Handle 'z' to set
tm_gmtoff.
	* time/Makefile (tests): Add tst-strptime2.
	* time/tst-strptime2.c: New file.
2005-04-27 04:33:01 +00:00
Ulrich Drepper
bfc832ccf1 * elf/dl-close.c: Include stddef.h.
(_dl_close): If called recursively, just remember GC needs to be rerun
	and decrease l_direct_opencount.  Avoid GC if l_direct_opencount
	decreased to 1.  Rerun GC at the end if any destructor unloaded some
	additional libraries.
	* elf/Makefile: Add rules to build and run unload6 test.
	* elf/unload6.c: New test.
	* elf/unload6mod1.c: New file.
	* elf/unload6mod2.c: New file.
	* elf/unload6mod3.c: New file.

	* malloc/hooks.c (mem2chunk_check): Add magic_p argument, set *magic_p
	if magic_p is not NULL.
	(top_check): Invoke MALLOC_FAILURE_ACTION if MORECORE failed.
	(malloc_check): Fail if sz == -1.
	(free_check): Adjust mem2chunk_check caller.
	(realloc_check): Likewise.  Fail if bytes == -1.  If bytes == 0 and
	oldmem != NULL, call free_check and return NULL.  If reallocating
	and returning NULL, invert magic byte again to make oldmem valid
	region for further checking.
	(memalign_check): Fail if bytes == -1.
	* malloc/Makefile: Add rules to build and run tst-mcheck.
	* malloc/tst-mcheck.c: New test.
2005-04-27 01:39:11 +00:00
Ulrich Drepper
462be6908c * stdio-common/vfscanf.c: Correctly account for characters of
decimal points right after +-.
2005-04-26 22:31:44 +00:00
Ulrich Drepper
946c577167 Correctly account for characters of decimal points right after +-. 2005-04-26 20:52:22 +00:00
Roland McGrath
bdd075fe25 * elf/rtld-Rules (rtld-all): Test ifndef rtld-modules instead of
ifeq ($(subdir),elf) to distinguish main driver from subdir runs.
2005-04-26 20:05:37 +00:00
Roland McGrath
0980fc8724 2005-04-26 Roland McGrath <roland@redhat.com>
* elf/rtld-Rules (rtld-all): Test ifndef rtld-modules instead of
	ifeq ($(subdir),elf) to distinguish main driver from subdir runs.
2005-04-26 20:05:30 +00:00
Ulrich Drepper
8cf3e47119 Fix typo. 2005-04-26 16:11:10 +00:00
Roland McGrath
b34cbd1428 * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
(INTERNAL_SYSCALL_ERROR_P): Fix typo in last change.

	* sunrpc/xdr.c (xdr_u_int): Use `long' for L and cast where needed.

	* elf/dl-load.c: Revert last change.
2005-04-26 04:26:13 +00:00
Roland McGrath
5949daa081 2005-04-25 Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
	(INTERNAL_SYSCALL_ERROR_P): Fix typo in last change.
2005-04-26 04:25:52 +00:00
Ulrich Drepper
64c0164816 * stdio-common/vfscanf.c: Fix parsing of decimal point after +-.
Patch by Hamed Malek <hamed@bamdad.org>.
2005-04-24 19:39:36 +00:00
Ulrich Drepper
918b198d6e Fix parsing of decimal point after +-. 2005-04-24 19:38:19 +00:00
Roland McGrath
6c63200907 * elf/dl-load.c (_dl_map_object_from_fd): Don't use MAP_DENYWRITE,
since Linux ignores it in user mmap calls.
2005-04-21 21:49:23 +00:00
Roland McGrath
87f37b48fa * sysdeps/sparc/sparc32/elf/start.S: Define __data_start.
* sysdeps/sparc/sparc64/elf/start.S: Likewise.
2005-04-17 22:07:32 +00:00
Roland McGrath
f053c4f7d2 [BZ #823]
bz tag
	[BZ #823]
2005-04-16 02:29:58 +00:00
Roland McGrath
4a035b9da9 * old_pthread_cond_init.c: Include <errno.h>.
(__pthread_cond_init_2_0): Fail with EINVAL if COND_ATTR is
	process shared or uses clock other than CLOCK_REALTIME.
	* pthread_cond_init.c (__pthread_cond_init): Remove bogus comment.
2005-04-15 22:19:39 +00:00
Roland McGrath
21cee297ec * timezone/Makefile (zic-deps): New variable.
($(testdata)/America/New_York): Use it instead of explicit deps.
	($(testdata)/Etc/UTC, $(testdata)/Australia/Melbourne): Likewise.
	($(testdata)/America/Sao_Paulo, $(testdata)/Asia/Tokyo): Likewise.
	(%/UTC %/Universal): New pattern rule, replaces ...
	($(testdata)/UTC, $(testdata)/Universal): ... these removed targets.
	($(testdata)/%/Berlin $(testdata)/%/London): New pattern rule.
	($(testdata)/Europe/London, $(testdata)/Europe/Berlin): Removed.
2005-04-15 20:09:13 +00:00
Roland McGrath
c9e169479e [BZ #253]
2005-04-14  Roland McGrath  <roland@redhat.com>
	* MakeTAGS ($P/$(domain).pot): Depend on distinfo file as well.
	(extract): Filter-out distinfo file name.

	[BZ #253]
	* MakeTAGS (text-srcs): Match %.bash.in files too.

	[BZ #253]
	* nscd/Makefile (all-nscd-modules): New variable, include selinux
	module regardless of configuration.
	(distribute): Use that instead of $(nscd-modules).
2005-04-15 06:33:21 +00:00
Roland McGrath
87e7eef4a6 [BZ #851]
bz tag
	[BZ #851]
2005-04-15 01:56:03 +00:00
Ulrich Drepper
edac0e8f44 Add sparc64 TLS and NPTL support.
* elf/tls-macros.h: Add Sparc64 defines.
	* sysdeps/sparc/sparc64/dl-machine.h (sparc64_fixup_plt): Mark as
	always_inline.
	(elf_machine_fixup_plt): Likewise.
	(elf_machine_rela): Handle TLS relocations.
	(elf_machine_type_cleaa): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
	(SYSCALL_ERROR_HANDLER_ENTRY): Use sethi/or for GOT reloc.
	It does not always fit in R_SPARC_GOT13 when building -fPIC.
	Also, add TLS handling.
	* sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel):
	Increase it to 2.4.21 for sparc64.
	* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: NULL terminate
	backtrace by zero'ing out %fp.  Store away flags, func_ptr,
	and func_arg in global registers not local registers.
	* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Handle PTID, TLS,
	and CTID arguments properly.  Add RESET_PID handling.
	* sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Rework so that we
	do not invoke __sigprocmask().  We can always assume rt signals
	are present on sparc64, so just do an inline syscall.

2005-04-13  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/sparc/sparc64/dl-machine.h: Add dl_machine_h multiple
	inclusion guard for the first half of the header.
	(elf_machine_type_class, ELF_MACHINE_JMP_SLOT, ELF_MACHINE_NO_REL,
	ELF_MACHINE_PLTREL_OVERLAP, elf_machine_runtime_setup,
	elf_machine_relplt, DL_STACK_END, RTLD_START): Move into the
	#ifndef dl_machine_h guarded part of the header.
2005-04-14 21:46:37 +00:00
Ulrich Drepper
506cbf1f43 * posix/execvp.c (execvp): Use file name including path when
trying to run it with shell.
	* posix/Makefile: Add rules to build and run tst-execvp3.
	* posix/tst-execvp3.c: New file.
2005-04-14 21:20:51 +00:00
Ulrich Drepper
806bc96abb * stdlib/random_r.c (__initstate_r): Don't use non-existing state.
* string/tst-strfry.c: New file.
	* string/Makefile (tests): Add tst-strfry.
2005-04-12 15:29:07 +00:00
Ulrich Drepper
fcc3501c22 (__initstate_r): Don't use non-existing state. 2005-04-12 15:21:29 +00:00
Roland McGrath
e638c1a2b8 * sysdeps/sparc/sparc32/dl-trampoline.S: Use std not stx. 2005-04-11 20:43:17 +00:00
Roland McGrath
79827876ee * manual/string.texi: Fix typo in wmemcpy decl. 2005-04-11 20:22:01 +00:00
Roland McGrath
9cb97cd42c 2005-04-08 Carlos O'Donell <carlos@baldric.uwo.ca>
* FAQ.in: Explain why `make' might fail running rpcgen.
	* FAQ: Regenerated.
2005-04-08 21:00:44 +00:00
Roland McGrath
ec781e12e2 * po/libc.pot: Regenerated.
2005-04-07  Roland McGrath  <roland@redhat.com>
2005-04-08 05:05:50 +00:00
Roland McGrath
ab1d521db3 * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_discover_osversion)
[(NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO) && SHARED]: Scan
	GLRO(dl_sysinfo_map) for PT_NOTE giving Linux kernel version,
	we can skip the uname call if it's there.
	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't use
	DL_SYSDEP_OSCHECK here.
	* elf/rtld.c (dl_main) [DL_SYSDEP_OSCHECK]: Do it here instead.

	* sysdeps/generic/ldsodefs.h (struct rtld_global_ro):
	Add _dl_sysinfo_map.
	* elf/rtld.c (dl_main): Don't call _dl_init_paths early in the
	rtld_is_main case.  Call it unconditionally later.
	Move GLRO(dl_sysinfo_dso) handling earlier, before _dl_init_paths call.
	Initialize GLRO(dl_sysinfo_map).
	* elf/dl-load.c (open_path): Bail out if _dl_init_paths wasn't called.
	* sysdeps/generic/dl-sysdep.c (_DL_FIRST_EXTRA): New macro.
	(_dl_important_hwcaps)
	[(NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO) && SHARED]: Scan
	GLRO(dl_sysinfo_map) for PT_NOTE giving synthetic hwcap names
	and bit values.
	* elf/ldconfig.c (_DL_FIRST_EXTRA): New macro.
	(hwcap_extra): New static variable.
	(is_hwcap_platform): Check hwcap_extra for a matching name.
	Remove tls special case.
	(path_hwcap): Likewise.
	(parse_conf): Parse "hwcap" directive to define synthetic hwcap bits
	and their names, stored in hwcap_extra.
	(main) [USE_TLS]: Initialize final synthetic hwcap bit as "tls".

	* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Use uint64_t for
	_dl_hwcap and _dl_hwcap_mask.
	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Cast a_val for
	AT_HWCAP to unsigned long int.
	* elf/dl-support.c (_dl_aux_init): Likewise.
	(_dl_hwcap): Update defn.

	* elf/cache.c (print_entry): Pad hwcap value with 0s in diagnostic.
	* elf/ldconfig.c (search_dir): Likewise.
2005-04-07 20:57:41 +00:00
Roland McGrath
da232bf925 * NEWS: Copy 2.3.5 section from 2.3 branch.
2004-12-09  H.J. Lu <hjl@lucon.org>
2005-04-06 03:07:37 +00:00