canonicalize_file_name

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Oct 31 11:40:00 GMT 2008


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/



More information about the Cygwin mailing list