Mark J. Reed
Fri Oct 31 11:11:00 GMT 2008

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.  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.

Mark J. Reed <>

Unsubscribe info:
Problem reports:

More information about the Cygwin mailing list