Commit Graph

6144 Commits

Author SHA1 Message Date
Danny Smith
19ff420025 [mingw-Bugs-1553275]
* include/wingdi.h (SetLayout): Add prototype.
	(GetLayout): Likewise.
2006-09-07 09:09:13 +00:00
Danny Smith
ab1d66234a * mingwex/gdtoa/misc.c (pow5mult): Restore original code.
* mingwex/gdtoa/gdtoa.h. Add comment that files have been modified.
	* mingwex/gdtoa/gdtoaimp.h: Include system headers with <> brackets.
2006-09-06 22:03:16 +00:00
Danny Smith
a046f426ed [mingw-Bugs-1550139]
* include/oleauto.h (GetRecordInfoFromTypeInfo): Add prototype.
	(GetRecordInfoFromGuids): Add prototype.
2006-09-02 09:00:45 +00:00
Danny Smith
1202770601 * include/winbase.h: Add comment about 'missing' SEM flag. 2006-09-01 01:28:30 +00:00
Danny Smith
e635b30956 Import David Gay's gdtoa library.
* mingwex/gdtoa: New directory.
	* mingwex/gdtoa/(arithchk.c, dmisc.c, dtoa.c, g__fmt.c, g_dfmt.c,
	g_ffmt.c, g_xfmt.c, gd_arith.h, gd_qnan.h, gdtoa.c, gdtoa.h,
	gdtoaimp.h, gethex.c, gmisc.c, hd_init.c, hexnan.c, misc.c, qnan.c,
	README, smisc.c, strtodg.c, strtodnrp.c, strtof.c, strtopx.c, sum.c,
	ulp.c): New files.
	* mingwex/(strtof.c, strtold.c, ldtoa.c): Remove files.
	* mingwex/math/(cephes-emath.c, cephes-emath.h): Remove files.
	* mingwex/mb_wc_common.h (get_cp_from_locale); Rename to get_codepage().
        * mingwex/(btowc.c, wctob.c, mbrtowc.c, wcrtomb.c): Adjust call to get_codepage().
	* mingwex/wcstold.c: Avoid using strtold internals.
	* mingwex/wcstof.c: Rewrite.
	* mingwex/Makefile.in (GDTOA_DISTFILES): Add to distribution.
	(GDTOA_OBJS): Add to library.
	(DISTFILES): Remove strtof.c strtold.c ldtoa.c cephes-emath.c cephes-emath.h.
	(STDLIB_OBJS): Remove.
	(STDLIB_STUB_OBJS): Remove strtof.o wcstof,o.
	(Q8_OBJS): Add wcstof.o wcstold.o.
	* include/stdlib.h (strtof): Remove inline definition.
	(wcstof): Likewise.
	* include/wchar.h (wcstof): Remove inline definition.
2006-08-31 23:48:56 +00:00
Corinna Vinschen
55283468e6 * grp.cc (initgroups32): Run get_server_groups under original token.
* syscalls.cc (seteuid32): Slightly reorganize code creating a token.
2006-08-31 15:57:56 +00:00
Christopher Faylor
c9f1f4b438 * Makefile.in: Make install-license .PHONY. Make sure that doc directory is
created before copying to it.
2006-08-31 00:53:48 +00:00
Corinna Vinschen
7e5d0e9f95 * Makefile.in: Make installation of CYGWIN_LICENSE configurable.
* aclocal.m4: Regenerate.
	* configure.in: Add GCC_NO_EXECUTABLES call. Add configuration for
	INSTALL_LICENSE.  Make cygwin subdirectory optional.  Add sanity
	check for cygwin resp. mingw subdirectories dependent of the target.
	* configure: Regenerate.
2006-08-30 13:05:46 +00:00
Corinna Vinschen
3cdac9e9d4 * Makefile.in: Add with_cross_host to allow more granular checks.
Set installation directories accordingly.  Override CC setting only
	if building a Cygwin target.
	* aclocal.m4: Regenerate.
	* configure.in: Move AC_CANONICAL_SYSTEM check up.  Add
	GCC_NO_EXECUTABLES.  Substitute with_cross_host in depending files.
	Test AC_ALLOCA only if building on a native system.
	* configure: Regenerate.
2006-08-30 13:05:05 +00:00
Corinna Vinschen
fc0256b600 * configure.in: Substitute with_cross_host in depending files.
* configure: Regenerate.
	* lib/Makefile.in: Add with_cross_host to allow more granular checks.
	Set installation directories accordingly.
	* lib/ddk/Makefile.in: Ditto.
	* lib/directx/Makefile.in: Ditto.
2006-08-30 13:04:41 +00:00
Christopher Faylor
1cc0c5d6f9 * child_info.h (child_info_spawn::~child_info_spawn): Don't close myself_pinfo
handle when spawning.
2006-08-27 16:46:27 +00:00
Chris Sutcliffe
d9baa656ed 2006-08-27 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* include/ctype.h: Fix typo.
2006-08-27 12:14:58 +00:00
Joshua Daniel Franklin
1e069c300d * faq-setup.xml (faq.setup.uninstall): Mention Safe Mode
requirement for accessing the Security tab in XP Home.
        * faq-using.xml (faq.using.chmod): Mention FAT32.
2006-08-26 19:11:00 +00:00
Danny Smith
80f52ae1dd * include/ctype.h: Expose iswblank if __cplusplus.
* include/wctype.h: Expose iswblank if __cplusplus.
2006-08-25 09:10:05 +00:00
Corinna Vinschen
f1f69c58bf * fhandler_disk_file.cc (fhandler_disk_file::opendir): Fix formatting. 2006-08-20 12:31:07 +00:00
Corinna Vinschen
b0662a051b * fhandler_disk_file.cc (DIR_NUM_ENTRIES): Set to 100 to maximize
performance on remote shares.
	(fhandler_disk_file::opendir): Move comment about Samba weirdness into
	fhandler_disk_file::readdir.  Don't disallow
	FileIdBothDirectoryInformation on Samba.
	(fhandler_disk_file::readdir): Workaround Samba problem with
	FileIdBothDirectoryInformation by rereading already read entries
	using FileBothDirectoryInformation.  Change comment about Samba
	weirdness explaining this change.
2006-08-20 12:18:12 +00:00
Christopher Faylor
ffa6849093 * fhandler_disk_file.cc (fhandler_disk_file::pread): Properly check for
non-error return from lseek.
2006-08-19 21:44:58 +00:00
Corinna Vinschen
30691bd756 * fhandler_serial.cc (raw_read): Evaluate minchars taking the
vmin_ > ulen case into account.  Simplify evaluating the bytes to read.
	Don't use bytes in Queue value from ClearCommError call in case vtime_
	is > 0.  Reformat GetOverlappedResult call.  Simplify call to ReadFile.
2006-08-17 14:51:48 +00:00
Corinna Vinschen
94dc73adc5 * security.cc (subauth): Initialize user_token to NULL. Add comment. 2006-08-14 11:32:11 +00:00
Corinna Vinschen
e39a29e36b * shared.cc (open_shared): Desperately try to get shared memory, only
when DEBUGGING enabled for now.
2006-08-11 15:40:07 +00:00
Danny Smith
fc43c1d925 * lib/wtsapi32.def (WTSGetActiveConsoleSessionId). Move from here...
* lib/kernel32.def (WTSGetActiveConsoleSessionId). ...to here.
2006-08-10 21:06:01 +00:00
Christopher Faylor
1767b8d028 * pinfo.cc (_onreturn::~onreturn): Don't attempt to close a NULL handle. 2006-08-10 20:25:54 +00:00
Christopher Faylor
2f98d8bdc7 revert erroneous checkin 2006-08-10 14:16:24 +00:00
Christopher Faylor
44d67b9b31 * winsup.h: Turn on DEBUGGING by default for now. 2006-08-10 14:15:00 +00:00
Corinna Vinschen
887e02e478 * fhandler_disk_file.cc (fhandler_disk_file::lock): Handle
ERROR_NOT_LOCKED returned from UnlockFileEx.
2006-08-10 08:44:43 +00:00
Christopher Faylor
eab543a1d6 * overview2.sgml: Remove inaccurate "full support for windows pathnames"
clause.
2006-08-09 16:13:56 +00:00
Corinna Vinschen
6f3105405d * path.h (SYMLINK_EA_NAME): Remove.
(SHORTCUT_HDR_SIZE): Ditto.
2006-08-09 15:33:46 +00:00
Christopher Faylor
bbf38a55c6 * autoload.cc (GetHandleInformation): Declare new function.
(SetHandleInformation): Ditto.
* debug.cc (add_handle): Use SetHandleInformation to protect handle.
(close_handle): Use SetHandleInformation to unprotect handle.
* spawn.cc (spawn_guts): Move detached test outside of P_OVERLAY block.
2006-08-09 15:04:32 +00:00
Corinna Vinschen
7636b58590 * autoload.cc (NtSetInformationFile): Define.
* cygwin.din: Export posix_fadvise and posix_fallocate.
	* fhandler.cc (fhandler_base::fadvise): New method.
	(fhandler_base::ftruncate): Add allow_truncate parameter.
	* fhandler.h (class fhandler_base): Add fadvise method.  Accomodate
	new parameter to ftruncate.
	(class fhandler_pipe): Add fadvise and ftruncate methods.
	(class fhandler_disk_file): Add fadvise method.  Accomodate new
	parameter to ftruncate.
	* fhandler_disk_file.cc (fhandler_disk_file::fadvise): New method.
	(fhandler_disk_file::ftruncate): Accomodate new allow_truncate
	parameter.  Set EOF using NtSetInformationFile on NT.
	* ntdll.h (struct _FILE_END_OF_FILE_INFORMATION): Define.
	(NtSetInformationFile): Declare.
	* pipe.cc (fhandler_pipe::fadvise): New method.
	(fhandler_pipe::ftruncate): Ditto.
	* syscalls.cc (posix_fadvise): New function.
	(posix_fallocate): Ditto.
	(ftruncate64): Accomodate second parameter to fhandler's ftruncate
	method.
	* include/fcntl.h: Add POSIX_FADV_* flags.  Add declarations of
	posix_fadvise and posix_fallocate.
	* include/cygwin/version.h: Bump API minor number.
2006-08-07 19:29:14 +00:00
Danny Smith
840d9c1abe * include/ctype.h: Remove stray ')'. 2006-08-03 21:05:05 +00:00
Corinna Vinschen
fb43e6237c * path.cc (vconcat): Don't convert backslahes to slashes.
(cygpath): Return native path with all backslashes.
2006-08-03 15:29:30 +00:00
Danny Smith
bb1a7afa67 * include/ctype.h (_BLANK): Expand comment.
(isblank): Add prototype and inline definition.
	(iswblank): Add prototype and inline definition.
	* include/wctype.h (iswblank): Add prototype and inline definition.
	* mingwex/isblank.c: New file.
	* mingwex/iswblank.c: New file.
	* mingwex/Makefile.in: Add isblank, iswblank to libmingwex.a
2006-08-03 07:44:30 +00:00
Christopher Faylor
9e4051d4b7 fix typo 2006-08-03 03:59:27 +00:00
Christopher Faylor
bee65cb860 * Makefile.in (subauth): Add dependency on mingw. 2006-08-03 03:47:54 +00:00
Christopher Faylor
6f1d48621e * environ.cc (env_win32_to_posix_path_list): Declare.
(conv_envvars): Use env_win32_to_posix_path_list rather than
cygwin_win32_to_posix_path_list.
(posify): Translate back to win32 path if errno is EIDRM.
* environ.h: Update copyright.  Define ENV_CVT.
* path.cc (conv_path_list): If converting for the environment and removed an
element set errno to ENV_CVT.
(env_win32_to_posix_path_list): New function.
2006-08-02 15:11:48 +00:00
Corinna Vinschen
2dba45f4aa * Makefile.in (cygpath.exe): Add rule to link cygpath against ntdll.dll.
* cygpath.cc: Include DDK headers.
	(RtlAllocateUnicodeString): New static inline function.
	(get_device_name): New static function to evaluate DOS path from
	native NT path.
	(get_device_paths): New function to do the same for path lists.
	(doit): Call get_device_paths/get_device_name where appropriate.
2006-08-02 09:48:18 +00:00
Christopher Faylor
8fe03354d9 * cygwinenv.sgml: Document [no]dosfilewarning option. 2006-08-01 18:06:49 +00:00
Christopher Faylor
01bbb24d15 * environ.cc (dos_file_warning): Declare.
(parse_thing): Add "dosfilewarning".  Alphabetize.
* path.cc (normalize_posix_path): Return -1 when MS-DOS path detected.
(warn_msdos): New function.
(path_conv::check): Call if !PC_NOWARN and MS-DOS path detected.
(cygwin_conv_to_win32_path): Set PC_NOWARN when calling path_conv.
(cygwin_conv_to_full_win32_path): Ditto.
* path.h (pathconv_arg::PC_NOWARN): Define.
* shared_info.h (user_info::warned_msdos): New field.
(CURR_USER_MAGIC): Reset.
2006-08-01 18:00:44 +00:00
Corinna Vinschen
b23bc8c33c * fhandler_socket.cc (fhandler_socket::recv_internal): Fix a problem
with poll(2) after shutdown(SHUT_RD) has been called on the local side.
	* poll.cc (poll): Use POSIX type nfds_t for second parameter.  Drop
	special socket handling for POLLIN.  Add comment to explain why.
	* include/sys/poll.h: Declare nfds_t.  Use as type for second parameter
	in poll(2) declaration.
2006-07-31 14:27:56 +00:00
Corinna Vinschen
1f7dbb011a * fhandler_socket.cc (fhandler_socket::evaluate_events): Circumvent
potential race condition.
	(fhandler_socket::recv_internal): Fix MSG_PEEK bug on blocking sockets
	and simplify recv loop.
	(fhandler_socket::send_internal): Only lock when changing wsock_events.
2006-07-31 12:55:20 +00:00
Corinna Vinschen
a947b6879f * autoload.cc: Drop LoadDLLprime for wsock32 since no wsock32 function
is used anymore.  Drop all unused ws2_32.dll functions.
2006-07-31 08:59:56 +00:00
Corinna Vinschen
acc31d1a90 * cygpath.cc (get_long_name): Fallback to get_long_path_name_w32impl. 2006-07-31 07:31:56 +00:00
Danny Smith
4838aa88d9 Update more IMAGE relocation type indicators
to PECOFF v8 (May, 2006) specs.

	* include/winnt.h (IMAGE_REL_SH3_ABSOLUTE,
	IMAGE_REL_SH3_DIRECT16, IMAGE_REL_SH3_DIRECT32,
	IMAGE_REL_SH3_DIRECT8, IMAGE_REL_SH3_DIRECT8_WORD,
	IMAGE_REL_SH3_DIRECT8_LONG, IMAGE_REL_SH3_DIRECT4,
	IMAGE_REL_SH3_DIRECT4_WORD, IMAGE_REL_SH3_DIRECT4_LONG,
	IMAGE_REL_SH3_PCREL8_WORD, IMAGE_REL_SH3_PCREL8_LONG,
	IMAGE_REL_SH3_PCREL12_WORD, IMAGE_REL_SH3_STARTOF_SECTION,
	IMAGE_REL_SH3_SIZEOF_SECTION, IMAGE_REL_SH3_SECTION,
	IMAGE_REL_SH3_SECREL, IMAGE_REL_SH3_DIRECT32_NB,
	IMAGE_REL_SH3_GPREL4_LONG, IMAGE_REL_SH3_TOKEN,
	IMAGE_REL_SHM_PCRELPT, IMAGE_REL_SHM_REFLO,
	IMAGE_REL_SHM_REFHALF, IMAGE_REL_SHM_RELLO,
	IMAGE_REL_SHM_RELHALF, IMAGE_REL_SHM_PAIR,
	IMAGE_REL_SHM_NOMODE): Add defines.

	(IMAGE_REL_M32R_ABSOLUTE, IMAGE_REL_M32R_ADDR32,
	IMAGE_REL_M32R_ADDR32NB, IMAGE_REL_M32R_ADDR24,
	IMAGE_REL_M32R_GPREL16, IMAGE_REL_M32R_PCREL24,
	IMAGE_REL_M32R_PCREL16, IMAGE_REL_M32R_PCREL8,
	IMAGE_REL_M32R_REFHALF, IMAGE_REL_M32R_REFHI,
	IMAGE_REL_M32R_REFLO, IMAGE_REL_M32R_PAIR,
	IMAGE_REL_M32R_SECTION, IMAGE_REL_M32R_SECREL,
	IMAGE_REL_M32R_TOKEN): Add defines.

	(IMAGE_REL_MIPS_JMPADDR16): Add define.
2006-07-29 09:25:45 +00:00
Corinna Vinschen
8f713b6b08 * fhandler.h (struct wsa_event): Define here.
(class fhandler_socket): Make wsock_evt private again.
	(fhandler_socket::wsock_event): New read accessor for wsock_evt.
	(fhandler_socket::serial_number): New read accessor to get the
	socket's serial number.
	(fhandler_socket::ready_for_read): Just return true.
	* fhandler_socket.cc (struct wsa_event): Move definition to fhandler.h.
	* select.cc (struct socketinf): Add serial number vector.
	(start_thread_socket): Identify duplicate sockets by their serial
	number, not (wrongly) by their wsock_evt.
2006-07-28 08:50:46 +00:00
Corinna Vinschen
bc31293a0d * cygpath.c (get_long_name): Cover the case that GetLongPathName
doesn't return valid information for non-existant files.  Just return
	incoming filename in that case.
2006-07-27 21:07:33 +00:00
Corinna Vinschen
fd5879c110 * fhandler_socket.cc: Revert misguided attempt to handle FD_CLOSE error
conditions in evaluate_events.
	(search_wsa_event_slot): Move wrongly placed memset in
	fhandler_socket::init_events here.
	(fhandler_socket::init_events): Initially set FD_WRITE event for
	connectionless sockets.
	* poll.cc (poll): Don't add sockets always to except_fds since select
	is now supposed to do it right.
	* select.cc (set_bits): Set connection state correctly for failed
	af_local_connect on local sockets.  Remove socket special handling
	for except_selected descriptors.
	(peek_socket): Try to set the read/write/exception bits actually
	correctly.
2006-07-27 13:58:54 +00:00
Corinna Vinschen
883861544a * fhandler_socket.cc (fhandler_socket::recvmsg): Remove unused tot
argument.  All callers changed.
	(fhandler_socket::sendmsg): Likewise.
	* net.cc (cygwin_recvmsg): Likewise.
	(cygwin_sendmsg): Likewise, and prevent calling sendmsg whith an
	invalid iovec.
	* fhandler.h (fhandler_socket::recvmsg): Adjust prototype.
	(fhandler_socket::sendmsg): Likewise.
2006-07-27 09:18:28 +00:00
Corinna Vinschen
9869e006f3 * fhandler.h (class fhandler_socket): Remove prot_info_ptr.
(fhandler_socket::fixup_before_fork_exec): Remove.
	(fhandler_socket::fixup_after_exec): Remove.
	(fhandler_socket::need_fixup_before): Remove.
	* fhandler_socket.cc (fhandler_socket::fhandler_socket): Drop
	initializing prot_info_ptr.  Remove unused code.
	(fhandler_socket::~fhandler_socket): Drop free'ing prot_info_ptr.
	(struct wsa_event): Rename connect_errorcode to errorcode.
	(fhandler_socket::evaluate_events): Handle FD_CLOSE error condition
	as FD_CONNECT error condition, except, never reset an FD_CLOSE error
	condition.  Always set FD_WRITE after successfully recorded FD_CONNECT.
	(fhandler_socket::fixup_before_fork_exec): Remove.
	(fhandler_socket::fixup_after_fork): Revert to using handle duplication.
	(fhandler_socket::fixup_after_exec): Remove.
	(fhandler_socket::dup): Revert to using handle duplication.
	(fhandler_socket::send_internal): Only call wait_for_events in case
	of WSAEWOULDBLOCK condition.
	(fhandler_socket::set_close_on_exec): Call
	fhandler_base::set_close_on_exec.
	* net.cc (fdsock): Just set socket to inheritable on non-NT.  Don't
	call inc_need_fixup_before.
	* select.cc (peek_socket): Don't set except_ready on every FD_CLOSE,
	just on error.
2006-07-27 09:11:38 +00:00
Danny Smith
40f67ea198 Update some IMAGE flags to PECOFF v8 (May, 2006) specs.
* include/winnt.h (IMAGE_FILE_MACHINE_AM33,
	IMAGE_FILE_MACHINE_ARM, IMAGE_FILE_MACHINE_EBC,
	IMAGE_FILE_MACHINE_M32R, IMAGE_FILE_MACHINE_MIPS16,
	IMAGE_FILE_MACHINE_MIPSFPU, IMAGE_FILE_MACHINE_MIPSFPU16,
	IMAGE_FILE_MACHINE_POWERPCFP, IMAGE_FILE_MACHINE_R4000,
	IMAGE_FILE_MACHINE_SH3, IMAGE_FILE_MACHINE_SH3DSP,
	IMAGE_FILE_MACHINE_SH4, IMAGE_FILE_MACHINE_SH5,
	IMAGE_FILE_MACHINE_THUMB, IMAGE_FILE_MACHINE_WCEMIPSV2):
	Add defines.

	(IMAGE_SUBSYSTEM_EFI_APPLICATION,
	IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER,
	IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, IMAGE_SUBSYSTEM_EFI_ROM):
	Add defines.

	(IMAGE_SYM_CLASS_CLR_TOKEN): Add define

	(IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE,
	IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY,
	IMAGE_DLL_CHARACTERISTICS_NX_COMPAT,
	IMAGE_DLLCHARACTERISTICS_NO_ISOLATION, IMAGE_DLLCHARACTERISTICS_NO_SEH,
	IMAGE_DLLCHARACTERISTICS_NO_BIND,
	IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE): Add defines.


	(IMAGE_REL_I386_TOKEN, IMAGE_REL_I386_SECREL7): Add defines.

	(IMAGE_REL_AMD64_ABSOLUTE, IMAGE_REL_AMD64_ADDR64,
	IMAGE_REL_AMD64_ADDR32, IMAGE_REL_AMD64_ADDR32NB, IMAGE_REL_AMD64_REL32,
	IMAGE_REL_AMD64_REL32_1, IMAGE_REL_AMD64_REL32_2,
	IMAGE_REL_AMD64_REL32_3, IMAGE_REL_AMD64_REL32_4,
	IMAGE_REL_AMD64_REL32_5, IMAGE_REL_AMD64_SECTION,
	IMAGE_REL_AMD64_SECREL, IMAGE_REL_AMD64_SECREL7, IMAGE_REL_AMD64_TOKEN,
	IMAGE_REL_AMD64_SREL32, IMAGE_REL_AMD64_PAIR, IMAGE_REL_AMD64_SSPAN32):
	Add defines.

	(IMAGE_REL_IA64_ABSOLUTE, IMAGE_REL_IA64_IMM14, IMAGE_REL_IA64_IMM22,
	IMAGE_REL_IA64_IMM64, IMAGE_REL_IA64_DIR32, IMAGE_REL_IA64_DIR64,
	IMAGE_REL_IA64_PCREL21B, IMAGE_REL_IA64_PCREL21M,
	IMAGE_REL_IA64_PCREL21F, IMAGE_REL_IA64_GPREL22, IMAGE_REL_IA64_LTOFF22,
	IMAGE_REL_IA64_SECTION, IMAGE_REL_IA64_SECREL22,
	IMAGE_REL_IA64_SECREL64I, IMAGE_REL_IA64_SECREL32,
	IMAGE_REL_IA64_DIR32NB, IMAGE_REL_IA64_SREL14, IMAGE_REL_IA64_SREL22,
	IMAGE_REL_IA64_SREL32, IMAGE_REL_IA64_UREL32, IMAGE_REL_IA64_PCREL60X,
	IMAGE_REL_IA64_PCREL60B, IMAGE_REL_IA64_PCREL60F,
	IMAGE_REL_IA64_PCREL60I, IMAGE_REL_IA64_PCREL60M,
	IMAGE_REL_IA64_IMMGPREL64, IMAGE_REL_IA64_TOKEN, IMAGE_REL_IA64_GPREL32,
	IMAGE_REL_IA64_ADDEND): Add defines.

	(IMAGE_SCN_GPREL): Add define.
2006-07-27 08:30:33 +00:00
Christopher Faylor
5ecd1ea663 * fhandler.cc (fhandler_base::read): Call get_readahead_into_buffer instead of
duplicating it.
2006-07-27 03:32:51 +00:00