libuv/test
Ben Noordhuis 885b1ecda0 darwin: fix uv_exepath(smallbuf) UV_EPERM error
Passing a buffer that was too small to hold the result made it fail
with UV_EPERM because the -1 status code from _NSGetExecutablePath()
was returned unmodified to the caller.

This commit rewrites uv_exepath() to:

1. Not allocate heap memory, and

2. Not clobber the result buffer on error, and

3. Handle _NSGetExecutablePath()'s and realpath()'s idiosyncracies, and

4. Store as much of the path in the output buffer as possible, don't
   fail with an error.  Makes it behave the same as other platforms.
   The result is always zero-terminated.

Fixes: https://github.com/libuv/libuv/issues/103
PR-URL: https://github.com/libuv/libuv/pull/104
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2015-01-03 23:40:24 +01:00
..
fixtures win, unix: add uv_dlerror() and uv_dlerror_free() 2012-03-02 16:39:21 +01:00
benchmark-async-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-fs-stat.c unix, windows: rename uv_run2 to uv_run 2013-01-16 23:35:29 +01:00
benchmark-getaddrinfo.c unix, windows: rename uv_run2 to uv_run 2013-01-16 23:35:29 +01:00
benchmark-list.h bench: add 'million async handles' benchmark 2012-12-24 12:19:10 +01:00
benchmark-loop-count.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-million-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-million-timers.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-multi-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-ping-pongs.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
benchmark-pound.c test: wrap long lines at 80 columns 2013-09-11 17:29:43 +02:00
benchmark-pump.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-sizes.c test: add uv_fs_poll_t to benchmark-sizes.c 2012-08-20 16:31:54 +02:00
benchmark-spawn.c include: uv_spawn takes const uv_process_options_t* 2013-09-01 08:25:00 +02:00
benchmark-tcp-write-batch.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
benchmark-thread.c Make the thread_create benchmark not time out 2012-03-09 17:53:48 +01:00
benchmark-udp-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
blackhole-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
dns-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
echo-server.c test: don't close connection on write error 2014-09-10 22:50:54 +02:00
run-benchmarks.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
run-tests.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
runner-unix.c test: fix compilation warnings when building with Clang 2014-12-13 20:57:43 +01:00
runner-unix.h Add copyright headers, license file. 2011-04-18 11:11:30 -07:00
runner-win.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
runner-win.h test: fix windows #include bug 2012-10-03 00:58:04 +02:00
runner.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
runner.h test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
task.h test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-active.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async-null-cb.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-barrier.c Revert "test: make barrier test more rigorous" 2014-07-02 00:16:50 +02:00
test-callback-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-callback-stack.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-close-fd.c linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT 2013-11-08 05:16:55 +01:00
test-close-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-condvar.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-connection-fail.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-cwd-and-chdir.c test: fix cwd_and_chdir test on Unix 2014-12-16 08:12:46 +01:00
test-default-loop-close.c test: add test for closing and recreating default loop 2014-09-15 21:34:09 +02:00
test-delayed-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-dlerror.c test: check dlerror is "no error" in no error case 2014-12-14 20:33:43 +01:00
test-embed.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-emfile.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-fail-always.c Benchmark runner 2011-04-19 04:47:21 +02:00
test-fs-event.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-fs-poll.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-fs.c test: fix test-fs-file-loop on Windows 2014-12-11 17:02:26 +01:00
test-get-currentexe.c darwin: fix uv_exepath(smallbuf) UV_EPERM error 2015-01-03 23:40:24 +01:00
test-get-loadavg.c os: implement loadavg (not working on cygwin/win) 2011-10-04 18:15:14 +02:00
test-get-memory.c Tests: don't use %zu placeholder in printf statements 2012-04-11 22:54:02 +02:00
test-getaddrinfo.c test: fix compilation warnings with VC++ 2014-04-17 17:31:11 +02:00
test-getnameinfo.c include: const-ify arguments to uv_getnameinfo_cb 2014-06-26 22:46:39 +02:00
test-getsockname.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-handle-fileno.c unix, windows: add uv_fileno 2014-08-27 10:53:40 +02:00
test-hrtime.c test: allow 80 ms intervals in hrtime test 2012-07-03 22:33:10 +02:00
test-idle.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-ip4-addr.c test: remove C++ style comment 2013-12-13 22:37:14 +04:00
test-ip6-addr.c unix, windows: fix parsing scoped IPv6 addresses 2014-05-25 23:30:46 +02:00
test-ipc-send-recv.c pipe: allow queueing pending handles 2014-03-04 00:34:29 +04:00
test-ipc.c windows: relay TCP bind errors via ipc 2014-07-31 17:24:40 +02:00
test-list.h unix: fix ttl, multicast ttl and loop options on IPv6 2015-01-02 17:34:13 +01:00
test-loop-alive.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-close.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-configure.c linux: fix epoll_pwait() sigmask size calculation 2014-12-25 14:37:02 +01:00
test-loop-handles.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-time.c windows: add uv_backend_timeout 2014-08-04 23:18:38 +02:00
test-multiple-listen.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-mutexes.c Wrap platform mutex and rwlock APIs. 2011-11-18 12:42:08 +01:00
test-osx-select.c test: relax osx_select_many_fds 2014-12-13 20:57:28 +01:00
test-pass-always.c Benchmark runner 2011-04-19 04:47:21 +02:00
test-ping-pong.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-pipe-bind-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-pipe-close-stdout-read-stdin.c test: fix compilation warnings when building with Clang 2014-12-13 20:57:43 +01:00
test-pipe-connect-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-pipe-getsockname.c windows: make uv_read_stop immediately stop reading 2014-08-09 11:10:57 +02:00
test-pipe-sendmsg.c pipe: allow queueing pending handles 2014-03-04 00:34:29 +04:00
test-pipe-server-close.c test: make test-pipe-server-close pass on linux 2013-12-21 02:34:44 -08:00
test-platform-output.c test: add uv_cwd output to platform_output test 2014-12-16 08:12:59 +01:00
test-poll-close-doesnt-corrupt-stack.c win: fix compilation of tests 2014-12-10 16:44:27 +01:00
test-poll-close.c code style: strip trailing whitespace 2013-12-20 19:38:37 -08:00
test-poll-closesocket.c windows: fix compilation of tests 2014-11-26 08:32:59 +01:00
test-poll.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-process-title.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-ref.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-nowait.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-once.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-semaphore.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-shutdown-close.c unix, windows: make uv_is_*() always return 0 or 1 2013-09-12 13:30:06 +02:00
test-shutdown-eof.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-shutdown-twice.c unix: correct error when calling uv_shutdown twice 2014-02-15 16:55:06 +01:00
test-signal-multiple-loops.c unix, windows: add uv_loop_init and uv_loop_close 2014-02-21 09:56:13 +01:00
test-signal.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-socket-buffer-size.c unix, windows: add uv_recv_buffer_size and uv_send_buffer_size 2014-08-09 11:36:35 +02:00
test-spawn.c test: fix spawn test with autotools build 2014-12-28 22:51:05 +01:00
test-stdio-over-pipes.c unix: sanity-check fds before closing 2013-10-01 03:55:54 +02:00
test-tcp-bind6-error.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-tcp-bind-error.c unix, windows: validate flags on uv_udp|tcp_bind 2014-04-22 22:57:01 +02:00
test-tcp-close-accept.c test: disable tcp_close_accept on Windows 2014-08-05 00:14:26 +02:00
test-tcp-close-while-connecting.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-close.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-connect6-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error-after-write.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-timeout.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-flags.c unix, windows: rename uv_run2 to uv_run 2013-01-16 23:35:29 +01:00
test-tcp-open.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-read-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-shutdown-after-write.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-try-write.c test: simplify test-tcp-try-write 2014-07-05 11:06:39 +02:00
test-tcp-unexpected-read.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-write-after-connect.c unix: fix tcp write after bad connect freezing 2014-08-21 16:23:43 +02:00
test-tcp-write-queue-order.c test: use less requests on tcp-write-queue-order 2014-09-04 18:45:39 +02:00
test-tcp-write-to-half-open-connection.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-writealot.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-thread-equal.c unix, windows: add uv_thread_equal 2014-10-20 09:51:49 +02:00
test-thread.c unix, windows: add uv_loop_init and uv_loop_close 2014-02-21 09:56:13 +01:00
test-threadpool-cancel.c fs: rename uv_fs_readdir to uv_fs_scandir 2014-09-25 10:09:58 +02:00
test-threadpool.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-timer-again.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-timer-from-check.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-timer.c unix, windows: don't allow a NULL callback on timers 2014-09-05 16:59:18 +02:00
test-tty.c test: skip tty test if detected width and height are 0 2014-12-02 23:57:06 +01:00
test-udp-bind.c unix, windows: do not set SO_REUSEADDR by default on udp 2014-04-02 01:21:35 +02:00
test-udp-dgram-too-big.c include: merge uv_udp_send and uv_udp_send6 2013-09-04 03:17:29 +02:00
test-udp-ipv6.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-udp-multicast-interface6.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-udp-multicast-interface.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-udp-multicast-join6.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-udp-multicast-join.c include: merge uv_udp_send and uv_udp_send6 2013-09-04 03:17:29 +02:00
test-udp-multicast-ttl.c include: merge uv_udp_send and uv_udp_send6 2013-09-04 03:17:29 +02:00
test-udp-open.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-udp-options.c unix: fix ttl, multicast ttl and loop options on IPv6 2015-01-02 17:34:13 +01:00
test-udp-send-and-recv.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-udp-send-immediate.c unix: remove incorrect assert 2014-07-11 22:53:59 +02:00
test-udp-send-unreachable.c windows: fix buffer leak after failed udp send 2014-08-28 08:41:43 +02:00
test-udp-try-send.c unix, win: add uv_udp_try_send 2014-07-04 18:30:33 +02:00
test-walk-handles.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-watcher-cross-stop.c test: fix watcher_cross_stop on Windows 2014-08-21 23:34:51 +02:00