mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-23 22:49:00 +00:00
Run clang-format (#1197)
This commit is contained in:
parent
ea081b262c
commit
f032b5570b
183 changed files with 1074 additions and 983 deletions
|
@ -142,20 +142,13 @@
|
||||||
: 0xffffffffffffffff)
|
: 0xffffffffffffffff)
|
||||||
#define BCD_RIGHT(X) \
|
#define BCD_RIGHT(X) \
|
||||||
(((X)) < 10000 ? 0x20202020 \
|
(((X)) < 10000 ? 0x20202020 \
|
||||||
: (X) < 100000 ? 0x20202030 + \
|
: (X) < 100000 ? 0x20202030 + (X) % 10 \
|
||||||
(X) % 10 \
|
: (X) < 1000000 ? 0x20203030 + ((X) / 10) % 10 + (X) % 10 * 0x100 \
|
||||||
: (X) < 1000000 ? 0x20203030 + \
|
: (X) < 10000000 ? 0x20303030 + ((X) / 100) % 10 + \
|
||||||
((X) / 10) % 10 + \
|
((X) / 10) % 10 * 0x100 + (X) % 10 * 0x10000 \
|
||||||
(X) % 10 * 0x100 \
|
: (X) < 100000000 \
|
||||||
: (X) < 10000000 ? 0x20303030 + \
|
? 0x30303030 + ((X) / 1000) % 10 + ((X) / 100) % 10 * 0x100 + \
|
||||||
((X) / 100) % 10 + \
|
((X) / 10) % 10 * 0x10000 + (X) % 10 * 0x1000000 \
|
||||||
((X) / 10) % 10 * 0x100 + \
|
|
||||||
(X) % 10 * 0x10000 \
|
|
||||||
: (X) < 100000000 ? 0x30303030 + \
|
|
||||||
((X) / 1000) % 10 + \
|
|
||||||
((X) / 100) % 10 * 0x100 + \
|
|
||||||
((X) / 10) % 10 * 0x10000 + \
|
|
||||||
(X) % 10 * 0x1000000 \
|
|
||||||
: 0xffffffffffffffff)
|
: 0xffffffffffffffff)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -166,14 +159,10 @@
|
||||||
HIDDEN(SYM##_desc_ent1 = TSSDESC_ENT1(BASE)); \
|
HIDDEN(SYM##_desc_ent1 = TSSDESC_ENT1(BASE)); \
|
||||||
ASSERT((LIM) >= 0 && (LIM) <= 0xffff, "bare metal TSS is suspiciously fat")
|
ASSERT((LIM) >= 0 && (LIM) <= 0xffff, "bare metal TSS is suspiciously fat")
|
||||||
#define TSSDESC_ENT0(BASE, LIM) \
|
#define TSSDESC_ENT0(BASE, LIM) \
|
||||||
(((LIM) << 0 & 0x000000000000ffff) | \
|
(((LIM) << 0 & 0x000000000000ffff) | ((BASE) << 16 & 0x000000ffffff0000) | \
|
||||||
((BASE) << 16 & 0x000000ffffff0000) | \
|
0x89 << 40 | ((LIM) >> 16 << 48 & 0x000f000000000000) | 0x2 << 52 | \
|
||||||
0x89 << 40 | \
|
|
||||||
((LIM) >> 16 << 48 & 0x000f000000000000) | \
|
|
||||||
0x2 << 52 | \
|
|
||||||
((BASE) >> 24 << 56 & 0xff00000000000000))
|
((BASE) >> 24 << 56 & 0xff00000000000000))
|
||||||
#define TSSDESC_ENT1(BASE) \
|
#define TSSDESC_ENT1(BASE) ((BASE) >> 32 << 0 & 0x00000000ffffffff)
|
||||||
((BASE) >> 32 << 0 & 0x00000000ffffffff)
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
#endif /* APE_MACROS_H_ */
|
#endif /* APE_MACROS_H_ */
|
||||||
|
|
|
@ -9,8 +9,8 @@ int mulaw(int);
|
||||||
int unmulaw(int);
|
int unmulaw(int);
|
||||||
void *double2byte(long, const void *, double, double) vallocesque;
|
void *double2byte(long, const void *, double, double) vallocesque;
|
||||||
void *byte2double(long, const void *, double, double) vallocesque;
|
void *byte2double(long, const void *, double, double) vallocesque;
|
||||||
void *dct(float[restrict hasatleast 8][8], unsigned,
|
void *dct(float[restrict hasatleast 8][8], unsigned, float, float, float, float,
|
||||||
float, float, float, float, float);
|
float);
|
||||||
void *dctjpeg(float[restrict hasatleast 8][8], unsigned);
|
void *dctjpeg(float[restrict hasatleast 8][8], unsigned);
|
||||||
double det3(const double[3][3]) nosideeffect;
|
double det3(const double[3][3]) nosideeffect;
|
||||||
void *inv3(double[restrict 3][3], const double[restrict 3][3], double);
|
void *inv3(double[restrict 3][3], const double[restrict 3][3], double);
|
||||||
|
|
|
@ -65,8 +65,8 @@
|
||||||
*
|
*
|
||||||
* @cost ~100ns
|
* @cost ~100ns
|
||||||
*/
|
*/
|
||||||
void *dct(float M[restrict hasatleast 8][8], unsigned stride,
|
void *dct(float M[restrict hasatleast 8][8], unsigned stride, float c0,
|
||||||
float c0, float c1, float c2, float c3, float c4) {
|
float c1, float c2, float c3, float c4) {
|
||||||
unsigned y, x;
|
unsigned y, x;
|
||||||
for (y = 0; y < stride * 8; y += stride) {
|
for (y = 0; y < stride * 8; y += stride) {
|
||||||
DCT(M[y][0], M[y][1], M[y][2], M[y][3], M[y][4], M[y][5], M[y][6], M[y][7],
|
DCT(M[y][0], M[y][1], M[y][2], M[y][3], M[y][4], M[y][5], M[y][6], M[y][7],
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "dsp/core/core.h"
|
|
||||||
#include "dsp/core/gamma.h"
|
#include "dsp/core/gamma.h"
|
||||||
|
#include "dsp/core/core.h"
|
||||||
#include "libc/math.h"
|
#include "libc/math.h"
|
||||||
|
|
||||||
double rgb2stdpc(double x, double g) {
|
double rgb2stdpc(double x, double g) {
|
||||||
|
|
|
@ -64,7 +64,8 @@ forceinline bool plm_buffer_has(plm_buffer_t *b, size_t bits) {
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline int plm_buffer_read(plm_buffer_t *self, int count) {
|
forceinline int plm_buffer_read(plm_buffer_t *self, int count) {
|
||||||
if (!plm_buffer_has(self, count)) return 0;
|
if (!plm_buffer_has(self, count))
|
||||||
|
return 0;
|
||||||
int value = 0;
|
int value = 0;
|
||||||
while (count) {
|
while (count) {
|
||||||
int current_byte = self->bytes[self->bit_index >> 3];
|
int current_byte = self->bytes[self->bit_index >> 3];
|
||||||
|
|
|
@ -24,9 +24,13 @@
|
||||||
* The alternate buffer trick lets one restore the console exactly as it
|
* The alternate buffer trick lets one restore the console exactly as it
|
||||||
* was, once the program is done running.
|
* was, once the program is done running.
|
||||||
*/
|
*/
|
||||||
int ttyenablealtbuf(int ttyfd) { return ttysend(ttyfd, "\e[?1049h"); }
|
int ttyenablealtbuf(int ttyfd) {
|
||||||
|
return ttysend(ttyfd, "\e[?1049h");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asks teletypewriter to restore blinking box thing.
|
* Asks teletypewriter to restore blinking box thing.
|
||||||
*/
|
*/
|
||||||
int ttydisablealtbuf(int ttyfd) { return ttysend(ttyfd, "\e[?1049l"); }
|
int ttydisablealtbuf(int ttyfd) {
|
||||||
|
return ttysend(ttyfd, "\e[?1049l");
|
||||||
|
}
|
||||||
|
|
|
@ -21,9 +21,13 @@
|
||||||
/**
|
/**
|
||||||
* Asks teletypewriter to push current position.
|
* Asks teletypewriter to push current position.
|
||||||
*/
|
*/
|
||||||
int ttysavecursor(int ttyfd) { return ttysend(ttyfd, "\e[s"); }
|
int ttysavecursor(int ttyfd) {
|
||||||
|
return ttysend(ttyfd, "\e[s");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asks teletypewriter to pop previous position.
|
* Asks teletypewriter to pop previous position.
|
||||||
*/
|
*/
|
||||||
int ttyrestorecursor(int ttyfd) { return ttysend(ttyfd, "\e[u"); }
|
int ttyrestorecursor(int ttyfd) {
|
||||||
|
return ttysend(ttyfd, "\e[u");
|
||||||
|
}
|
||||||
|
|
|
@ -39,8 +39,12 @@ static char *setansibgfg(char *p, unsigned bg, unsigned fg) {
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *setbg16_(char *p, struct TtyRgb bg) { return setansibgfg(p, bg.xt, -1u); }
|
char *setbg16_(char *p, struct TtyRgb bg) {
|
||||||
char *setfg16_(char *p, struct TtyRgb fg) { return setansibgfg(p, -1u, fg.xt); }
|
return setansibgfg(p, bg.xt, -1u);
|
||||||
|
}
|
||||||
|
char *setfg16_(char *p, struct TtyRgb fg) {
|
||||||
|
return setansibgfg(p, -1u, fg.xt);
|
||||||
|
}
|
||||||
char *setbgfg16_(char *p, struct TtyRgb bg, struct TtyRgb fg) {
|
char *setbgfg16_(char *p, struct TtyRgb bg, struct TtyRgb fg) {
|
||||||
return setansibgfg(p, bg.xt, fg.xt);
|
return setansibgfg(p, bg.xt, fg.xt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "libc/stdio/stdio.h"
|
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
#include "libc/stdio/stdio.h"
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
fprintf(stderr, "%s (%s)\n", argv[0], GetProgramExecutableName());
|
fprintf(stderr, "%s (%s)\n", argv[0], GetProgramExecutableName());
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
│ • http://creativecommons.org/publicdomain/zero/1.0/ │
|
│ • http://creativecommons.org/publicdomain/zero/1.0/ │
|
||||||
╚─────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────*/
|
||||||
#endif
|
#endif
|
||||||
#include "libc/runtime/runtime.h"
|
#include "third_party/hiredis/hiredis.h"
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "third_party/hiredis/hiredis.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fileoverview Demo of using hiredis to connect to a Redis server
|
* @fileoverview Demo of using hiredis to connect to a Redis server
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
#define PARSE_AND_PRINT(type, scan_fmt, print_fmt, str) \
|
#define PARSE_AND_PRINT(type, scan_fmt, print_fmt, str) \
|
||||||
do { \
|
do { \
|
||||||
type val; int ret; \
|
type val; \
|
||||||
|
int ret; \
|
||||||
ret = sscanf(str, scan_fmt, &val); \
|
ret = sscanf(str, scan_fmt, &val); \
|
||||||
printf("\"%s\" => " print_fmt " = %d\n", str, val, ret); \
|
printf("\"%s\" => " print_fmt " = %d\n", str, val, ret); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
int main()
|
int main() {
|
||||||
{
|
|
||||||
PARSE_AND_PRINT(float, "%f", "%f", "0.3715");
|
PARSE_AND_PRINT(float, "%f", "%f", "0.3715");
|
||||||
PARSE_AND_PRINT(float, "%f", "%f", ".3715");
|
PARSE_AND_PRINT(float, "%f", "%f", ".3715");
|
||||||
PARSE_AND_PRINT(float, "%f", "%f", "3715");
|
PARSE_AND_PRINT(float, "%f", "%f", "3715");
|
||||||
|
|
|
@ -2601,7 +2601,8 @@ static int shlex() {
|
||||||
case 'y':
|
case 'y':
|
||||||
case 'z':
|
case 'z':
|
||||||
p = buf;
|
p = buf;
|
||||||
while (buf++, is_in_name(*buf));
|
while (buf++, is_in_name(*buf))
|
||||||
|
;
|
||||||
yylval.name = stalloc(buf - p + 1);
|
yylval.name = stalloc(buf - p + 1);
|
||||||
*(char *)mempcpy(yylval.name, p, buf - p) = 0;
|
*(char *)mempcpy(yylval.name, p, buf - p) = 0;
|
||||||
value = ARITH_VAR;
|
value = ARITH_VAR;
|
||||||
|
@ -7757,7 +7758,8 @@ static int ulimitcmd(int argc, char **argv) {
|
||||||
what = optc;
|
what = optc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (l = limits; l->option != what; l++);
|
for (l = limits; l->option != what; l++)
|
||||||
|
;
|
||||||
set = *argptr ? 1 : 0;
|
set = *argptr ? 1 : 0;
|
||||||
if (set) {
|
if (set) {
|
||||||
char *p = *argptr;
|
char *p = *argptr;
|
||||||
|
@ -7986,7 +7988,8 @@ static void setparam(char **argv) {
|
||||||
char **newparam;
|
char **newparam;
|
||||||
char **ap;
|
char **ap;
|
||||||
int nparam;
|
int nparam;
|
||||||
for (nparam = 0; argv[nparam]; nparam++);
|
for (nparam = 0; argv[nparam]; nparam++)
|
||||||
|
;
|
||||||
ap = newparam = ckmalloc((nparam + 1) * sizeof *ap);
|
ap = newparam = ckmalloc((nparam + 1) * sizeof *ap);
|
||||||
while (*argv) {
|
while (*argv) {
|
||||||
*ap++ = savestr(*argv++);
|
*ap++ = savestr(*argv++);
|
||||||
|
@ -8664,7 +8667,8 @@ static void parsefname(void) {
|
||||||
if (heredoclist == NULL)
|
if (heredoclist == NULL)
|
||||||
heredoclist = here;
|
heredoclist = here;
|
||||||
else {
|
else {
|
||||||
for (p = heredoclist; p->next; p = p->next);
|
for (p = heredoclist; p->next; p = p->next)
|
||||||
|
;
|
||||||
p->next = here;
|
p->next = here;
|
||||||
}
|
}
|
||||||
} else if (n->type == NTOFD || n->type == NFROMFD) {
|
} else if (n->type == NTOFD || n->type == NFROMFD) {
|
||||||
|
@ -8788,7 +8792,8 @@ static int xxreadtoken(void) {
|
||||||
case '\t':
|
case '\t':
|
||||||
continue;
|
continue;
|
||||||
case '#':
|
case '#':
|
||||||
while ((c = pgetc()) != '\n' && c != PEOF);
|
while ((c = pgetc()) != '\n' && c != PEOF)
|
||||||
|
;
|
||||||
pungetc();
|
pungetc();
|
||||||
continue;
|
continue;
|
||||||
case '\n':
|
case '\n':
|
||||||
|
|
|
@ -9,11 +9,11 @@
|
||||||
#endif
|
#endif
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
#include "libc/stdio/ftw.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/exit.h"
|
#include "libc/sysv/consts/exit.h"
|
||||||
#include "libc/sysv/consts/s.h"
|
#include "libc/sysv/consts/s.h"
|
||||||
#include "libc/stdio/ftw.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fileoverview Directory walker example.
|
* @fileoverview Directory walker example.
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
#include "libc/dce.h"
|
#include "libc/dce.h"
|
||||||
#include "libc/intrin/strace.internal.h"
|
#include "libc/intrin/strace.internal.h"
|
||||||
#include "libc/intrin/weaken.h"
|
#include "libc/intrin/weaken.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
|
||||||
#include "libc/runtime/zipos.internal.h"
|
#include "libc/runtime/zipos.internal.h"
|
||||||
|
#include "libc/sysv/errfuns.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Duplicates file descriptor.
|
* Duplicates file descriptor.
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/proc/execve.internal.h"
|
#include "libc/proc/execve.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if executable image is supported by APE Loader.
|
* Returns true if executable image is supported by APE Loader.
|
||||||
|
|
|
@ -24,8 +24,8 @@
|
||||||
#include "libc/intrin/describeflags.internal.h"
|
#include "libc/intrin/describeflags.internal.h"
|
||||||
#include "libc/intrin/strace.internal.h"
|
#include "libc/intrin/strace.internal.h"
|
||||||
#include "libc/intrin/weaken.h"
|
#include "libc/intrin/weaken.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
|
||||||
#include "libc/runtime/zipos.internal.h"
|
#include "libc/runtime/zipos.internal.h"
|
||||||
|
#include "libc/sysv/errfuns.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates hard filesystem link.
|
* Creates hard filesystem link.
|
||||||
|
|
|
@ -24,9 +24,9 @@
|
||||||
#include "libc/intrin/describeflags.internal.h"
|
#include "libc/intrin/describeflags.internal.h"
|
||||||
#include "libc/intrin/strace.internal.h"
|
#include "libc/intrin/strace.internal.h"
|
||||||
#include "libc/intrin/weaken.h"
|
#include "libc/intrin/weaken.h"
|
||||||
|
#include "libc/runtime/zipos.internal.h"
|
||||||
#include "libc/sysv/consts/at.h"
|
#include "libc/sysv/consts/at.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
#include "libc/sysv/errfuns.h"
|
||||||
#include "libc/runtime/zipos.internal.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates directory a.k.a. folder.
|
* Creates directory a.k.a. folder.
|
||||||
|
|
|
@ -27,13 +27,13 @@
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/pc.internal.h"
|
#include "libc/runtime/pc.internal.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
#include "libc/runtime/zipos.internal.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/at.h"
|
#include "libc/sysv/consts/at.h"
|
||||||
#include "libc/sysv/consts/map.h"
|
#include "libc/sysv/consts/map.h"
|
||||||
#include "libc/sysv/consts/o.h"
|
#include "libc/sysv/consts/o.h"
|
||||||
#include "libc/sysv/consts/prot.h"
|
#include "libc/sysv/consts/prot.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
#include "libc/sysv/errfuns.h"
|
||||||
#include "libc/runtime/zipos.internal.h"
|
|
||||||
|
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
|
|
||||||
|
|
|
@ -24,9 +24,9 @@
|
||||||
#include "libc/intrin/describeflags.internal.h"
|
#include "libc/intrin/describeflags.internal.h"
|
||||||
#include "libc/intrin/strace.internal.h"
|
#include "libc/intrin/strace.internal.h"
|
||||||
#include "libc/intrin/weaken.h"
|
#include "libc/intrin/weaken.h"
|
||||||
|
#include "libc/runtime/zipos.internal.h"
|
||||||
#include "libc/sysv/consts/at.h"
|
#include "libc/sysv/consts/at.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
#include "libc/sysv/errfuns.h"
|
||||||
#include "libc/runtime/zipos.internal.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renames files relative to directories.
|
* Renames files relative to directories.
|
||||||
|
|
|
@ -17,10 +17,10 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/stdio/sysparam.h"
|
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/paths.h"
|
#include "libc/paths.h"
|
||||||
|
#include "libc/stdio/sysparam.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns name of terminal.
|
* Returns name of terminal.
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
#include "libc/intrin/describeflags.internal.h"
|
#include "libc/intrin/describeflags.internal.h"
|
||||||
#include "libc/intrin/strace.internal.h"
|
#include "libc/intrin/strace.internal.h"
|
||||||
#include "libc/intrin/weaken.h"
|
#include "libc/intrin/weaken.h"
|
||||||
|
#include "libc/runtime/zipos.internal.h"
|
||||||
#include "libc/sysv/consts/s.h"
|
#include "libc/sysv/consts/s.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
#include "libc/sysv/errfuns.h"
|
||||||
#include "libc/runtime/zipos.internal.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes inode and maybe the file too.
|
* Deletes inode and maybe the file too.
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
#include "libc/elf/struct/phdr.h"
|
#include "libc/elf/struct/phdr.h"
|
||||||
#include "libc/elf/struct/shdr.h"
|
#include "libc/elf/struct/shdr.h"
|
||||||
#include "libc/elf/struct/sym.h"
|
#include "libc/elf/struct/sym.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/limits.h"
|
#include "libc/limits.h"
|
||||||
#include "libc/log/libfatal.internal.h"
|
#include "libc/log/libfatal.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
COSMOPOLITAN_C_START_
|
COSMOPOLITAN_C_START_
|
||||||
|
|
||||||
#define GetStr(tab, rva) ((char *)(tab) + (rva))
|
#define GetStr(tab, rva) ((char *)(tab) + (rva))
|
||||||
|
@ -30,7 +30,8 @@ static inline char *GetStrtab(const Elf64_Ehdr *e, size_t *n) {
|
||||||
if (shdr->sh_type == SHT_STRTAB) {
|
if (shdr->sh_type == SHT_STRTAB) {
|
||||||
name = GetSectionName(e, GetShdr(e, i));
|
name = GetSectionName(e, GetShdr(e, i));
|
||||||
if (name && READ64LE(name) == READ64LE(".strtab")) {
|
if (name && READ64LE(name) == READ64LE(".strtab")) {
|
||||||
if (n) *n = shdr->sh_size;
|
if (n)
|
||||||
|
*n = shdr->sh_size;
|
||||||
return GetSection(e, shdr);
|
return GetSection(e, shdr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +45,8 @@ static inline Elf64_Sym *GetSymtab(const Elf64_Ehdr *e, Elf64_Xword *n) {
|
||||||
for (i = e->e_shnum; i-- > 0;) {
|
for (i = e->e_shnum; i-- > 0;) {
|
||||||
shdr = GetShdr(e, i);
|
shdr = GetShdr(e, i);
|
||||||
if (shdr->sh_type == SHT_SYMTAB) {
|
if (shdr->sh_type == SHT_SYMTAB) {
|
||||||
if (n) *n = shdr->sh_size / sizeof(Elf64_Sym);
|
if (n)
|
||||||
|
*n = shdr->sh_size / sizeof(Elf64_Sym);
|
||||||
return GetSection(e, shdr);
|
return GetSection(e, shdr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,14 +62,19 @@ static inline void GetImageRange(const Elf64_Ehdr *elf, intptr_t *x,
|
||||||
end = 0;
|
end = 0;
|
||||||
for (i = 0; i < elf->e_phnum; ++i) {
|
for (i = 0; i < elf->e_phnum; ++i) {
|
||||||
phdr = GetPhdr(elf, i);
|
phdr = GetPhdr(elf, i);
|
||||||
if (phdr->p_type != PT_LOAD) continue;
|
if (phdr->p_type != PT_LOAD)
|
||||||
|
continue;
|
||||||
pstart = phdr->p_vaddr;
|
pstart = phdr->p_vaddr;
|
||||||
pend = phdr->p_vaddr + phdr->p_memsz;
|
pend = phdr->p_vaddr + phdr->p_memsz;
|
||||||
if (pstart < start) start = pstart;
|
if (pstart < start)
|
||||||
if (pend > end) end = pend;
|
start = pstart;
|
||||||
|
if (pend > end)
|
||||||
|
end = pend;
|
||||||
}
|
}
|
||||||
if (x) *x = start;
|
if (x)
|
||||||
if (y) *y = end;
|
*x = start;
|
||||||
|
if (y)
|
||||||
|
*y = end;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool GetElfSymbolValue(const Elf64_Ehdr *ehdr, const char *name,
|
static inline bool GetElfSymbolValue(const Elf64_Ehdr *ehdr, const char *name,
|
||||||
|
@ -75,8 +82,10 @@ static inline bool GetElfSymbolValue(const Elf64_Ehdr *ehdr, const char *name,
|
||||||
Elf64_Xword i, n;
|
Elf64_Xword i, n;
|
||||||
const char *stab;
|
const char *stab;
|
||||||
const Elf64_Sym *st;
|
const Elf64_Sym *st;
|
||||||
if (!(stab = GetStrtab(ehdr, 0))) return false;
|
if (!(stab = GetStrtab(ehdr, 0)))
|
||||||
if (!(st = GetSymtab(ehdr, &n))) return false;
|
return false;
|
||||||
|
if (!(st = GetSymtab(ehdr, &n)))
|
||||||
|
return false;
|
||||||
for (i = 0; i < n; ++i) {
|
for (i = 0; i < n; ++i) {
|
||||||
if (!__strcmp(GetStr(stab, st[i].st_name), name)) {
|
if (!__strcmp(GetStr(stab, st[i].st_name), name)) {
|
||||||
*res = st[i].st_value;
|
*res = st[i].st_value;
|
||||||
|
|
|
@ -4,12 +4,15 @@
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
#define CONSUME_SPACES(t, s, c) \
|
#define CONSUME_SPACES(t, s, c) \
|
||||||
if (endptr) *endptr = (t *)(s); \
|
if (endptr) \
|
||||||
while (c == ' ' || c == '\t') c = *++s
|
*endptr = (t *)(s); \
|
||||||
|
while (c == ' ' || c == '\t') \
|
||||||
|
c = *++s
|
||||||
|
|
||||||
#define GET_SIGN(s, c, d) \
|
#define GET_SIGN(s, c, d) \
|
||||||
d = c == '-' ? -1 : 1; \
|
d = c == '-' ? -1 : 1; \
|
||||||
if (c == '-' || c == '+') c = *++s
|
if (c == '-' || c == '+') \
|
||||||
|
c = *++s
|
||||||
|
|
||||||
#define GET_RADIX(s, c, r) \
|
#define GET_RADIX(s, c, r) \
|
||||||
if (!r) { \
|
if (!r) { \
|
||||||
|
|
|
@ -33,19 +33,22 @@ static inline struct Dll *dll_last(struct Dll *list) {
|
||||||
|
|
||||||
static inline struct Dll *dll_first(struct Dll *list) {
|
static inline struct Dll *dll_first(struct Dll *list) {
|
||||||
struct Dll *first = 0;
|
struct Dll *first = 0;
|
||||||
if (list) first = list->next;
|
if (list)
|
||||||
|
first = list->next;
|
||||||
return first;
|
return first;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct Dll *dll_next(struct Dll *list, struct Dll *e) {
|
static inline struct Dll *dll_next(struct Dll *list, struct Dll *e) {
|
||||||
struct Dll *next = 0;
|
struct Dll *next = 0;
|
||||||
if (e != list) next = e->next;
|
if (e != list)
|
||||||
|
next = e->next;
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct Dll *dll_prev(struct Dll *list, struct Dll *e) {
|
static inline struct Dll *dll_prev(struct Dll *list, struct Dll *e) {
|
||||||
struct Dll *prev = 0;
|
struct Dll *prev = 0;
|
||||||
if (e != list->next) prev = e->prev;
|
if (e != list->next)
|
||||||
|
prev = e->prev;
|
||||||
return prev;
|
return prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,8 @@ void uvprintf(const char *, va_list) libcesque;
|
||||||
do { \
|
do { \
|
||||||
kprintf("\r\e[30;101mfatal: %s:%d: " FMT "\e[0m\n", __FILE__, __LINE__, \
|
kprintf("\r\e[30;101mfatal: %s:%d: " FMT "\e[0m\n", __FILE__, __LINE__, \
|
||||||
##__VA_ARGS__); \
|
##__VA_ARGS__); \
|
||||||
for (;;) asm volatile("cli\n\thlt"); \
|
for (;;) \
|
||||||
|
asm volatile("cli\n\thlt"); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
forceinline void repmovsb(void **dest, const void **src, size_t cx) {
|
forceinline void repmovsb(void **dest, const void **src, size_t cx) {
|
||||||
char *di = (char *)*dest;
|
char *di = (char *)*dest;
|
||||||
const char *si = (const char *)*src;
|
const char *si = (const char *)*src;
|
||||||
while (cx) *di++ = *si++, cx--;
|
while (cx)
|
||||||
|
*di++ = *si++, cx--;
|
||||||
*dest = di, *src = si;
|
*dest = di, *src = si;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
forceinline void *repstosb(void *dest, unsigned char al, size_t cx) {
|
forceinline void *repstosb(void *dest, unsigned char al, size_t cx) {
|
||||||
unsigned char *di = (unsigned char *)dest;
|
unsigned char *di = (unsigned char *)dest;
|
||||||
while (cx) *di++ = al, cx--;
|
while (cx)
|
||||||
|
*di++ = al, cx--;
|
||||||
return di;
|
return di;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,8 @@ COSMOPOLITAN_C_START_
|
||||||
({ \
|
({ \
|
||||||
autotype(a) FirstNonNullA = (a); \
|
autotype(a) FirstNonNullA = (a); \
|
||||||
autotype(a) FirstNonNullB = (b); \
|
autotype(a) FirstNonNullB = (b); \
|
||||||
if (!FirstNonNullA && !FirstNonNullB) abort(); \
|
if (!FirstNonNullA && !FirstNonNullB) \
|
||||||
|
abort(); \
|
||||||
FirstNonNullA ? FirstNonNullA : FirstNonNullB; \
|
FirstNonNullA ? FirstNonNullA : FirstNonNullB; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
|
#include "libc/errno.h"
|
||||||
#include "libc/intrin/kprintf.h"
|
#include "libc/intrin/kprintf.h"
|
||||||
#include "libc/runtime/internal.h"
|
#include "libc/runtime/internal.h"
|
||||||
#include "libc/errno.h"
|
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
|
||||||
__attribute__((__weak__)) void __stack_chk_fail(void) {
|
__attribute__((__weak__)) void __stack_chk_fail(void) {
|
||||||
|
|
|
@ -62,8 +62,8 @@ textstartup void _AcpiFadtInit(void) {
|
||||||
_Static_assert(offsetof(AcpiTableFadt, Dsdt) == 40);
|
_Static_assert(offsetof(AcpiTableFadt, Dsdt) == 40);
|
||||||
_Static_assert(offsetof(AcpiTableFadt, BootFlags) == 109);
|
_Static_assert(offsetof(AcpiTableFadt, BootFlags) == 109);
|
||||||
_Static_assert(offsetof(AcpiTableFadt, XDsdt) == 140);
|
_Static_assert(offsetof(AcpiTableFadt, XDsdt) == 140);
|
||||||
if (length >= offsetof(AcpiTableFadt, BootFlags) + sizeof(fadt->BootFlags))
|
if (length >=
|
||||||
{
|
offsetof(AcpiTableFadt, BootFlags) + sizeof(fadt->BootFlags)) {
|
||||||
_AcpiBootFlags = flags = fadt->BootFlags;
|
_AcpiBootFlags = flags = fadt->BootFlags;
|
||||||
KINFOF("FADT: boot flags %#x", (unsigned)flags);
|
KINFOF("FADT: boot flags %#x", (unsigned)flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/dce.h"
|
#include "libc/dce.h"
|
||||||
#include "libc/intrin/atomic.h"
|
#include "libc/intrin/atomic.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/intrin/directmap.internal.h"
|
#include "libc/intrin/directmap.internal.h"
|
||||||
#include "libc/intrin/kprintf.h"
|
#include "libc/intrin/kprintf.h"
|
||||||
#include "libc/irq/acpi.internal.h"
|
#include "libc/irq/acpi.internal.h"
|
||||||
|
@ -34,6 +33,7 @@
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
#include "libc/nt/efi.h"
|
#include "libc/nt/efi.h"
|
||||||
#include "libc/runtime/pc.internal.h"
|
#include "libc/runtime/pc.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/map.h"
|
#include "libc/sysv/consts/map.h"
|
||||||
#include "libc/sysv/consts/prot.h"
|
#include "libc/sysv/consts/prot.h"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_
|
#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_
|
||||||
#define COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_
|
#define COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_
|
||||||
#include "third_party/libcxxabi/include/cxxabi.h"
|
|
||||||
#include "libc/cxxabi.h"
|
#include "libc/cxxabi.h"
|
||||||
|
#include "third_party/libcxxabi/include/cxxabi.h"
|
||||||
#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_ */
|
#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CXXABI_H_ */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef _FTW_H
|
#ifndef _FTW_H
|
||||||
#define _FTW_H
|
#define _FTW_H
|
||||||
#include "libc/calls/weirdtypes.h"
|
#include "libc/calls/weirdtypes.h"
|
||||||
#include "libc/sysv/consts/s.h"
|
|
||||||
#include "libc/stdio/ftw.h"
|
#include "libc/stdio/ftw.h"
|
||||||
|
#include "libc/sysv/consts/s.h"
|
||||||
#endif /* _FTW_H */
|
#endif /* _FTW_H */
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SYS_PARAM_H_
|
#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SYS_PARAM_H_
|
||||||
#define COSMOPOLITAN_LIBC_ISYSTEM_SYS_PARAM_H_
|
#define COSMOPOLITAN_LIBC_ISYSTEM_SYS_PARAM_H_
|
||||||
#include "libc/intrin/newbie.h"
|
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/calls/struct/rlimit.h"
|
#include "libc/calls/struct/rlimit.h"
|
||||||
#include "libc/calls/struct/rusage.h"
|
#include "libc/calls/struct/rusage.h"
|
||||||
#include "libc/stdio/sysparam.h"
|
|
||||||
#include "libc/calls/weirdtypes.h"
|
#include "libc/calls/weirdtypes.h"
|
||||||
|
#include "libc/intrin/newbie.h"
|
||||||
#include "libc/limits.h"
|
#include "libc/limits.h"
|
||||||
|
#include "libc/stdio/sysparam.h"
|
||||||
#include "libc/sysv/consts/endian.h"
|
#include "libc/sysv/consts/endian.h"
|
||||||
#include "libc/sysv/consts/prio.h"
|
#include "libc/sysv/consts/prio.h"
|
||||||
#include "libc/sysv/consts/rlim.h"
|
#include "libc/sysv/consts/rlim.h"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/calls/struct/sigaction.h"
|
#include "libc/calls/struct/sigaction.h"
|
||||||
#include "libc/calls/struct/siginfo.h"
|
#include "libc/calls/struct/siginfo.h"
|
||||||
#include "libc/sysv/consts/sig.h"
|
|
||||||
#include "libc/sysv/consts/sicode.h"
|
#include "libc/sysv/consts/sicode.h"
|
||||||
|
#include "libc/sysv/consts/sig.h"
|
||||||
#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SYS_SIGNAL_H_ */
|
#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SYS_SIGNAL_H_ */
|
||||||
|
|
|
@ -8,157 +8,157 @@
|
||||||
/* from https://en.cppreference.com/w/c/numeric/tgmath */
|
/* from https://en.cppreference.com/w/c/numeric/tgmath */
|
||||||
|
|
||||||
#define fabs(x) \
|
#define fabs(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: fabsf, default \
|
float: fabsf, \
|
||||||
: fabs, long double \
|
default: fabs, \
|
||||||
: fabsl, complex float \
|
long double: fabsl, \
|
||||||
: cabsf, complex double \
|
complex float: cabsf, \
|
||||||
: cabs, complex long double \
|
complex double: cabs, \
|
||||||
: cabsl)(x)
|
complex long double: cabsl)(x)
|
||||||
|
|
||||||
#define exp(x) \
|
#define exp(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: expf, default \
|
float: expf, \
|
||||||
: exp, long double \
|
default: exp, \
|
||||||
: expl, complex float \
|
long double: expl, \
|
||||||
: cexpf, complex double \
|
complex float: cexpf, \
|
||||||
: cexp, complex long double \
|
complex double: cexp, \
|
||||||
: cexpl)(x)
|
complex long double: cexpl)(x)
|
||||||
|
|
||||||
#define log(x) \
|
#define log(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: logf, default \
|
float: logf, \
|
||||||
: log, long double \
|
default: log, \
|
||||||
: logl, complex float \
|
long double: logl, \
|
||||||
: clogf, complex double \
|
complex float: clogf, \
|
||||||
: clog, complex long double \
|
complex double: clog, \
|
||||||
: clogl)(x)
|
complex long double: clogl)(x)
|
||||||
|
|
||||||
#define pow(x, y) \
|
#define pow(x, y) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: powf, default \
|
float: powf, \
|
||||||
: pow, long double \
|
default: pow, \
|
||||||
: powl, complex float \
|
long double: powl, \
|
||||||
: cpowf, complex double \
|
complex float: cpowf, \
|
||||||
: cpow, complex long double \
|
complex double: cpow, \
|
||||||
: cpowl)(x, y)
|
complex long double: cpowl)(x, y)
|
||||||
|
|
||||||
#define sqrt(x) \
|
#define sqrt(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: sqrtf, default \
|
float: sqrtf, \
|
||||||
: sqrt, long double \
|
default: sqrt, \
|
||||||
: sqrtl, complex float \
|
long double: sqrtl, \
|
||||||
: csqrtf, complex double \
|
complex float: csqrtf, \
|
||||||
: csqrt, complex long double \
|
complex double: csqrt, \
|
||||||
: csqrtl)(x)
|
complex long double: csqrtl)(x)
|
||||||
|
|
||||||
#define sin(x) \
|
#define sin(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: sinf, default \
|
float: sinf, \
|
||||||
: sin, long double \
|
default: sin, \
|
||||||
: sinl, complex float \
|
long double: sinl, \
|
||||||
: csinf, complex double \
|
complex float: csinf, \
|
||||||
: csin, complex long double \
|
complex double: csin, \
|
||||||
: csinl)(x)
|
complex long double: csinl)(x)
|
||||||
|
|
||||||
#define cos(x) \
|
#define cos(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: cosf, default \
|
float: cosf, \
|
||||||
: cos, long double \
|
default: cos, \
|
||||||
: cosl, complex float \
|
long double: cosl, \
|
||||||
: ccosf, complex double \
|
complex float: ccosf, \
|
||||||
: ccos, complex long double \
|
complex double: ccos, \
|
||||||
: ccosl)(x)
|
complex long double: ccosl)(x)
|
||||||
|
|
||||||
#define tan(x) \
|
#define tan(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: tanf, default \
|
float: tanf, \
|
||||||
: tan, long double \
|
default: tan, \
|
||||||
: tanl, complex float \
|
long double: tanl, \
|
||||||
: ctanf, complex double \
|
complex float: ctanf, \
|
||||||
: ctan, complex long double \
|
complex double: ctan, \
|
||||||
: ctanl)(x)
|
complex long double: ctanl)(x)
|
||||||
|
|
||||||
#define asin(x) \
|
#define asin(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: asinf, default \
|
float: asinf, \
|
||||||
: asin, long double \
|
default: asin, \
|
||||||
: asinl, complex float \
|
long double: asinl, \
|
||||||
: casinf, complex double \
|
complex float: casinf, \
|
||||||
: casin, complex long double \
|
complex double: casin, \
|
||||||
: casinl)(x)
|
complex long double: casinl)(x)
|
||||||
|
|
||||||
#define acos(x) \
|
#define acos(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: acosf, default \
|
float: acosf, \
|
||||||
: acos, long double \
|
default: acos, \
|
||||||
: acosl, complex float \
|
long double: acosl, \
|
||||||
: cacosf, complex double \
|
complex float: cacosf, \
|
||||||
: cacos, complex long double \
|
complex double: cacos, \
|
||||||
: cacosl)(x)
|
complex long double: cacosl)(x)
|
||||||
|
|
||||||
#define atan(x) \
|
#define atan(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: atanf, default \
|
float: atanf, \
|
||||||
: atan, long double \
|
default: atan, \
|
||||||
: atanl, complex float \
|
long double: atanl, \
|
||||||
: catanf, complex double \
|
complex float: catanf, \
|
||||||
: catan, complex long double \
|
complex double: catan, \
|
||||||
: catanl)(x)
|
complex long double: catanl)(x)
|
||||||
|
|
||||||
#define sinh(x) \
|
#define sinh(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: sinhf, default \
|
float: sinhf, \
|
||||||
: sinh, long double \
|
default: sinh, \
|
||||||
: sinhl, complex float \
|
long double: sinhl, \
|
||||||
: csinhf, complex double \
|
complex float: csinhf, \
|
||||||
: csinh, complex long double \
|
complex double: csinh, \
|
||||||
: csinhl)(x)
|
complex long double: csinhl)(x)
|
||||||
|
|
||||||
#define cosh(x) \
|
#define cosh(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: coshf, default \
|
float: coshf, \
|
||||||
: cosh, long double \
|
default: cosh, \
|
||||||
: coshl, complex float \
|
long double: coshl, \
|
||||||
: ccoshf, complex double \
|
complex float: ccoshf, \
|
||||||
: ccosh, complex long double \
|
complex double: ccosh, \
|
||||||
: ccoshl)(x)
|
complex long double: ccoshl)(x)
|
||||||
|
|
||||||
#define tanh(x) \
|
#define tanh(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: tanhf, default \
|
float: tanhf, \
|
||||||
: tanh, long double \
|
default: tanh, \
|
||||||
: tanhl, complex float \
|
long double: tanhl, \
|
||||||
: ctanhf, complex double \
|
complex float: ctanhf, \
|
||||||
: ctanh, complex long double \
|
complex double: ctanh, \
|
||||||
: ctanhl)(x)
|
complex long double: ctanhl)(x)
|
||||||
|
|
||||||
#define asinh(x) \
|
#define asinh(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: asinhf, default \
|
float: asinhf, \
|
||||||
: asinh, long double \
|
default: asinh, \
|
||||||
: asinhl, complex float \
|
long double: asinhl, \
|
||||||
: casinhf, complex double \
|
complex float: casinhf, \
|
||||||
: casinh, complex long double \
|
complex double: casinh, \
|
||||||
: casinhl)(x)
|
complex long double: casinhl)(x)
|
||||||
|
|
||||||
#define acosh(x) \
|
#define acosh(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: acoshf, default \
|
float: acoshf, \
|
||||||
: acosh, long double \
|
default: acosh, \
|
||||||
: acoshl, complex float \
|
long double: acoshl, \
|
||||||
: cacoshf, complex double \
|
complex float: cacoshf, \
|
||||||
: cacosh, complex long double \
|
complex double: cacosh, \
|
||||||
: cacoshl)(x)
|
complex long double: cacoshl)(x)
|
||||||
|
|
||||||
#define atanh(x) \
|
#define atanh(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: atanhf, default \
|
float: atanhf, \
|
||||||
: atanh, long double \
|
default: atanh, \
|
||||||
: atanhl, complex float \
|
long double: atanhl, \
|
||||||
: catanhf, complex double \
|
complex float: catanhf, \
|
||||||
: catanh, complex long double \
|
complex double: catanh, \
|
||||||
: catanhl)(x)
|
complex long double: catanhl)(x)
|
||||||
|
|
||||||
#define atan2(x, y) \
|
#define atan2(x, y) \
|
||||||
_Generic((x), float: atan2f, default: atan2, long double: atan2l)(x, y)
|
_Generic((x), float: atan2f, default: atan2, long double: atan2l)(x, y)
|
||||||
|
@ -170,10 +170,8 @@
|
||||||
_Generic((x), float: ceilf, default: ceil, long double: ceill)(x)
|
_Generic((x), float: ceilf, default: ceil, long double: ceill)(x)
|
||||||
|
|
||||||
#define copysign(x, y) \
|
#define copysign(x, y) \
|
||||||
_Generic((x), float \
|
_Generic((x), float: copysignf, default: copysign, long double: copysignl)( \
|
||||||
: copysignf, default \
|
x, y)
|
||||||
: copysign, long double \
|
|
||||||
: copysignl)(x, y)
|
|
||||||
|
|
||||||
#define erf(x) _Generic((x), float: erff, default: erf, long double: erfl)(x)
|
#define erf(x) _Generic((x), float: erff, default: erf, long double: erfl)(x)
|
||||||
|
|
||||||
|
@ -244,34 +242,31 @@
|
||||||
_Generic((x), float: lroundf, default: lround, long double: lroundl)(x)
|
_Generic((x), float: lroundf, default: lround, long double: lroundl)(x)
|
||||||
|
|
||||||
#define nearbyint(x) \
|
#define nearbyint(x) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: nearbyintf, default \
|
float: nearbyintf, \
|
||||||
: nearbyint, long double \
|
default: nearbyint, \
|
||||||
: nearbyintl)(x)
|
long double: nearbyintl)(x)
|
||||||
|
|
||||||
#define nextafter(x, y) \
|
#define nextafter(x, y) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: nextafterf, default \
|
float: nextafterf, \
|
||||||
: nextafter, long double \
|
default: nextafter, \
|
||||||
: nextafterl)(x, y)
|
long double: nextafterl)(x, y)
|
||||||
|
|
||||||
#define nexttoward(x, y) \
|
#define nexttoward(x, y) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: nexttowardf, default \
|
float: nexttowardf, \
|
||||||
: nexttoward, long double \
|
default: nexttoward, \
|
||||||
: nexttowardl)(x, y)
|
long double: nexttowardl)(x, y)
|
||||||
|
|
||||||
#define remainder(x, y) \
|
#define remainder(x, y) \
|
||||||
_Generic((x), float \
|
_Generic((x), \
|
||||||
: remainderf, default \
|
float: remainderf, \
|
||||||
: remainder, long double \
|
default: remainder, \
|
||||||
: remainderl)(x, y)
|
long double: remainderl)(x, y)
|
||||||
|
|
||||||
#define remquo(x, y, z) \
|
#define remquo(x, y, z) \
|
||||||
_Generic((x), float \
|
_Generic((x), float: remquof, default: remquo, long double: remquol)(x, y, z)
|
||||||
: remquof, default \
|
|
||||||
: remquo, long double \
|
|
||||||
: remquol)(x, y, z)
|
|
||||||
|
|
||||||
#define rint(x) \
|
#define rint(x) \
|
||||||
_Generic((x), float: rintf, default: rint, long double: rintl)(x)
|
_Generic((x), float: rintf, default: rint, long double: rintl)(x)
|
||||||
|
@ -280,10 +275,7 @@
|
||||||
_Generic((x), float: roundf, default: round, long double: roundl)(x)
|
_Generic((x), float: roundf, default: round, long double: roundl)(x)
|
||||||
|
|
||||||
#define scalbln(x, y) \
|
#define scalbln(x, y) \
|
||||||
_Generic((x), float \
|
_Generic((x), float: scalblnf, default: scalbln, long double: scalblnl)(x, y)
|
||||||
: scalblnf, default \
|
|
||||||
: scalbln, long double \
|
|
||||||
: scalblnl)(x, y)
|
|
||||||
|
|
||||||
#define scalbn(x, y) \
|
#define scalbn(x, y) \
|
||||||
_Generic((x), float: scalbnf, default: scalbn, long double: scalbnl)(x, y)
|
_Generic((x), float: scalbnf, default: scalbn, long double: scalbnl)(x, y)
|
||||||
|
@ -295,36 +287,36 @@
|
||||||
_Generic((x), float: truncf, default: trunc, long double: truncl)(x)
|
_Generic((x), float: truncf, default: trunc, long double: truncl)(x)
|
||||||
|
|
||||||
#define carg(x) \
|
#define carg(x) \
|
||||||
_Generic((x), complex float \
|
_Generic((x), \
|
||||||
: cargf, default \
|
complex float: cargf, \
|
||||||
: carg, complex long double \
|
default: carg, \
|
||||||
: cargl)(x)
|
complex long double: cargl)(x)
|
||||||
|
|
||||||
#define conj(x) \
|
#define conj(x) \
|
||||||
_Generic((x), complex float \
|
_Generic((x), \
|
||||||
: conjf, default \
|
complex float: conjf, \
|
||||||
: conj, complex long double \
|
default: conj, \
|
||||||
: conjl)(x)
|
complex long double: conjl)(x)
|
||||||
|
|
||||||
#undef creal
|
#undef creal
|
||||||
#define creal(x) \
|
#define creal(x) \
|
||||||
_Generic((x), complex float \
|
_Generic((x), \
|
||||||
: crealf, default \
|
complex float: crealf, \
|
||||||
: creal, complex long double \
|
default: creal, \
|
||||||
: creall)(x)
|
complex long double: creall)(x)
|
||||||
|
|
||||||
#undef cimag
|
#undef cimag
|
||||||
#define cimag(x) \
|
#define cimag(x) \
|
||||||
_Generic((x), complex float \
|
_Generic((x), \
|
||||||
: cimagf, default \
|
complex float: cimagf, \
|
||||||
: cimag, complex long double \
|
default: cimag, \
|
||||||
: cimagl)(x)
|
complex long double: cimagl)(x)
|
||||||
|
|
||||||
#define cproj(x) \
|
#define cproj(x) \
|
||||||
_Generic((x), complex float \
|
_Generic((x), \
|
||||||
: cprojf, default \
|
complex float: cprojf, \
|
||||||
: cproj, complex long double \
|
default: cproj, \
|
||||||
: cprojl)(x)
|
complex long double: cprojl)(x)
|
||||||
|
|
||||||
#endif /* C11 */
|
#endif /* C11 */
|
||||||
#endif /* _TGMATH_H */
|
#endif /* _TGMATH_H */
|
||||||
|
|
|
@ -18,10 +18,10 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/calls/struct/rusage.h"
|
#include "libc/calls/struct/rusage.h"
|
||||||
#include "libc/fmt/itoa.h"
|
#include "libc/fmt/itoa.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/math.h"
|
#include "libc/math.h"
|
||||||
#include "libc/runtime/clktck.h"
|
#include "libc/runtime/clktck.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/stdio/append.h"
|
#include "libc/stdio/append.h"
|
||||||
|
|
||||||
struct State {
|
struct State {
|
||||||
|
|
|
@ -36,7 +36,8 @@ COSMOPOLITAN_C_START_
|
||||||
: "=r"(Info)); \
|
: "=r"(Info)); \
|
||||||
Cond = (x); \
|
Cond = (x); \
|
||||||
++Info->total; \
|
++Info->total; \
|
||||||
if (Cond) ++Info->taken; \
|
if (Cond) \
|
||||||
|
++Info->taken; \
|
||||||
Cond; \
|
Cond; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,8 @@ int AttachDebugger(intptr_t);
|
||||||
while ((Rc = __inline_wait4(Pid, NULL, WNOHANG, NULL)) == 0) { \
|
while ((Rc = __inline_wait4(Pid, NULL, WNOHANG, NULL)) == 0) { \
|
||||||
if (g_gdbsync) { \
|
if (g_gdbsync) { \
|
||||||
g_gdbsync = 0; \
|
g_gdbsync = 0; \
|
||||||
if (Rc > 0) Pid = 0; \
|
if (Rc > 0) \
|
||||||
|
Pid = 0; \
|
||||||
break; \
|
break; \
|
||||||
} else { \
|
} else { \
|
||||||
sched_yield(); \
|
sched_yield(); \
|
||||||
|
|
|
@ -5,13 +5,15 @@ COSMOPOLITAN_C_START_
|
||||||
|
|
||||||
forceinline unsigned long __strlen(const char *s) {
|
forceinline unsigned long __strlen(const char *s) {
|
||||||
unsigned long n = 0;
|
unsigned long n = 0;
|
||||||
while (*s++) ++n;
|
while (*s++)
|
||||||
|
++n;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline int __strcmp(const char *l, const char *r) {
|
forceinline int __strcmp(const char *l, const char *r) {
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
while (l[i] == r[i] && r[i]) ++i;
|
while (l[i] == r[i] && r[i])
|
||||||
|
++i;
|
||||||
return (l[i] & 255) - (r[i] & 255);
|
return (l[i] & 255) - (r[i] & 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,12 +88,14 @@ forceinline char *__uintcpy(char p[hasatleast 21], uint64_t x) {
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline char *__intcpy(char p[hasatleast 21], int64_t x) {
|
forceinline char *__intcpy(char p[hasatleast 21], int64_t x) {
|
||||||
if (x < 0) *p++ = '-', x = -(uint64_t)x;
|
if (x < 0)
|
||||||
|
*p++ = '-', x = -(uint64_t)x;
|
||||||
return __uintcpy(p, x);
|
return __uintcpy(p, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline char *__fixcpy(char p[hasatleast 17], uint64_t x, uint8_t k) {
|
forceinline char *__fixcpy(char p[hasatleast 17], uint64_t x, uint8_t k) {
|
||||||
while (k > 0) *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15];
|
while (k > 0)
|
||||||
|
*p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15];
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -114,11 +118,15 @@ forceinline char *__strstr(const char *haystack, const char *needle) {
|
||||||
size_t i;
|
size_t i;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
for (i = 0;; ++i) {
|
for (i = 0;; ++i) {
|
||||||
if (!needle[i]) return (/*unconst*/ char *)haystack;
|
if (!needle[i])
|
||||||
if (!haystack[i]) break;
|
return (/*unconst*/ char *)haystack;
|
||||||
if (needle[i] != haystack[i]) break;
|
if (!haystack[i])
|
||||||
|
break;
|
||||||
|
if (needle[i] != haystack[i])
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!*haystack++) break;
|
if (!*haystack++)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -128,35 +136,44 @@ forceinline char16_t *__strstr16(const char16_t *haystack,
|
||||||
size_t i;
|
size_t i;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
for (i = 0;; ++i) {
|
for (i = 0;; ++i) {
|
||||||
if (!needle[i]) return (/*unconst*/ char16_t *)haystack;
|
if (!needle[i])
|
||||||
if (!haystack[i]) break;
|
return (/*unconst*/ char16_t *)haystack;
|
||||||
if (needle[i] != haystack[i]) break;
|
if (!haystack[i])
|
||||||
|
break;
|
||||||
|
if (needle[i] != haystack[i])
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!*haystack++) break;
|
if (!*haystack++)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline const char *__strchr(const char *s, unsigned char c) {
|
forceinline const char *__strchr(const char *s, unsigned char c) {
|
||||||
for (;; ++s) {
|
for (;; ++s) {
|
||||||
if ((*s & 255) == c) return s;
|
if ((*s & 255) == c)
|
||||||
if (!*s) return 0;
|
return s;
|
||||||
|
if (!*s)
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline unsigned long __atoul(const char *p) {
|
forceinline unsigned long __atoul(const char *p) {
|
||||||
int c;
|
int c;
|
||||||
unsigned long x = 0;
|
unsigned long x = 0;
|
||||||
while ('0' <= (c = *p++) && c <= '9') x *= 10, x += c - '0';
|
while ('0' <= (c = *p++) && c <= '9')
|
||||||
|
x *= 10, x += c - '0';
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
forceinline long __atol(const char *p) {
|
forceinline long __atol(const char *p) {
|
||||||
int s = *p;
|
int s = *p;
|
||||||
unsigned long x;
|
unsigned long x;
|
||||||
if (s == '-' || s == '+') ++p;
|
if (s == '-' || s == '+')
|
||||||
|
++p;
|
||||||
x = __atoul(p);
|
x = __atoul(p);
|
||||||
if (s == '-') x = -x;
|
if (s == '-')
|
||||||
|
x = -x;
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,22 +61,26 @@ extern unsigned __log_level; /* log level for runtime check */
|
||||||
// log a message with the specified log level (not checking if LOGGABLE)
|
// log a message with the specified log level (not checking if LOGGABLE)
|
||||||
#define LOGF(LEVEL, FMT, ...) \
|
#define LOGF(LEVEL, FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
flogf(LEVEL, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
flogf(LEVEL, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
// report an error without backtrace and debugger invocation
|
// report an error without backtrace and debugger invocation
|
||||||
#define FATALF(FMT, ...) \
|
#define FATALF(FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
flogf(kLogError, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
flogf(kLogError, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
||||||
_log_exit(1); \
|
_log_exit(1); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define DIEF(FMT, ...) \
|
#define DIEF(FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
ffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
ffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
||||||
__builtin_unreachable(); \
|
__builtin_unreachable(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -105,51 +109,62 @@ extern unsigned __log_level; /* log level for runtime check */
|
||||||
#define VERBOSEF(FMT, ...) \
|
#define VERBOSEF(FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (LOGGABLE(kLogVerbose)) { \
|
if (LOGGABLE(kLogVerbose)) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
fverbosef(kLogVerbose, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
fverbosef(kLogVerbose, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define DEBUGF(FMT, ...) \
|
#define DEBUGF(FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (_LOG_UNLIKELY(LOGGABLE(kLogDebug))) { \
|
if (_LOG_UNLIKELY(LOGGABLE(kLogDebug))) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
fdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
fdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define NOISEF(FMT, ...) \
|
#define NOISEF(FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (_LOG_UNLIKELY(LOGGABLE(kLogNoise))) { \
|
if (_LOG_UNLIKELY(LOGGABLE(kLogNoise))) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
fnoisef(kLogNoise, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
fnoisef(kLogNoise, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define FLOGF(F, FMT, ...) \
|
#define FLOGF(F, FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (LOGGABLE(kLogInfo)) { \
|
if (LOGGABLE(kLogInfo)) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
flogf(kLogInfo, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
flogf(kLogInfo, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define FWARNF(F, FMT, ...) \
|
#define FWARNF(F, FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (LOGGABLE(kLogWarn)) { \
|
if (LOGGABLE(kLogWarn)) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
flogf(kLogWarn, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
flogf(kLogWarn, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define FFATALF(F, FMT, ...) \
|
#define FFATALF(F, FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
flogf(kLogError, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
flogf(kLogError, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
||||||
_log_exit(1); \
|
_log_exit(1); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -157,18 +172,22 @@ extern unsigned __log_level; /* log level for runtime check */
|
||||||
#define FDEBUGF(F, FMT, ...) \
|
#define FDEBUGF(F, FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (_LOG_UNLIKELY(LOGGABLE(kLogDebug))) { \
|
if (_LOG_UNLIKELY(LOGGABLE(kLogDebug))) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
fdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
fdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define FNOISEF(F, FMT, ...) \
|
#define FNOISEF(F, FMT, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (_LOG_UNLIKELY(LOGGABLE(kLogNoise))) { \
|
if (_LOG_UNLIKELY(LOGGABLE(kLogNoise))) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
fnoisef(kLogNoise, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
fnoisef(kLogNoise, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
@ -177,9 +196,11 @@ extern unsigned __log_level; /* log level for runtime check */
|
||||||
int e = _log_get_errno(); \
|
int e = _log_get_errno(); \
|
||||||
autotype(FORM) Ax = (FORM); \
|
autotype(FORM) Ax = (FORM); \
|
||||||
if (_LOG_UNLIKELY(Ax == (typeof(Ax))(-1)) && LOGGABLE(kLogWarn)) { \
|
if (_LOG_UNLIKELY(Ax == (typeof(Ax))(-1)) && LOGGABLE(kLogWarn)) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
_log_errno(__FILE__, __LINE__, #FORM); \
|
_log_errno(__FILE__, __LINE__, #FORM); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
_log_set_errno(e); \
|
_log_set_errno(e); \
|
||||||
} \
|
} \
|
||||||
Ax; \
|
Ax; \
|
||||||
|
@ -190,9 +211,11 @@ extern unsigned __log_level; /* log level for runtime check */
|
||||||
int e = _log_get_errno(); \
|
int e = _log_get_errno(); \
|
||||||
autotype(FORM) Ax = (FORM); \
|
autotype(FORM) Ax = (FORM); \
|
||||||
if (Ax == NULL && LOGGABLE(kLogWarn)) { \
|
if (Ax == NULL && LOGGABLE(kLogWarn)) { \
|
||||||
if (!_LOG_TINY) _log_untrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_untrace(); \
|
||||||
_log_errno(__FILE__, __LINE__, #FORM); \
|
_log_errno(__FILE__, __LINE__, #FORM); \
|
||||||
if (!_LOG_TINY) _log_retrace(); \
|
if (!_LOG_TINY) \
|
||||||
|
_log_retrace(); \
|
||||||
_log_set_errno(e); \
|
_log_set_errno(e); \
|
||||||
} \
|
} \
|
||||||
Ax; \
|
Ax; \
|
||||||
|
|
|
@ -16,12 +16,12 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/intrin/kprintf.h"
|
#include "libc/intrin/kprintf.h"
|
||||||
#include "libc/log/backtrace.internal.h"
|
#include "libc/log/backtrace.internal.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/runtime/symbols.internal.h"
|
#include "libc/runtime/symbols.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
#include "libc/sysv/errfuns.h"
|
||||||
|
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
|
|
|
@ -25,7 +25,8 @@ COSMOPOLITAN_C_START_
|
||||||
: /* no inputs */ \
|
: /* no inputs */ \
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
EcxOut = (OPT_OUT_IA32_TSC_AUX); \
|
EcxOut = (OPT_OUT_IA32_TSC_AUX); \
|
||||||
if (EcxOut) *EcxOut = Ecx; \
|
if (EcxOut) \
|
||||||
|
*EcxOut = Ecx; \
|
||||||
Rdx << 32 | Rax; \
|
Rdx << 32 | Rax; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
#define kNtExceptionMaximumParameters 15
|
#define kNtExceptionMaximumParameters 15
|
||||||
#define kNtExceptionNoncontinuable 1
|
#define kNtExceptionNoncontinuable 1
|
||||||
|
|
||||||
|
|
||||||
struct NtExceptionRecord {
|
struct NtExceptionRecord {
|
||||||
uint32_t ExceptionCode; /* kNtException... */
|
uint32_t ExceptionCode; /* kNtException... */
|
||||||
uint32_t ExceptionFlags; /* kNtExceptionNoncontinuable */
|
uint32_t ExceptionFlags; /* kNtExceptionNoncontinuable */
|
||||||
|
|
|
@ -31,8 +31,7 @@ static int __zipos_dupfd(int fd, int cmd, int start) {
|
||||||
if (start < 0)
|
if (start < 0)
|
||||||
return einval();
|
return einval();
|
||||||
if (IsWindows()) {
|
if (IsWindows()) {
|
||||||
return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? _O_CLOEXEC : 0),
|
return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? _O_CLOEXEC : 0), start);
|
||||||
start);
|
|
||||||
}
|
}
|
||||||
rc = sys_fcntl(fd, cmd, start, __sys_fcntl);
|
rc = sys_fcntl(fd, cmd, start, __sys_fcntl);
|
||||||
if (rc != -1) {
|
if (rc != -1) {
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/calls/internal.h"
|
#include "libc/calls/internal.h"
|
||||||
#include "libc/sysv/errfuns.h"
|
|
||||||
#include "libc/runtime/zipos.internal.h"
|
#include "libc/runtime/zipos.internal.h"
|
||||||
|
#include "libc/sysv/errfuns.h"
|
||||||
|
|
||||||
int __zipos_notat(int dirfd, const char *path) {
|
int __zipos_notat(int dirfd, const char *path) {
|
||||||
struct ZiposUri zipname;
|
struct ZiposUri zipname;
|
||||||
|
|
|
@ -20,11 +20,11 @@
|
||||||
#include "libc/calls/syscall-sysv.internal.h"
|
#include "libc/calls/syscall-sysv.internal.h"
|
||||||
#include "libc/calls/syscall_support-nt.internal.h"
|
#include "libc/calls/syscall_support-nt.internal.h"
|
||||||
#include "libc/dce.h"
|
#include "libc/dce.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/nt/errors.h"
|
#include "libc/nt/errors.h"
|
||||||
#include "libc/nt/iphlpapi.h"
|
#include "libc/nt/iphlpapi.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/sock/sock.h"
|
#include "libc/sock/sock.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/af.h"
|
#include "libc/sysv/consts/af.h"
|
||||||
|
|
|
@ -553,9 +553,10 @@ int __vcscanf(int callback(void *), //
|
||||||
items = -1;
|
items = -1;
|
||||||
goto Done;
|
goto Done;
|
||||||
} else if (rawmode && j != width) {
|
} else if (rawmode && j != width) {
|
||||||
/* The C standard says that %c "matches a sequence of characters of
|
/* The C standard says that %c "matches a sequence of characters
|
||||||
* **exactly** the number specified by the field width". If we have
|
* of
|
||||||
* fewer characters, what we've just read is invalid. */
|
* **exactly** the number specified by the field width". If we
|
||||||
|
* have fewer characters, what we've just read is invalid. */
|
||||||
goto Done;
|
goto Done;
|
||||||
} else if (!rawmode && j < bufsize) {
|
} else if (!rawmode && j < bufsize) {
|
||||||
if (charbytes == sizeof(char)) {
|
if (charbytes == sizeof(char)) {
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/intrin/pushpop.internal.h"
|
#include "libc/intrin/pushpop.internal.h"
|
||||||
#include "libc/intrin/repmovsb.h"
|
#include "libc/intrin/repmovsb.h"
|
||||||
#include "libc/nexgen32e/kompressor.h"
|
#include "libc/nexgen32e/kompressor.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,25 +13,30 @@
|
||||||
forceinline int tpdecodecb(wint_t *out, int first,
|
forceinline int tpdecodecb(wint_t *out, int first,
|
||||||
int get(void *arg, uint32_t i), void *arg) {
|
int get(void *arg, uint32_t i), void *arg) {
|
||||||
uint32_t wc, cb, need, msb, j, i = 1;
|
uint32_t wc, cb, need, msb, j, i = 1;
|
||||||
if (__builtin_expect((wc = first) == -1, 0)) return -1;
|
if (__builtin_expect((wc = first) == -1, 0))
|
||||||
|
return -1;
|
||||||
while (__builtin_expect((wc & 0b11000000) == 0b10000000, 0)) {
|
while (__builtin_expect((wc & 0b11000000) == 0b10000000, 0)) {
|
||||||
if ((wc = get(arg, i++)) == -1) return -1;
|
if ((wc = get(arg, i++)) == -1)
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
if (__builtin_expect(!(0 <= wc && wc <= 0x7F), 0)) {
|
if (__builtin_expect(!(0 <= wc && wc <= 0x7F), 0)) {
|
||||||
msb = wc < 252 ? bsr(~wc & 0xff) : 1;
|
msb = wc < 252 ? bsr(~wc & 0xff) : 1;
|
||||||
need = 7 - msb;
|
need = 7 - msb;
|
||||||
wc &= ((1u << msb) - 1) | 0b00000011;
|
wc &= ((1u << msb) - 1) | 0b00000011;
|
||||||
for (j = 1; j < need; ++j) {
|
for (j = 1; j < need; ++j) {
|
||||||
if ((cb = get(arg, i++)) == -1) return -1;
|
if ((cb = get(arg, i++)) == -1)
|
||||||
|
return -1;
|
||||||
if ((cb & 0b11000000) == 0b10000000) {
|
if ((cb & 0b11000000) == 0b10000000) {
|
||||||
wc = wc << 6 | (cb & 0b00111111);
|
wc = wc << 6 | (cb & 0b00111111);
|
||||||
} else {
|
} else {
|
||||||
if (out) *out = u'\xFFFD';
|
if (out)
|
||||||
|
*out = u'\xFFFD';
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (__builtin_expect(!!out, 1)) *out = (wint_t)wc;
|
if (__builtin_expect(!!out, 1))
|
||||||
|
*out = (wint_t)wc;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
static const char kWcTypeNames[][8] = {
|
static const char kWcTypeNames[][8] = {
|
||||||
|
|
|
@ -22,14 +22,11 @@
|
||||||
#define ICMP6_RR_FLAGS_REQRESULT ICMP6_RR_FLAGS_REQRESULT
|
#define ICMP6_RR_FLAGS_REQRESULT ICMP6_RR_FLAGS_REQRESULT
|
||||||
#define ICMP6_RR_FLAGS_SPECSITE ICMP6_RR_FLAGS_SPECSITE
|
#define ICMP6_RR_FLAGS_SPECSITE ICMP6_RR_FLAGS_SPECSITE
|
||||||
#define ICMP6_RR_FLAGS_TEST ICMP6_RR_FLAGS_TEST
|
#define ICMP6_RR_FLAGS_TEST ICMP6_RR_FLAGS_TEST
|
||||||
#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME \
|
#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME
|
||||||
ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME
|
#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME
|
||||||
#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME \
|
|
||||||
ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME
|
|
||||||
#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO ICMP6_RR_PCOUSE_RAFLAGS_AUTO
|
#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO ICMP6_RR_PCOUSE_RAFLAGS_AUTO
|
||||||
#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK ICMP6_RR_PCOUSE_RAFLAGS_ONLINK
|
#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK ICMP6_RR_PCOUSE_RAFLAGS_ONLINK
|
||||||
#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN \
|
#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN ICMP6_RR_RESULT_FLAGS_FORBIDDEN
|
||||||
ICMP6_RR_RESULT_FLAGS_FORBIDDEN
|
|
||||||
#define ICMP6_RR_RESULT_FLAGS_OOB ICMP6_RR_RESULT_FLAGS_OOB
|
#define ICMP6_RR_RESULT_FLAGS_OOB ICMP6_RR_RESULT_FLAGS_OOB
|
||||||
#define ICMP6_TIME_EXCEEDED ICMP6_TIME_EXCEEDED
|
#define ICMP6_TIME_EXCEEDED ICMP6_TIME_EXCEEDED
|
||||||
#define ICMP6_TIME_EXCEED_REASSEMBLY ICMP6_TIME_EXCEED_REASSEMBLY
|
#define ICMP6_TIME_EXCEED_REASSEMBLY ICMP6_TIME_EXCEED_REASSEMBLY
|
||||||
|
|
|
@ -38,5 +38,4 @@ COSMOPOLITAN_C_END_
|
||||||
#define IFF_RUNNING IFF_RUNNING
|
#define IFF_RUNNING IFF_RUNNING
|
||||||
#define IFF_SLAVE IFF_SLAVE
|
#define IFF_SLAVE IFF_SLAVE
|
||||||
|
|
||||||
|
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IFF_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IFF_H_ */
|
||||||
|
|
|
@ -102,6 +102,5 @@ extern const int IP_XFRM_POLICY;
|
||||||
#define IP_UNICAST_IF IP_UNICAST_IF
|
#define IP_UNICAST_IF IP_UNICAST_IF
|
||||||
#define IP_XFRM_POLICY IP_XFRM_POLICY
|
#define IP_XFRM_POLICY IP_XFRM_POLICY
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IP_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IP_H_ */
|
||||||
|
|
|
@ -122,6 +122,5 @@ extern const int IPV6_XFRM_POLICY;
|
||||||
#define IPV6_V6ONLY IPV6_V6ONLY
|
#define IPV6_V6ONLY IPV6_V6ONLY
|
||||||
#define IPV6_XFRM_POLICY IPV6_XFRM_POLICY
|
#define IPV6_XFRM_POLICY IPV6_XFRM_POLICY
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IPV6_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_IPV6_H_ */
|
||||||
|
|
|
@ -24,6 +24,5 @@ extern const int MAX_INPUT;
|
||||||
#define MAX_CANON MAX_CANON
|
#define MAX_CANON MAX_CANON
|
||||||
#define MAX_INPUT MAX_INPUT
|
#define MAX_INPUT MAX_INPUT
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LIMITS_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LIMITS_H_ */
|
||||||
|
|
|
@ -15,5 +15,4 @@ COSMOPOLITAN_C_END_
|
||||||
#define LOCK_SH LOCK_SH
|
#define LOCK_SH LOCK_SH
|
||||||
#define LOCK_UN LOCK_UN
|
#define LOCK_UN LOCK_UN
|
||||||
|
|
||||||
|
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LOCK_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LOCK_H_ */
|
||||||
|
|
|
@ -36,6 +36,5 @@ extern const int TIOCM_ST;
|
||||||
#define TIOCMBIC TIOCMBIC
|
#define TIOCMBIC TIOCMBIC
|
||||||
#define TIOCMBIS TIOCMBIS
|
#define TIOCMBIS TIOCMBIS
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_MODEM_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_MODEM_H_ */
|
||||||
|
|
|
@ -92,6 +92,5 @@ extern const int MNT_SNAPSHOT;
|
||||||
#define MNT_NOCLUSTERW MNT_NOCLUSTERW
|
#define MNT_NOCLUSTERW MNT_NOCLUSTERW
|
||||||
#define MNT_SNAPSHOT MNT_SNAPSHOT
|
#define MNT_SNAPSHOT MNT_SNAPSHOT
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_MOUNT_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_MOUNT_H_ */
|
||||||
|
|
|
@ -94,6 +94,5 @@ extern const int PF_X25;
|
||||||
#define PF_WANPIPE PF_WANPIPE
|
#define PF_WANPIPE PF_WANPIPE
|
||||||
#define PF_X25 PF_X25
|
#define PF_X25 PF_X25
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_PF_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_PF_H_ */
|
||||||
|
|
|
@ -27,6 +27,5 @@ extern const int16_t POLLWRNORM;
|
||||||
#define POLLWRBAND POLLWRBAND
|
#define POLLWRBAND POLLWRBAND
|
||||||
#define POLLWRNORM POLLWRNORM
|
#define POLLWRNORM POLLWRNORM
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_POLL_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_POLL_H_ */
|
||||||
|
|
|
@ -22,6 +22,5 @@ extern const int POSIX_MADV_DONTNEED;
|
||||||
|
|
||||||
#define POSIX_MADV_DONTNEED POSIX_MADV_DONTNEED
|
#define POSIX_MADV_DONTNEED POSIX_MADV_DONTNEED
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_POSIX_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_POSIX_H_ */
|
||||||
|
|
|
@ -23,6 +23,5 @@ extern const int TIOCPKT_STOP;
|
||||||
|
|
||||||
#define TIOCPKT TIOCPKT
|
#define TIOCPKT TIOCPKT
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_PTY_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_PTY_H_ */
|
||||||
|
|
|
@ -26,6 +26,5 @@ extern const unsigned RB_NOSYNC;
|
||||||
#define RB_DISABLE_CAD RB_DISABLE_CAD
|
#define RB_DISABLE_CAD RB_DISABLE_CAD
|
||||||
#define RB_NOSYNC RB_NOSYNC
|
#define RB_NOSYNC RB_NOSYNC
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_REBOOT_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_REBOOT_H_ */
|
||||||
|
|
|
@ -12,6 +12,5 @@ extern const uint64_t RLIM_SAVED_MAX;
|
||||||
#define RLIM_SAVED_CUR RLIM_SAVED_CUR
|
#define RLIM_SAVED_CUR RLIM_SAVED_CUR
|
||||||
#define RLIM_SAVED_MAX RLIM_SAVED_MAX
|
#define RLIM_SAVED_MAX RLIM_SAVED_MAX
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIM_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIM_H_ */
|
||||||
|
|
|
@ -22,6 +22,5 @@ extern const uint64_t SA_SIGINFO;
|
||||||
#define SA_RESTART SA_RESTART
|
#define SA_RESTART SA_RESTART
|
||||||
#define SA_SIGINFO SA_SIGINFO
|
#define SA_SIGINFO SA_SIGINFO
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SA_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SA_H_ */
|
||||||
|
|
|
@ -19,6 +19,5 @@ extern const int SCHED_RR;
|
||||||
#define SCHED_RESET_ON_FORK SCHED_RESET_ON_FORK
|
#define SCHED_RESET_ON_FORK SCHED_RESET_ON_FORK
|
||||||
#define SCHED_RR SCHED_RR
|
#define SCHED_RR SCHED_RR
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SCHED_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SCHED_H_ */
|
||||||
|
|
|
@ -17,5 +17,4 @@ COSMOPOLITAN_C_END_
|
||||||
#define SCM_TIMESTAMPNS SCM_TIMESTAMPNS
|
#define SCM_TIMESTAMPNS SCM_TIMESTAMPNS
|
||||||
#define SCM_WIFI_STATUS SCM_WIFI_STATUS
|
#define SCM_WIFI_STATUS SCM_WIFI_STATUS
|
||||||
|
|
||||||
|
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SCM_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SCM_H_ */
|
||||||
|
|
|
@ -17,6 +17,5 @@ extern const int SF_SYNC;
|
||||||
#define SF_NODISKIO SF_NODISKIO
|
#define SF_NODISKIO SF_NODISKIO
|
||||||
#define SF_SYNC SF_SYNC
|
#define SF_SYNC SF_SYNC
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SF_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SF_H_ */
|
||||||
|
|
|
@ -105,6 +105,5 @@ extern const int32_t SYS_USER_DISPATCH;
|
||||||
#define SYS_SECCOMP SYS_SECCOMP
|
#define SYS_SECCOMP SYS_SECCOMP
|
||||||
#define SYS_USER_DISPATCH SYS_USER_DISPATCH
|
#define SYS_USER_DISPATCH SYS_USER_DISPATCH
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SICODE_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SICODE_H_ */
|
||||||
|
|
|
@ -28,6 +28,5 @@ extern const int ST_WRITE;
|
||||||
#define ST_SYNCHRONOUS ST_SYNCHRONOUS
|
#define ST_SYNCHRONOUS ST_SYNCHRONOUS
|
||||||
#define ST_WRITE ST_WRITE
|
#define ST_WRITE ST_WRITE
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_ST_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_ST_H_ */
|
||||||
|
|
|
@ -66,6 +66,5 @@ extern const int TCP_WINDOW_CLAMP;
|
||||||
#define TCP_USER_TIMEOUT TCP_USER_TIMEOUT
|
#define TCP_USER_TIMEOUT TCP_USER_TIMEOUT
|
||||||
#define TCP_WINDOW_CLAMP TCP_WINDOW_CLAMP
|
#define TCP_WINDOW_CLAMP TCP_WINDOW_CLAMP
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_TCP_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_TCP_H_ */
|
||||||
|
|
|
@ -10,5 +10,4 @@ COSMOPOLITAN_C_END_
|
||||||
#define UTIME_NOW UTIME_NOW
|
#define UTIME_NOW UTIME_NOW
|
||||||
#define UTIME_OMIT UTIME_OMIT
|
#define UTIME_OMIT UTIME_OMIT
|
||||||
|
|
||||||
|
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_UTIME_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_UTIME_H_ */
|
||||||
|
|
|
@ -10,6 +10,5 @@ extern const int WCONTINUED;
|
||||||
#define WUNTRACED WUNTRACED
|
#define WUNTRACED WUNTRACED
|
||||||
#define WCONTINUED WCONTINUED
|
#define WCONTINUED WCONTINUED
|
||||||
|
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_W_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_W_H_ */
|
||||||
|
|
|
@ -35,7 +35,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" speculative"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" speculative"); \
|
||||||
Tries = 0; \
|
Tries = 0; \
|
||||||
do { \
|
do { \
|
||||||
__testlib_yield(); \
|
__testlib_yield(); \
|
||||||
|
@ -51,7 +52,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" memory strict"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" memory strict"); \
|
||||||
__testlib_ezbenchreport( \
|
__testlib_ezbenchreport( \
|
||||||
NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \
|
NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \
|
||||||
MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \
|
MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \
|
||||||
|
@ -76,7 +78,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" speculative"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" speculative"); \
|
||||||
Tries = 0; \
|
Tries = 0; \
|
||||||
do { \
|
do { \
|
||||||
__testlib_yield(); \
|
__testlib_yield(); \
|
||||||
|
@ -92,7 +95,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" memory strict"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" memory strict"); \
|
||||||
__testlib_ezbenchreport( \
|
__testlib_ezbenchreport( \
|
||||||
NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \
|
NAME, MAX(.001, Speculative - __testlib_ezbenchcontrol()), \
|
||||||
MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \
|
MAX(.001, MemoryStrict - __testlib_ezbenchcontrol())); \
|
||||||
|
@ -112,7 +116,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" control"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" control"); \
|
||||||
Tries = 0; \
|
Tries = 0; \
|
||||||
do { \
|
do { \
|
||||||
__testlib_yield(); \
|
__testlib_yield(); \
|
||||||
|
@ -124,7 +129,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" speculative"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" speculative"); \
|
||||||
Tries = 0; \
|
Tries = 0; \
|
||||||
do { \
|
do { \
|
||||||
__testlib_yield(); \
|
__testlib_yield(); \
|
||||||
|
@ -136,7 +142,8 @@ COSMOPOLITAN_C_START_
|
||||||
} while (++Tries < EZBENCH_TRIES && \
|
} while (++Tries < EZBENCH_TRIES && \
|
||||||
(__testlib_getcore() != Core && \
|
(__testlib_getcore() != Core && \
|
||||||
__testlib_getinterrupts() > Interrupts)); \
|
__testlib_getinterrupts() > Interrupts)); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(" memory strict"); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(" memory strict"); \
|
||||||
__testlib_ezbenchreport(NAME, MAX(.001, Speculative - Control), \
|
__testlib_ezbenchreport(NAME, MAX(.001, Speculative - Control), \
|
||||||
MAX(.001, MemoryStrict - Control)); \
|
MAX(.001, MemoryStrict - Control)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -156,7 +163,8 @@ COSMOPOLITAN_C_START_
|
||||||
EXPR; \
|
EXPR; \
|
||||||
Speculative = BENCHLOOPER(__startbench, __endbench, 32, (EXPR)); \
|
Speculative = BENCHLOOPER(__startbench, __endbench, 32, (EXPR)); \
|
||||||
} while (++Tries < EZBENCH_TRIES && !Speculative); \
|
} while (++Tries < EZBENCH_TRIES && !Speculative); \
|
||||||
if (Tries == EZBENCH_TRIES) __testlib_ezbenchwarn(""); \
|
if (Tries == EZBENCH_TRIES) \
|
||||||
|
__testlib_ezbenchwarn(""); \
|
||||||
__testlib_ezbenchreport_n(NAME, 'n', N, Speculative); \
|
__testlib_ezbenchreport_n(NAME, 'n', N, Speculative); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
|
@ -420,8 +420,10 @@ forceinline void testlib_onfail2(bool isfatal) {
|
||||||
forceinline void assertNotEquals(FILIFU_ARGS intptr_t donotwant, intptr_t got,
|
forceinline void assertNotEquals(FILIFU_ARGS intptr_t donotwant, intptr_t got,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (got != donotwant) return;
|
if (got != donotwant)
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertNotEquals", "=", gotcode,
|
testlib_showerror(file, line, func, "assertNotEquals", "=", gotcode,
|
||||||
testlib_formatint(got), testlib_formatint(donotwant));
|
testlib_formatint(got), testlib_formatint(donotwant));
|
||||||
testlib_onfail2(isfatal);
|
testlib_onfail2(isfatal);
|
||||||
|
@ -455,8 +457,10 @@ forceinline void assertBetween(FILIFU_ARGS intptr_t beg, intptr_t end,
|
||||||
intptr_t got, const char *gotcode,
|
intptr_t got, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (beg <= got && got <= end) return;
|
if (beg <= got && got <= end)
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertBetween", "∉", gotcode,
|
testlib_showerror(file, line, func, "assertBetween", "∉", gotcode,
|
||||||
testlib_formatint(got), testlib_formatrange(beg, end));
|
testlib_formatint(got), testlib_formatrange(beg, end));
|
||||||
testlib_onfail2(isfatal);
|
testlib_onfail2(isfatal);
|
||||||
|
@ -466,8 +470,10 @@ forceinline void assertStringEquals(FILIFU_ARGS size_t cw, const void *want,
|
||||||
const void *got, const char *gotcode,
|
const void *got, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_strequals(cw, want, got)) return;
|
if (testlib_strequals(cw, want, got))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStringEquals", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertStringEquals", "≠", gotcode,
|
||||||
testlib_formatstr(cw, want, -1),
|
testlib_formatstr(cw, want, -1),
|
||||||
testlib_formatstr(cw, got, -1));
|
testlib_formatstr(cw, got, -1));
|
||||||
|
@ -478,8 +484,10 @@ forceinline void assertStringNotEquals(FILIFU_ARGS size_t cw, const void *want,
|
||||||
const void *got, const char *gotcode,
|
const void *got, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (!testlib_strequals(cw, want, got)) return;
|
if (!testlib_strequals(cw, want, got))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStringNotEquals", "=", gotcode,
|
testlib_showerror(file, line, func, "assertStringNotEquals", "=", gotcode,
|
||||||
testlib_formatstr(cw, want, -1),
|
testlib_formatstr(cw, want, -1),
|
||||||
testlib_formatstr(cw, got, -1));
|
testlib_formatstr(cw, got, -1));
|
||||||
|
@ -490,8 +498,10 @@ forceinline void assertStrnEquals(FILIFU_ARGS size_t cw, const void *want,
|
||||||
const void *got, size_t n,
|
const void *got, size_t n,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_strnequals(cw, want, got, n)) return;
|
if (testlib_strnequals(cw, want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStrnEquals", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertStrnEquals", "≠", gotcode,
|
||||||
testlib_formatstr(cw, got, n),
|
testlib_formatstr(cw, got, n),
|
||||||
testlib_formatstr(cw, want, n));
|
testlib_formatstr(cw, want, n));
|
||||||
|
@ -502,8 +512,10 @@ forceinline void assertStrnNotEquals(FILIFU_ARGS size_t cw, const void *want,
|
||||||
const void *got, size_t n,
|
const void *got, size_t n,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (!testlib_strnequals(cw, want, got, n)) return;
|
if (!testlib_strnequals(cw, want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStrnNotEquals", "=", gotcode,
|
testlib_showerror(file, line, func, "assertStrnNotEquals", "=", gotcode,
|
||||||
testlib_formatstr(cw, got, n),
|
testlib_formatstr(cw, got, n),
|
||||||
testlib_formatstr(cw, want, n));
|
testlib_formatstr(cw, want, n));
|
||||||
|
@ -514,8 +526,10 @@ forceinline void assertStringCaseEquals(FILIFU_ARGS size_t cw, const void *want,
|
||||||
const void *got, const char *gotcode,
|
const void *got, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_strcaseequals(cw, want, got)) return;
|
if (testlib_strcaseequals(cw, want, got))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStringCaseEquals", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertStringCaseEquals", "≠", gotcode,
|
||||||
testlib_formatstr(cw, got, -1),
|
testlib_formatstr(cw, got, -1),
|
||||||
testlib_formatstr(cw, want, -1));
|
testlib_formatstr(cw, want, -1));
|
||||||
|
@ -526,8 +540,10 @@ forceinline void assertStringCaseNotEquals(FILIFU_ARGS size_t cw,
|
||||||
const void *want, const void *got,
|
const void *want, const void *got,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (!testlib_strcaseequals(cw, want, got)) return;
|
if (!testlib_strcaseequals(cw, want, got))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStringCaseNotEquals", "=", gotcode,
|
testlib_showerror(file, line, func, "assertStringCaseNotEquals", "=", gotcode,
|
||||||
testlib_formatstr(cw, got, -1),
|
testlib_formatstr(cw, got, -1),
|
||||||
testlib_formatstr(cw, want, -1));
|
testlib_formatstr(cw, want, -1));
|
||||||
|
@ -538,8 +554,10 @@ forceinline void assertStrnCaseEquals(FILIFU_ARGS size_t cw, const void *want,
|
||||||
const void *got, size_t n,
|
const void *got, size_t n,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_strncaseequals(cw, want, got, n)) return;
|
if (testlib_strncaseequals(cw, want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStrnCaseEquals", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertStrnCaseEquals", "≠", gotcode,
|
||||||
testlib_formatstr(cw, got, n),
|
testlib_formatstr(cw, got, n),
|
||||||
testlib_formatstr(cw, want, n));
|
testlib_formatstr(cw, want, n));
|
||||||
|
@ -551,8 +569,10 @@ forceinline void assertStrnCaseNotEquals(FILIFU_ARGS size_t cw,
|
||||||
size_t n, const char *gotcode,
|
size_t n, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (!testlib_strncaseequals(cw, want, got, n)) return;
|
if (!testlib_strncaseequals(cw, want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStrnCaseNotEquals", "=", gotcode,
|
testlib_showerror(file, line, func, "assertStrnCaseNotEquals", "=", gotcode,
|
||||||
testlib_formatstr(cw, got, n),
|
testlib_formatstr(cw, got, n),
|
||||||
testlib_formatstr(cw, want, n));
|
testlib_formatstr(cw, want, n));
|
||||||
|
@ -563,8 +583,10 @@ forceinline void assertStartsWith(FILIFU_ARGS size_t cw, const char *prefix,
|
||||||
const char *s, const char *gotcode,
|
const char *s, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_startswith(cw, s, prefix)) return;
|
if (testlib_startswith(cw, s, prefix))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertStartsWith", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertStartsWith", "≠", gotcode,
|
||||||
testlib_formatstr(1, prefix, -1),
|
testlib_formatstr(1, prefix, -1),
|
||||||
testlib_formatstr(1, s, -1));
|
testlib_formatstr(1, s, -1));
|
||||||
|
@ -575,8 +597,10 @@ forceinline void assertEndsWith(FILIFU_ARGS size_t cw, const char *suffix,
|
||||||
const char *s, const char *gotcode,
|
const char *s, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_endswith(cw, s, suffix)) return;
|
if (testlib_endswith(cw, s, suffix))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertEndsWith", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertEndsWith", "≠", gotcode,
|
||||||
testlib_formatstr(1, s, -1),
|
testlib_formatstr(1, s, -1),
|
||||||
testlib_formatstr(1, suffix, -1));
|
testlib_formatstr(1, suffix, -1));
|
||||||
|
@ -587,8 +611,10 @@ forceinline void assertContains(FILIFU_ARGS size_t cw, const char *needle,
|
||||||
const char *s, const char *gotcode,
|
const char *s, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_contains(cw, s, needle)) return;
|
if (testlib_contains(cw, s, needle))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertContains", "∉", gotcode,
|
testlib_showerror(file, line, func, "assertContains", "∉", gotcode,
|
||||||
testlib_formatstr(1, s, -1),
|
testlib_formatstr(1, s, -1),
|
||||||
testlib_formatstr(1, needle, -1));
|
testlib_formatstr(1, needle, -1));
|
||||||
|
@ -600,8 +626,10 @@ forceinline void assertBinaryEquals_cp437(FILIFU_ARGS const char16_t *want,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
char *v1, *v2;
|
char *v1, *v2;
|
||||||
if (testlib_binequals(want, got, n)) return;
|
if (testlib_binequals(want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_formatbinaryasglyphs(want, got, n, &v1, &v2);
|
testlib_formatbinaryasglyphs(want, got, n, &v1, &v2);
|
||||||
testlib_showerror(file, line, func, "assertBinaryEquals", "≠", gotcode, v1,
|
testlib_showerror(file, line, func, "assertBinaryEquals", "≠", gotcode, v1,
|
||||||
v2);
|
v2);
|
||||||
|
@ -613,8 +641,10 @@ forceinline void assertBinaryEquals_hex(FILIFU_ARGS const char *want,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
char *v1, *v2;
|
char *v1, *v2;
|
||||||
if (testlib_hexequals(want, got, n)) return;
|
if (testlib_hexequals(want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_formatbinaryashex(want, got, n, &v1, &v2);
|
testlib_formatbinaryashex(want, got, n, &v1, &v2);
|
||||||
testlib_showerror(file, line, func, "assertBinaryEquals", "≠", gotcode, v1,
|
testlib_showerror(file, line, func, "assertBinaryEquals", "≠", gotcode, v1,
|
||||||
v2);
|
v2);
|
||||||
|
@ -627,8 +657,10 @@ forceinline void assertBinaryNotEquals_cp437(FILIFU_ARGS const char16_t *want,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
char *v1, *v2;
|
char *v1, *v2;
|
||||||
if (!testlib_binequals(want, got, n)) return;
|
if (!testlib_binequals(want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_formatbinaryasglyphs(want, got, n, &v1, &v2);
|
testlib_formatbinaryasglyphs(want, got, n, &v1, &v2);
|
||||||
testlib_showerror(file, line, func, "assertBinaryNotEquals", "=", gotcode, v1,
|
testlib_showerror(file, line, func, "assertBinaryNotEquals", "=", gotcode, v1,
|
||||||
v2);
|
v2);
|
||||||
|
@ -640,8 +672,10 @@ forceinline void assertBinaryNotEquals_hex(FILIFU_ARGS const char *want,
|
||||||
const char *gotcode, bool isfatal) {
|
const char *gotcode, bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
char *v1, *v2;
|
char *v1, *v2;
|
||||||
if (!testlib_hexequals(want, got, n)) return;
|
if (!testlib_hexequals(want, got, n))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_formatbinaryashex(want, got, n, &v1, &v2);
|
testlib_formatbinaryashex(want, got, n, &v1, &v2);
|
||||||
testlib_showerror(file, line, func, "assertBinaryNotEquals", "=", gotcode, v1,
|
testlib_showerror(file, line, func, "assertBinaryNotEquals", "=", gotcode, v1,
|
||||||
v2);
|
v2);
|
||||||
|
@ -652,8 +686,10 @@ forceinline void assertLongDoubleEquals(FILIFU_ARGS long double want,
|
||||||
long double got, const char *gotcode,
|
long double got, const char *gotcode,
|
||||||
bool isfatal) {
|
bool isfatal) {
|
||||||
++g_testlib_ran;
|
++g_testlib_ran;
|
||||||
if (testlib_almostequallongdouble(want, got)) return;
|
if (testlib_almostequallongdouble(want, got))
|
||||||
if (g_testlib_shoulddebugbreak) DebugBreak();
|
return;
|
||||||
|
if (g_testlib_shoulddebugbreak)
|
||||||
|
DebugBreak();
|
||||||
testlib_showerror(file, line, func, "assertLongDoubleEquals", "≠", gotcode,
|
testlib_showerror(file, line, func, "assertLongDoubleEquals", "≠", gotcode,
|
||||||
testlib_formatfloat(want), testlib_formatfloat(got));
|
testlib_formatfloat(want), testlib_formatfloat(got));
|
||||||
testlib_onfail2(isfatal);
|
testlib_onfail2(isfatal);
|
||||||
|
|
|
@ -44,7 +44,8 @@ COSMOPOLITAN_C_START_
|
||||||
#define PTHREAD_COND_INITIALIZER _PTHREAD_INIT
|
#define PTHREAD_COND_INITIALIZER _PTHREAD_INIT
|
||||||
#define PTHREAD_RWLOCK_INITIALIZER _PTHREAD_INIT
|
#define PTHREAD_RWLOCK_INITIALIZER _PTHREAD_INIT
|
||||||
#define PTHREAD_MUTEX_INITIALIZER _PTHREAD_INIT
|
#define PTHREAD_MUTEX_INITIALIZER _PTHREAD_INIT
|
||||||
#define _PTHREAD_INIT {0}
|
#define _PTHREAD_INIT \
|
||||||
|
{ 0 }
|
||||||
|
|
||||||
typedef uintptr_t pthread_t;
|
typedef uintptr_t pthread_t;
|
||||||
typedef int pthread_id_np_t;
|
typedef int pthread_id_np_t;
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/assert.h"
|
#include "libc/assert.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/intrin/bswap.h"
|
#include "libc/intrin/bswap.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/str/tab.internal.h"
|
#include "libc/str/tab.internal.h"
|
||||||
#include "net/http/http.h"
|
#include "net/http/http.h"
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/intrin/bswap.h"
|
#include "libc/intrin/bswap.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/str/tab.internal.h"
|
#include "libc/str/tab.internal.h"
|
||||||
#include "net/http/http.h"
|
#include "net/http/http.h"
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/intrin/kprintf.h"
|
#include "libc/intrin/kprintf.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/sock/sock.h"
|
#include "libc/sock/sock.h"
|
||||||
#include "libc/sock/struct/sockaddr.h"
|
#include "libc/sock/struct/sockaddr.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "dsp/core/core.h"
|
|
||||||
#include "dsp/core/illumination.h"
|
#include "dsp/core/illumination.h"
|
||||||
|
#include "dsp/core/core.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/math.h"
|
#include "libc/math.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/calls/calls.h"
|
|
||||||
#include "libc/calls/sigtimedwait.h"
|
#include "libc/calls/sigtimedwait.h"
|
||||||
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/calls/struct/siginfo.h"
|
#include "libc/calls/struct/siginfo.h"
|
||||||
#include "libc/calls/struct/siginfo.internal.h"
|
#include "libc/calls/struct/siginfo.internal.h"
|
||||||
#include "libc/calls/struct/sigset.h"
|
#include "libc/calls/struct/sigset.h"
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/fmt/leb128.h"
|
#include "libc/fmt/leb128.h"
|
||||||
#include "libc/limits.h"
|
#include "libc/limits.h"
|
||||||
#include "libc/mem/mem.h"
|
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
||||||
TEST(zleb64, testZero) {
|
TEST(zleb64, testZero) {
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/errno.h"
|
|
||||||
#include "libc/sock/sock.h"
|
#include "libc/sock/sock.h"
|
||||||
|
#include "libc/errno.h"
|
||||||
#include "libc/sysv/consts/af.h"
|
#include "libc/sysv/consts/af.h"
|
||||||
#include "libc/sysv/consts/sock.h"
|
#include "libc/sysv/consts/sock.h"
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
#include "libc/mem/alg.h"
|
#include "libc/mem/alg.h"
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
#include "libc/mem/gc.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/stdio/rand.h"
|
#include "libc/stdio/rand.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/nexgen32e/nexgen32e.h"
|
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
|
#include "libc/nexgen32e/nexgen32e.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
#include "libc/testlib/hyperion.h"
|
#include "libc/testlib/hyperion.h"
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/intrin/popcnt.h"
|
#include "libc/intrin/popcnt.h"
|
||||||
#include "libc/intrin/safemacros.internal.h"
|
#include "libc/intrin/safemacros.internal.h"
|
||||||
#include "libc/runtime/runtime.h"
|
|
||||||
#include "libc/proc/posix_spawn.h"
|
#include "libc/proc/posix_spawn.h"
|
||||||
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/testlib/subprocess.h"
|
#include "libc/testlib/subprocess.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
#include "libc/thread/thread.h"
|
#include "libc/thread/thread.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/testlib/testlib.h"
|
|
||||||
#include "third_party/musl/crypt.h"
|
#include "third_party/musl/crypt.h"
|
||||||
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
||||||
TEST(crypt, test) {
|
TEST(crypt, test) {
|
||||||
// consistent with python crypt.crypt()
|
// consistent with python crypt.crypt()
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/dce.h"
|
#include "libc/dce.h"
|
||||||
|
#include "libc/mem/gc.h"
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/rand.h"
|
#include "libc/stdio/rand.h"
|
||||||
#include "libc/mem/gc.h"
|
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/mem/mem.h"
|
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/hex.internal.h"
|
#include "libc/stdio/hex.internal.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
#include "libc/testlib/hyperion.h"
|
#include "libc/testlib/hyperion.h"
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
#include "libc/mem/gc.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/mem/mem.h"
|
|
||||||
#include "libc/mem/gc.h"
|
|
||||||
#include "libc/stdio/iconv.h"
|
#include "libc/stdio/iconv.h"
|
||||||
|
#include "libc/mem/gc.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/stdio/append.h"
|
#include "libc/stdio/append.h"
|
||||||
#include "libc/stdio/strlist.internal.h"
|
#include "libc/stdio/strlist.internal.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/stdio/rand.h"
|
#include "libc/stdio/rand.h"
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/testlib/hyperion.h"
|
#include "libc/testlib/hyperion.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/serialize.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
|
#include "libc/serialize.h"
|
||||||
#include "libc/stdio/append.h"
|
#include "libc/stdio/append.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
|
|
|
@ -16,11 +16,11 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/stdio/stdio.h"
|
|
||||||
#include "libc/str/blake2.h"
|
#include "libc/str/blake2.h"
|
||||||
#include "libc/assert.h"
|
#include "libc/assert.h"
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/rand.h"
|
#include "libc/stdio/rand.h"
|
||||||
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/str/tab.internal.h"
|
#include "libc/str/tab.internal.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/dce.h"
|
#include "libc/dce.h"
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
#include "libc/mem/gc.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/internal.h"
|
#include "libc/runtime/internal.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/atomic.h"
|
#include "libc/atomic.h"
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
#include "libc/mem/gc.h"
|
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
#include "libc/thread/thread.h"
|
#include "libc/thread/thread.h"
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/math.h"
|
#include "libc/math.h"
|
||||||
#include "libc/stdio/rand.h"
|
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
|
#include "libc/stdio/rand.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
#include "libc/testlib/hyperion.h"
|
#include "libc/testlib/hyperion.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/mem/mem.h"
|
|
||||||
#include "libc/mem/gc.h"
|
#include "libc/mem/gc.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/testlib/ezbench.h"
|
#include "libc/testlib/ezbench.h"
|
||||||
#include "libc/testlib/hyperion.h"
|
#include "libc/testlib/hyperion.h"
|
||||||
#include "libc/testlib/testlib.h"
|
#include "libc/testlib/testlib.h"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue