osutil: emulate os.listdir's OSError for long names (
issue2898)
--- a/mercurial/osutil.c Wed Jul 13 16:28:46 2011 -0500
+++ b/mercurial/osutil.c Wed Jul 13 16:58:51 2011 -0500
@@ -12,6 +12,7 @@
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
+#include <errno.h>
#ifdef _WIN32
#include <windows.h>
@@ -288,7 +289,8 @@
#endif
if (pathlen >= PATH_MAX) {
- PyErr_SetString(PyExc_ValueError, "path too long");
+ errno = ENAMETOOLONG;
+ PyErr_SetFromErrnoWithFilename(PyExc_OSError, path);
goto error_value;
}
strncpy(fullpath, path, PATH_MAX);