mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 23:08:31 +00:00
Make improvements
- Expand redbean UNIX module - Expand redbean documentation - Ensure Lua copyright is embedded in binary - Increase the PATH_MAX limit especially on NT - Use column major sorting for linenoise completions - Fix some suboptimalities in redbean's new UNIX API - Figured out right flags for Multics newline in raw mode
This commit is contained in:
parent
cf3174dc74
commit
2046c0d2ae
305 changed files with 6602 additions and 4221 deletions
|
@ -32,10 +32,6 @@
|
|||
* - `%m` inserts strerror(errno) into the formatted output. This is
|
||||
* consistent with glibc, musl, and uclibc.
|
||||
*
|
||||
* - `%n` inserts "\n" on non-Windows and "\r\n" on Windows. This is the
|
||||
* same behavior as Java. It's incompatible with glibc's behavior,
|
||||
* since that's problematic according to Android's security team.
|
||||
*
|
||||
* - `%hs` converts UTF-16/UCS-2 → UTF-8, which can be helpful on Windows.
|
||||
* Formatting (e.g. %-10hs) will use monospace display width rather
|
||||
* than string length or codepoint count.
|
||||
|
|
|
@ -40,7 +40,7 @@ int posix_spawn(int *pid, const char *path,
|
|||
unsigned mode;
|
||||
sigset_t allsigs;
|
||||
struct sigaction dfl;
|
||||
char *p, *q, opath[PATH_MAX];
|
||||
char *p, *q, opath[PATH_MAX + 1];
|
||||
int s, fd, newfd, oflag, tempfd;
|
||||
if (!(*pid = vfork())) {
|
||||
if (attrp) {
|
||||
|
@ -77,7 +77,7 @@ int posix_spawn(int *pid, const char *path,
|
|||
if (sscanf(p + 5, "%d,", &fd) != 1) _Exit(127);
|
||||
p = strchr(p, ',') + 1;
|
||||
q = strchr(p, '*');
|
||||
if (!q || q - p + 1 > PATH_MAX) _Exit(127);
|
||||
if (!q || q - p > PATH_MAX) _Exit(127);
|
||||
strncpy(opath, p, q - p);
|
||||
opath[q - p] = '\0';
|
||||
if (sscanf(q + 1, "%o,%o)", &oflag, &mode) != 2) _Exit(127);
|
||||
|
|
|
@ -31,7 +31,7 @@ int posix_spawnp(int *pid, const char *path,
|
|||
const posix_spawn_file_actions_t *file_actions,
|
||||
const posix_spawnattr_t *attrp, char *const argv[],
|
||||
char *const envp[]) {
|
||||
char pathbuf[PATH_MAX];
|
||||
if (!(path = commandv(path, pathbuf))) return errno;
|
||||
char pathbuf[PATH_MAX + 1];
|
||||
if (!(path = commandv(path, pathbuf, sizeof(pathbuf)))) return errno;
|
||||
return posix_spawn(pid, path, file_actions, attrp, argv, envp);
|
||||
}
|
||||
|
|
|
@ -32,11 +32,11 @@
|
|||
*/
|
||||
FILE *tmpfile(void) {
|
||||
int fd;
|
||||
char *tmp, *sep, tpl[PATH_MAX];
|
||||
char *tmp, *sep, tpl[PATH_MAX + 1];
|
||||
tmp = firstnonnull(getenv("TMPDIR"), kTmpPath);
|
||||
sep = !isempty(tmp) && !endswith(tmp, "/") ? "/" : "";
|
||||
if ((snprintf)(tpl, PATH_MAX, "%s%stmp.%s.XXXXXX", tmp, sep,
|
||||
program_invocation_short_name) < PATH_MAX) {
|
||||
if ((snprintf)(tpl, PATH_MAX + 1, "%s%stmp.%s.XXXXXX", tmp, sep,
|
||||
program_invocation_short_name) <= PATH_MAX) {
|
||||
if ((fd = mkostemps(tpl, 0, 0)) != -1) {
|
||||
return fdopen(fd, "w+");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue