19753e1dbf* net.cc (cygwin_getnameinfo): Force setting NI_NUMERICSERV only on Windows 2003 and earlier, only if the port number doesn't resolve to a well-known service. Change comment accordingly.
Corinna Vinschen
2009-08-06 14:55:49 +0000
a99345591f* cygheap.h (cygheap_debug::endh): Delete. * debug.cc (lock_debug::acquired): Delete. (lock_debug::lock_debug): Simplify. (lock_debug::unlock): Ditto. (find_handle): Don't set endh here. (add_handle): Add new handle to beginning of the list rather than trying to maintain an end list pointer. (delete_handle): Minor optimization. (mark_closed): Make logic clearer. (verify_handle): Lock handle list before scanning. (setclexec): Ditto. (modify_handle): Ditto. (newh): Don't lock handle list here. Assume caller did this. (mark_closed): Ditto. (close_handle): Remove unneeded #if. * dtable.cc (dtable::dup2): Tweak debug output.
Christopher Faylor
2009-08-05 04:44:27 +0000
7f01964f06* path.cc (patch_conv::check): Zero path before setting it.
Christopher Faylor
2009-08-05 03:18:48 +0000
631681619e* fhandler_socket.cc (fhandler_socket::send_internal): Just use wmem size if the length exceeds it. * net.cc (fdsock): Use 65535 as window size, just like the comment says or we run into problems with DuplicateHandle. * path.cc (patch_conv::check): Use set_path to set invalid filename. * path.h (path_conv::path_conv): Ditto.
Christopher Faylor
2009-08-04 22:35:35 +0000
3b689b97bd* fhandler.h (pdrive_buf): Defensively allocate one extra byte.
Christopher Faylor
2009-08-04 04:31:08 +0000
824d851859* fhandler.h (fhandler_cygdrive:DRVSZ): New enum. (pdrive_buf): New place to hold information about cygdrive. * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Store drive info in pdrive_buf since get_win32_name() could now be too small to hold everything. (fhandler_cygdrive::rewinddir): Reset pdrive to pdrive_buf. (fhandler_cygdrive::closedir): Ditto. * pipe.cc (fhandler_pipe::init): Be more defensive when referencing get_win32_name(). Rework logic which made a copy of the POSIX path and then never used it.
Christopher Faylor
2009-08-04 04:20:36 +0000
ff7b364c12* sigproc.cc (stopped_or_terminated): Don't return a match when stopsig == SIGCONT and not WCONTINUED. * termios.cc (tcsetpgrp): Improve debugging output.
Christopher Faylor
2009-08-02 21:38:40 +0000
fafbf75509* cygheap_malloc.h: New file. * cygheap.h: Remove stuff now included in cygheap_malloc.h and include that file. Make cygheap_init a standard c++ function. Remove unneeded child_info declaration. * path.h: Include cygheap_malloc.h. Remove extra cstrdup declaration. (path_conv): Reorganize to group variables together. (path_conv::path): Make const char *. (path_conv::known_suffix): Ditto. (path_conv::normalized_path): Ditto. (path_conv::path_conv): Reorganize initializers to reflect new element ordering. (path_conv::get_win32): Change return value to const char *. (path_conv::set_path): Move back here from spawn.cc. (parh_conv::modifiable_path): New function. * path.cc (path_conv::add_ext_from_sym): Accommodate const'ness of known_suffixes. (path_conv::set_normalized_path): Ditto for normalized_path. (path_conv::check): Use modifiable_path whereever we need to modify the path element. Use set_path to set the path. (path_conv::~path_conv): Accommodate new const'ness. * spawn.cc (perhaps_suffix): Declare ext as const since that's what is being returned. (path_conv::set_path): Move back to path.h. * winf.f (linebuf): Perform minor cleanup. (linebuf::fromargv): Change second parameter to const. * winf.cc (linebuf::fromargv): Ditto.
Christopher Faylor
2009-08-01 19:52:46 +0000
8cc84a8ce3* path.h (path_conv::set_path): Change return value. * spawn.cc (path_conv::set_path): Return newly set value. (find_exec): Set retval to newly set value when calling set_path.
Christopher Faylor
2009-08-01 17:55:58 +0000
a3a060b596* spawn.cc (find_exec): Fix one more path where retval was not set.
Christopher Faylor
2009-08-01 03:36:44 +0000
5f297dc330* spawn.cc (find_exec): Stop relying on the ability to set retval to a fixed path_conv buffer and set it on the fly instead.
Christopher Faylor
2009-08-01 03:27:51 +0000
f4a7842850intl/ * Makefile.in (aclocal_deps): New variable. ($(srcdir)/aclocal.m4): Use it, for portable makefile syntax.
Ralf Wildenhues
2009-07-30 22:44:48 +0000
2ef2cd7a85config/ * extensions.m4 (AC_USE_SYSTEM_EXTENSIONS): Do not expand for Autoconf 2.62 or newer. * tls.m4 (GCC_CHECK_TLS): Fix m4 quotation. * no-executables.m4 (_AC_COMPILER_EXEEXT): Fix m4 quotation. * override.m4 (m4_copy_force, m4_rename_force): Provide macros if not defined. (AC_PREREQ): Use m4_copy_force.
Ralf Wildenhues
2009-07-30 19:43:16 +0000
900f20710f* globals.cc (enum exit_states::ES_GLOBAL_DTORS): Delete. * dcrt0.cc (__main): Schedule dll_global_dtors to run atexit before global dtors. (do_exit): Delete test for ES_GLOBAL_DTORS and call to dll_global_dtors.
Corinna Vinschen
2009-07-30 15:48:51 +0000
0986989f6a* path.h (class path_conv): Convert path from char array to char *. Initialize to NULL in constructors. Drop normalized_path_size member. (path_conv::size): Remove. (path_conv::operator =): Always copy with sizeof path_conv. Always duplicate path on cygheap. (path_conv::set_path): Move implementation to spawn.cc. * path.cc (path_conv::set_normalized_path): Always allocate normalized_path on cygheap. (path_conv::check): Don't work on path, rather allocate THIS_path in TLS and use it throughout. When finished, allocate path on cygheap and copy over. Defer tacking on extension after having copied path. * spawn.cc (path_conv::set_path): Implement here.
Corinna Vinschen
2009-07-30 08:56:57 +0000
7d3c3d30e7Fix formatting issue with last entry
Chris Sutcliffe
2009-07-30 01:55:44 +0000
1cc1af42c12009-07-29 Jeff Johnston <jjohnstn@redhat.com>
Jeff Johnston
2009-07-29 22:33:40 +0000
a67f77af1a* libc/stdlib/mbtowc_r.c (__utf8_mbtowc): Rework UTF-16 surrogate pair handling to be more bullet-proof even with incomplete UTF-8 sequences. Add check for 4 byte sequences resulting in values outside the valid Unicode range. Add a comment to clarify checking for invalid CESU-8 sequences.
Corinna Vinschen
2009-07-29 08:31:30 +0000
0c27cfc9b0Correct disposition of wchar_t output in printf().
Keith Marshall
2009-07-29 07:22:51 +0000
ecf5c883df* libc/stdlib/mbtowc_r.c (__utf8_mbtowc): Fix incrementing n in case of handling incomplete sequences.
Corinna Vinschen
2009-07-28 16:49:19 +0000
8d641a5b46* mount.h (enum fs_info_type): New type. (IMPLEMENT_FS_FLAG): New define. (class fs_info): Convert filesystem type status flags into an enum fs_info_type. Add cifs FS. Revert change to has_buggy_open and has_buggy_fileid_dirinfo. Make them normal; status flags again. Implement is_FS functions using IMPLEMENT_FS_FLAG. * mount.cc (fs_info::update): Define MINIMAL_WIN_NTFS_FLAGS and FS_IS_WINDOWS_NTFS. Add comment. Only test remote filesystems for "NTFS" once. Add is_cifs check using FS_IS_WINDOWS_NTFS. Set has_buggy_open flag for SUNWNFS. Set has_buggy_fileid_dirinfo flag for UNIXFS and all cifs type filesystems. Only check for caseinsensitivity once. (fillout_mntent): Create locale fs_names array. Use for setting _my_tls.locals.mnt_type.
Corinna Vinschen
2009-07-28 10:39:55 +0000
d826cbf3222009-07-27 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
Chris Sutcliffe
2009-07-28 01:28:22 +0000
b70cd7bca1Convert to monolithic configuration procedure.
Keith Marshall
2009-07-27 20:27:09 +0000
08124fb492merge from gcc
DJ Delorie
2009-07-25 11:28:15 +0000
6359951b47* fhandler_console.cc (set_console_title): Set buffer size to TITLESIZE + 1. Call sys_mbstowcs with correct destination length.
Corinna Vinschen
2009-07-25 08:27:10 +0000
e2b6bacd35merge from gcc
DJ Delorie
2009-07-25 00:01:48 +0000
43c23d4b82* sigproc.h (wait_for_sigthread): Eliminate parameter. * sigproc.cc (wait_for_sigthread): Ditto. Don't synchronize with wait_sig after receiving an event that it is ready to go. (init_sig_pipe): New function. (wait_sig): Call init_sig_pipe to create pipes for communicating signals to this process. Don't send sigCONT signal when initializing. * fork.cc (frok::child): Accommodate wait_for_sigpipe parameter change. * fhandler.h (fhandler_*::write): Make ssize_t/__stdcall. (fhandler_*::write_overlapped): Ditto. (fhandler_*::raw_write): Ditto. (fhandler_*::readv): Ditto. (fhandler_*::writev): Ditto. (fhandler_*::raw_read): Make __stdcall. * fhandler: Accommodate changes to read/write functions throughout. * fhandler_clipboard.cc: Ditto. * fhandler_console.cc: Ditto. * fhandler_dsp.cc: Ditto. * fhandler_fifo.cc: Ditto. * fhandler_mailslot.cc: Ditto. * fhandler_mem.cc: Ditto. * fhandler_mem.cc: Ditto. * fhandler_random.cc: Ditto. * fhandler_tape.cc: Ditto. * fhandler_tty.cc: Ditto. * fhandler_virtual.cc: Ditto. * fhandler_windows.cc: Ditto. * fhandler_zero.cc: Ditto. * syscalls.cc (readv): Use ssize_t as temp variable. * fhandler.cc (fhandler_base::read): Coerce returned len to signed or it will never be treated as < 0. (fhandler_base::wait_overlapped): Minimize calls to GetLastError. Remove duplicate debugging test. Fix error return. * fhandler.h (fhandler_fifo::fifo_name): Declare new function. (fhandler_fifo::close): Ditto. (fhandler_fifo::dup): Ditto. (fhandler_fifo::close_on_exec): Ditto. * fhandler.cc (fhandler_fifo::fifo_name): Define new function. (FIFO_BUF_SIZE): New define. (cnp): Ditto. (fhandler_fifo::open): Rework. Use cnp to open named pipe. Always open write side as a client. Open dummy client when writing and can't connect. (wait): Rework. Implement fifo_wait_for_next_client. Handle signals during connect better. Add new fifo_wait_for_server code which polls (sigh) waiting for server. (fhandler_fifo::raw_read): Handle transition states when one client closes and another is available. (fhandler_fifo::close): Define. (fhandler_fifo::dup): Ditto. (fhandler_fifo::close_on_exec): Ditto.
Christopher Faylor
2009-07-24 20:54:33 +0000
6922bae9a12009-07-23 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
Chris Sutcliffe
2009-07-24 01:29:38 +0000
4d07e725142009-07-23 Jacky Lai <crazyjacky@users.sourceforge.net>
Chris Sutcliffe
2009-07-24 01:21:27 +0000
f9415fedf8* config/obj-elf.c (obj_elf_type): Add code to support a type of gnu_unique_object. * doc/as.texinfo: Document new feature of .type directive. * NEWS: Mention support for gnu_unique_object symbol type.
Nick Clifton
2009-07-23 13:00:30 +0000
a6131454a5* mount.h (fs_info::fsn): New member. (fs_info::clear): Clear fsn. (fs_info::fsname): New read accessor for fsn. * mount.cc (fs_info::update): Fill in fsn member with lowercased filesystem name if filesystem is not well-known. Fall back to "unknown" if filesystem name is missing. (fillout_mntent): Print filesystem name retrieved in fs_info::update rather than static string "unknown".
Corinna Vinschen
2009-07-23 11:46:06 +0000
07271a4b02* faq-using.xml (faq.using.ipv6): Try to clarify OS specific support. * faq-what.xml (faq.what.supported): Add Windows 7 and 2008 R2. * new-features.sgml: Add "and later" to rcmd news.
Corinna Vinschen
2009-07-23 08:49:06 +0000
4a77fa092c* mount.cc (fs_info::update): Revert to open filesystem with access set to READ_CONTROL. If that fails, try additionally with FILE_READ_DATA.
Corinna Vinschen
2009-07-23 07:51:55 +0000
3f6f9155c9* exceptions.cc (handle_exceptions): Set si_addr according to POSIX for SIGSEGV.
Eric Blake
2009-07-23 02:47:17 +0000
d974d420d4* mount.cc (fs_info::update): Open filesystem with access set to 0. Explain why.
Corinna Vinschen
2009-07-22 18:49:48 +0000
c45871c9c5* path.cc (symlink_info::check): Handle STATUS_NOT_SUPPORTED from NtCreateFile just like STATUS_EAS_NOT_SUPPORTED.
Corinna Vinschen
2009-07-22 18:21:09 +0000
3955529c8b* mount.cc (do_mount): Replace --no-executable flag with notexec mount option in hint for remote filesystems. * path.cc (getmntent): Fix typo (noexec -> notexec).
Corinna Vinschen
2009-07-22 16:24:17 +0000
4a77aea071* fhandler.h (enum del_lock_called_from): New enumeration. (fhandler_base::del_my_locks): Declare taking a del_lock_called_from as argument. * fhandler.cc (fhandler_base::close): Call del_my_locks with "on_close". (fhandler_base::fixup_after_fork): Call del_my_locks with "after_fork". (fhandler_base::fixup_after_exec): Call del_my_locks with "after_exec". * flock.cc (fhandler_base::del_my_locks): Take del_lock_called_from as argument. Call node->del_my_locks with NULL handle in after_exec case. Explain why.
Corinna Vinschen
2009-07-22 15:46:36 +0000
1e497ebd33* Makefile.in (path-mount.o): Add a rule to build stripped down version of path.cc for usage in mount. (mount.exe): Add dependency to path-mount.o. * mount.cc (force): Convert to bool value. Accommodate throughout. (from_fstab): New function. (do_mount_from_fstab): New function. (longopts): Add --all option. (opts): Add -a option. (usage): Document -a/--all option. (main): Handle -a option as well as single parameter. * path.cc: Add FSTAB_ONLY conditional to allow building path-mount.o. (mount_table): Remove static storage class. (max_mount_entry): Ditto. (root_here): Unused. Remove. (from_fstab_line): Remove static. * path.h (struct mnt_t): Define here rather than in path.cc. (from_fstab_line): Declare. (mount_table): Declare. (max_mount_entry): Declare. * utils.sgml (mount): Document -a/--all option and mounting of single path from fstab files.
Corinna Vinschen
2009-07-22 10:20:26 +0000
d6438f13d1Avoid a fault from locking a closed standard file.
Eric Blake
2009-07-22 02:17:12 +0000
b48215aae0* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Add special case for MVFS. Explain why. (fhandler_disk_file::utimens): Drop local variables lastaccess and lastwrite. Copy timestamps right into FILE_BASIC_INFORMATION structure to avoid copying them twice.
Corinna Vinschen
2009-07-21 08:10:36 +0000
20fc2f4936* wincap.h (wincaps::has_always_all_codepages): New element. * wincap.cc: Implement above element throughout. * wchar.h (__sjis_mbtowc): Declare. (__eucjp_mbtowc): Ditto. (__gbk_mbtowc): Ditto. (__kr_mbtowc): Ditto. (__big5_mbtowc): Ditto. * syscalls.cc (internal_setlocale): Convert to char * function. Return parameter by default. Return NULL if request to use a charset can't be satisfied due to missing codepage support in the underlying OS. Fix comment. (setlocale): Store original locale. Restore to original locale if internal_setlocale returns NULL.
Corinna Vinschen
2009-07-20 15:44:55 +0000
acced2cea2* exceptions.cc (sig_handle_tty_stop): Set stopsig to SIGCONT when continuing. (stopped_or_terminated): Honor WCONTINUED. * wait.cc (wait4): Ditto. * include/cygwin/wait.h (WCONTINUED): Define. (__W_CONTINUED): Ditto. (WIFCONTINUED): Ditto.
Christopher Faylor
2009-07-18 20:25:07 +0000
d4e45e3b992009-07-18 Gregory McGarry <gregorymcgarry@users.sourceforge.net>
Chris Sutcliffe
2009-07-18 15:19:03 +0000
affde4a6b32009-07-18 Gregory McGarry <gregorymcgarry@users.sourceforge.net>
Chris Sutcliffe
2009-07-18 15:09:18 +0000
ab4b2481522009-07-18 Gregory McGarry <gregorymcgarry@users.sourceforge.net>
Chris Sutcliffe
2009-07-18 15:05:20 +0000
f9a5b8ea6a2009-07-18 Gregory McGarry <gregorymcgarry@users.sourceforge.net>
Chris Sutcliffe
2009-07-18 14:56:47 +0000
52e4653d432009-07-18 Jeff Lu <jll544@yahoo.com>
Chris Sutcliffe
2009-07-18 14:41:23 +0000
b5fb6b0dc32009-07-17 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
Chris Sutcliffe
2009-07-18 01:39:52 +0000
c627d4ddd0* libstdcxx_wrapper.cc (operator delete): Remove stray space in asm name.
Dave Korn
2009-07-17 23:37:05 +0000
5e78ead367revert erroneous checkin
Christopher Faylor
2009-07-17 22:51:28 +0000
031cd59b64merge from gcc
DJ Delorie
2009-07-17 20:20:39 +0000
486a2c9610* cygtls.cc (_cygtls::init_exception_handler): Test for e, not e->prev or we could still end up adding our handler twice. Add comment explaining what we're doing. * dll_init.cc (dll_dllcrt0_1): Clarify comment.
Christopher Faylor
2009-07-17 18:17:11 +0000
8319377680* syscalls.cc (unlink_nt): Just return when a sharing violation occurs on remote filesystems.
Corinna Vinschen
2009-07-17 16:45:22 +0000
0bf9a20644PR other/40784 * tls.m4 (GCC_CHECK_TLS): Add extra quoting around argument to AC_LINK_IFELSE.
Joseph Myers
2009-07-17 15:11:33 +0000
0fb0fb8391* globals.cc: Improve comment on R/O UNICODE_STRINGs. * mount.h (class fs_info): Add is_mvfs bit. * mount.cc (fs_info::update): Recognize MVFS remote filesystem. (fillout_mntent): Reorder filesystem checks for speed. Add mvfs, unixfs, and sunwnfs filesystem types. * path.h (class path_conv): Add fs_is_mvfs method. * path.cc (symlink_worker): On MVFS, always create symlinks as Windows shortcuts. Explain why.
Corinna Vinschen
2009-07-17 09:00:19 +0000
b7735ec72d* tls.m4 (GCC_CHECK_TLS): Also test TLS in a shared library when cross-compiling.
Joseph Myers
2009-07-16 23:21:15 +0000
d6f45fb002* syscalls.cc (unlink_nt): First remove the R/O DOS attribute with FILE_WRITE_ATTRIBUTES access only, then re-open the file for DELETE. Explain why.
Corinna Vinschen
2009-07-16 16:55:25 +0000
fc261e53f0* globals.cc: Reorder constant UNICODE_STRINGs for clarity. * mount.h (fs_info::sttaus): Move filesystem type flags into substructure. Add union to allow simple test for having set any one filesystem type flag. Replace has_buggy_open flag with is_sunwnfs flag. Replace has_buggy_fileid_dirinfo with is_unixfs flag. (fs_info::got_fs): New private method. (fs_info::has_buggy_open): New explicit implementation. (fs_info::has_buggy_fileid_dirinfo): Ditto. * mount.cc (fs_info::update): Optimize filesystem checks for speed. * winsup.h (IMPLEMENT_STATUS_FLAG): Change write accessor to return value just set.
Corinna Vinschen
2009-07-16 09:56:25 +0000
5e5a843711* fhandler_netdrive.cc (GET_RESOURCE_INFO): Remove. (thread_netdrive): Drop GET_RESOURCE_INFO case. (fhandler_netdrive::exists): Use GET_RESOURCE_OPENENUM info class to check for existance.
Corinna Vinschen
2009-07-15 18:18:03 +0000
8b800efea5* strace.cc (main): Open trace output file in UNIX mode.
Corinna Vinschen
2009-07-15 15:18:51 +0000
4f615d3ffe2009-07-12 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
Chris Sutcliffe
2009-07-12 23:02:10 +0000
15e114f5c52009-06-28 Ozkan Sezer <sezero@users.sourceforge.net>
Chris Sutcliffe
2009-07-12 22:44:37 +0000
62fb43a722* how-spawn-works.txt: Add "out of date" note. * how-vfork-works.txt: Ditto.
Christopher Faylor
2009-07-12 21:26:40 +0000
4a42a25876* Makefile.in: Don't do anything special with any RCS directories. * ntdll.h (PROCESSINFOCLASS): Remove unneeded trailing comma. * pinfo.cc (_pinfo::dup_proc_pipe): Remove unneeded assignment. * sigproc.cc (sig_send): Don't send signal to myself if this is an exec stub.
Christopher Faylor
2009-07-12 21:15:47 +0000
77dcafa5ad* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Don't use FileAllInformation info class since it needs a big buffer. Add a comment.
Corinna Vinschen
2009-07-12 13:00:36 +0000
731a438281bfd * Makefile.am (dwarf2.lo): Use dwarf2.h, not elf/dwarf2.h. (elf-eh-frame.lo): Likewise. (elf32-bfin.lo): Likewise. (elf32-frv.lo): Likewise. (elf32-xc16x.lo): Likewise. * Makefile.in: Rebuild. * dwarf2.c: Included dwarf.h, not elf/dwarf2.h. * elf-eh-frame.c: Likewise. * elf32-bfin.c: Likewise. * elf32-frv.c: Likewise. * elf32-xc16x.c: Likewise. binutils * Makefile.am (dwarf.o): Refer to dwarf2.h, not elf/dwarf2.h. * Makefile.in: Rebuild. * dwarf.c: Include dwarf2.h, not elf/dwarf2.h. gas * Makefile.am (DEPTC_alpha_ecoff): Refer to dwarf2.h, not elf/dwarf2.h. (DEPTC_alpha_elf): Likewise. (DEPTC_alpha_evax): Likewise. (DEPTC_arm_elf): Likewise. (DEPTC_hppa_elf): Likewise. (DEPTC_i386_aout): Likewise. (DEPTC_i386_coff): Likewise. (DEPTC_i386_elf): Likewise. (DEPTC_m68k_aout): Likewise. (DEPTC_m68k_coff): Likewise. (DEPTC_m68k_elf): Likewise. (DEPTC_mips_coff): Likewise. (DEPTC_mips_ecoff): Likewise. (DEPTC_mips_elf): Likewise. (DEPTC_ppc_coff): Likewise. (DEPTC_ppc_elf): Likewise. (DEPTC_s390_elf): Likewise. (DEPTC_sh_coff): Likewise. (DEPTC_sh_elf): Likewise. (DEPTC_sh64_elf): Likewise. (DEPTC_sparc_aout): Likewise. (DEPTC_sparc_coff): Likewise. (DEPTC_sparc_elf): Likewise. (as.o): Likewise. (dwarf2dbg.o): Likewise. (dw2gencfi.o): Likewise. (ehopt.o): Likewise. (read.o): Likewise. * Makefile.in: Rebuild. * dw2gencfi.h: Include dwarf2.h, not elf/dwarf2.h. * dwarf2dbg.c: Likewise. * ehopt.c: Likewise. gdb * dwarf2-frame.c: Include dwarf2.h, not elf/dwarf2.h. * dwarf2expr.c: Likewise. * dwarf2loc.c: Likewise. * dwarf2read.c: Likewise. * sh-tdep.c: Likewise. * xtensa-tdep.c: Likewise. include * dwarf2.h: New file, moved from elf/. include/elf
Tom Tromey
2009-07-10 15:27:04 +0000
d281a14c6c2009-07-10 H.J. Lu <hongjiu.lu@intel.com>
H.J. Lu
2009-07-10 14:47:16 +0000