thorpej
b0f977ee6b
Implement sunos_sys_execve(). The previous code simply called
...
sys_execve() without doing an alternate patch check, which was
incorrect. Bug pointed out by Krister Walfridsson <cato@df.lth.se>
on port-sparc@NetBSD.ORG .
1996-08-26 22:49:43 +00:00
mrg
db019893b4
update sunos_sys_reboot() to actually work again.
1996-08-11 03:16:26 +00:00
mycroft
118b9b478d
sys/dir.h -> sys/dirent.h
1996-08-10 09:08:26 +00:00
mycroft
811315ca92
Add anchors so that only exactly `-I. is modified.
1996-08-10 04:01:29 +00:00
mycroft
9c5b0780c0
Convert the -I. to -I${.OBJDIR}, so that the `machine symlink is available.
1996-08-10 03:00:51 +00:00
mrg
5abbf990f3
Change reboot(2) to take two arguments: bootopt like normal and also
...
a boot string for firmware that can do this, such as the SPARC and
the sun3 models. It is currently silently ignored on all other
hardware now, however. The MD function "boot()" has been changed to
also take a char *.
1996-08-09 10:30:23 +00:00
mycroft
44f440543f
We dont need to pass down COMPATDIR and KERNDIR.
1996-08-08 15:15:16 +00:00
mycroft
3f0b5a641e
Run the child make in the source directory, so that nothing here needs to be
...
changed when the compile directory is outside the source tree.
1996-08-08 15:06:39 +00:00
christos
8979b8342a
Fix PR/2599; include <sys/dirent.h> instead of <sys/dir.h>
1996-07-05 16:31:00 +00:00
pk
39dfdd0601
Translate EIO to ENOTTY after a SunOS `TIOCGETPGRP' (tcgetpgrp(3)) fails
...
on a pty (see also kern/pty_tty.c).
1996-07-02 21:21:57 +00:00
christos
7120dce626
Fix mysterious dissappearance of the .PATH directive.
1996-06-30 00:17:02 +00:00
mycroft
5262bdf053
Remove the old (broken) setre[ug]id() emulation.
1996-06-23 11:20:42 +00:00
mycroft
fdc697b5e9
Catch up with setre[ug]id() changes.
1996-06-23 11:17:50 +00:00
mycroft
1328302bd9
Regen.
1996-06-23 11:16:12 +00:00
mycroft
365a977533
Catch up with setre[ug]id() changes.
1996-06-23 11:13:32 +00:00
mycroft
f01b3b1837
Regen.
1996-06-23 11:12:22 +00:00
mycroft
3bbb29fe03
Catch up with setre[ug]id() changes.
1996-06-23 11:10:01 +00:00
cgd
d73abf41aa
avoid unnecessary checks of m_get/MGET/etc.'s return values. When
...
they're called with M_WAIT, they are defined to never return NULL.
1996-06-14 22:21:12 +00:00
christos
d83602c110
Simplify and add comments.
1996-06-13 19:27:01 +00:00
christos
4d9a6e0930
- Pass the Elf32_Ehdr in the linux probe function, and use it!
...
Since linux binaries are (mostly) always compiled with gcc, look for
the gcc signature in the .comment section header: "\0 GCC: (GNU) ".
I've changed the probe order in kern/exec_elf.c to probe for linux ELF
binaries first and fall back to SVR4 binaries. This makes statically
linked binaries work for both linux and svr4. Note that gcc-compiled
svr4 binaries, still contain the operating system signature first and
then the GCC signature, so there is no conflict. Yes this is a hack.
1996-06-13 18:42:01 +00:00
christos
5d27db0882
Pass the elf exec header in the probe function.
1996-06-13 18:33:54 +00:00
jonathan
592ca35c51
Fix typos in SUSP and DSUSP mapping when setting Ultrix posixmode tty
...
attributes (was 112 and 113, should be 12 and 13).
1996-06-13 18:13:34 +00:00
christos
38c8b72648
Many bug fixes... These now work well enough for vi, ksh, csh, stty etc.
1996-06-05 19:27:41 +00:00
christos
13bce5bb2b
- report process usage correctly. we used to get panics on SIGTSTP.
1996-06-05 19:26:13 +00:00
christos
53efdc8e32
- return EINVAL on the hardware specific 'X' ioctls, otherwise stty does not
...
work properly.
- use printf -> uprintf.
1996-06-05 19:24:22 +00:00
christos
7e8a7a54eb
- Always check if the file descriptor we are using is a socket.
...
- Make sure we get an so_internal state allocated, even if we
did not open the socket ourselves.
1996-06-05 19:10:34 +00:00
christos
dd1fe33d2e
- Always check if the file descriptor we are using is a socket.
...
- Make sure we get an so_internal state allocated, even if we
did not open the socket ourselves.
1996-06-05 19:07:37 +00:00
pk
ec587073d7
I_SIGSET => I_SETSIG (pointed out by Greg Earle).
1996-05-26 23:57:10 +00:00
mrg
663808dfc5
use ' not " when passing variables to a sub-make. pr#1199/pr#1296
1996-05-20 17:23:25 +00:00
mark
847038524a
cast -1 to a char for comparision with tc->t_brkc so that this test
...
will work with signed and unsigned chars.
1996-05-20 14:29:17 +00:00
fvdl
484a6c9fe4
Regen.
1996-05-20 02:00:53 +00:00
fvdl
69761c2aa8
Update list of Linux syscalls and implement the ones that are likely to be
...
used and doable.
1996-05-20 01:59:09 +00:00
veego
d5db0e464d
Put this into an #ifdef COMPAT_OLDTTY.
...
look in <sys/tty.h> for more infomations about that.
1996-05-18 22:17:49 +00:00
christos
4f3ac596f5
- rename cpu_exec_aout_prep_oldzmagic to exec_aout_prep_oldzmagic
1996-05-18 16:02:08 +00:00
christos
f09036d6ec
- Moving cpu_exec_aout_prep_oldzmagic -> exec_aout_prep_oldzmagic.
...
This is used by the i386, hp300 and mac68k ports.
- Added exec_aout_prep_oldomagic, and exec_aout_prep_oldnmagic
These are just copies of the respective prep functions from
kern_exec.c with text address starting at 0. Maybe a better fix
is to pass the starting address as a third argument so we don't
duplicate code, but this could be the next pass since the functions
are used in many places. These functions are used for BSDI binaries.
1996-05-18 15:52:19 +00:00
christos
268e6edf33
Support bsdi getkerninfo(SYSINFO,...) call so that the BSDI netscape
...
calling uname(3) can find out what os it is running on. Tested only with a
bsdi binary that calls getkerninfo directly. Funny thing is that I ran
the same binary on a bsdi machine, and they fill in fewer fields in the
emulation than we do; maybe I went overboard :-)
1996-05-18 01:24:34 +00:00
christos
6ba5bd8c10
Fix OGETUDATA for Solaris-2.3 (From Greg Hudson)
1996-05-13 16:57:50 +00:00
mycroft
540f9550c0
Make `make depend' work for libraries.
1996-05-11 16:11:30 +00:00
mrg
b961912b8a
sort this.
1996-05-05 17:14:25 +00:00
veego
203fc82ae2
Added a missing Makefile and run it
...
Moved the prototyp for sunos_sendsig in an #ifndef sparc
1996-05-05 16:07:42 +00:00
briggs
8b8a6fcf2f
Put prototype for sunos_sendsig() in sunos.h as suggested by veego.
1996-05-05 12:01:45 +00:00
christos
5503f7b749
Prototype and gcc -Wall cleanups
1996-05-03 19:41:56 +00:00
christos
8fd0f1f8b3
Add missing prototypes.
1996-05-03 19:26:28 +00:00
christos
029f35aa10
Avoid overruns when copying the interface name.
1996-05-03 17:09:15 +00:00
christos
a9972e1bbb
- RCSid police
...
- gcc -Wall fixes
1996-05-03 17:05:16 +00:00
christos
744868c6a0
gcc -Wall fixes.
1996-05-03 17:03:09 +00:00
christos
ffd5576439
remove include of <sys/cpu.h>
1996-04-22 01:44:31 +00:00
christos
efc7b8aec4
- don't use if_index to get the number of interfaces in SIOCGIFNUM; compute
...
the actual number.
- forgot to copyout the result in SIOGCIFFLAGS.
1996-04-22 01:17:33 +00:00
christos
02f94c17fb
Add SI_SYSTEMINFO from Solaris-2.5
1996-04-22 01:16:04 +00:00
mycroft
7a8c8f8a5c
Turn off the alignment check flag when entering a signal handler.
1996-04-18 08:36:20 +00:00
mycroft
ad790f628e
Turn off the trace flag when delivering a signal.
1996-04-12 08:44:35 +00:00
christos
5fda4b10a2
- small ioctl naming changes.
...
- pass ioctl fd explicitly.
1996-04-11 12:54:40 +00:00
christos
3b309224fd
- Pass ioctl file descriptor explicitly.
...
- some 'T' ioctl's are for streams, call the stream function in the default case
1996-04-11 12:53:48 +00:00
christos
4a0b33e910
Handle different address families, and in particular AF_UNIX.
1996-04-11 12:52:41 +00:00
christos
8edeaa1f71
Add accept message
1996-04-11 12:52:03 +00:00
christos
d37bbda397
- keep the address family in the global state, now that we are using it.
...
- add netaddr_un
1996-04-11 12:50:31 +00:00
christos
0a8a2051dc
- Make unix domain sockets work.
...
- Implement GETSOCKNAME and GETMYNAME
- Implement getmsg(ACCEPT) [incomplete]
- Implement LISTEN [incomplete]
There are too many changes in the code, this is why the incomplete checkpoint.
1996-04-11 12:49:13 +00:00
christos
8294057bdb
Svr4 does not have unix domain sockets; it emulates them with mode 0 named
...
pipes. Emulate that behavior, by telling svr4 we've found mode 0 named pipe
when we find a unix domain socket. Also record the name and device,inode
pair of sockets found.
1996-04-11 12:46:41 +00:00
christos
dcf6c8ee56
New files to provide a device,inode -> pathname mapping for unix domain
...
sockets. This is needed for putmsg(2)
1996-04-11 12:43:29 +00:00
christos
260951021b
Use uprintf instead of printf for debugging. Lot's of printing causes panics
...
on the sparcs, and even if that was not the case, you end up losing text.
1996-04-11 12:41:25 +00:00
mycroft
48643c6605
Export [gs]et_vflags(), and always use them when saving/restoring registers
...
in VM86 mode.
Allow changing of *all* PSL bits in VM86 mode; some applications don't work
right otherwise, and all the nasty bits are virtualized anyway.
Make sure PSL_VIF, PSL_VIP, and PSL_VM don't show up in the user's view of
the PSL.
1996-04-11 07:47:33 +00:00
jonathan
b72f41635e
Remove gcc -Wall lint from ultrix emulation.-
...
Mostly adding explicit != comparison to "if (error = copyin/out( ... ))".
Fix comment glitch in ultrix_fs.c
1996-04-07 17:23:04 +00:00
jonathan
938d7138be
Add vax setregs() support for exec'ing vax ultrix a.out binaries.
1996-04-07 16:38:03 +00:00
christos
151fa70f78
Prototyping changes.
1996-04-05 00:01:10 +00:00
christos
d7130e8385
- Prototyping changes
...
- Fix bug that gcc -Wall found in linux_sys_getpgid()
1996-04-04 23:56:01 +00:00
christos
363777341c
- Add missing prototypes
...
- Fix bugs with reversed arguments that prototyping discovered
1996-04-04 23:51:36 +00:00
mycroft
46c087980e
Add explicit return types.
1996-04-03 08:55:20 +00:00
christos
c5cd2c8f26
Remove dependence on svr4_conf.h and the file itself.
1996-03-30 22:40:55 +00:00
christos
6c2fd36998
Fixed debug printf format args.
1996-03-30 22:37:52 +00:00
christos
ed8966b2ea
svr4_sigfillset should be void
1996-03-16 23:20:30 +00:00
christos
fc8b478bdd
Bring prototypes into scope and fix compiler warnings.
1996-03-14 19:33:44 +00:00
christos
6cbf515e30
Fix compiler warnings
1996-03-14 19:31:45 +00:00
christos
79344ff371
- add svr4_conf.h
...
- add window size ioctls
1996-03-14 19:29:11 +00:00
mycroft
8dbac07c10
Add a message to help us debug Linux compat.
1996-03-08 06:00:53 +00:00
mycroft
6bc0baa1ce
Separate ioctl emulation by group. Add (minimal) audio emulation.
1996-03-08 04:55:59 +00:00
pk
8c485c3690
syscalls.master changed.
1996-02-28 16:06:02 +00:00
pk
636580a34f
Insert sunos_sys_fcntl().
1996-02-28 16:03:54 +00:00
gwr
b1305e88db
dir => dirent
1996-02-28 01:41:25 +00:00
mycroft
5cdb5e8ebe
Map SIOCGIFFLAGS and SIOCGIFADDR (et al).
1996-02-27 08:18:16 +00:00
mycroft
48ec0383a3
Use OSIOCGIFCONF in previous.
1996-02-27 07:25:34 +00:00
mycroft
4b2741c436
Map SIOCGIFCONF.
1996-02-27 05:51:05 +00:00
pk
95d7594df0
If NFS rsize' is specified, set
readdirsize' too.
1996-02-25 13:27:01 +00:00
cgd
c9a23604b9
fourth argument to kern_sysctl() must be a size_t *. simply passing a pointer
...
to SCARG(uap, len) won't do, because that'd be an int *. copy the value
into a size_t, and pass pointer to that.
1996-02-21 00:10:59 +00:00
pk
9bfd34f41e
Adapt to NFSv3.
1996-02-19 15:41:38 +00:00
pk
9e2cbae0ea
Adapt compat NFS mount code to NFSv3.
1996-02-18 14:46:25 +00:00
jtk
e8aa4c9806
fix stray MOUNT_UFS -> MOUNT_FFS
1996-02-17 23:08:36 +00:00
christos
47158e6548
syscalls.master changed
1996-02-10 17:14:07 +00:00
christos
eb13d0121e
- fixed wrong argument order in xmknod
...
- added proper support for {f,}pathconf
1996-02-10 17:12:31 +00:00
christos
b50214e2fa
use %p in printf's instead of casts to (unsigned int)
1996-02-10 00:48:08 +00:00
christos
647dfa216e
Don't declare MSG_COMPAT in two places.
...
More prototype fixes
1996-02-10 00:12:44 +00:00
christos
1b17f25866
fix prototype warnings
1996-02-09 23:12:14 +00:00
christos
a18394e8c3
Extracted vm compat functions from vm and added them here where they belong.
1996-02-05 01:58:28 +00:00
christos
ec3976413e
kern_sysctl was missing process argument. Elimited -Wall warnings from
...
the files that were affected
1996-02-04 02:02:14 +00:00
christos
065bada41f
so_pcb -> so_internal
1996-02-04 02:01:07 +00:00
mycroft
f96fc7f12e
Simplify, and add support for passing CPPFLAGS.
1996-02-02 20:34:38 +00:00
christos
32a57f01bc
Renamed compat_tty.c to tty_43.c and updated with the newest copy from
...
kern/tty_compat.c
1996-02-02 18:47:50 +00:00
mycroft
f19761346e
Do the previous change a little differently.
1996-02-02 08:09:45 +00:00
christos
1c35870a46
syscalls.master was changed
1996-02-02 01:18:09 +00:00
christos
9840c3ca68
Add xmknod()
1996-02-02 01:17:24 +00:00
mycroft
88e512b693
LOCORE -> _LOCORE
1996-02-01 22:28:24 +00:00
jtc
e19bfae4f9
Rename struct timespec fields to conform to POSIX.1b
1996-02-01 00:18:04 +00:00
mycroft
99686e0059
Add a vnode** argument to getvnode(), prototype it, and make it return
...
EBADF if the file descriptor has been revoked.
1996-01-30 20:05:33 +00:00
jonathan
aadc0baf87
Add '/emul/ultrix' pathname processing to Ultrix emulation, and move
...
Ultrix syscalls that require that processing out of ultrix_misc.c
to ultrix_pathname.c.
1996-01-07 13:38:49 +00:00
mycroft
6761817ae6
Correct name of sysi86 function.
1996-01-07 06:09:43 +00:00
thorpej
d9bce7422e
Move the obviously machine-dependent HP-UX compat code to hpux_machdep.{c,h}.
...
A fair bit of this, the m68k core dump and exec goo, can probably be
made into a generic m68k hpux module, eventually.
More to be placed in hpux_machdep.c - keep your eyes peeled...
1996-01-06 12:44:06 +00:00
scottb
382f551ca1
Added support for sysi86 and eaccess syscalls
1996-01-06 03:23:46 +00:00
pk
3a7b2129f3
Implement vhangup(); more or less as suggested in PR#1560 (matthew green).
...
I'm vrele'ing s_ttyvp here too, so sys_exit() won't have to go over it
again.
1996-01-05 16:53:14 +00:00
jtc
2fce159ff8
Changed name of sigaltstack's ss_base field to ss_sp to match XPG4.2 and
...
traditional usage.
1996-01-04 22:21:33 +00:00
jonathan
36817f8d02
Rewrite (a copy of) the emul-sunos termio/termios emulation code to
...
emulate Ultrix termio/termios instead. Ultrix termio c_cc has separate
VMIM/VTIME attributes, and the Ultrix termios c_cc is a strict
superset of Ultrix termio c_cc. The termios-only c_cc indices are
all changed, relative to SunOS.
1996-01-04 19:03:32 +00:00
jonathan
ac604db4dd
Add sigcode and esigcode to emul_ultrix, so that signal trampoline
...
code is set up for emul_ultrix processes.
1996-01-03 21:07:33 +00:00
jonathan
c02f0114ff
Ultrix-compatible termios struct and ioctl() definitions.
1995-12-27 19:57:25 +00:00
mycroft
3872a4ba45
Take a stab at implementing TCXONC and TCFLSH.
1995-12-26 17:56:36 +00:00
jonathan
a44b6c74de
Add emulation of ultrix mount(2). Sufficient to NFS-mount filesystems
...
using a NetBSD kernel in an ultrix root filesystem.
Move wait emulation to the old (v7) wait syscall number, as that's
what the Ultrix ufs_mount binary uses.
1995-12-26 10:06:14 +00:00
jonathan
e9411cae99
Fix ultrix_sys_select() entry.
1995-12-26 04:46:08 +00:00
jonathan
6a363a1101
Add emulation of Ultrix select: before calling native sys_select(),
...
limit the number of FDs to select on to the maximum supported by NetBSD --
which is as many FDs as the emul_ultrix process can have open, anyway.
Add emulation of Ultrix getmnt(2) in ultrix_fs.c
Add partial emulation of Ultrix tty ioctl()s in ultrix_ioctl.c, derived
from compat/sunos/sunos_ioctl.c. Ultrix libc's ``isatty()'' now works
in compat_emul processes.
1995-12-26 04:44:37 +00:00
jonathan
0a1e90f900
Add emulation of Ultrix select: before calling native sys_select(),
...
limit the number of FDs to select on to the maximum supported by NetBSD --
which is as many FDs as the emul_ultrix process can have open, anyway.
Add emulation of Ultrix getmnt(2) in ultrix_fs.c
Add partial emulation of Ultrix tty ioctl()s in ultrix_ioctl.c, derived
from compat/sunos/sunos_ioctl.c. Ultrix libc's ``isatty()'' now works
in compat_emul processes.
1995-12-26 04:22:30 +00:00
christos
ac82785d44
fix compile error from fvdl; thanks.
1995-12-19 18:27:02 +00:00
christos
34af3b306f
syscalls.master was changed
1995-12-19 07:14:25 +00:00
christos
20a2ff3d16
Added utime and utimes
1995-12-19 07:12:53 +00:00
fvdl
4ed045ab27
syscalls.master changed
1995-12-18 14:35:43 +00:00
fvdl
2df1785997
msync, readv and writev were recently added to the Linux kernel; add them
...
to the emulation as well.
1995-12-18 14:35:08 +00:00
ghudson
76063d53bb
Reverse pk's changes from 1.57; the faked cookies are not valid,
...
and are no longer necessary now that NFS provides cookies.
1995-12-14 18:44:44 +00:00
thorpej
3bf97cdb69
Fix a type-size glitch caught by gcc 2.7.2.
1995-12-11 16:32:46 +00:00
mycroft
018fa71167
Eliminate bogus casts.
1995-12-09 04:05:52 +00:00
mycroft
812fdf80d2
Reran makesyscalls.sh.
1995-12-09 04:04:45 +00:00
mycroft
9df1f90849
We don't need a private version of fork() here any more.
1995-12-09 04:01:42 +00:00
thorpej
d7cef923ac
Centralize the HP-UX file flags translation stuff.
1995-12-08 07:54:43 +00:00
thorpej
b0ca4831ea
Check in two changes I apparently overlooked the last time. "oops"
1995-12-08 07:45:31 +00:00
jtc
0cd793449e
merge in changes from 1.1 release branch
1995-11-30 00:56:23 +00:00
thorpej
0d02785d6c
Re-ran makesyscalls.sh; syscalls.conf and syscalls.master chagned.
1995-11-28 08:43:58 +00:00
thorpej
0ec193c9b2
Get COMPAT_HPUX partially working on the hp300. Notable improvements:
...
* It compiles (and links).
* Make use of "/emul/hpux" where applicable.
* Untangle a bit, pulling some funtions from the monolithic
hpux_compat.c into hpux_file.c, hpux_exec.c, etc.
* Fix a couple of bugs.
Yet to do:
* Move hp300-specific functions into hp300/hp300/hpux_machdep.c.
* Make everything work properly (you laugh...)
These changes are sufficient to run some simple HP-UX 9.x executables,
including ls(1) (which will read password and group information from the
YP server correctly, albeit slowly), a simple "hello world", uname(1),
and a few other odds and ends. Dynamically linked executables work, and
demand-paging _seems_ to work properly. Major problems:
* socket and/or signal handling appears to need some work yet.
* 99% sure I didn't do exactly the right thing adjusting for the
fact that "kstack" is gone now.
* ktrace(1)'ing some executables (HP-UX telnet(1) is what I tried)
causes the HP-UX executable to dump core with a SIGSEGV for an
as of yet unknown reason.
This is mostly meant as a checkpoint/snapshot, to make it easier for others
to track progress on this code, and hack on it themselves. It's certainly
better off now than before.
1995-11-28 08:39:45 +00:00
thorpej
b2f1fb085b
Fix transposed copyin() args, from Niklas Hallqvist <niklas@appli.se>.
1995-11-16 18:42:05 +00:00
cgd
bd4a0a45ea
note that COMPAT_OSF1 requires ECOFF, in a comment.
1995-11-15 05:42:17 +00:00
gwr
883be4be3a
ufs ==> ffs
1995-11-07 22:27:21 +00:00
mycroft
d67fb08153
Make sure we free the pathname buffer in all error cases.
1995-10-22 08:20:44 +00:00
cgd
d71e8d0d69
set, don't add to, CFLAGS from COMPATCFLAGS
1995-10-20 00:34:15 +00:00
mycroft
686dddaff9
Reran makesyscalls.sh.
1995-10-15 06:13:56 +00:00
christos
81ae32e332
syscalls.master was changed.
1995-10-14 20:26:39 +00:00
christos
a4e2f7532a
- Added msgsys, shmsys and semsys... MITSHM needs shmsys, so X applications
...
that used that would fail.
- Propagated all the fixes from the fully prototyped kernel.
1995-10-14 20:24:14 +00:00
pk
b60d6eae12
Gets NFS-mounted /emul/sunos going again by faking readdir cookies if
...
not supported by VOP_READDIR().
1995-10-11 12:50:23 +00:00
mycroft
28484180c7
Fix minor oversight.
1995-10-10 18:27:25 +00:00
mycroft
5d9ff18d18
Switch to user code and data selectors in the GDT while handling signals.
1995-10-10 04:54:18 +00:00
mycroft
25f53a986f
Add USERMODE() and KERNELMODE() macros, and use them.
1995-10-10 04:45:03 +00:00
mycroft
d279b4198a
Convert VMIN and VTIME.
1995-10-10 02:35:16 +00:00
mycroft
e6d9bc8787
Fix typo.
1995-10-10 01:34:37 +00:00
mycroft
a91100d6af
Oops; remove something.
1995-10-10 01:20:55 +00:00
mycroft
e1ac4c6362
Output of makesyscalls.sh.
1995-10-10 01:20:11 +00:00
mycroft
63bb46e733
FreeBSD binary compatibility module, from Noriyuki Soda.
1995-10-10 01:19:24 +00:00
thorpej
d0c7d0fdd6
Add missing F_SETLKW case to svr4_sys_fcntl(), from Niklas Hallqvist
...
<niklas@appli.se>.
1995-10-09 23:56:17 +00:00
mycroft
0fff06cb86
Remove struct sunos_dirent from here.
1995-10-09 16:54:48 +00:00