Aaron Arvey
a31a75244c
Added __bb_init_func for linking purposes.
2005-04-15 16:13:49 +00:00
Mike Hearn
fa153c62dd
Increase PE reserve area size to 512Mb.
2005-03-22 16:42:25 +00:00
Rémi Assailly
193d527736
char -> const char fixes.
2005-01-28 14:02:52 +00:00
Peter Chapman
505dfdefb5
Fix up several inline assembler blocks so that they produce correct
...
code with the -fomit-frame-pointer gcc flag.
2004-12-02 18:19:25 +00:00
Hans Leidekker
cbaa545fff
Protect use of pthread functions with #ifdef HAVE_PTHREAD_H.
2004-10-19 03:57:05 +00:00
Alexandre Julliard
ce0e8f2998
Restore lost chunk of previous patch.
2004-10-18 21:43:50 +00:00
Vincent Béron
2c1b35dd17
Add some more Alpha asm code and Alpha-specific parts.
2004-10-18 21:27:52 +00:00
Vincent Béron
d17c162c4c
Fix the declaration of pthread_mutexattr_gettype().
2004-10-18 19:33:16 +00:00
Alexandre Julliard
e9f2eb5241
Support compiling with -fPIC for people who somehow think this is a
...
good idea.
2004-09-24 00:25:32 +00:00
Alexandre Julliard
06233cfb47
Avoid some non-portable makefile constructs.
2004-08-11 20:59:09 +00:00
Emmanuel Maillard
d110e1f264
wine_pthread_init_thread: retrieve the stack info on Darwin.
2004-07-21 03:06:03 +00:00
Alexandre Julliard
0c8d6908df
Avoid using strlen.
2004-07-06 18:46:05 +00:00
Mike McCormack
2113bd43f1
Define AT_SYSINFO_* if it's missing.
2004-06-28 20:28:05 +00:00
Alexandre Julliard
f558741fab
Remove the AT_SYSINFO and AT_SYSINFO_EHDR values if the sysinfo page
...
is in one of our reserved ranges.
2004-06-26 00:12:20 +00:00
Alexandre Julliard
9bfe0c4ec4
Use wine_dlsym instead of dlsym to avoid the glibc dlerror bug.
...
Call dlsym with RTLD_DEFAULT for symbols that we don't redefine to
work around another glibc bug.
2004-06-24 04:07:22 +00:00
Alexandre Julliard
bfac60bfeb
Do direct Linux system calls in the preloader to avoid trouble with
...
some broken static libcs.
2004-06-22 02:42:05 +00:00
Alexandre Julliard
c3193925d8
Add the preloader itself as argv[0] and remove it again before running
...
the real loader, this way the ps output makes more sense.
2004-06-15 20:31:06 +00:00
Francois Gouget
497709b9bb
Assorted spelling and case fixes.
2004-06-15 20:26:45 +00:00
Alexandre Julliard
9af2bd4803
Yet another fix for the MacOS X environ brain damage.
2004-06-14 17:07:30 +00:00
Alexandre Julliard
9f33a4b109
Make it possible to add auxiliary values to the existing array; this
...
is required for older kernels.
2004-06-03 23:36:01 +00:00
Alexandre Julliard
92425aab60
Added support for specifying the PE exe address range through the
...
WINEPRELOADRESERVE environment variable.
2004-06-02 21:40:00 +00:00
Alexandre Julliard
6d2099f4f8
A few small fixes.
2004-06-01 19:47:11 +00:00
Alexandre Julliard
910234eafb
Pass the environ variable from main to try to avoid Darwin's
...
_NSGetEnviron() ugliness.
2004-05-29 00:26:03 +00:00
Alexandre Julliard
b1abca8a5d
Initial version of the Wine preloader, used to reserve memory
...
areas at startup. Based on the work of Mike McCormack.
2004-05-28 20:59:22 +00:00
Alexandre Julliard
94d74b5fed
Added support for managing reserved memory areas in libwine and ntdll.
...
Try to reserve everything above 0x80000000 on startup.
2004-05-25 01:29:24 +00:00
Alexandre Julliard
b64c627022
Fixed rounding bug in the stack info calculation when we don't have
...
pthread_getattr_np.
2004-03-30 05:13:35 +00:00
Patrik Stridvall
ede82e3055
Fixed some issues found by winapi_check.
2004-02-20 20:19:23 +00:00
Alexandre Julliard
a4d1826c69
Better fix for the thread exit race on pthreads.
2004-02-11 23:58:46 +00:00
Alexandre Julliard
9591679bf2
Don't depend on the name of the main binary, always load
...
wine-[kp]thread no matter what.
2004-02-11 04:19:43 +00:00
Alexandre Julliard
163396b955
Revert the thread exit race fix for now, it doesn't work right on
...
pthreads.
2004-02-05 17:45:31 +00:00
Alexandre Julliard
4fac95df3d
Fixed a couple of race conditions in the wine_pthread routines at
...
thread startup and exit.
2004-02-05 02:01:35 +00:00
Alexandre Julliard
f223b8fe2d
Disable the exec shield workaround for now, it's causing too much
...
trouble.
2004-01-20 00:28:01 +00:00
David Beck
ef7087a5ee
Added RFTHREAD flag in rfork call.
2003-12-30 21:53:32 +00:00
Alexandre Julliard
c6d44be3e5
Create a huge array in bss to reserve the memory area we need for PE
...
binaries, to prevent exec shield from mapping system libraries there.
2003-11-22 00:08:26 +00:00
Alexandre Julliard
821ab8636f
Added configure check for pthread_getattr_np.
2003-11-12 22:44:56 +00:00
Alexandre Julliard
a628c13e90
Added a wine-glibc binary that detects the glibc threading in use and
...
execs the corresponding wine binary.
Removed the --with-nptl configure option.
2003-11-12 03:28:21 +00:00
Alexandre Julliard
b2d937d5d9
Added sigsetjmp/siglongjmp and gettid to the portability library.
2003-11-12 03:16:00 +00:00
Alexandre Julliard
546839f408
Only build both Wine binaries on Linux, pthread support doesn't work
...
on other platforms.
2003-11-11 00:48:21 +00:00
Alexandre Julliard
50fba7ffec
Moved the remaining SYSDEPS_* functions to the wine_pthread interface.
...
Let the pthread library allocate the stack itself.
2003-11-09 01:25:23 +00:00
Alexandre Julliard
f45325e443
Create two separate wine binaries, one using libpthread and one using
...
kernel threading directly.
Get rid of the remaining HAVE_NPTL ifdefs.
Remove the scheduler directory.
2003-11-06 23:05:41 +00:00
Alexandre Julliard
357c7401b9
Re-use the loader directory for the main wine loader, and get rid of
...
the miscemu directory.
2003-11-06 01:17:56 +00:00
Alexandre Julliard
b9efd4afcb
Moved loader/module.c to dlls/kernel.
2003-11-06 01:09:58 +00:00
Dmitry Timoshkov
45ac9cd287
Convert GetBinaryType to unicode.
2003-10-14 01:16:59 +00:00
Alexandre Julliard
b81d9e7cf4
Link all remaining files that contain kernel APIs into kernel32.dll
...
instead of ntdll.dll. Removed a number of no longer needed files.
2003-10-08 03:57:02 +00:00
Alexandre Julliard
4137aecaa5
Changed LdrLoadDll to only search for the dll in the specified path,
...
using ntdll functions.
Moved LOAD_WITH_ALTERED_SEARCH_PATH functionality to LoadLibraryEx
where it belongs.
2003-10-02 04:58:49 +00:00
Jon Griffiths
4c1fa161a3
Documentation updates.
2003-10-01 03:20:21 +00:00
Alexandre Julliard
a33f318ffc
Avoid depending on MODULE_GetBinaryType in load_library_as_datafile.
2003-09-26 04:35:44 +00:00
Alexandre Julliard
2052538a47
Moved loadorder support to dlls/ntdll.
...
Removed the --dll option and replaced it by the WINEDLLOVERRIDES
environment variable.
2003-09-25 20:33:41 +00:00
Alexandre Julliard
a37e7608c7
Moved 32-bit relay and snoop support to dlls/ntdll.
2003-09-19 04:32:39 +00:00
Alexandre Julliard
97ad311e71
Moved the 32-bit builtin loader and the remaining bits of the PE
...
loader into dlls/ntdll/loader.c.
2003-09-19 04:04:57 +00:00
Alexandre Julliard
ba71316172
Moved a couple more functions to dlls/kernel.
2003-09-18 20:59:54 +00:00
Alexandre Julliard
8db8368ee7
Keep the file handle of 16-bit modules open while the module is
...
loaded. This makes it possible to remove the InstallShield hack in
OpenFile16.
Moved LoadLibrary32_16 to kernel.
2003-09-18 04:35:34 +00:00
Alexandre Julliard
aaf3503ea5
Moved almost all remaining process, thread, fiber and exception
...
functions to dlls/kernel.
2003-09-17 05:31:32 +00:00
Alexandre Julliard
e37c6e18d0
Fixed header dependencies to be fully compatible with the Windows
...
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Alexandre Julliard
7df1b9e03a
Start using the exported TEB structure from winternl.h where
...
possible.
2003-08-28 19:57:35 +00:00
Alexandre Julliard
6aca040f86
Moved a few more functions to dlls/kernel.
2003-08-26 02:29:48 +00:00
Alexandre Julliard
0ac9690081
Moved 16-bit relay and snoop support to dlls/kernel.
2003-08-26 02:28:59 +00:00
Alexandre Julliard
9ca159b61a
Moved 16-bit builtin module handling to dlls/kernel/ne_module.c.
2003-08-23 23:07:10 +00:00
Alexandre Julliard
5fbb446cfc
Moved most of the 16-bit task support and NE module loader to
...
dlls/kernel.
2003-08-23 00:03:40 +00:00
Alexandre Julliard
d8e34ebc21
Renamed system.dll to system.drv.
2003-08-19 03:27:45 +00:00
Dmitry Timoshkov
6f66c1c75b
Windows ignores values of e_cparhdr and e_crlc of the MZ header.
2003-08-18 19:51:42 +00:00
Pierre d'Herbemont
89321f49bd
Add Mach-O (Darwin file format) support.
2003-07-21 20:02:50 +00:00
Francois Gouget
3ca761220a
Spelling fixes (s/occured/occurred/ and variants).
2003-07-15 20:53:39 +00:00
Alexandre Julliard
d27b8c96eb
Avoid accessing uninitialized variable in TASK_Create (spotted by
...
Robert Shearman).
2003-07-02 04:32:38 +00:00
Eric Pouech
675b75597b
- removed next & prev fields from WINE_MODREF and implement instead
...
the three linked lists in LDR_MODULE
- added PEB_LDR_DATA structure to PEB
- removed a couple of no longer needed global & static variables
2003-07-01 03:38:56 +00:00
Alexandre Julliard
6bc5091160
Start to make use of the proper PEB structure for process
...
information.
2003-05-22 03:44:01 +00:00
Alexandre Julliard
7c836cf954
Moved a couple of 16-bit module functions from to loader/ne/module.c.
2003-05-21 18:32:17 +00:00
Alexandre Julliard
81e72d8f2d
Moved all process initialisation code to process.c and removed
...
loader/main.c.
2003-05-20 19:21:43 +00:00
Alexandre Julliard
c7a51eec43
Only create the 16-bit dummy module when we need really it.
2003-05-20 02:32:26 +00:00
Alexandre Julliard
54100873d3
Avoid using the MapHModule functions.
2003-05-16 20:17:52 +00:00
Alexandre Julliard
1ed73fae13
Call the user signal proc for exe modules too, to avoid duplicating
...
the module cleanup code.
2003-05-16 20:16:56 +00:00
Alexandre Julliard
c963e25c0e
Get rid of the 32-bit user signal proc since we always run builtin
...
USER now. Moved USER module cleanups to the 16-bit signal proc.
2003-05-15 23:11:00 +00:00
Alexandre Julliard
adb532903c
Rewrote module TLS support and moved it to ntdll.
2003-05-14 19:51:14 +00:00
Alexandre Julliard
d9bab57477
Added support for calling the TLS callback functions.
2003-05-08 04:13:26 +00:00
Alexandre Julliard
ce4d111cd8
Moved the EnumResource* functions to the kernel dll, and fixed their
...
prototypes.
2003-05-07 03:21:26 +00:00
Alexandre Julliard
424202bd9a
Moved most of the kernel resource APIs to dlls/kernel.
2003-04-30 00:53:23 +00:00
Alexandre Julliard
fedc411743
Moved the functionality of starting Win16 and DOS programs from the
...
common process startup into a separate winevdm application.
2003-04-27 00:47:58 +00:00
Alexandre Julliard
7dd3f7c786
Silently ignore 'so' loadorder in the config file instead of
...
displaying an error.
2003-04-27 00:40:23 +00:00
Alexandre Julliard
0412cc55d2
Rewrote most of the import fixup code to avoid doing redundant work
...
for every entry point. Moved it all to dlls/ntdll/loader.c.
Various optimizations in the other loader routines.
2003-04-05 05:16:11 +00:00
Alexandre Julliard
5980477dcc
Fetch the exe module directly from the PDB instead of calling
...
LdrGetDllHandle.
2003-04-05 05:13:33 +00:00
Alexandre Julliard
39f73ddeaa
Merged PE_InitDLL into MODULE_InitDLL.
...
Fixed a few traces.
2003-04-04 19:50:17 +00:00
Eric Pouech
69dc0d93d5
Removed no longer needed MODREF.find_export field.
2003-03-21 21:27:16 +00:00
Eric Pouech
7b91b82680
Rewrote mapping of module into memory using only NTDLL APIs.
2003-03-21 00:46:08 +00:00
Alexandre Julliard
195574e2d8
Added memcpy_unaligned to libwine_port.
2003-03-20 23:44:36 +00:00
Eric Pouech
19e050eb6f
Moved WINE_MODREF.flags to WINE_MODREF.ldr.Flags, and make use of the
...
same flags values as Win2000.
2003-03-20 23:40:08 +00:00
Eric Pouech
f94c8b85b9
Move some fields (refCount, tls_index and module) from WINE_MODREF to
...
LDR_MODULE.
2003-03-20 22:05:26 +00:00
Eric Pouech
9b79d698b2
Moved the module loading/unloading code and the remaining needed
...
static variables to ntdll.
2003-03-20 04:55:59 +00:00
Alexandre Julliard
500a2f95f7
Partially implemented LdrLock/UnlockLoaderLock.
2003-03-20 04:29:21 +00:00
Alexandre Julliard
03e4ea1789
Make GetModuleFileNameA call GetModuleFileNameW. Small cleanups.
2003-03-18 20:07:12 +00:00
Eric Pouech
84d1a8ff8c
- added LDR_MODULE structure to WINE_MODREF and made dummy filling of
...
this structure
- implementation of LdrFindEntry
- implementation of GetModuleFileName[AW] on top of LdrFindEntry
2003-03-18 18:29:13 +00:00
Alexandre Julliard
803b5686ef
Cleaned up load_library_as_datafile().
2003-03-14 23:17:45 +00:00
Eric Pouech
32872b1a57
- implementation of LdrLoadDll out of loader/module.c
...
- in impacted functions, ensure that we only use ntdll functions
- for internal loading, start using NTDLL style for error reporting
- making use of new LdrLoadDll
2003-03-14 05:01:20 +00:00
Eric Pouech
1efa50e47e
- implementation of LdrUnloadDll out of loader/module.c
...
- in impacted functions, ensure that we only use ntdll functions
- making use of new LdrUnloadDll
2003-03-14 04:00:52 +00:00
Eric Pouech
f3a73ef7af
- implemented LdrGetProcedureAddress and made use of it for
...
GetProcAddress
- implemented LdrGetDllHandle and made use of it in GetModuleHandle
- removed MODULE_DllThreadDetach from loader/module.c (should have
been removed in a previous patch)
2003-03-06 23:41:37 +00:00
Eric Pouech
d4fcc4bd06
Removed SO loading type.
2003-03-05 02:50:25 +00:00
Eric Pouech
7d6096480a
- added Ldr* information to include/winternl.h
...
- exported a few functions/global vars from module.h while we move
code from loader/module.c to dlls/ntdll/loader.c
- implemented LdrShutdownProcess, LdrShutdownThread and
LdrDisableThreadCalloutsForDll (and made use of them)
2003-03-04 04:36:56 +00:00
Alexandre Julliard
60d40cd246
Only do the unload_dll server call at the time we actually unload the
...
dll.
2003-02-28 21:52:08 +00:00
Alexandre Julliard
ce13153821
Moved LDT selector allocation routines to libwine.
...
Added support for correct locking of all LDT operations.
Added separate functions to manipulate the %fs selector, which allows
using a global GDT selector on recent Linux kernels.
2003-02-26 20:34:45 +00:00
Alexandre Julliard
ac13d2f47e
Print thread ids in traces with only 4 digits now that they are small
...
integers.
2003-02-18 23:29:47 +00:00
Alexandre Julliard
851d25d977
Set default loadorder to native for dlls that contain an explicit
...
path.
2003-02-17 01:49:47 +00:00
Warren Baird
39f73a2203
Increase size of insufficiently big stack allocated buffer used for
...
error messages in ELF_LoadLibraryExA.
2003-02-12 01:17:55 +00:00
Rein Klazes
33be954e62
In PE_fixup_imports report "module file not found" only in case of a
...
"file not found" error. Otherwise report failure and error number.
2003-02-11 22:21:24 +00:00
Matthew Davison
60009b9a56
Removed calls to HEAP_strdupAtoW.
2003-01-23 23:07:38 +00:00
Dimitrie O. Paun
297f3d898d
Define NONAMELESS{STRUCT,UNION} explicitly in the files that need them.
2003-01-07 20:36:20 +00:00
Alexandre Julliard
bcf41605d2
Debug channels cleanup.
2002-12-17 21:09:50 +00:00
Alexandre Julliard
df357055e2
Don't crash in DirectedYield16 if no other task is running.
2002-12-13 00:39:17 +00:00
Dimitrie O. Paun
737d4be892
Move excpt.h out of include/msvcrt/ as it does not conflict with any
...
standard Unix header.
2002-12-12 23:34:01 +00:00
Alexandre Julliard
309b37023d
Also trace implicitly loaded dlls for +loaddll.
2002-12-12 22:05:22 +00:00
Patrik Stridvall
75dee506ae
Replace 0x%p with %p.
2002-12-05 19:56:15 +00:00
Alexandre Julliard
9169729b0b
Merged font.h and path.h into gdi.h. Moved x11font.h to
...
dlls/x11drv. Removed a number of unnecessary #includes.
2002-12-03 19:18:41 +00:00
Alexandre Julliard
11f361a29c
Removed no longer needed PROFILE_LoadWineIni().
2002-11-23 02:24:53 +00:00
Andrew John Hughes
ed800c69c8
Build ntdll with -DSTRICT.
2002-11-21 03:45:01 +00:00
Alexandre Julliard
82aeebd783
Added wrapper to replace llseek+lread to avoid HANDLE/HFILE
...
conversions.
2002-11-21 00:04:01 +00:00
Jukka Heinonen
1a665058e8
Removed last users of msdos/interrupts.c.
2002-11-21 00:02:09 +00:00
Eric Pouech
d09b9ccb39
Don't fully process FreeLibrary when process is stopping.
2002-11-15 04:14:27 +00:00
Patrik Stridvall
cf07e10017
Don't use wine/unicode.h in the header files, include it directly
...
where needed instead.
2002-10-23 20:20:59 +00:00
Patrik Stridvall
1298eb4053
Fixed mismatches between the Wine headers and the Microsoft headers.
2002-10-23 18:50:10 +00:00
Alexandre Julliard
f3215eba4a
Get/SetFastQueue16 should use HQUEUE16 handles.
2002-10-19 17:20:44 +00:00
Alexandre Julliard
9534d4f0fe
Added wine_memcpy_unaligned function to avoid gcc memcpy
...
optimizations.
2002-10-18 00:27:38 +00:00
Alexandre Julliard
c5c48eb677
Fixed reference count handling to support LoadLibrary during a process
...
attach.
2002-10-15 02:25:19 +00:00
Alexandre Julliard
613ead7f0f
Fixed some handle conversions in prevision of void* handles.
2002-10-04 00:27:10 +00:00
Dimitrie O. Paun
e70d08be31
By default, we should use our own dlls.
2002-09-25 00:16:52 +00:00
Patrik Stridvall
b5bb32c09a
Fixed some issues found by winapi_check.
2002-09-24 18:29:39 +00:00
Michael Stefaniuc
9d2b862883
Convert HRSRC to a void*.
2002-09-16 22:47:05 +00:00
Alexandre Julliard
81bdcf126f
Removed references to advapi32 registry functions from some of the
...
kernel functions.
2002-09-13 17:47:44 +00:00
Patrik Stridvall
9c1de6de30
Moved all the content of the DDK files ntdef.h and ntddk.h to
...
winternl.h.
2002-09-12 22:07:02 +00:00
Patrik Stridvall
51e6c0ccb1
MSVC compatibility fixes.
2002-08-31 19:04:14 +00:00
Alexandre Julliard
3fa613cf61
Moved internal context macros out of winnt.h.
...
Added SET_AX etc. macros to avoid non-portable pointer manipulations.
2002-08-31 18:47:00 +00:00
Patrik Stridvall
9aab47ed24
MSVC compatibility fixes.
2002-08-28 23:42:34 +00:00
Mike McCormack
f5d21eb2bf
Don't cache file handles for NE executable modules so that we don't
...
lock the CDROM.
2002-08-27 02:05:21 +00:00
Dmitry Timoshkov
d75aed2c92
Convert most of the file APIs to Unicode.
2002-08-27 01:13:58 +00:00
Dmitry Timoshkov
1467bbd5a4
Relax a bit PE consistency checks.
...
Return BINARY_DOS type if extended header was not recognized.
2002-08-27 00:34:41 +00:00
Patrik Stridvall
d016f819f1
Added include protection for unistd.h and sys/time.h.
2002-08-17 00:43:16 +00:00
Alexandre Julliard
0eec45a97b
Force loadorder of 16-bit dlls to builtin if their 32-bit counterpart
...
has already been loaded as builtin.
2002-08-16 20:02:54 +00:00
Dmitry Timoshkov
10cd651ef3
Set up exception handler around WEP call.
2002-08-16 01:44:21 +00:00
Alexandre Julliard
befbb0e441
Make behavior of builtin executables closer to that of builtin dlls.
...
Fixed case sensitivity of builtin executables.
2002-08-14 21:12:58 +00:00
Alexandre Julliard
a5dea216cc
Implemented the RtlImage* functions, and use them to replace the
...
PE_HEADER macro.
2002-08-09 19:57:38 +00:00
Alexandre Julliard
526531eb6c
Create at most one glue file for a single dll.
...
Avoid the intermediate .tmp.o file when building programs.
2002-08-01 18:36:58 +00:00
Alexandre Julliard
7375597fe2
Fixed some handle type mismatches and added a few casts in prevision
...
of void* handles.
2002-07-31 19:26:03 +00:00
Alexandre Julliard
267ca68253
Fixed HANDLE<->HFILE conversions, since they will be different types
...
when handles are void*.
2002-07-31 17:20:00 +00:00
Alexandre Julliard
29f265fab1
Set the correct permissions on the PE image sections.
2002-07-29 23:59:26 +00:00
Alexandre Julliard
13f2a17eb2
Convert HTASK to void* (based on a patch by Michael Stefaniuc).
2002-07-28 23:48:27 +00:00
Alexandre Julliard
891d23e57f
Added support for ordinal hint in PE_FindExportedFunction.
2002-07-24 19:04:41 +00:00
Alexandre Julliard
7015ce3096
No need to call GetModuleFileName16 now that GetModuleFileNameA
...
handles 16-bit tasks.
2002-07-05 01:28:10 +00:00
Alexandre Julliard
83886f23fa
Fixed GetModuleFileNameW return value.
...
Quiet dll loading error message.
2002-07-05 01:27:19 +00:00
Joshua Thielen
1cef2974ab
Changed GetModuleFileNameA to use GetCurrentTask instead of
...
MODULE32_LookupHMODULE when called by a 16-bit task.
2002-07-05 00:16:41 +00:00
Alexandre Julliard
958732d21c
Fixed warnings.
2002-07-02 02:09:39 +00:00
Alexandre Julliard
69622dbdcc
Added support for path wildcards of the form "*dllname" in load order
...
specifications.
Only use wildcard entry for dlls that don't specify an explicit path.
Removed the old DllOverrides syntax support.
Misc cleanups and optimizations.
2002-06-25 00:23:23 +00:00
Alexandre Julliard
bc524e92d2
Avoid loading programs into the DOS memory area.
2002-06-20 22:54:26 +00:00
Alexandre Julliard
2ad28d62d7
Don't go through the export table if we are not tracing anything.
2002-06-13 21:54:12 +00:00