From: Thomas Wouters Date: Tue, 25 Apr 2006 15:29:46 +0000 (+0000) Subject: Define MAXPATHLEN to be at least PATH_MAX, if that's defined. Python uses X-Git-Tag: v2.5a2~21 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ddba60e3d084bfca4615bbd77c3c6f4ed34d8ee;p=python Define MAXPATHLEN to be at least PATH_MAX, if that's defined. Python uses MAXPATHLEN-sized buffers for various output-buffers (like to realpath()), and that's correct on BSD platforms, but not Linux (which uses PATH_MAX, and does not define MAXPATHLEN.) Cursory googling suggests Linux is following a newer standard than BSD, but in cases like this, who knows. Using the greater of PATH_MAX and 1024 as a fallback for MAXPATHLEN seems to be the most portable solution. --- diff --git a/Include/osdefs.h b/Include/osdefs.h index 8190a752ea..6937659325 100644 --- a/Include/osdefs.h +++ b/Include/osdefs.h @@ -37,8 +37,12 @@ extern "C" { /* Max pathname length */ #ifndef MAXPATHLEN +#if defined(PATH_MAX) && PATH_MAX > 1024 +#define MAXPATHLEN PATH_MAX +#else #define MAXPATHLEN 1024 #endif +#endif /* Search path entry delimiter */ #ifndef DELIM diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index ac74a6741f..7f2356c067 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -262,7 +262,11 @@ extern int lstat(const char *, struct stat *); #endif /* OS2 */ #ifndef MAXPATHLEN +#if defined(PATH_MAX) && PATH_MAX > 1024 +#define MAXPATHLEN PATH_MAX +#else #define MAXPATHLEN 1024 +#endif #endif /* MAXPATHLEN */ #ifdef UNION_WAIT diff --git a/Python/getcwd.c b/Python/getcwd.c index 5c57291459..967d484b35 100644 --- a/Python/getcwd.c +++ b/Python/getcwd.c @@ -14,8 +14,12 @@ #endif #ifndef MAXPATHLEN +#if defined(PATH_MAX) && PATH_MAX > 1024 +#define MAXPATHLEN PATH_MAX +#else #define MAXPATHLEN 1024 #endif +#endif extern char *getwd(char *);