Perform some minor fixups

This commit is contained in:
Justine Tunney
2021-03-16 22:19:51 -07:00
parent ca88ce5026
commit 4e93750afd
9 changed files with 24 additions and 50 deletions

View File

@ -22,6 +22,6 @@
/** /**
* Returns absolute value of x. * Returns absolute value of x.
*/ */
int(abs)(int x) { int abs(int x) {
return ABS(x); return ABS(x);
} }

View File

@ -21,15 +21,14 @@
#include "libc/nt/files.h" #include "libc/nt/files.h"
#include "libc/sysv/errfuns.h" #include "libc/sysv/errfuns.h"
textwindows int sys_ftruncate_nt(int fd, uint64_t length) { textwindows int sys_ftruncate_nt(int64_t handle, uint64_t length) {
bool32 ok; bool32 ok;
int64_t tell; int64_t tell;
if (!__isfdkind(fd, kFdFile)) return ebadf();
tell = -1; tell = -1;
if (SetFilePointerEx(g_fds.p[fd].handle, 0, &tell, kNtFileCurrent)) { if (SetFilePointerEx(handle, 0, &tell, kNtFileCurrent)) {
ok = SetFilePointerEx(g_fds.p[fd].handle, length, NULL, kNtFileBegin) && ok = SetFilePointerEx(handle, length, NULL, kNtFileBegin) &&
SetEndOfFile(g_fds.p[fd].handle); SetEndOfFile(handle);
SetFilePointerEx(g_fds.p[fd].handle, tell, NULL, kNtFileBegin); SetFilePointerEx(handle, tell, NULL, kNtFileBegin);
return ok ? 0 : __winerr(); return ok ? 0 : __winerr();
} else { } else {
return __winerr(); return __winerr();

View File

@ -19,6 +19,7 @@
#include "libc/calls/calls.h" #include "libc/calls/calls.h"
#include "libc/calls/internal.h" #include "libc/calls/internal.h"
#include "libc/dce.h" #include "libc/dce.h"
#include "libc/sysv/errfuns.h"
/** /**
* Changes size of file. * Changes size of file.
@ -31,9 +32,11 @@
* @asyncsignalsafe * @asyncsignalsafe
*/ */
int ftruncate(int fd, int64_t length) { int ftruncate(int fd, int64_t length) {
if (fd < 0) return einval();
if (!IsWindows()) { if (!IsWindows()) {
return sys_ftruncate(fd, length, length); return sys_ftruncate(fd, length, length);
} else { } else {
return sys_ftruncate_nt(fd, length); if (fd >= g_fds.n) return ebadf();
return sys_ftruncate_nt(g_fds.p[fd].handle, length);
} }
} }

View File

@ -243,7 +243,7 @@ int sys_flock_nt(int, int) hidden;
int sys_fork_nt(void) hidden; int sys_fork_nt(void) hidden;
int sys_fstat_nt(i64, struct stat *) hidden; int sys_fstat_nt(i64, struct stat *) hidden;
int sys_fstatat_nt(int, const char *, struct stat *, uint32_t) hidden; int sys_fstatat_nt(int, const char *, struct stat *, uint32_t) hidden;
int sys_ftruncate_nt(int, u64) hidden; int sys_ftruncate_nt(i64, u64) hidden;
int sys_getppid_nt(void) hidden; int sys_getppid_nt(void) hidden;
int sys_getpriority_nt(int) hidden; int sys_getpriority_nt(int) hidden;
int sys_getrusage_nt(int, struct rusage *) hidden; int sys_getrusage_nt(int, struct rusage *) hidden;

View File

@ -17,7 +17,6 @@
│ PERFORMANCE OF THIS SOFTWARE. │ │ PERFORMANCE OF THIS SOFTWARE. │
╚─────────────────────────────────────────────────────────────────────────────*/ ╚─────────────────────────────────────────────────────────────────────────────*/
#include "libc/bits/bits.h" #include "libc/bits/bits.h"
#include "libc/bits/safemacros.internal.h"
#include "libc/calls/calls.h" #include "libc/calls/calls.h"
#include "libc/calls/internal.h" #include "libc/calls/internal.h"
#include "libc/calls/struct/sysinfo.h" #include "libc/calls/struct/sysinfo.h"
@ -41,8 +40,8 @@ int sysinfo(struct sysinfo *info) {
} else { } else {
rc = sys_sysinfo_nt(info); rc = sys_sysinfo_nt(info);
} }
info->procs = max(1, info->procs); info->procs = MAX(1, info->procs);
info->mem_unit = max(1, info->mem_unit); info->mem_unit = MAX(1, info->mem_unit);
info->totalram = max((8 * 1024 * 1024) / info->mem_unit, info->totalram); info->totalram = MAX((8 * 1024 * 1024) / info->mem_unit, info->totalram);
return rc; return rc;
} }

View File

@ -32,9 +32,5 @@
* @asyncsignalsafe * @asyncsignalsafe
*/ */
int wait3(int *opt_out_wstatus, int options, struct rusage *opt_out_rusage) { int wait3(int *opt_out_wstatus, int options, struct rusage *opt_out_rusage) {
if (!IsWindows()) { return wait4(-1, opt_out_wstatus, options, opt_out_rusage);
return sys_wait4(-1, opt_out_wstatus, options, opt_out_rusage);
} else {
return enosys(); /* TODO(jart) */
}
} }

View File

@ -54,14 +54,8 @@ textwindows ssize_t sys_write_nt(struct Fd *fd, const struct iovec *iov,
if (opt_offset != -1) opt_offset += rc; if (opt_offset != -1) opt_offset += rc;
if (rc < iov[i].iov_len) break; if (rc < iov[i].iov_len) break;
} }
if (!total) assert(!__iovec_size(iov, iovlen));
return total; return total;
} else { } else {
if (WriteFile(fd->handle, NULL, 0, &wrote, return sys_write_nt_impl(fd, NULL, 0, opt_offset);
offset2overlap(opt_offset, &overlap))) {
return 0;
} else {
return __winerr();
}
} }
} }

View File

@ -24,7 +24,7 @@
█████████████ ████████░░███████░░░██████ ▓██████████ █████████████ ████████░░███████░░░██████ ▓██████████
█████████████ ██████░░░████████████ █████████████ █████████████ ██████░░░████████████ █████████████
╔────────────────────────────────────────────────────────────────────────────│─╗ ╔────────────────────────────────────────────────────────────────────────────│─╗
│ cosmopolitan § xnu's not unix » carnegie mellon mach microkernel ─╬─│┼ │ cosmopolitan § xnu's not unix! » carnegie mellon mach microkernel ─╬─│┼
╚────────────────────────────────────────────────────────────────────────────│*/ ╚────────────────────────────────────────────────────────────────────────────│*/
#define XNU_SYSCALL_MASK_MACH 0x1000000 #define XNU_SYSCALL_MASK_MACH 0x1000000
@ -38,7 +38,12 @@
#define kXnuNtNsBase 0x060 /* uint64_t */ #define kXnuNtNsBase 0x060 /* uint64_t */
#define kXnuNtGeneration 0x068 /* uint32_t */ #define kXnuNtGeneration 0x068 /* uint32_t */
bool swtch(void); #if !(__ASSEMBLER__ + __LINKER__ + 0)
bool swtch_pri(int pri); COSMOPOLITAN_C_START_
bool swtch(void);
bool swtch_pri(int);
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_MACH_H_ */ #endif /* COSMOPOLITAN_LIBC_MACH_H_ */

View File

@ -1,22 +0,0 @@
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
╞══════════════════════════════════════════════════════════════════════════════╡
│ Copyright 2021 Justine Alexandra Roberts Tunney │
│ │
│ Permission to use, copy, modify, and/or distribute this software for │
│ any purpose with or without fee is hereby granted, provided that the │
│ above copyright notice and this permission notice appear in all copies. │
│ │
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
│ PERFORMANCE OF THIS SOFTWARE. │
╚─────────────────────────────────────────────────────────────────────────────*/
unsigned hog(unsigned x) {
return (x & 0xf000000) | (x & 0x0fff000) >> 12;
}