mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-15 23:29:56 +00:00
Polish recent changes and make improvements
- Simulate SIGPIPE on Windows NT - Fix commandv() regression on Windows NT - Fix sigprocmask() strace bug on OpenBSD - Add many more system calls to --strace logging - Make errno state more pristine in redbean strace
This commit is contained in:
parent
10a766ebd0
commit
39688a73e4
69 changed files with 460 additions and 1976 deletions
|
@ -1,104 +0,0 @@
|
|||
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│
|
||||
│vi: set et ft=asm ts=8 tw=8 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. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/nt/errors.h"
|
||||
#include "libc/macros.internal.h"
|
||||
|
||||
// @fileoverview data structure for __dos2errno()
|
||||
|
||||
.macro .e doscode systemv
|
||||
.short \doscode
|
||||
.long \systemv - kDos2Errno
|
||||
.endm
|
||||
|
||||
.section .rodata
|
||||
.underrun
|
||||
kDos2Errno:
|
||||
.e kNtErrorModNotFound,ENOSYS
|
||||
.e kNtErrorBadCommand,EACCES
|
||||
.e kNtErrorBadLength,EACCES
|
||||
.e kNtErrorBadNetpath,ENOENT
|
||||
.e kNtErrorBadNetName,ENOENT
|
||||
.e kNtErrorBadNetResp,ENETDOWN
|
||||
.e kNtErrorBadPathname,ENOENT
|
||||
.e kNtErrorCannotMake,EACCES
|
||||
.e kNtErrorCommitmentLimit,ENOMEM
|
||||
.e kNtErrorConnectionAborted,ECONNABORTED
|
||||
.e kNtErrorConnectionActive,EISCONN
|
||||
.e kNtErrorConnectionRefused,ECONNREFUSED
|
||||
.e kNtErrorCrc,EACCES
|
||||
.e kNtErrorDirNotEmpty,ENOTEMPTY
|
||||
.e kNtErrorDupName,EADDRINUSE
|
||||
.e kNtErrorFilenameExcedRange,ENOENT
|
||||
.e kNtErrorGenFailure,EACCES
|
||||
.e kNtErrorGracefulDisconnect,EPIPE
|
||||
.e kNtErrorHostDown,EHOSTUNREACH
|
||||
.e kNtErrorHostUnreachable,EHOSTUNREACH
|
||||
.e kNtErrorInsufficientBuffer,EFAULT
|
||||
.e kNtErrorInvalidAddress,EADDRNOTAVAIL
|
||||
.e kNtErrorInvalidFunction,EINVAL
|
||||
.e kNtErrorInvalidNetname,EADDRNOTAVAIL
|
||||
.e kNtErrorInvalidUserBuffer,EMSGSIZE
|
||||
.e kNtErrorIoPending,EINPROGRESS
|
||||
.e kNtErrorLockViolation,EACCES
|
||||
.e kNtErrorMoreData,EMSGSIZE
|
||||
.e kNtErrorNetnameDeleted,ECONNABORTED
|
||||
.e kNtErrorNetworkAccessDenied,EACCES
|
||||
.e kNtErrorNetworkBusy,ENETDOWN
|
||||
.e kNtErrorNetworkUnreachable,ENETUNREACH
|
||||
.e kNtErrorNoaccess,EFAULT
|
||||
.e kNtErrorNonpagedSystemResources,ENOMEM
|
||||
.e kNtErrorNotEnoughMemory,ENOMEM
|
||||
.e kNtErrorNotEnoughQuota,ENOMEM
|
||||
.e kNtErrorNotFound,ENOENT
|
||||
.e kNtErrorNotLocked,EACCES
|
||||
.e kNtErrorNotReady,EACCES
|
||||
.e kNtErrorNotSupported,ENOTSUP
|
||||
.e kNtErrorNoMoreFiles,ENOENT
|
||||
.e kNtErrorNoSystemResources,ENOMEM
|
||||
.e kNtErrorOperationAborted,EINTR
|
||||
.e kNtErrorOutOfPaper,EACCES
|
||||
.e kNtErrorPagedSystemResources,ENOMEM
|
||||
.e kNtErrorPagefileQuota,ENOMEM
|
||||
.e kNtErrorPipeNotConnected,EPIPE
|
||||
.e kNtErrorPortUnreachable,ECONNRESET
|
||||
.e kNtErrorProtocolUnreachable,ENETUNREACH
|
||||
.e kNtErrorRemNotList,ECONNREFUSED
|
||||
.e kNtErrorRequestAborted,EINTR
|
||||
.e kNtErrorReqNotAccep,EWOULDBLOCK
|
||||
.e kNtErrorSectorNotFound,EACCES
|
||||
.e kNtErrorSemTimeout,ETIMEDOUT
|
||||
.e kNtErrorSharingViolation,EACCES
|
||||
.e kNtErrorTooManyNames,ENOMEM
|
||||
.e kNtErrorUnexpNetErr,ECONNABORTED
|
||||
.e kNtErrorWorkingSetQuota,ENOMEM
|
||||
.e kNtErrorWriteProtect,EACCES
|
||||
.e kNtErrorWrongDisk,EACCES
|
||||
.e WSAEACCES,EACCES
|
||||
.e WSAEDISCON,EPIPE
|
||||
.e WSAEFAULT,EFAULT
|
||||
.e WSAEINPROGRESS,EBUSY
|
||||
.e WSAEINVAL,EINVAL
|
||||
.e WSAEPROCLIM,ENOMEM
|
||||
.e WSAESHUTDOWN,EPIPE
|
||||
.e WSANOTINITIALISED,ENETDOWN
|
||||
.e WSASYSNOTREADY,ENETDOWN
|
||||
.e WSAVERNOTSUPPORTED,ENOSYS
|
||||
.short 0
|
||||
.endobj kDos2Errno,globl,hidden
|
||||
.overrun
|
|
@ -1,41 +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 2020 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. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/errno.h"
|
||||
#include "libc/nt/errors.h"
|
||||
#include "libc/sock/sock.h"
|
||||
|
||||
struct thatispacked Dos2Errno {
|
||||
uint16_t doscode;
|
||||
int32_t systemv;
|
||||
};
|
||||
|
||||
extern const struct Dos2Errno kDos2Errno[];
|
||||
|
||||
/**
|
||||
* Translates Windows error using superset of consts.sh.
|
||||
*/
|
||||
privileged errno_t __dos2errno(uint32_t error) {
|
||||
int i;
|
||||
for (i = 0; kDos2Errno[i].doscode; ++i) {
|
||||
if (error == kDos2Errno[i].doscode) {
|
||||
return *(const int *)((intptr_t)kDos2Errno + kDos2Errno[i].systemv);
|
||||
}
|
||||
}
|
||||
return error;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue