From 46ebfbb6eb9966239f7826e002d99554420bbbc8 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Thu, 14 Apr 2016 17:29:25 +0200 Subject: [PATCH] Use getcwd() instead of get_current_dir_name(). --- configure.ac | 2 +- src/dropin.c | 34 ---------------------------------- src/tincctl.c | 4 ++-- 3 files changed, 3 insertions(+), 37 deletions(-) diff --git a/configure.ac b/configure.ac index 9691fd5b..80bc79b1 100644 --- a/configure.ac +++ b/configure.ac @@ -199,7 +199,7 @@ AC_CHECK_TYPES([socklen_t, struct ether_header, struct arphdr, struct ether_arp, dnl Checks for library functions. AC_TYPE_SIGNAL -AC_CHECK_FUNCS([asprintf daemon fchmod flock ftime fork get_current_dir_name gettimeofday mlockall putenv random recvmmsg select strdup strsignal nanosleep unsetenv vsyslog devname fdevname], +AC_CHECK_FUNCS([asprintf daemon fchmod flock ftime fork gettimeofday mlockall putenv random recvmmsg select strdup strsignal nanosleep unsetenv vsyslog devname fdevname], [], [], [#include "$srcdir/src/have.h"] ) diff --git a/src/dropin.c b/src/dropin.c index a2297557..fe3b7ef2 100644 --- a/src/dropin.c +++ b/src/dropin.c @@ -86,40 +86,6 @@ int daemon(int nochdir, int noclose) { } #endif -#ifndef HAVE_GET_CURRENT_DIR_NAME -/* - Replacement for the GNU get_current_dir_name function: - - get_current_dir_name will malloc(3) an array big enough to hold the - current directory name. If the environment variable PWD is set, and - its value is correct, then that value will be returned. -*/ -char *get_current_dir_name(void) { - size_t size; - char *buf; - char *r; - - /* Start with 100 bytes. If this turns out to be insufficient to - contain the working directory, double the size. */ - size = 100; - buf = xmalloc(size); - - errno = 0; /* Success */ - r = getcwd(buf, size); - - /* getcwd returns NULL and sets errno to ERANGE if the bufferspace - is insufficient to contain the entire working directory. */ - while(r == NULL && errno == ERANGE) { - free(buf); - size <<= 1; /* double the size */ - buf = xmalloc(size); - r = getcwd(buf, size); - } - - return buf; -} -#endif - #ifndef HAVE_ASPRINTF int asprintf(char **buf, const char *fmt, ...) { int result; diff --git a/src/tincctl.c b/src/tincctl.c index 1eb98180..9687ba4b 100644 --- a/src/tincctl.c +++ b/src/tincctl.c @@ -330,7 +330,7 @@ static void disable_old_keys(const char *filename, const char *what) { static FILE *ask_and_open(const char *filename, const char *what, const char *mode, bool ask, mode_t perms) { FILE *r; - char *directory; + char directory[PATH_MAX] = "."; char buf[PATH_MAX]; char buf2[PATH_MAX]; @@ -358,7 +358,7 @@ static FILE *ask_and_open(const char *filename, const char *what, const char *mo if(filename[0] != '/') { #endif /* The directory is a relative path or a filename. */ - directory = get_current_dir_name(); + getcwd(directory, sizeof directory); snprintf(buf2, sizeof buf2, "%s" SLASH "%s", directory, filename); filename = buf2; } -- 2.20.1