On Fri, Sep 2, 2011 at 10:38 PM, Bruno Haible <br...@clisp.org> wrote: > Michael Goffioul wrote: >> > Indeed. The problem is that after the 2011-08-05 commit, m4/chdir-long.m4 >> > and lib/chdir-long are no longer in sync: The .m4 file assumes that only >> > <unistd.h> and <limits.h> will be included before >> > (defined PATH_MAX || defined MAXPATHLEN) is tested, >> > whereas the .h file includes >> > <unistd.h>, <limits.h>, <sys/param.h> before doing this test. >> > >> >> It should be providing >> >> chdir_long() unconditionally, but when there is no arbitrary file name >> >> limit, it should be a simple stub around chdir(). >> > >> > That would be a possible fix of the problem, yes. >> >> Any update on this one? > > After looking more closely, I don't know what's going on. AFAICS, > mingw has a <sys/param.h> file, but msvc doesn't. So where does the > difference in behaviour between m4/chdir-long.m4 and lib/chdir-long.h > come from?
The test in m4/chdir-long.m4 ends up with gl_cv_arbitrary_file_name_length_limit=no, because msvc does not define PATH_MAX or MAXPATHLEN. Then in modules/chdir-long, the configure.ac snippet won't add chdir-long to the list of compiled file; hence the symbol chdir_long will be missing. However, save-cwd.c uses chdir_long unconditionally. Michael.