kleink
1e57dbd85e
Minor style nit.
2000-03-02 18:29:01 +00:00
itojun
4b9363d8e4
add freeifaddrs(), which reclaims region allocated by getifaddrs().
...
in sync with kame and bsdi.
2000-02-23 15:29:18 +00:00
itojun
6037c7862b
add getifaddrs(3) from bsdi4, as mentioned in tech-net (in SIOCGIFCONF
...
related thread).
this will save future apps from complexity of SIOCGIFCONF.
getifaddrs(3) does not use SIOCGIFCONF internally, it uses sysctl.
2000-02-23 06:57:46 +00:00
thorpej
e8050aefef
Const'ify dli_saddr in struct _dl_info.
2000-02-11 00:07:14 +00:00
kristerw
33c172d1c1
Const poisoning of dladdr (so that things build after the dlfcn.h change)
2000-02-09 22:41:53 +00:00
itojun
34a6354b59
revise extended scoped address format support. delimiter and the order
...
is changed, based on discussion in ipngwg scoped address cabal.
past code: fe80::1@de0
now: de0%fe80::1
this will be in sync with next extended address format proposal
(which should be final - I don't want to make this kind of change again).
2000-02-09 12:25:06 +00:00
scottb
076e309d3e
change first argument of dladdr to const.
2000-02-08 16:22:59 +00:00
mjl
b3204d536b
Add login_getpwclass to libutil as convenience function for
...
programs originally for FreeBSD.
Add parsing of "setenv" parameter which can be used to set
up an initial environment on login.
2000-02-04 02:17:14 +00:00
itojun
5b1aaa939e
add IPv6 support to rcmd() and friends.
...
rcmd() and iruserok(): unchanged
ruserok(): became address family independent
rcmd_af(), iruesrok_sa(): address family independent
2000-01-27 05:33:06 +00:00
itojun
5a38b81b42
implement bindresvport_sa(), which is necessary for IPv6 support in certain
...
programs (like rshd or rlogind).
bindresvport() and bindresvport_sa() exhibits exactly the same functionality,
with different function prototype (sockaddr_in * and sockaddr *).
The behavior and prototype was discussed and agreed among shin@kame.net
(who is doing freebsd-current kame merge), deraadt@openbsd.org , and
Jean-Luc.Richier@imag.fr (INRIA IPv6/IPv6 RPC support). so it will be
portable across *bsd.
2000-01-26 13:20:24 +00:00
mycroft
482d37a470
Do the pthread errno hack. That is, *always* do:
...
#define errno (*__errno())
This is necessary to make non-threaded libraries (e.g. libX11) continue to
work correctly when linked with -lpthread. glibc also does this.
2000-01-21 17:11:20 +00:00
mjl
142f369443
Add necessary support routines for login.conf.
2000-01-12 05:02:10 +00:00
kleink
1bba558e50
Move <null.h> to <sys/null.h> for the purpose of avoiding conflicts due to
...
std C headers including it, and a kernel module written in C++ would benfit
as well.
2000-01-10 16:58:38 +00:00
kleink
12aed170cd
Move <null.h> to <sys/null.h> for the purpose of avoiding conflicts due to
...
td C headers including it, and a kernel module written in C++ would benfit
as well.
2000-01-10 16:58:37 +00:00
kleink
6f29805ef3
Move <null.h> to <sys/null.h> for the purpose of avoiding conflicts due to
...
std C headers including it, and a kernel module written in C++ would benfit
as well.
2000-01-10 16:58:36 +00:00
mjl
0654fab2c2
Correct typo in comment.
2000-01-05 14:40:14 +00:00
kleink
693059feda
const -> __const and include <sys/cdefs.h> earlier; fixes PR lib/9052
...
by Takahiro Kambe.
2000-01-04 14:20:05 +00:00
kleink
11e6c54cfc
C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
...
a single-precision quiet NaN; only to be defined on platforms that do support
this value.
1999-12-23 10:15:05 +00:00
kleink
c95251a41e
NULL vs. NUL nit in comment.
1999-12-22 21:59:49 +00:00
kleink
c07f17e8d9
For the benefit of G++'s null pointer constant implementation, #define NULL
...
as __null with egcs 1.0 (GCC 2.90) and above. As several headers are affected
by this change, move the definition into a new header file, <null.h>, to ease
maintenance.
1999-12-22 21:26:15 +00:00
itojun
50b9510128
hide functions that are not supplied.
1999-12-20 06:48:11 +00:00
itojun
9e39347354
add #define for kame's extension to scoped IPv6 numeric address.
...
(see draft-ietf-ipngwg-scopedaddr-format-00.txt)
1999-12-12 10:49:37 +00:00
kleink
087b539e0f
Change the declaration of the argv argument to getopt(3) from "char * const *"
...
(as originally declared in System V) to "char * const []", as was done in
1003.2 and subsequently propagated into XPG4.
From Andrew Cagney in PR lib/8930.
1999-12-02 13:15:55 +00:00
thorpej
0bbf216692
Implement XDR routines for 64-bit integer data types:
...
- xdr_int64_t(), xdr_u_int64_t(), per NetBSD convention.
- xdr_hyper(), xdr_u_hyper(), xdr_longlong_t(), xdr_u_longlong_t(), a'la
Solaris, implemented in terms of the above.
1999-12-01 18:34:21 +00:00
lukem
338f7d21c4
change retval of _nsdbtaddsrc and _nsdbtput
1999-11-28 05:51:46 +00:00
lukem
6ff813a549
change sl_add() from returning a void to returning an int
1999-11-28 03:45:14 +00:00
wennmach
127b19f246
Added prototypes for svis, strsvis, strsvisx
1999-11-25 16:55:50 +00:00
kleink
c13a492388
1003.1c: add {LOGIN_NAME_MAX}.
1999-09-27 16:24:39 +00:00
scw
c6a74378ae
Modify the P_{16,32}_SWAP() macros to avoid unaligned 16 and 32 bit
...
memory accesses. This fixes a problem seen on the Shark when trying
to use the db(3) functions to access a BIG_ENDIAN btree.
For some reason, the db(3) regression tests fail to spot this problem
on the Shark...
1999-09-26 10:22:01 +00:00
explorer
a54e7e8c68
Merge a few constants from a different telnet.h file.
1999-09-24 07:53:21 +00:00
lukem
6504726483
if _DIAGNOSTIC is defined, define _DIAGASSERT() to call __diagassert(),
...
otherwise it's a no-op.
prototype __diagassert().
1999-09-15 23:53:26 +00:00
kleink
7d2e8d6525
Add an XSH5 ulimit()/<ulimit.h> implementation.
1999-09-13 18:38:04 +00:00
kleink
734b2b9b5e
Add an XSH5 fmtmsg() implementation.
1999-09-12 19:04:30 +00:00
kleink
caba80aea6
strlcat() and strlcpy() aren't ISO/IEC 9899:1990.
1999-09-09 09:30:40 +00:00
lukem
f7966ba040
prototypes for strlcat() and strlcpy()
1999-09-08 22:09:36 +00:00
kleink
aa6fca1b7e
Bump NL_TEXTMAX to 2048 (== _POSIX2_LINE_MAX, which is the minimum value
...
required by XSH5.)
1999-09-06 22:20:50 +00:00
kleink
26d78db13f
Pull in <nl_types.h>, as suggested by XSH5.
1999-09-05 09:17:14 +00:00
kleink
2977ab90fe
Add missing isinff() declaration.
1999-08-16 18:57:57 +00:00
mrg
ba255f8a34
optionally include CRYPTOPATH Makefile.frag files.
1999-07-20 09:47:07 +00:00
thorpej
a3281f7249
Use bsd.crypto.mk.
1999-07-12 22:04:09 +00:00
kleink
e79a283e47
XSH5: change function signature to `void *sbrk(intptr_t)'.
1999-07-12 21:55:19 +00:00
kleink
363db7b0fa
Restrict function delcarations using XNS5.2 D2.0 as a reference.
1999-07-03 13:30:38 +00:00
kleink
48ce8436f2
* Since we actually only need size_t to be defined, nuke the previous inclusion
...
of <sys/types.h> and define size_t via <machine/ansi.h>.
* Various namespace protection issues, using XNS5.2 D2.0 as a reference.
1999-07-03 13:25:21 +00:00
kleink
2ae70ac652
Move IPv6-related declarations into the implementation-defined domain.
1999-07-03 13:22:06 +00:00
itojun
10f59f2d42
define IPv6 library functions and structures, as defined in
...
RFC2292 and RFC2553.
define internal state structure for IPv6-transport resolver.
Commits for source code will follow.
1999-07-01 18:15:41 +00:00
christos
e063452044
- provide forward struct declarations for all functions.
...
- const poison login().
- XXX: we should not include all these files here. We only need stdio.h and
sys/types.h! But I am not rm'ing them now because too many things will break.
1999-06-12 18:06:19 +00:00
thorpej
fb695fdcb9
Add pidfile(3), which write a pid file in /var/run, and arranges for it
...
to be removed on normal exit.
1999-06-06 01:50:00 +00:00
kleink
196becef81
Declare dlerror()'s return value __aconst.
1999-05-19 14:50:49 +00:00
kleink
d7499b21b3
#ifdef __STDC__ -> #if __STDC__
1999-04-20 20:15:47 +00:00
lukem
6b9774ba41
use _BSD_VA_LIST_ from <machine/ansi.h> instead of using va_list from
...
<[stdarg,varargs}.h>. as recommended by Klaus Klein.
1999-04-18 01:53:15 +00:00
sommerfe
bb8c6c869a
move __getcwd prototypes to libc-private header file.
...
XXX duplicate the prototype in getcwd regression test (which needs to
call the syscall directly for reasonably complete testing).
1999-03-26 22:23:57 +00:00
mrg
5ca1d6a20d
add audio paths.
1999-03-26 07:27:04 +00:00
sommerfe
80729aa7de
Add fchroot, getcwd
1999-03-22 17:59:08 +00:00
thorpej
e278587d62
Move the link.h files for the different shlib formats via repository copy,
...
and rename them to match the executable format. Introduce a new link.h
file which automatically picks the correct header based on the target of
the toolchain.
1999-03-19 22:06:36 +00:00
kleink
e2a4add9f7
brk(2) actually returns an int indicating success (0) or failure (-1). Also,
...
change its argument to void *. (Both XSH5).
1999-03-09 20:33:22 +00:00
kleink
13bbe6c70e
G/C orphaned unwhiteout() prototype.
1999-03-09 12:46:22 +00:00
christos
26475619ed
KNF
1999-03-01 16:40:07 +00:00
mrg
bdadd56346
add a new fstab type "dp" for the user-specified dump device.
...
change swapctl -A to see this and add it via swapctl(2). also
add a new swapctl -D <device> to change the dump device on the
fly.
1999-02-23 17:00:53 +00:00
christos
f4287ac1d3
Add internal structure used by the t* routines, protected via an ifdef
1999-02-22 10:34:28 +00:00
kleink
276331d152
Per XSI5, make ENTRY.data a typeless pointer.
1999-02-16 18:23:00 +00:00
kleink
983e1024bf
Per XSI5, let hcreate() take a size_t argument.
1999-02-16 18:12:24 +00:00
lukem
dcab0210a0
convert from NOxxx= to MKxxx=no.
...
include <bsd.own.mk> if testing a MKxxx variable.
1999-02-13 02:54:17 +00:00
kleink
e2b924d2ae
Add l64a_r(), a reentrant version of l64a(); found in the Multithreading
...
Extension of SVID4.
1999-02-06 15:04:05 +00:00
christos
d8bf9a851d
Fully prototype the test service and put it between begin and end decls.
1999-01-31 19:45:25 +00:00
christos
a776f4ee44
This file has still missing prototypes: cabs and cabsf... At least comment
...
what the arguments should be.
1999-01-31 19:32:26 +00:00
lukem
8dacb36581
always add compat functions in NS_COMPAT_CB; make it the responsibility of
...
the methods to check that yp/hesiod is supported.
1999-01-26 01:04:07 +00:00
lukem
04f41ad36e
merge in stuff from hesiod3.0.2 distribution
1999-01-24 23:53:18 +00:00
lukem
ecaf658368
* support extra two arguments to nsdispatch():
...
const char *method /* method name for dynamic linking */
const ns_src defaults[] /* list of defaults */
* bring ns_src into the public arena for above
* make NS_xxx_CB() expand to nothing instead of { src, NULL } - makes
the tables smaller
* convert 'typedef struct xyz { ... } xyz' -> 'typedef struct { ... } xyz'
(which is how it used to be before i experimented with (and ditched) TAILQs)
1999-01-19 07:55:14 +00:00
abs
593d6c65b9
Add '-f disktab' option to disklabel, via lib/6623 from
...
Greg A. Woods <woods@most.weird.com>. (Very) slightly tweaked disklabel.8
1999-01-19 06:24:08 +00:00
lukem
b02776f64f
actually set the cb_data field to the (,C) arg in NS_*_CB()
1999-01-18 01:01:27 +00:00
lukem
1c8bb28d64
revert part of previous; leave char lookups[4] in __res_state.
...
otherwise, complex versioning stuff will have to be performed so
that old binaries with a new libc.so don't barf
1999-01-17 05:08:10 +00:00
lukem
612f048678
remove MAXDNSLUS and lookups[]; unnecessary with nsswitch
1999-01-16 07:52:22 +00:00
lukem
a54769033a
remove NSSRC_NISPLUS for now, NSDB_NETWORKS is now implemented
1999-01-16 02:58:28 +00:00
tsarna
531aeb7c25
Add a "class" entry to ttyent. Closes PR#4638.
1999-01-15 18:47:48 +00:00
lukem
f649503d99
merge nsswitch into main branch
1999-01-15 12:21:16 +00:00
castor
4720afb463
Avoid introducing new prefix '__JB' -- '_JB' is fine.
1999-01-15 03:43:56 +00:00
castor
b60cd4e18b
Remove bogus RCS Id.
1999-01-14 09:05:46 +00:00
castor
25c863649d
Allow MD setjmp.h to specify attributes for jmp_buf, so more
...
stringent alignment requirements can be satisfied.
1999-01-14 09:03:37 +00:00
kleink
22fc60a59a
Separate the userland and libsa errno declarations from <sys/errno.h> into
...
their canonical places.
1999-01-12 03:08:14 +00:00
lukem
2f6cd3326a
remove _ng_sl_*() prototypes; the functions have been dead for nearly 2 years
1999-01-10 02:53:34 +00:00
pk
3b50534fd9
Add the N_SET* symbol types.
1998-12-17 23:15:21 +00:00
pk
f6f34d9c9f
Pull in <a.out.h>.
1998-12-15 21:28:28 +00:00
drochner
98394c66d1
Uhm - we can't expose __LIBC12_SOURCE__ to the public - it causes side
...
effects in the function renaming mess.
1998-12-09 20:58:55 +00:00
christos
03b9210133
Add /*LINTED*/ comments to sigfillset() and sigemptyset(). (void)sig*set(s);
...
produced warnings.
1998-12-09 12:50:47 +00:00
christos
22c22ae31b
delint.
1998-12-09 12:42:27 +00:00
drochner
7cd4c14e82
regoff_t is used like size_t within the code, it should be defined
...
so instead of off_t. This makes some casts unnecessary.
We can't change the definition now due to binary compatibility, so
prepare for the next libc major version.
1998-12-08 14:00:24 +00:00
thorpej
82865be7fd
Change the type of sys_siglist and sys_signame from const char *const [] to
...
const char *const *, and rename them to __sys_siglist14 and __sys_signame14.
This will prevent the size of the exported symbol from changing when more
signals are added to the list.
1998-11-30 20:36:27 +00:00
kleink
048353ddfd
* Bring *_unlocked() declarations in scope if _REENTRANT is defined, too; add
...
similar protection for the definitions of the macro versions.
* Don't define a macro version of fileno() in a _REENTRANT environment.
1998-11-20 14:39:38 +00:00
christos
714fa78bc3
delint
1998-11-16 12:07:43 +00:00
christos
e6bf91675e
s/void/const void/
1998-11-15 16:51:45 +00:00
christos
186efef26d
cast to void * first to avoid lint warning.
1998-11-15 15:57:25 +00:00
christos
e5571040ba
Define assert and _assert macros for lint when NDEBUG is present as nothing.
1998-11-14 16:30:07 +00:00
christos
36b0b72f6f
const poisoning
1998-11-13 15:45:10 +00:00
christos
a2d26395a8
change the second arg of unvis from char -> int, to avoid K&R vs. ansi
...
portability problems.
1998-11-13 12:20:18 +00:00
kleink
46269c5996
getpgid() is XPG4.2, actually.
1998-11-09 12:45:11 +00:00
christos
d5838591db
complete prototype for fts_compar.
1998-11-06 19:44:52 +00:00
mrg
32e9822211
add a prototype for getpgid (missing for years!)
1998-11-06 05:58:09 +00:00
jonathan
fd7cb41920
gdb's shared-lib mapping code in solib.c has #ifdef dependencies on
...
DT_MIPS_RLD_MAP being defined on mips targets with shared libs. Since
netbsd's gdb config.h defines HAVE_LINK_H, link.h is expected to
provide it. So #include <machine/elf_machdep.h> to make it so.
1998-10-30 05:43:40 +00:00
kleink
b3ce018f65
Rely on <sys/featuretest.h> defining _REENTRANT if appropriate.
1998-10-24 16:35:19 +00:00
matt
aca741cc61
Add a defined(__vax__); plain vax is not good enough anymore.
1998-10-19 02:58:31 +00:00
matt
f94bc8f4df
Add AUX_LABEL (need for VAX JSB/JMP "jmp" slots).
1998-10-19 00:30:57 +00:00
kleink
e4ecd59b9a
In the inlined sigset_t operations, redirect the error indicator assignment via
...
*__errno() when compiling _REENTRANT (or the like) code.
1998-10-01 19:41:23 +00:00
kleink
cc46a13dac
Move 1003.1c-1995 declarations inside the appropriate name space protection
...
wrapper, and make sure we won't use these decl's as such with C++ linkage(!).
Also, make _XOPEN_SOURCE protection of popen()/pclose() decl's a bit more
restrictive.
1998-09-28 17:47:58 +00:00
thorpej
2cb59aaa0b
Declare the size of sys_siglist[] and sys_signame[] to be SIGUSR2+1
...
instead of _NSIG for now; we need to change these to char **'s, and do
a symbol renaming trick on them, eventually (a'la what Todd did with
libbfd's target match array).
1998-09-21 19:14:43 +00:00
kleink
866c9e7b5d
Remove the public declaration of gtime(), which is shipped with tzcode but is
...
not compiled into our libc since it is intended for use with Mach only.
1998-09-15 12:24:28 +00:00
tv
5426fd2771
__RENAME() the libcompat regexp routines so they will not be used by
...
programs that want -lcompat but use POSIX regex. Inspired by
<david@mono.org> in PR bin/1849.
1998-09-14 20:25:02 +00:00
thorpej
ea77978921
Fix typo in previous, and also don't version _setjmp/_longjmp; after
...
more careful analysis, I realized that they don't access the extended
jmp_buf data area, and thus would not have changed.
1998-09-14 07:27:08 +00:00
thorpej
f09a4dc257
Version setjmp(), longjmp(), _setjmp(), _longjmp(), sigsetjmp(), and
...
siglongjmp(). The size of struct sigcontext, and thus the size
of jmp_buf and sigjmp_buf on some platforms, has changed.
1998-09-14 07:10:53 +00:00
thorpej
7dcac1e40c
__LIBCxx_SOURCE__ refers to the library major number, not the NetBSD release
...
number.
1998-09-13 04:11:51 +00:00
mycroft
57387ec1ae
Minor KNFing.
1998-09-12 11:10:43 +00:00
mycroft
43a24c4412
Do the syscall versioning.
1998-09-12 10:53:26 +00:00
kleink
9db5e6b9bf
Declare asctime_r(), ctime_r(), gmtime_r() and localtime_r(), and rearrange
...
name space protection a bit.
1998-09-10 18:37:28 +00:00
kleink
02a4a2105b
Oops, isinf() was never included in any X/Open interface specification.
1998-09-07 15:00:05 +00:00
pk
7ff8549e41
Assign my copyright to the TNF.
1998-09-05 13:11:07 +00:00
pk
0a97faa040
Assign my copyrights to TNF.
1998-09-05 13:08:38 +00:00
tv
9f9b9c1b0a
Use __format__, __printf__ for consistency
1998-08-28 22:55:50 +00:00
perry
253ef37df2
add asprintf and vasprintf, originally written by Todd Miller for OpenBSD
1998-08-28 21:33:10 +00:00
kleink
5cc8c171be
Per XSH5, define _XOPEN_IOV_MAX.
1998-08-03 14:32:04 +00:00
kleink
ac1aec6cb8
Merge in recent changes from the private version of this header distributed
...
with tzcode.
1998-07-30 14:11:22 +00:00
mycroft
f886615650
__Namespace__ __protection__.
1998-07-30 00:44:15 +00:00
mycroft
f9927bf246
Add gid_from_group() and uid_from_user().
1998-07-28 16:27:48 +00:00
mycroft
a6b6f620db
Sprinkle in some __attribute__((noreturn))s.
1998-07-28 00:28:29 +00:00
mycroft
cbb3325e89
Actually, FreeBSD calls this mkdtemp(). No point in creating a new name.
1998-07-27 16:12:01 +00:00
mycroft
7daf213c0f
Add a mktempdir(), like mkstemp(), but it creates a directory.
1998-07-27 16:05:07 +00:00
mycroft
ef9e0500ba
Nuke tmpnam() as well.
1998-07-27 13:35:00 +00:00
mycroft
40129f82de
YP status codes are all unsigned.
1998-07-27 12:21:10 +00:00
mycroft
29916a94a6
Slight rearrangement.
1998-07-27 11:09:19 +00:00
mycroft
b8f6f58d3b
Need cdefs.h.
1998-07-27 11:08:38 +00:00
mycroft
ab22ce8def
If __AUDIT__ is defined, remove some traditional interfaces: gets, sprintf,
...
vsprintf, tempnam, mktemp, getwd.
1998-07-27 09:58:49 +00:00
mycroft
4f4968a946
Mark more functions returning internal buffers for const auditing.
1998-07-27 09:33:44 +00:00
mycroft
633b8f45a9
Make many of the new consts dependent on a new `__AUDIT__' flag, to avoid
...
breaking third party software. *sigh*
1998-07-27 09:09:03 +00:00
mycroft
b223acf69a
const poisoning.
1998-07-26 23:03:30 +00:00
mycroft
55ac0c2da3
const poisoning.
1998-07-26 21:58:46 +00:00
mycroft
74d731feba
KNF nit.
1998-07-26 19:20:55 +00:00
mycroft
a2b177683b
const poisoning.
1998-07-26 18:29:09 +00:00
mycroft
0c4d98ae35
const poisoning.
1998-07-26 17:53:10 +00:00
mycroft
982e920022
const poisoning.
1998-07-26 14:13:00 +00:00
mycroft
4024f73640
const poisoning.
1998-07-26 13:34:18 +00:00
mycroft
bb96d7f5ba
const poisoning.
1998-07-26 12:58:15 +00:00
mycroft
79788fe0d2
const poisoning.
1998-07-26 12:47:38 +00:00
mycroft
51f121a8b0
Oops; that wasn't quite right.
1998-07-26 12:43:24 +00:00
mycroft
25138f4af3
const poisoning.
1998-07-26 12:39:40 +00:00
mycroft
dae9fd960e
const poisoning.
1998-07-26 12:35:24 +00:00
mycroft
be9c427d60
const poisoning.
1998-07-26 12:29:33 +00:00
mycroft
0c38099309
const poisoning.
1998-07-26 11:45:21 +00:00
mycroft
9c286352d4
const poisoning.
1998-07-26 11:37:23 +00:00
tv
77a275d732
Change ld.so default behavior to RTLD_LOCAL, and make RTLD_LOCAL into a
...
new flag bit. Keep RTLD_GLOBAL as an actual flag bit so it won't be
re-used, or may be used for something later. Mask the dlopen() mode bits
in ld.elf_so so a comparison against RTLD_NOW works. (RTLD_{LOCAL,GLOBAL}
needs to be implemented for ld.elf_so.)
1998-07-14 22:18:36 +00:00
kleink
2fc150acf9
For the sake of XPG3 and later, provide TMP_MAX; consistent with the defintion
...
in <stdio.h>. Also, rearrange name space protection a bit.
1998-07-08 19:51:25 +00:00
kleink
901ea16862
Addendum to previous change: since pread()'s and pwrite()'s first official
...
appearance was in X/Open CAE Spec Issue 5 Version 2, add a section for that
and move the prototypes there.
1998-07-02 21:20:54 +00:00
thorpej
c0f28f93e4
Prototype pread(2) and pwrite(2) if !defined(_POSIX_C_SOURCE).
1998-06-30 19:46:41 +00:00