mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-22 21:32:31 +00:00
Make improvements
- Invent openatemp() API - Invent O_UNLINK open flag - Introduce getenv_secure() API - Remove `git pull` from cosmocc - Fix utimes() when path is NULL - Fix mktemp() to never return NULL - Fix utimensat() UTIME_OMIT on XNU - Improve utimensat() code for RHEL5 - Turn `argv[0]` C:/ to /C/ on Windows - Introduce tmpnam() and tmpnam_r() APIs - Fix more const issues with internal APIs - Permit utimes() on WIN32 in O_RDONLY mode - Fix fdopendir() to check fd is a directory - Fix recent crash regression in landlock make - Fix futimens(AT_FDCWD, NULL) to return EBADF - Use workaround so `make -j` doesn't fork bomb - Rename dontdiscard to __wur (just like glibc) - Fix st_size for WIN32 symlinks containing UTF-8 - Introduce stdio ext APIs needed by GNU coreutils - Fix lstat() on WIN32 for symlinks to directories - Move some constants from normalize.inc to limits.h - Fix segv with memchr() and memcmp() overlapping page - Implement POSIX fflush() behavior for reader streams - Implement AT_SYMLINK_NOFOLLOW for utimensat() on WIN32 - Don't change read-only status of existing files on WIN32 - Correctly handle `0x[^[:xdigit:]]` case in strtol() functions
This commit is contained in:
parent
8596e83cce
commit
f531acc8f9
297 changed files with 1920 additions and 1681 deletions
|
@ -512,6 +512,18 @@ TEST(wcstoumax, testIBM) {
|
|||
ASSERT_STREQ(L"f", e);
|
||||
}
|
||||
|
||||
TEST(strtol, term) {
|
||||
static char const input[2][3] = {"0x", "0b"};
|
||||
static int const base[] = {0, 2, 10};
|
||||
for (int i = 0; i < 2; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
char *term;
|
||||
strtoll(input[i], &term, base[j]);
|
||||
ASSERT_EQ(input[i] + 1, term);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST(strtoul, testoverflow) {
|
||||
errno = 0;
|
||||
char *e = 0;
|
||||
|
@ -521,20 +533,41 @@ TEST(strtoul, testoverflow) {
|
|||
ASSERT_STREQ("", e);
|
||||
}
|
||||
|
||||
TEST(strtol, invalidHex_consistentWithBsd) {
|
||||
TEST(strtol, invalidHex1) {
|
||||
char *c = 0;
|
||||
long x = strtol("0xz", &c, 16);
|
||||
ASSERT_EQ(0, x);
|
||||
ASSERT_STREQ("z", c);
|
||||
ASSERT_STREQ("xz", c);
|
||||
}
|
||||
|
||||
TEST(strtol, invalidHex_consistentWithBsd2) {
|
||||
TEST(strtol, invalidHex2) {
|
||||
char *c = 0;
|
||||
long x = strtol("0xez", &c, 16);
|
||||
ASSERT_EQ(0xe, x);
|
||||
ASSERT_STREQ("z", c);
|
||||
}
|
||||
|
||||
TEST(strtol, invalidHex3) {
|
||||
char *c = 0;
|
||||
long x = strtol("0xez", &c, 0);
|
||||
ASSERT_EQ(0xe, x);
|
||||
ASSERT_STREQ("z", c);
|
||||
}
|
||||
|
||||
TEST(strtol, invalidBin1) {
|
||||
char *c = 0;
|
||||
long x = strtol("0b2", &c, 2);
|
||||
ASSERT_EQ(0, x);
|
||||
ASSERT_STREQ("b2", c);
|
||||
}
|
||||
|
||||
TEST(strtol, invalidBin2) {
|
||||
char *c = 0;
|
||||
long x = strtol("0b2", &c, 0);
|
||||
ASSERT_EQ(0, x);
|
||||
ASSERT_STREQ("b2", c);
|
||||
}
|
||||
|
||||
BENCH(atoi, bench) {
|
||||
EZBENCH2("atoi 10⁸", donothing,
|
||||
__expropriate(atoi(__veil("r", "100000000"))));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue