diff --git a/src/modules/files/configure.in b/src/modules/files/configure.in
index 340550c4cbc13449d09818b91924783766b647fe..009efb36cd41bf07978f0e56cefeae82dfe7a9d0 100644
--- a/src/modules/files/configure.in
+++ b/src/modules/files/configure.in
@@ -9,7 +9,7 @@ AC_HAVE_HEADERS(arpa/inet.h sys/socketvar.h netinet/in.h)
 AC_HEADER_DIRENT
 AC_CHECK_LIB(socket, socket)
 
-AC_HAVE_FUNCS(socketpair)
+AC_HAVE_FUNCS(socketpair getwd getcwd)
 
 AC_MSG_CHECKING(size of socket buffers)
 AC_CACHE_VAL(lpc_cv_socket_buffer_max,
diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c
index 8245da5a977780817f348d051f2180811c64c12b..1467cd71637bd405d79cc42189053ea811c59176 100644
--- a/src/modules/files/efuns.c
+++ b/src/modules/files/efuns.c
@@ -194,12 +194,14 @@ void f_getcwd(INT32 args)
   char *e;
   pop_n_elems(args);
 
-#ifdef HAVE_GETCWD
-  e=(char *)getcwd(0,1000); 
-#else
+#ifdef HAVE_GETWD
   e=(char *)getwd((char *)malloc(MAXPATHLEN+1));
   if(!e)
     fatal("Couldn't fetch current path.\n");
+#else
+#ifdef HAVE_GETCWD
+  e=(char *)getcwd(0,1000); 
+#endif
 #endif
   push_string(make_shared_string(e));
   free(e);