cosmopolitan/libc/str
Justine Tunney 417797d218 Support dirfd relative iops on Windows
We always favor calling functions like openat(), fstatat(), etc. because
Linux, XNU, FreeBSD, and OpenBSD all elected to support them, while some
systems like Android love them so much, that they stopped supporting the
old interfaces.

This change ensures that when dirfd is actually a dirfd and not AT_FDCWD
we'll do the right thing on Windows NT. We use an API that's been around
since Vista to accomplish that.

This change also adds exponential backoff to chdir() on Windows since it
seems almost as flaky on Windows 7 as the rmdir() function.
2021-01-30 01:49:43 -08:00
..
bcmp.c Change license 2020-12-27 17:18:44 -08:00
bcopy.c Change license 2020-12-27 17:18:44 -08:00
chomp.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
chomp16.c Change license 2020-12-27 17:18:44 -08:00
decodentsutf16.c Change license 2020-12-27 17:18:44 -08:00
endswith.c Change license 2020-12-27 17:18:44 -08:00
endswith16.c Change license 2020-12-27 17:18:44 -08:00
escapedos.c Change license 2020-12-27 17:18:44 -08:00
getcachesize.c Change license 2020-12-27 17:18:44 -08:00
getutf16.ncabi.c Change license 2020-12-27 17:18:44 -08:00
getx86processormodel.c Change license 2020-12-27 17:18:44 -08:00
hextoint.c Change license 2020-12-27 17:18:44 -08:00
highwayhash64.c Hunt down some small bugs 2020-12-24 16:01:48 -08:00
highwayhash64.h Hunt down some small bugs 2020-12-24 16:01:48 -08:00
iconv.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
indexdoublenulstring.c Change license 2020-12-27 17:18:44 -08:00
internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
isalnum.c Change license 2020-12-27 17:18:44 -08:00
isalpha.c Change license 2020-12-27 17:18:44 -08:00
isascii.c Change license 2020-12-27 17:18:44 -08:00
isblank.c Change license 2020-12-27 17:18:44 -08:00
iscntrl.c Change license 2020-12-27 17:18:44 -08:00
isdigit.c Change license 2020-12-27 17:18:44 -08:00
isgraph.c Change license 2020-12-27 17:18:44 -08:00
islower.c Change license 2020-12-27 17:18:44 -08:00
isprint.c Change license 2020-12-27 17:18:44 -08:00
ispunct.c Change license 2020-12-27 17:18:44 -08:00
isspace.c Change license 2020-12-27 17:18:44 -08:00
isupper.c Change license 2020-12-27 17:18:44 -08:00
iswalnum.c Change license 2020-12-27 17:18:44 -08:00
iswalpha.c Change license 2020-12-27 17:18:44 -08:00
iswblank.c Change license 2020-12-27 17:18:44 -08:00
iswcntrl.c Change license 2020-12-27 17:18:44 -08:00
iswctype.c Change license 2020-12-27 17:18:44 -08:00
iswdigit.c Change license 2020-12-27 17:18:44 -08:00
iswgraph.c Change license 2020-12-27 17:18:44 -08:00
iswlower.c Change license 2020-12-27 17:18:44 -08:00
iswprint.c Change license 2020-12-27 17:18:44 -08:00
iswpunct.c Change license 2020-12-27 17:18:44 -08:00
iswspace.c Change license 2020-12-27 17:18:44 -08:00
iswupper.c Change license 2020-12-27 17:18:44 -08:00
iswxdigit.c Change license 2020-12-27 17:18:44 -08:00
isxdigit.c Change license 2020-12-27 17:18:44 -08:00
kx86processormodels.c Change license 2020-12-27 17:18:44 -08:00
lz4check.c Change license 2020-12-27 17:18:44 -08:00
lz4cpy.c Change license 2020-12-27 17:18:44 -08:00
lz4decode.c Change license 2020-12-27 17:18:44 -08:00
mbtowc.c Change license 2020-12-27 17:18:44 -08:00
memccpy.c Change license 2020-12-27 17:18:44 -08:00
memcmp.c Change license 2020-12-27 17:18:44 -08:00
memfrob.c Change license 2020-12-27 17:18:44 -08:00
memmem.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
memset16.c Change license 2020-12-27 17:18:44 -08:00
oldutf16.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
pututf16.ncabi.c Change license 2020-12-27 17:18:44 -08:00
rindex.S Change license 2020-12-27 17:18:44 -08:00
sha256.c Improve documentation 2020-12-27 07:02:35 -08:00
sha256.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
startswith.c Change license 2020-12-27 17:18:44 -08:00
startswith16.c Change license 2020-12-27 17:18:44 -08:00
stpcpy.c Change license 2020-12-27 17:18:44 -08:00
stpncpy.c Change license 2020-12-27 17:18:44 -08:00
str.h Support dirfd relative iops on Windows 2021-01-30 01:49:43 -08:00
str.mk Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
strcasecmp.c Change license 2020-12-27 17:18:44 -08:00
strcasecmp8to16.c Change license 2020-12-27 17:18:44 -08:00
strcasecmp16.c Change license 2020-12-27 17:18:44 -08:00
strcat.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
strcat16.c Support dirfd relative iops on Windows 2021-01-30 01:49:43 -08:00
strclen.c Change license 2020-12-27 17:18:44 -08:00
strclen16.c Change license 2020-12-27 17:18:44 -08:00
strcmp.c Change license 2020-12-27 17:18:44 -08:00
strcmp8to16.c Change license 2020-12-27 17:18:44 -08:00
strcmp8to16i.internal.h Fold conv package into fmt 2020-12-09 16:52:00 -08:00
strcmp16.c Change license 2020-12-27 17:18:44 -08:00
strcpy.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
strcpy16.c Change license 2020-12-27 17:18:44 -08:00
strcspn16.c Change license 2020-12-27 17:18:44 -08:00
strlcat.c Change license 2020-12-27 17:18:44 -08:00
strlcpy.c Fix strlcpy 2020-12-27 21:35:38 -08:00
strncasecmp.c Change license 2020-12-27 17:18:44 -08:00
strncasecmp8to16.c Change license 2020-12-27 17:18:44 -08:00
strncasecmp16.c Change license 2020-12-27 17:18:44 -08:00
strncat.c Change license 2020-12-27 17:18:44 -08:00
strncmp.c Change license 2020-12-27 17:18:44 -08:00
strncmp8to16.c Change license 2020-12-27 17:18:44 -08:00
strncmp16.c Change license 2020-12-27 17:18:44 -08:00
strncpy.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
strntolower.c Change license 2020-12-27 17:18:44 -08:00
strntoupper.c Change license 2020-12-27 17:18:44 -08:00
strpbrk.c Change license 2020-12-27 17:18:44 -08:00
strpbrk16.c Change license 2020-12-27 17:18:44 -08:00
strrchr.c Change license 2020-12-27 17:18:44 -08:00
strrchr16.c Change license 2020-12-27 17:18:44 -08:00
strsep.c Change license 2020-12-27 17:18:44 -08:00
strsignal.c Change license 2020-12-27 17:18:44 -08:00
strspn.c Change license 2020-12-27 17:18:44 -08:00
strspn16.c Change license 2020-12-27 17:18:44 -08:00
strstr.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
strstr16.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
strtok.c Change license 2020-12-27 17:18:44 -08:00
strtok_r.c Change license 2020-12-27 17:18:44 -08:00
strverscmp.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
thompike.h Add minor improvements and cleanup 2020-10-27 03:39:46 -07:00
timingsafe_memcmp.c Add timingsafe_memcmp #13 2020-12-28 20:01:15 -08:00
tinymemccpy.c Change license 2020-12-27 17:18:44 -08:00
tinymemmem.c Change license 2020-12-27 17:18:44 -08:00
tinymemmem.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
tinystrstr.c Change license 2020-12-27 17:18:44 -08:00
tinystrstr.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
tinystrstr16.c Change license 2020-12-27 17:18:44 -08:00
tolower.c Change license 2020-12-27 17:18:44 -08:00
toupper.c Change license 2020-12-27 17:18:44 -08:00
towlower.c Change license 2020-12-27 17:18:44 -08:00
towupper.c Change license 2020-12-27 17:18:44 -08:00
tpdecode.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
tpdecode.ncabi.c Change license 2020-12-27 17:18:44 -08:00
tpdecodecb.internal.h Make minor improvements 2020-12-23 23:42:56 -08:00
tpenc.h Make terminal ui binaries work well everywhere 2020-10-19 06:38:31 -07:00
tpenc.S Change license 2020-12-27 17:18:44 -08:00
tpencode.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
tpencode.ncabi.c Change license 2020-12-27 17:18:44 -08:00
tprecode8to16.c Change license 2020-12-27 17:18:44 -08:00
tprecode16to8.c Change license 2020-12-27 17:18:44 -08:00
undeflate.c Change license 2020-12-27 17:18:44 -08:00
undeflate.h Initial import 2020-06-15 07:18:57 -07:00
utf16.h Make minor improvements 2020-12-23 23:42:56 -08:00
wchomp.c Change license 2020-12-27 17:18:44 -08:00
wcrtomb.c Change license 2020-12-27 17:18:44 -08:00
wcscasecmp.c Change license 2020-12-27 17:18:44 -08:00
wcscmp.c Change license 2020-12-27 17:18:44 -08:00
wcscspn.c Change license 2020-12-27 17:18:44 -08:00
wcsendswith.c Change license 2020-12-27 17:18:44 -08:00
wcslen.c Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs 2021-01-25 18:31:17 -08:00
wcsncasecmp.c Change license 2020-12-27 17:18:44 -08:00
wcsncmp.c Change license 2020-12-27 17:18:44 -08:00
wcsncpy.c Change license 2020-12-27 17:18:44 -08:00
wcspbrk.c Change license 2020-12-27 17:18:44 -08:00
wcsrchr.c Change license 2020-12-27 17:18:44 -08:00
wcsrtombs.c Change license 2020-12-27 17:18:44 -08:00
wcsspn.c Change license 2020-12-27 17:18:44 -08:00
wcsstartswith.c Change license 2020-12-27 17:18:44 -08:00
wcstombs.c Change license 2020-12-27 17:18:44 -08:00
wctob.c Change license 2020-12-27 17:18:44 -08:00
wctomb.c Change license 2020-12-27 17:18:44 -08:00
wmemcpy.c Change license 2020-12-27 17:18:44 -08:00
wmemmove.c Change license 2020-12-27 17:18:44 -08:00
wmempcpy.c Change license 2020-12-27 17:18:44 -08:00
wmemset.c Change license 2020-12-27 17:18:44 -08:00
zipfindcentraldir.c Change license 2020-12-27 17:18:44 -08:00