Use getcwd() instead of get_current_dir_name().
authorGuus Sliepen <guus@tinc-vpn.org>
Thu, 14 Apr 2016 15:29:25 +0000 (17:29 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 14 Apr 2016 15:29:25 +0000 (17:29 +0200)
configure.ac
src/dropin.c
src/tincctl.c

index 9691fd5b108f1adcfd3bf52acd1e787ef2b946a9..80bc79b13e5f650e9d187541900e74d55b41d3c2 100644 (file)
@@ -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"]
 )
 
index a229755771494976d4a95ab1fab54705be32ddb8..fe3b7ef218ae79c8827388a19d10f1755d2c9528 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;
index 1eb98180292c22641b56dd9924e27b4e801e02d3..9687ba4b7db81259be782678b64cebae16ae5103 100644 (file)
@@ -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;
        }