On Oct 31 07:03, Mark J. Reed wrote: > John Emmas> Calling 'canonicalize_file_name(path)' is equivalent to calling > JE> 'realpath(path, NULL)' By a stroke of luck, 'realpath()' is defined in > JE> cygwin/stdlib.h so maybe I should use that? > > Corinna Vinschen> Yes, sure. > > Yes, you should use realpath(), but passing it NULL won't necessarily > work. The second argument is supposed to be a pointer to the buffer > in which it should put its result, and according to POSIX the call > should fail if that argument is NULL. > > GNU has extended its version of realpath() to dynamically allocate a > result buffer when the second argument is NULL. I would not assume > that Cygwin does likewise, since it's a libc function and Cygwin > doesn't use GNU libc.
Cygwin follows the GNU extension here. NULL as second pointer results in realpath returning a mallocated buffer. > The safest course would be to declare or > preallocate a buffer of size PATH_MAX and pass it to realpath(); that > should work with any POSIX-compliant C library. Neverthless this is good advice if portability is an issue. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/

