..
__cmsg_nxthdr.cpp
Move __cmsg_nxthdr to its proper file.
2014-07-10 12:47:13 +01:00
__cxa_guard.cpp
Use FUTEX_WAIT_BITSET to avoid converting timeouts.
2015-11-19 13:42:03 -08:00
__cxa_pure_virtual.cpp
Move libstdc++ into libc.
2014-05-14 18:18:55 -07:00
__cxa_thread_atexit_impl.cpp
Defend against -fstack-protector in libc startup.
2016-01-06 20:06:08 -08:00
__errno.cpp
Fix x86_64 build, clean up intermediate libraries.
2013-10-09 16:00:17 -07:00
__gnu_basename.cpp
Implement the GNU basename(3) in addition to the POSIX one.
2014-08-19 14:30:30 -07:00
__libc_current_sigrtmax.cpp
Make SIGRTMIN hide the real-time signals we use internally.
2014-04-30 10:06:09 -07:00
__libc_current_sigrtmin.cpp
Make SIGRTMIN hide the real-time signals we use internally.
2014-04-30 10:06:09 -07:00
__libc_init_main_thread.cpp
libc: implement kernel vdso syscalls for i386
2016-03-25 14:10:05 -07:00
__memcpy_chk.cpp
Improve FORTIFY failure diagnostics.
2016-02-26 22:06:17 -08:00
__set_errno.cpp
Move __set_errno to ndk_cruft.cpp.
2015-10-29 18:11:32 -07:00
__stack_chk_fail.cpp
Fix x86_64 build, clean up intermediate libraries.
2013-10-09 16:00:17 -07:00
__strcat_chk.cpp
Improve FORTIFY failure diagnostics.
2016-02-26 22:06:17 -08:00
__strcpy_chk.cpp
Improve FORTIFY failure diagnostics.
2016-02-26 22:06:17 -08:00
abort.cpp
Upstream atexit
2014-07-14 12:05:16 -07:00
accept.cpp
Mark sockets on creation (socket()) and accept4().
2014-05-19 15:19:16 -07:00
accept4.cpp
Mark sockets on creation (socket()) and accept4().
2014-05-19 15:19:16 -07:00
access.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
arpa_inet.cpp
Fix inet_aton on LP32.
2015-10-09 17:36:05 -07:00
assert.cpp
Rewrite and hide longjmperror.
2014-06-06 16:49:39 -07:00
atof.cpp
Ensure we always have symbols for atof, strtof, strtold.
2014-03-12 16:12:57 -07:00
bionic_netlink.cpp
Implement if_nameindex(3)/if_freenameindex(3).
2016-01-18 12:07:38 -08:00
bionic_netlink.h
Implement if_nameindex(3)/if_freenameindex(3).
2016-01-18 12:07:38 -08:00
bionic_systrace.cpp
Do not set properties in bionic_systrace
2015-12-10 13:33:37 -08:00
bionic_time_conversions.cpp
Make it harder to use a broken legacy function by accident.
2016-04-04 16:15:37 -07:00
brk.cpp
Fix overflow testing in sbrk.
2014-05-29 10:51:22 -07:00
c16rtomb.cpp
Adds functionality specified by uchar.h
2014-06-04 08:39:24 -07:00
c32rtomb.cpp
Adds functionality specified by uchar.h
2014-06-04 08:39:24 -07:00
chmod.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
chown.cpp
Remove bogus transitive includes.
2014-12-29 13:29:50 -08:00
clearenv.cpp
Switch to the upstream OpenBSD getenv/putenv/setenv implementation.
2014-04-22 17:41:00 -07:00
clock.cpp
Move <sys/sysconf.h> to <bits/sysconf.h>.
2016-04-07 18:02:00 -07:00
clock_getcpuclockid.cpp
Minor clock_getcpuclockid optimization.
2016-03-07 11:54:02 -08:00
clock_nanosleep.cpp
clock_nanosleep: add CLOCK_THREAD_CPUTIME_ID special case
2016-03-28 10:29:16 -07:00
clone.cpp
Generalize the clone function slightly.
2016-05-06 16:37:00 -07:00
close.cpp
Simplify close(2) EINTR handling.
2015-04-23 08:41:45 -07:00
connect.cpp
Cosmetic changes to netd client files.
2014-05-18 15:18:36 -07:00
ctype.cpp
Remove isascii_l(3).
2014-07-14 15:48:02 -07:00
dirent.cpp
Reorder DIR structure due to bad apps.
2015-06-04 14:04:16 -07:00
dl_iterate_phdr_static.cpp
Fix signal trampolines.
2014-09-15 15:04:14 -07:00
dup2.cpp
Fix dup2 in the case where the two fds are equal.
2015-02-23 21:52:56 -08:00
epoll_create.cpp
epoll_create: reject size <= 0
2016-03-24 16:37:20 -07:00
epoll_pwait.cpp
Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.
2013-10-24 15:48:32 -07:00
epoll_wait.cpp
Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.
2013-10-24 15:48:32 -07:00
error.cpp
Clean up <stdlib.h> slightly.
2015-01-26 14:28:41 -08:00
ether_aton.c
ether_ntoa.c
eventfd_read.cpp
eventfd_write.cpp
faccessat.cpp
Fix "faccessat ignores flags"
2015-02-24 13:40:43 -08:00
fchmod.cpp
Ensure raw fchmod/fchmodat syscalls are hidden.
2015-02-03 12:10:30 -08:00
fchmodat.cpp
Ensure raw fchmod/fchmodat syscalls are hidden.
2015-02-03 12:10:30 -08:00
ffs.cpp
Let the compiler worry about implementing ffs(3).
2013-10-24 16:29:40 -07:00
fgetxattr.cpp
libc: Add O_PATH support for fgetxattr / fsetxattr
2015-06-01 15:51:56 -07:00
flistxattr.cpp
Add O_PATH support for flistxattr()
2015-06-06 11:25:41 -07:00
flockfile.cpp
Revert "Revert "Remove __sinit and __sdidinit.""
2015-12-05 07:30:59 -08:00
fork.cpp
Generalize the clone function slightly.
2016-05-06 16:37:00 -07:00
fortify.cpp
Add __memset_chk assembler for mips32 and mips64.
2016-03-04 15:15:00 -08:00
fpclassify.cpp
Move the IEEE fp header out of the public headers.
2016-05-02 12:44:41 -07:00
fsetxattr.cpp
libc: Add O_PATH support for fgetxattr / fsetxattr
2015-06-01 15:51:56 -07:00
ftruncate.cpp
Cleanup ftruncate negative test.
2015-06-01 13:22:57 -07:00
fts.c
Sync with upstream OpenBSD fts.c.
2014-11-21 19:27:28 -08:00
ftw.cpp
Fix ftw/nftw to only report unreadable directories once.
2016-04-18 12:05:18 -07:00
futimens.cpp
Add futimens.
2013-08-08 17:52:06 -07:00
getauxval.cpp
set errno to ENOENT in getauxval per glibc 2.19
2015-03-17 19:50:55 -04:00
getcwd.cpp
add a fortified implementation of getcwd
2015-08-01 00:42:30 -04:00
getdomainname.cpp
Add {get,set}domainname(2)
2016-03-25 14:16:58 -07:00
getentropy_linux.c
Use upstream OpenBSD's arc4random.
2014-07-21 14:38:16 -07:00
gethostname.cpp
gethostname.c: change to report ENAMETOOLONG error when buflen is less
2014-11-12 12:07:33 -08:00
getpagesize.cpp
Break up the rest of stubs.cpp.
2016-04-06 08:34:58 -07:00
getpgrp.cpp
Take ownership of various simple syscall wrappers.
2014-03-10 17:17:01 -07:00
getpid.cpp
Cache getpid.
2014-06-20 09:06:57 -07:00
getpriority.c
gettid.cpp
Avoid a system call in 'gettid'.
2014-06-02 10:32:55 -07:00
grp_pwd.cpp
bionic: Implement getpwent and getgrent
2016-04-22 10:44:19 -07:00
ifaddrs.cpp
Fix google-explicit-constructor warnings.
2016-05-03 12:08:05 -07:00
initgroups.c
inotify_init.cpp
Remove dependencies on obsolete __ARCH_WANT_SYSCALL_NO_FLAGS syscalls.
2013-10-23 09:48:29 -07:00
ioctl.cpp
fix the mremap signature
2015-11-06 13:14:43 -08:00
isatty.c
jemalloc.h
Export malloc_iterate and friends
2016-02-18 15:05:38 -08:00
jemalloc_wrapper.cpp
Slim down static binaries by avoiding stdio.
2014-07-10 12:34:23 -07:00
lchown.cpp
Remove bogus transitive includes.
2014-12-29 13:29:50 -08:00
legacy_32_bit_support.cpp
Add prlimit to LP32.
2015-10-28 20:04:59 -07:00
lfs64_support.cpp
CLOEXEC support in fdopen, freopen, and mkostemp/mkostemps.
2014-09-23 18:21:52 -07:00
libc_init_common.cpp
Merge "Check current pid at libc initialization for 32-bit build."
2016-04-01 17:56:33 +00:00
libc_init_common.h
Move VDSO pointers to a shared globals struct.
2015-10-09 15:59:04 -07:00
libc_init_dynamic.cpp
Revert "Revert "Make sem_wait able to return errno EINTR for sdk > 23.""
2016-01-25 17:39:18 -08:00
libc_init_static.cpp
Revert "Revert "Make sem_wait able to return errno EINTR for sdk > 23.""
2016-01-25 17:39:18 -08:00
libc_logging.cpp
Fix google-explicit-constructor warnings.
2016-05-03 12:08:05 -07:00
libgen.cpp
Rename LIBC64_HIDDEN to LIBC32_LEGACY_PUBLIC.
2015-10-23 12:32:52 -07:00
link.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
locale.cpp
Fix google-explicit-constructor warnings.
2016-05-03 12:08:05 -07:00
lockf.cpp
Fix lockf for LP32.
2016-01-26 14:32:55 -08:00
lstat.cpp
Implement some of the missing LFS64 support.
2014-02-18 15:39:24 -08:00
malloc_common.cpp
Init functions after debug malloc succeeds.
2016-03-11 12:27:02 -08:00
malloc_info.cpp
Implement malloc_info(3).
2014-08-22 10:23:12 -07:00
malloc_info.h
Implement malloc_info(3).
2014-08-22 10:23:12 -07:00
mblen.cpp
Implement mblen(3).
2016-04-28 16:41:29 -07:00
mbrtoc16.cpp
Adds functionality specified by uchar.h
2014-06-04 08:39:24 -07:00
mbrtoc32.cpp
Adds functionality specified by uchar.h
2014-06-04 08:39:24 -07:00
mbstate.cpp
Adds functionality specified by uchar.h
2014-06-04 08:39:24 -07:00
memmem.c
mempcpy.cpp
Add GNU extensions mempcpy and wmemcpy.
2015-02-18 22:02:56 -08:00
mkdir.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
mkfifo.cpp
Add mkfifoat(3).
2014-10-23 19:10:54 -07:00
mknod.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
mmap.cpp
mmap: fix calculation of is_private_anonymous variable
2015-11-20 09:16:59 -08:00
mntent.cpp
Add hasmntopt(3)
2016-03-25 14:16:58 -07:00
mremap.cpp
extend the PTRDIFF_MAX size check to mremap
2015-11-19 08:57:47 -05:00
ndk_cruft.cpp
bionic: Implement getpwent and getgrent
2016-04-22 10:44:19 -07:00
net_if.cpp
Fix google-explicit-constructor warnings.
2016-05-03 12:08:05 -07:00
netdb.cpp
Break up the rest of stubs.cpp.
2016-04-06 08:34:58 -07:00
NetdClient.cpp
RTLD_LAZY is not supported, use RTLD_NOW instead.
2015-03-23 14:58:45 -07:00
NetdClientDispatch.cpp
Mark sockets on creation (socket()) and accept4().
2014-05-19 15:19:16 -07:00
netinet_in.cpp
Add in6addr_any and in6addr_loopback symbols.
2016-02-03 14:13:52 -08:00
new.cpp
Add standard throw() spec to delete operators.
2014-08-25 21:16:14 +00:00
nl_types.cpp
Add trivial no-op <nl_types.h>.
2016-04-06 17:22:44 -07:00
open.cpp
Improve FORTIFY failure diagnostics.
2016-02-26 22:06:17 -08:00
pathconf.cpp
Increase support of pathconf options.
2014-11-14 23:45:24 +00:00
pause.cpp
Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.
2013-10-24 15:48:32 -07:00
pipe.cpp
Remove dependencies on obsolete __ARCH_WANT_SYSCALL_NO_FLAGS syscalls.
2013-10-23 09:48:29 -07:00
poll.cpp
Fix clang build.
2015-02-02 10:21:39 -08:00
posix_fadvise.cpp
Add posix_fadvise(3).
2014-09-11 08:45:46 -07:00
posix_fallocate.cpp
Add fallocate/fallocate64/posix_fallocate/posix_fallocate64.
2014-02-03 16:20:46 -08:00
posix_madvise.cpp
implement posix_madvise
2014-12-04 11:01:28 -08:00
posix_timers.cpp
Fix POSIX timer thread naming.
2015-04-25 10:05:24 -07:00
pthread_atfork.cpp
constexpr constructor for atfork_list_t
2015-12-08 11:40:51 -08:00
pthread_attr.cpp
Fix the way to get main thread stack start address.
2015-09-16 11:45:13 -07:00
pthread_barrier.cpp
Use FUTEX_WAIT_BITSET to avoid converting timeouts.
2015-11-19 13:42:03 -08:00
pthread_cond.cpp
sem_timedwait with a null timeout doesn't mean "forever".
2015-12-16 15:15:58 -08:00
pthread_create.cpp
Set x86 TLS limit to 0xfffff, not PAGE_SIZE.
2016-02-09 22:44:16 -08:00
pthread_detach.cpp
Let g_thread_list_lock only protect g_thread_list.
2015-03-23 19:03:49 -07:00
pthread_equal.cpp
pthread_exit.cpp
If you're going to use memset...
2016-02-25 22:05:28 -08:00
pthread_getcpuclockid.cpp
Let g_thread_list_lock only protect g_thread_list.
2015-03-23 19:03:49 -07:00
pthread_getschedparam.cpp
Let g_thread_list_lock only protect g_thread_list.
2015-03-23 19:03:49 -07:00
pthread_gettid_np.cpp
Remove "private/bionic_pthread.h".
2014-09-12 11:35:05 -07:00
pthread_internal.cpp
Add check for pthread_self() when looking up a thread
2016-02-04 16:48:47 -08:00
pthread_internal.h
Format code to calculate thread stack and signal stack.
2016-04-04 16:19:39 -07:00
pthread_join.cpp
Let g_thread_list_lock only protect g_thread_list.
2015-03-23 19:03:49 -07:00
pthread_key.cpp
Prevent using static-allocated pthread keys before creation.
2015-04-14 13:32:09 -07:00
pthread_kill.cpp
Let g_thread_list_lock only protect g_thread_list.
2015-03-23 19:03:49 -07:00
pthread_mutex.cpp
Use clang's nullability instead of nonnull.
2016-05-05 17:11:54 -07:00
pthread_once.cpp
Use FUTEX_WAIT_BITSET to avoid converting timeouts.
2015-11-19 13:42:03 -08:00
pthread_rwlock.cpp
sem_timedwait with a null timeout doesn't mean "forever".
2015-12-16 15:15:58 -08:00
pthread_self.cpp
pthread_setname_np.cpp
Add pthread_getname_np.
2016-03-23 17:40:25 -07:00
pthread_setschedparam.cpp
Let g_thread_list_lock only protect g_thread_list.
2015-03-23 19:03:49 -07:00
pthread_sigmask.cpp
Clean up the sigprocmask/pthread_sigmask implementation.
2013-10-15 11:23:57 -07:00
pthread_spinlock.cpp
Implement pthread spin.
2015-11-18 17:51:21 -08:00
ptrace.cpp
ptrace(3) should be varargs.
2014-07-16 16:07:10 -07:00
pty.cpp
forkpty: set the output fd to -1 on the slave side.
2016-03-04 18:04:41 -08:00
pututline.c
libc should use O_CLOEXEC when opening files for its own use.
2014-08-26 15:56:54 -07:00
raise.cpp
Remove bogus transitive includes.
2014-12-29 13:29:50 -08:00
rand.cpp
Implement rand/srand in terms of random/srandom.
2014-07-14 12:02:22 -07:00
readlink.cpp
add fortified readlink/readlinkat implementations
2015-04-17 18:49:12 -04:00
reboot.cpp
Clean up various warnings in bionic.
2014-02-18 12:04:54 -08:00
recv.cpp
Fix recv.cpp so it can build with clang.
2014-07-02 16:46:34 -07:00
rename.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
rmdir.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
scandir.cpp
Implement scandirat and scandirat64.
2015-10-27 13:47:36 -07:00
sched_cpualloc.c
sched_cpucount.c
Fix cpu_set_t
2014-04-30 14:30:15 +01:00
sched_getaffinity.cpp
Fix indentation in sched_getaffinity.
2013-10-15 16:49:49 -07:00
sched_getcpu.cpp
Clean up <sched.h>.
2014-01-02 12:05:50 -08:00
semaphore.cpp
Revert "Revert "Make sem_wait able to return errno EINTR for sdk > 23.""
2016-01-25 17:39:18 -08:00
send.cpp
Take ownership of various simple syscall wrappers.
2014-03-10 17:17:01 -07:00
setegid.cpp
Clean up the cpuacct cruft.
2013-10-09 17:35:36 -07:00
seteuid.cpp
Clean up the cpuacct cruft.
2013-10-09 17:35:36 -07:00
setjmp_cookie.cpp
Add a checksum to jmp_buf on ARM.
2016-03-03 12:45:08 -08:00
setpgrp.cpp
Take ownership of various simple syscall wrappers.
2014-03-10 17:17:01 -07:00
sigaction.cpp
Use the kernel's sa_restorer for aarch64.
2014-09-16 15:49:50 -07:00
sigaddset.cpp
Turn on -Wold-style-cast and fix the errors.
2015-01-21 17:09:58 -08:00
sigblock.c
sigdelset.cpp
Turn on -Wold-style-cast and fix the errors.
2015-01-21 17:09:58 -08:00
sigemptyset.cpp
Reduce <signal.h> namespace pollution.
2015-01-24 14:18:16 -08:00
sigfillset.cpp
Reduce <signal.h> namespace pollution.
2015-01-24 14:18:16 -08:00
sighold.cpp
Add SysV signal handling
2016-04-04 16:33:29 -07:00
sigignore.cpp
Add SysV signal handling
2016-04-04 16:33:29 -07:00
siginterrupt.c
sigismember.cpp
Turn on -Wold-style-cast and fix the errors.
2015-01-21 17:09:58 -08:00
signal.cpp
Make _signal hidden in all cases.
2015-10-30 17:10:47 -07:00
signalfd.cpp
Hide __signalfd4, used to implement signalfd(3).
2014-05-16 15:47:29 -07:00
sigpause.cpp
Add SysV signal handling
2016-04-04 16:33:29 -07:00
sigpending.cpp
Switch sigpending over to rt_sigpending.
2013-10-16 14:07:01 -07:00
sigprocmask.cpp
Clean up the sigprocmask/pthread_sigmask implementation.
2013-10-15 11:23:57 -07:00
sigqueue.cpp
Hide rt_sigqueueinfo.
2015-05-18 11:29:20 -07:00
sigrelse.cpp
Add SysV signal handling
2016-04-04 16:33:29 -07:00
sigset.cpp
Add SysV signal handling
2016-04-04 16:33:29 -07:00
sigsetmask.c
sigsuspend.cpp
Fix sigsuspend to use rt_sigsuspend on all platforms.
2013-10-15 18:15:19 -07:00
sigtimedwait.cpp
support _POSIX_REALTIME_SIGNALS
2014-12-08 21:52:43 -08:00
sigwait.cpp
Fix sigsuspend to use rt_sigsuspend on all platforms.
2013-10-15 18:15:19 -07:00
sigwaitinfo.cpp
support _POSIX_REALTIME_SIGNALS
2014-12-08 21:52:43 -08:00
socket.cpp
Mark sockets on creation (socket()) and accept4().
2014-05-19 15:19:16 -07:00
stat.cpp
Implement some of the missing LFS64 support.
2014-02-18 15:39:24 -08:00
statvfs.cpp
Hide statfs/fstatfs' ST_VALID flag from userspace.
2015-03-18 15:46:48 -07:00
strchr.cpp
More OpenBSD cleanup (primarily string).
2014-02-24 18:02:05 -08:00
strchrnul.cpp
Add strchrnul.
2015-08-26 09:59:29 -07:00
strerror.cpp
Make ThreadLocalBuffer a class rather than a macro.
2015-03-31 10:56:58 -07:00
strerror_r.cpp
Move <sys/_sigdefs.h> and <sys/_errdefs.h> to private.
2016-04-13 17:45:39 -07:00
strnlen.c
strrchr.cpp
More OpenBSD cleanup (primarily string).
2014-02-24 18:02:05 -08:00
strsignal.cpp
Make ThreadLocalBuffer a class rather than a macro.
2015-03-31 10:56:58 -07:00
strtold.cpp
Use FLT_ROUNDS in LP64 strtold.
2014-04-16 16:09:41 -07:00
symlink.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
sync_file_range.cpp
Add sync_file_range to <fcntl.h>.
2016-04-05 12:17:22 -07:00
sys_siglist.c
Move <sys/_sigdefs.h> and <sys/_errdefs.h> to private.
2016-04-13 17:45:39 -07:00
sys_signame.c
Move <sys/_sigdefs.h> and <sys/_errdefs.h> to private.
2016-04-13 17:45:39 -07:00
sysconf.cpp
Move <sys/sysconf.h> to <bits/sysconf.h>.
2016-04-07 18:02:00 -07:00
sysinfo.cpp
Fix the way to count online cpus.
2015-09-29 17:49:37 -07:00
syslog.cpp
Clean up <stdlib.h> slightly.
2015-01-26 14:28:41 -08:00
system_properties.cpp
Fix google-explicit-constructor warnings.
2016-05-03 12:08:05 -07:00
system_properties_compat.c
Hide most of the private futex functions.
2014-05-21 18:30:00 -07:00
tdestroy.cpp
Turn on -Wold-style-cast and fix the errors.
2015-01-21 17:09:58 -08:00
termios.cpp
Remove bogus transitive includes.
2014-12-29 13:29:50 -08:00
thread_private.cpp
Sync to current upstream arc4random.
2014-06-24 14:13:48 -07:00
time64.c
Use snprintf instead of sprintf.
2014-10-07 11:28:47 -07:00
time64_config.h
tmpfile.cpp
Add fopen64/freopen64/tmpfile64 aliases.
2016-02-03 11:24:28 -08:00
umount.cpp
Take ownership of various simple syscall wrappers.
2014-03-10 17:17:01 -07:00
unlink.cpp
Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.
2013-10-22 16:31:01 -07:00
utimes.cpp
Remove bogus transitive includes.
2014-12-29 13:29:50 -08:00
vdso.cpp
Move VDSO pointers to a shared globals struct.
2015-10-09 15:59:04 -07:00
wait.cpp
Removes wait3(2) from LP64.
2014-06-13 16:04:41 -07:00
wchar.cpp
Fix incorrect parameter types for locale funcs.
2014-09-23 15:32:24 -07:00
wctype.cpp
Fix <wctype.h>.
2016-04-28 18:22:06 -07:00
wmempcpy.cpp
Add GNU extensions mempcpy and wmemcpy.
2015-02-18 22:02:56 -08:00