Corinna Vinschen
92596190c4
* autoload.cc (MsgWaitForMultipleObjectsEx): Define.
...
(MsgWaitForMultipleObjects): Remove.
* select.cc (select_stuff::wait): Use MsgWaitForMultipleObjectsEx with
QS_ALLPOSTMESSAGE and, if possible, MWMO_INPUTAVAILABLE flags. Explain
why. Fix a potential crash due to a NULL pointer in WAIT_FAILED case.
(peek_windows): Use filter pattern on NT4. Explain why.
* wincap.h (wincaps::has_mwmo_inputavailable): New element.
* wincap.cc: Implement above element throughout.
2010-08-30 10:39:43 +00:00
Christopher Faylor
98edb049e4
add missing file
2010-08-30 02:09:30 +00:00
Christopher Faylor
92117cb21f
* winlean.h: New file.
...
* automode.c: Use "winlean.h".
* binmode.c: Ditto.
* gmon.c: Ditto.
* textmode.c: Ditto.
* textreadmode.c: Ditto.
* winsup.h: Ditto.
* lib/cygwin_attach_dll.c: Ditto.
* lib/dll_main.cc: Ditto.
* profile.c: Ditto.
* crt0.c: Ditto. Cleanup ancient cruft. Add dummy calls to cygwin_premain*.
* include/sys/cygwin.h: Remove old stuff. Move premain declarations nearer to
other cygwin-specific function declarations.
* globals.cc: Add comment.
2010-08-30 01:57:37 +00:00
Corinna Vinschen
552bc28f46
* ldh.cc (WinMain): Change DONT_RESOLVE_DLL_REFERENCES to
...
LOAD_WITH_ALTERED_SEARCH_PATH.
2010-08-28 12:12:53 +00:00
Corinna Vinschen
9bf2a8a84a
* new-features.sgml (ov-new1.7.7): Document change to avoid DLL
...
hijacking.
2010-08-28 11:36:43 +00:00
Corinna Vinschen
71d8f118da
* loadlib.h: New header implementing safe LoadLibrary calls.
...
Include throughout files using LoadLibrary function.
* cygcheck.cc (dump_sysinfo): Retrieve kernel32.dll handle via
GetModuleHandle, rather than using LoadLibrary.
* cygpath.cc (get_long_name): Ditto.
(do_sysfolders): Append .dll suffix in LoadLibrary call.
* ldh.cc (WinMain): Use LoadLibraryExW with DONT_RESOLVE_DLL_REFERENCES
to avoid loading malicious library code.
* locale.cc (print_locale_with_codeset): Change way to retrieve
kernel32.dll path.
2010-08-28 11:22:37 +00:00
Corinna Vinschen
893a8b78fc
* autoload.cc (LoadDLLprime): Change dllname storage to string16.
...
(struct dll_info): Convert name to WCHAR.
(std_dll_init): Load DLLs with full path to windows system directory.
Add hint to Microsoft security advisory.
* dcrt0.cc (init_windows_system_directory): New function.
(dll_crt0_0): Call init_windows_system_directory first.
* exceptions.cc (windows_system_directory): Move to globals.cc.
(windows_system_directory_length): Ditto.
(events_init): Drop code fetching windows_system_directory.
* globals.cc (windows_system_directory): New global variable.
(windows_system_directory_length): Ditto.
* net.cc (load_ipv6_funcs): Use windows_system_directory rather than
GetSystemDirectoryW.
* netdb.cc (open_system_file): Ditto. Simplify debug output.
2010-08-28 08:51:21 +00:00
Chris Sutcliffe
657f0e4a14
2010-08-26 Chris Sutcliffe <ir0nh34d@users.sf.net>
...
* include/w32api.h: Increment version to 3.15.
* Makefile.in: Ditto.
2010-08-27 23:36:30 +00:00
Chris Sutcliffe
d27709722c
2010-08-26 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* Makefile.in: Update naming convention and compression format (lzma),
leaving existing naming convention and compression format as is for Cygwin.
2010-08-27 21:11:29 +00:00
Corinna Vinschen
6c43f249ac
* new-features.sgml (ov-new1.7.7): Change to describe partial
...
reversion to pre-1.7.6 behaviour.
(ov-new1.7.6): Deprecate description of CWD handling.
* pathnames.sgml (pathnames-win32-api): Rewrite to reflect new CWD
behaviour.
2010-08-27 18:56:28 +00:00
Corinna Vinschen
1121c57f54
* external.cc (sync_wincwd): Remove.
...
(cygwin_internal): Drop CW_SYNC_WINCWD case.
* globals.cc (ro_u_pipedir): New R/O unicode string.
* ntdll.h (RtlSetCurrentDirectory_U): Declare.
* path.cc (cwdstuff::set): Improve comments. Drop setting Win32 CWD to
\\?\PIPE\ on init. Keep Win32 CWD in sync, if possible. Set to
\\?\PIPE\ otherwise.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Revert to 230.
* include/sys/cygwin.h (cygwin_getinfo_types): Remove CW_SYNC_WINCWD.
2010-08-27 17:58:45 +00:00
Corinna Vinschen
95c929196b
* syscalls.c (_isatty): Fix return value.
2010-08-27 11:55:36 +00:00
Corinna Vinschen
1165007539
* fhandler_proc.cc (format_proc_partitions): Improve comment.
2010-08-27 09:08:32 +00:00
Corinna Vinschen
708bbfd08e
* cygpath.cc (get_device_name): Prefer the \\.\X: DOS device for
...
harddisks, if available.
2010-08-26 12:06:27 +00:00
Corinna Vinschen
46059af75c
* fhandler_proc.cc (format_proc_partitions): Simplify code and enable
...
partition layout printing for non-privileged users.
2010-08-26 10:59:13 +00:00
Chris Sutcliffe
ec7bb66c7a
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/oleacc.h (STATE_SYSTEM_HASPOPUP, STATE_SYSTEM_NORMAL,
STATE_SYSTEM_PROTECTED): Define.
Thank you to Marcus von Appen for reporting the issue.
2010-08-26 03:06:09 +00:00
Chris Sutcliffe
465ad88a27
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winuser.h (CF_DIBV5): Define.
(CF_MAX): Adjust accordingly.
Thank you to Lenard Lindstrom for reporting the issue.
2010-08-26 02:51:37 +00:00
Chris Sutcliffe
2cb94d2ba4
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/sspi.h (QuerySecurityContextToken): Define.
* lib/secur32.def: Regenerate using gendef on a Win7 machine.
Thank you to Magnus Hagander for reporting the issue.
2010-08-26 02:42:31 +00:00
Chris Sutcliffe
8ea817cb14
2010-08-25 Ali Sabil <asabil@users.sourceforge.net>
...
* include/ocidl.h: Define COBJMACROS for IPropertyBag and IPropertyBag2.
2010-08-26 02:13:12 +00:00
Chris Sutcliffe
aec4fa1895
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/shlwapi (ASSOCDATA): Update definition.
Thank you to Frederic Deschamps for reporting the issue.
2010-08-26 02:05:58 +00:00
Chris Sutcliffe
b898a48b69
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winbase.h (COPY_FILE_OPEN_SOURCE_FOR_WRITE,
COPY_FILE_ALLOW_DECRYPTED_DESTINATION, COPY_FILE_COPY_SYMLINK,
COPY_FILE_NO_BUFFERING): Define.
Thank you to Roland Schwingel for reporting the issue.
2010-08-26 01:57:46 +00:00
Chris Sutcliffe
8d5dd74cdc
Add missing thank you notes.
2010-08-25 23:47:17 +00:00
Chris Sutcliffe
4594048d19
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winuser.h (HHOOK): Move definition from here...
* include/windef.h: ...to here, as per MSDN.
2010-08-25 23:39:29 +00:00
Chris Sutcliffe
0fc2536a69
2010-08-25 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winbase.h (GetEnvironmentStrings, GetEnvironmentStringsA): Per
MSDN, change return type to LPCH.
(GetEnvironmentStringsW): Per MSDN, change return type to LPWCH.
2010-08-25 23:33:14 +00:00
Corinna Vinschen
04c82a9ba0
* libc/posix/opendir.c (opendir): Fix potential memory leak.
2010-08-25 10:44:47 +00:00
Corinna Vinschen
2f1832898f
* mount.cc (fs_info::update): Fix comments.
2010-08-25 09:20:11 +00:00
Corinna Vinschen
df70da7f6c
* syscalls.cc (rename): Open file with FILE_READ_ATTRIBUTES.
2010-08-25 08:51:41 +00:00
Chris Sutcliffe
58ae62fd94
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/prsht.h (SNDMDG, POSTMSG): Fix typo.
* include/windowsx.h (SNDMSG): Ditto.
2010-08-25 01:59:51 +00:00
Chris Sutcliffe
5ec52f06c2
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/prsht.h (SNDMSG, POSTMSG): Define macros and use throughout.
Thank you to Ozkan Sezer for reporting the issue.
2010-08-24 23:09:52 +00:00
Chris Sutcliffe
fbf44d908a
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/windowsx.h (SNDMSG): Define macro and use throughout.
Thank you to Chris Oldwood for reporting the issue.
2010-08-24 23:03:57 +00:00
Chris Sutcliffe
89a45c6f61
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/oleacc.h (AccessibleObjectFromEvent): Correct definition.
Thank you to Rick Walsh for reporting the issue.
2010-08-24 22:41:36 +00:00
Chris Sutcliffe
6d480dc617
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winbase.h (MoveFileWithProcessA, MoveFileWithProgressW): Define.
2010-08-24 22:35:39 +00:00
Chris Sutcliffe
c7a5ff6c03
2010-08-24 Vinky <rabbit_vinky@users.sourceforge.net>
...
* include/winbase.h (OVERLAPPED): Correct definition.
2010-08-24 22:25:44 +00:00
Chris Sutcliffe
b075ce0ecd
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winnt.h (IMAGE_NT_HEADERS32, IMAGE_NT_HEADERS64): Correct
definition.
Thank you to Pasi Ruokola for reporting the issue.
2010-08-24 22:20:33 +00:00
Chris Sutcliffe
a5791e0e69
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/exdisp.h (get_RegisterAsBrowser): Fix typo.
Thank you to cheznonnon for reporting the issue.
2010-08-24 22:10:28 +00:00
Chris Sutcliffe
a3a74aa453
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/ws2_32.def: Regenerate using gendef on a Win7 machine.
2010-08-24 22:05:38 +00:00
Chris Sutcliffe
af02b239ea
2010-08-24 Ozkan Sezer <sezero@users.sourceforge.net>
...
* winnt.h: Fix several SUBLANG ID errors (ref:
http://msdn.microsoft.com/en-us/library/dd318693(VS.85).aspx ).
(SUBLANG_UI_CUSTOM_DEFAULT): 0x05, not 0x03.
(SUBLANG_HAUSA_NIGERIA): Bad ID name, correct one is ...
(SUBLANG_HAUSA_NIGERIA_LATIN): ... this.
(SUBLANG_INUKTITUT_CANADA_LATIN): 0x02, not 0x01.
(SUBLANG_IRISH_IRELAND): 0x02, not 0x01.
(SUBLANG_LAO_LAO_PDR): Bad ID name, correct one is ...
(SUBLANG_LAO_LAO): ... this.
(SUBLANG_LOWER_SORBIAN_GERMANY): 0x02, not 0x01.
(SUBLANG_SAMI_SKOLT_FINLAND): 0x08, not 0x03.
(SUBLANG_SAMI_INARI_FINLAND): 0x09, not 0x03.
(SUBLANG_SYRIAC_SYRIA): define as SUBLANG_SYRIAC (what MSDN mentions).
(SUBLANG_TIGRIGNA_ERITREA): 0x02, not 0x01.
(SUBLANG_BENGALI_INDIA): 0x01, not 0x00.
(SUBLANG_BENGALI_BANGLADESH): 0x02, not 0x01.
(SUBLANG_PUNJABI_INDIA): 0x01, not 0x00.
(SUBLANG_PUNJABI_PAKISTAN): not defined in MSDN.
(SUBLANG_ROMANIAN_ROMANIA): 0x01, not 0x00.
(SUBLANG_ROMANIAN_MOLDOVA): not defined in MSDN.
2010-08-24 21:26:51 +00:00
Chris Sutcliffe
57bcacf206
2010-08-24 LRN <lrn1986@gmail.com>
...
* include/mmreg.h (MPEGLAYER3WAVEFORMAT, WAVE_FORMAT_UNKNOWN,
WAVE_FORMAT_PCM, WAVE_FORMAT_ADPCM, WAVE_FORMAT_IEEE_FLOAT,
WAVE_FORMAT_VSELP, WAVE_FORMAT_IBM_CVSD, WAVE_FORMAT_ALAW,
WAVE_FORMAT_MULAW, WAVE_FORMAT_OKI_ADPCM, WAVE_FORMAT_DVI_ADPCM,
WAVE_FORMAT_MEDIASPACE_ADPCM, WAVE_FORMAT_SIERRA_ADPCM,
WAVE_FORMAT_G723_ADPCM, WAVE_FORMAT_DIGIFIX, WAVE_FORMAT_DIALOGIC_OKI_ADPCM,
WAVE_FORMAT_MEDIAVISION_ADPCM, WAVE_FORMAT_CU_CODEC,
WAVE_FORMAT_YAMAHA_ADPCM, WAVE_FORMAT_SONARC,
WAVE_FORMAT_DSPGROUP_TRUESPEECH, WAVE_FORMAT_ECHOSC1,
WAVE_FORMAT_AUDIOFILE_AF36, WAVE_FORMAT_APTX, WAVE_FORMAT_AUDIOFILE_AF10,
WAVE_FORMAT_PROSODY_1612, WAVE_FORMAT_LRC, WAVE_FORMAT_DOLBY_AC2,
WAVE_FORMAT_GSM610, WAVE_FORMAT_MSNAUDIO, WAVE_FORMAT_ANTEX_ADPCME,
WAVE_FORMAT_CONTROL_RES_VQLPC, WAVE_FORMAT_DIGIREAL, WAVE_FORMAT_DIGIADPCM,
WAVE_FORMAT_CONTROL_RES_CR10, WAVE_FORMAT_NMS_VBXADPCM,
WAVE_FORMAT_ROLAND_RDAC, WAVE_FORMAT_ECHOSC3, WAVE_FORMAT_ROCKWELL_ADPCM,
WAVE_FORMAT_ROCKWELL_DIGITALK, WAVE_FORMAT_XEBEC, WAVE_FORMAT_G721_ADPCM,
WAVE_FORMAT_G728_CELP, WAVE_FORMAT_MSG723, WAVE_FORMAT_MPEG,
WAVE_FORMAT_RT24, WAVE_FORMAT_PAC, WAVE_FORMAT_MPEGLAYER3,
WAVE_FORMAT_LUCENT_G723, WAVE_FORMAT_CIRRUS, WAVE_FORMAT_ESPCM,
WAVE_FORMAT_VOXWARE, WAVE_FORMAT_CANOPUS_ATRAC, WAVE_FORMAT_G726_ADPCM,
WAVE_FORMAT_G722_ADPCM, WAVE_FORMAT_DSAT, WAVE_FORMAT_DSAT_DISPLAY,
WAVE_FORMAT_VOXWARE_BYTE_ALIGNED, WAVE_FORMAT_VOXWARE_AC8,
WAVE_FORMAT_VOXWARE_AC10, WAVE_FORMAT_VOXWARE_AC16,
WAVE_FORMAT_VOXWARE_AC20, WAVE_FORMAT_VOXWARE_RT24,
WAVE_FORMAT_VOXWARE_RT29, WAVE_FORMAT_VOXWARE_RT29HW,
WAVE_FORMAT_VOXWARE_VR12, WAVE_FORMAT_VOXWARE_VR18,
WAVE_FORMAT_VOXWARE_TQ40, WAVE_FORMAT_SOFTSOUND, WAVE_FORMAT_VOXWARE_TQ60,
WAVE_FORMAT_MSRT24, WAVE_FORMAT_G729A, WAVE_FORMAT_MVI_MV12,
WAVE_FORMAT_DF_G726, WAVE_FORMAT_DF_GSM610, WAVE_FORMAT_ISIAUDIO,
WAVE_FORMAT_ONLIVE, WAVE_FORMAT_SBC24, WAVE_FORMAT_DOLBY_AC3_SPDIF,
WAVE_FORMAT_ZYXEL_ADPCM, WAVE_FORMAT_PHILIPS_LPCBB, WAVE_FORMAT_PACKED,
WAVE_FORMAT_RHETOREX_ADPCM, WAVE_FORMAT_IRAT, WAVE_FORMAT_VIVO_G723,
WAVE_FORMAT_VIVO_SIREN, WAVE_FORMAT_DIGITAL_G723,
WAVE_FORMAT_CREATIVE_ADPCM, WAVE_FORMAT_CREATIVE_FASTSPEECH8,
WAVE_FORMAT_CREATIVE_FASTSPEECH10, WAVE_FORMAT_QUARTERDECK,
WAVE_FORMAT_FM_TOWNS_SND, WAVE_FORMAT_BTV_DIGITAL, WAVE_FORMAT_VME_VMPCM,
WAVE_FORMAT_OLIGSM, WAVE_FORMAT_OLIADPCM, WAVE_FORMAT_OLICELP,
WAVE_FORMAT_OLISBC, WAVE_FORMAT_OLIOPR, WAVE_FORMAT_LH_CODEC,
WAVE_FORMAT_NORRIS, WAVE_FORMAT_ISIAUDIO,
WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS, WAVE_FORMAT_DVM, WAVE_FORMAT_RAW_AAC1,
WAVE_FORMAT_MPEG_HEAAC, WAVE_FORMAT_MPEG_ADTS_AAC, WAVE_FORMAT_DRM,
WAVE_FORMAT_DTS, WAVE_FORMAT_WMAVOICE9, WAVE_FORMAT_WMASPDIF,
WAVE_FORMAT_WMAUDIO_LOSSLESS, WAVE_FORMAT_WMAUDIO2, WAVE_FORMAT_WMAUDIO3,
WAVE_FORMAT_MPEG_LOAS, WAVE_FORMAT_RAW_SPORT, WAVE_FORMAT_ESST_AC3,
WAVE_FORMAT_DTS2): Define.
* include/msacm.h (HACMDRIVERID, HACMDRIVER, HACMSTREAM, HACMOBJ,
ACMSTREAMHEADER, WAVEFILTER, acmDriverAddA, acmDriverAddW, acmDriverRemove,
acmMetrics, acmStreamOpen, acmStreamSize, acmStreamPrepareHeader,
acmStreamUnprepareHeader, acmStreamReset, acmStreamClose, acmStreamConvert):
Define.
2010-08-24 19:09:50 +00:00
Corinna Vinschen
48f6c6c664
* include/cygwin/version.h: Fix comment.
2010-08-24 15:25:46 +00:00
Corinna Vinschen
8ae578d6ae
* external.cc (cygwin_internal): In CW_CVT_MNT_OPTS case, initialize
...
flags with *pflags to restore original behaviour.
2010-08-24 15:11:24 +00:00
Chris Sutcliffe
bfb9c22649
2010-08-23 LRN <lrn1986@gmail.com>
...
* include/winbase.h (SYMBOLIC_LINK_FLAG_DIRECTORY, FILE_NAME_NORMALIZED,
FILE_NAME_OPENED, VOLUME_NAME_DOS, VOLUME_NAME_GUID, VOLUME_NAME_NONE,
VOLUME_NAME_NT, FILE_BASIC_INFO, FILE_STANDARD_INFO, FILE_NAME_INFO,
FILE_STREAM_INFO, FILE_COMPRESSION_INFO, FILE_ATTRIBUTE_TAG_INFO,
FILE_ID_BOTH_DIR_INFO, FILE_REMOTE_PROTOCOL_INFO, FILE_INFO_BY_HANDLE_CLASS,
GetFileInformationByHandleEx, GetFinalPathNameByHandleA,
GetFinalPathNameByHandleW): Define.
2010-08-24 00:15:51 +00:00
Jeff Johnston
8fcd3c7367
Fix location of this file to be where it was initially intended.
2010-08-23 15:51:27 +00:00
Corinna Vinschen
16e1c98c1b
* ldd.cc (report): Drop long pathname considerations which result in
...
invalid path, now that this is done in cygwin_conv_path.
2010-08-23 11:04:04 +00:00
Chris Sutcliffe
59ecc5766c
2010-08-22 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/CheckConflicts.sh: New file.
2010-08-22 04:03:33 +00:00
Chris Sutcliffe
f6ce088fb3
2010-08-21 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/kernel32.def (CopyLZFile, GetExpandedNameA, GetExpandedNameW, LZClose,
LZCopy, LZInit, LZOpenFileA, LZOpenFileW, LZRead, LZSeek, OpenProcessToken,
OpenThreadToken, RegCloseKey, RegCreateKeyExA, RegCreateKeyExW,
RegDeleteKeyExA, RegDeleteKeyExW, RegDeleteValueA, RegDeleteValueW,
RegEnumKeyExA, RegEnumKeyExW, RegEnumValueA, RegEnumValueW, RegFlushKey,
RegGetKeySecurity, RegLoadKeyA, RegLoadKeyW, RegNotifyChangeKeyValue,
RegOpenCurrentUser, RegOpenKeyExA, RegOpenKeyExW, RegOpenUserClassesRoot,
RegQueryInfoKeyA, RegQueryInfoKeyW, RegQueryValueExA, RegQueryValueExW,
RegRestoreKeyA, RegRestoreKeyW, RegSetKeySecurity, RegSetValueExA,
RegSetValueW, RegUnLoadKeyA, RegUnLoadKeyW, RtlCaptureStackBackTrace,
RtlFillMemory, RtlMoveMemory, RtlZeroMemory, SetThreadToken): Remove
conflicting definition.
* lib/th32.def: Remove.
* lib/ntdll.def (RtlUnwind): Remove conflicting definition.
* lib/version.def (VerLanguageNameA, VerLanguageNameW): Remove conflicting
definition.
2010-08-22 03:52:59 +00:00
Chris Sutcliffe
387589c4a4
2010-08-21 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/kernel32.def (CreateProcessAsUserW): Remove definition.
2010-08-21 19:21:33 +00:00
Corinna Vinschen
43c394deb6
* Makefile.in (DLL_IMPORTS): Link against advapi32.a before kernel32.a.
2010-08-21 18:57:36 +00:00
Ralf Wildenhues
9cbecf07a9
Fix misquoting in stdint.m4.
...
config/:
PR target/45084
* stdint.m4 (GCC_HEADER_STDINT): Use m4 quotes for arguments
of AC_MSG_ERROR.
libdecnumber/:
* configure: Regenerate.
bfd/:
* configure: Regenerate.
2010-08-21 12:34:06 +00:00
Christopher Faylor
ff7fca61df
* cygthread.cc: Update copyright.
2010-08-20 15:28:28 +00:00
Corinna Vinschen
a6fc3a61c2
* path.cc (path_conv::check): Close handle in conv_handle if we're
...
following a symlink.
2010-08-20 14:29:56 +00:00