37 #include "lrealpath.h" 
   53 #if defined(HAVE_CANONICALIZE_FILE_NAME) && defined(NEED_DECLARATION_CANONICALIZE_FILE_NAME) 
   54 extern char* canonicalize_file_name(
const char*);
 
   57 #if defined(HAVE_REALPATH) 
   59 #define REALPATH_LIMIT PATH_MAX 
   61 #if defined(MAXPATHLEN) 
   62 #define REALPATH_LIMIT MAXPATHLEN 
   68 #define WIN32_LEAN_AND_MEAN 
   74 lrealpath(
const char* filename) {
 
   79 #if defined(REALPATH_LIMIT) 
   81         char        buf[REALPATH_LIMIT];
 
   82         const char* rp = realpath(filename, buf);
 
   92 #elif defined(HAVE_CANONICALIZE_FILE_NAME) 
   94         char* rp = canonicalize_file_name(filename);
 
   96             return strdup(filename);
 
  109 #elif defined(HAVE_REALPATH) && defined(HAVE_UNISTD_H) 
  112         long path_max = pathconf(
"/", _PC_PATH_MAX);
 
  115             char *buf, *rp, *ret;
 
  116             buf = (
char*)malloc(path_max);
 
  119             rp  = realpath(filename, buf);
 
  120             ret = strdup(rp ? rp : filename);
 
  135 #elif defined(_WIN32) 
  139         DWORD len = GetFullPathName(filename, MAX_PATH, buf, &basename);
 
  140         if (len == 0 || len > MAX_PATH - 1)
 
  141             return strdup(filename);
 
  146             CharLowerBuff(buf, len);
 
  153     return strdup(filename);