cosmopolitan/test/libc/calls
Justine Tunney 3f3cb0650b
Have execve() escape double quotes in cmd.exe's preferred style
This makes it possible for us to use system() and popen() with paths
that redirect to filenames that contain spaces, e.g.

    system("echo.com hello >\"hello there.txt\"")

It's difficult to solve this problem, because WIN32 only allows passing
one single argument when launching programs and each program is allowed
to tokenize that however it wants. Most software follows the convention
of cmd.exe which is poorly documented and positively byzantine.

In the future we're going to solve this by not using cmd.exe at all and
instead embedding the cocmd.com interpreter into the system() function.
In the meantime, our documentation has been updated to help recalibrate
any expectation the user might hold regarding the security of using the
Windows command interpreter.

Fixes #644
2022-10-02 09:15:46 -07:00
..
_timespec_test.c Improve some timespec functions 2022-09-19 16:13:37 -07:00
access_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
chdir_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
clock_getres_test.c Clean up some code 2022-08-20 12:32:51 -07:00
clock_gettime_test.c Reduce build graph by another eight percent 2022-08-13 13:11:56 -07:00
closefrom_test.c Improve system call wrappers 2022-09-19 15:06:25 -07:00
commandv_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
copy_file_range_test.c Work around copy_file_range() GitHub Actions issue 2022-09-19 16:12:56 -07:00
diagnose_syscall_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
dup_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
fcntl_test.c Make important improvements 2022-09-14 22:39:08 -07:00
fexecve_test.c Add fexecve() and map O_EXEC to O_PATH on Linux 2022-10-02 09:15:46 -07:00
fileexists_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
ftruncate_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
getcontext_test.c Perform more low-level code cleanup 2022-09-09 04:07:08 -07:00
getcwd_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
getgroups_test.c Fix getgroups / setgroups tests across platforms 2022-09-18 03:18:38 -07:00
getitimer_test.c Improve ZIP filesystem and change its prefix 2021-08-22 01:11:53 -07:00
ioctl_siocgifconf_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
life.c Make improvements to locking 2022-06-19 01:30:12 -07:00
lock_test.c Make important improvements 2022-09-14 22:39:08 -07:00
lseek_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
mkdir_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mkntcmdline_test.c Have execve() escape double quotes in cmd.exe's preferred style 2022-10-02 09:15:46 -07:00
mkntenvblock_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mkntpath_test.c Have execve() escape double quotes in cmd.exe's preferred style 2022-10-02 09:15:46 -07:00
nanosleep_test.c Clean up some code 2022-08-20 12:32:51 -07:00
open_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
openbsd_test.c Create unit test framework for subprocesses 2022-09-03 18:02:01 -07:00
pipe_test.c Get repository to build with GCC 11 2022-09-13 04:14:55 -07:00
pledge2_test.c Create unit test framework for subprocesses 2022-09-03 18:02:01 -07:00
pledge_test.c Introduce testlib_extract() helper 2022-10-02 09:15:46 -07:00
poll_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
posix_fadvise_test.c Improve system call wrappers 2022-09-19 15:06:25 -07:00
pread_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
preadv_test.c Make important improvements 2022-09-14 22:39:08 -07:00
printargs_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
ptrace_test.c Prevent Make from talking to public Internet 2022-08-12 21:51:39 -07:00
pwrite_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
raise_test.c Improve quality of raise(), abort(), and tkill() 2022-09-03 20:17:54 -07:00
read_test.c Reduce build graph by another eight percent 2022-08-13 13:11:56 -07:00
readansi_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
readlinkat_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
renameat_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
reservefd_test.c Use *NSYNC for POSIX threads locking APIs 2022-09-11 11:04:50 -07:00
sched_getaffinity_test.c Make more compatibility improvements 2022-09-06 07:04:13 -07:00
sched_setscheduler_test.c Clean up some code 2022-08-20 12:32:51 -07:00
seccomp_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
setitimer_test.c Change sigaction_f to match sysv signature (#585) 2022-09-02 05:08:35 -07:00
setrlimit_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
sigaction_test.c Discard ignored signals on New Technology (#592) 2022-09-05 09:17:56 -07:00
signal_test.c Remove testonly keyword 2022-09-05 08:41:43 -07:00
sigpending_test.c Implement sigpending for sysv and nt (#597) 2022-09-07 05:38:12 -07:00
sigprocmask_test.c Fix inability to add some signals to mask on NT (#596) 2022-09-06 18:35:26 -07:00
sigsuspend_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
splice_test.c Improve system call wrappers 2022-09-19 15:06:25 -07:00
stat_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
statfs_test.c Polyfill statfs() and fstatfs() on Windows 2022-08-17 19:01:51 -07:00
symlinkat_test.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
sys_ptrace_test.c Prevent Make from talking to public Internet 2022-08-12 21:51:39 -07:00
test.mk Add fexecve() and map O_EXEC to O_PATH on Linux 2022-10-02 09:15:46 -07:00
tiny64.elf Bump support up to FreeBSD 13 and NetBSD 9.2 2022-06-11 10:36:17 -07:00
tkill_test.c Get threads working on all platforms 2022-05-13 03:59:09 -07:00
unlinkat_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
unveil_test.c Introduce testlib_extract() helper 2022-10-02 09:15:46 -07:00
utimensat_test.c Unbloat the build 2022-08-11 00:15:29 -07:00
vfork_test.c Remove plenty of makefile misconfigurations 2022-07-21 09:20:59 -07:00
write_test.c Reduce build graph by another eight percent 2022-08-13 13:11:56 -07:00
writev_test.c Pay off more technical debt 2022-09-12 23:36:56 -07:00