Use getcwd() instead of get_current_dir_name().
authorGuus Sliepen <guus@tinc-vpn.org>
Sat, 7 Oct 2017 14:54:52 +0000 (16:54 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sat, 7 Oct 2017 14:56:01 +0000 (16:56 +0200)
configure.ac
src/conf.c
src/dropin.c

index f25ec2b..ce2c125 100644 (file)
@@ -207,7 +207,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 fork get_current_dir_name gettimeofday mlockall pselect putenv strsignal system unsetenv usleep vsyslog devname fdevname],
+AC_CHECK_FUNCS([asprintf daemon fchmod flock fork gettimeofday mlockall pselect putenv strsignal system unsetenv usleep vsyslog devname fdevname],
   [], [], [#include "$srcdir/src/have.h"]
 )
 
index 2e13e45..1c250d7 100644 (file)
@@ -485,7 +485,7 @@ static void disable_old_keys(const char *filename) {
 
 FILE *ask_and_open(const char *filename, const char *what) {
        FILE *r;
-       char *directory;
+       char directory[PATH_MAX];
        char line[PATH_MAX];
        char abspath[PATH_MAX];
        const char *fn;
@@ -521,9 +521,8 @@ FILE *ask_and_open(const char *filename, const char *what) {
        if(fn[0] != '/') {
 #endif
                /* The directory is a relative path or a filename. */
-               directory = get_current_dir_name();
+               getcwd(directory, sizeof directory);
                snprintf(abspath, sizeof abspath, "%s/%s", directory, fn);
-               free(directory);
                fn = abspath;
        }
 
index a99c828..49d5662 100644 (file)
@@ -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;