mirror of
git://git.musl-libc.org/musl
synced 2024-12-17 12:14:42 +00:00
support null buffer argument to getcwd, auto-allocating behavior
this is a popular extension some programs depend on, and by using a temporary buffer and strdup rather than malloc prior to the syscall, i've avoided the dependency on free and thus minimized the bloat cost of supporting this feature.
This commit is contained in:
parent
051175d4fe
commit
899b13cae7
@ -1,8 +1,13 @@
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include "syscall.h"
|
||||
|
||||
char *getcwd(char *buf, size_t size)
|
||||
{
|
||||
return syscall(SYS_getcwd, buf, size) < 0 ? NULL : buf;
|
||||
char tmp[PATH_MAX];
|
||||
if (!buf) buf = tmp, size = PATH_MAX;
|
||||
if (syscall(SYS_getcwd, buf, size) < 0) return 0;
|
||||
return buf == tmp ? strdup(buf) : buf;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user