Mail Archives: cygwin/2008/06/13/12:56:59
2008/6/13 Corinna Vinschen:
> On Jun 13 17:14, Corinna Vinschen wrote:
>> > char *Cygwin_mount_flags(char *pathname) {
>> >
>> > char flags[260]; /* I know, I know. stack vs heap */
>> > [...]
>> > return flags;
>
> And it's returning the content of a local buffer. Ouch!
It was just an example. The real perl function is correct of course.
>> char user[260];
>> char system[260];
>> char user_flags[260];
>> char system_flags[260];
>The paths in user and system are potentially PATH_MAX bytes long.
>That's 4K in 1.7.
Thank for the PATH_MAX hint. I almost forgot that.
>> /* TODO: Check for cygdrive registry setting,
>> * and then use CW_GET_CYGDRIVE_INFO
>> */
>Drop that TODO. Never test the registry, not even in 1.5, even less
>in 1.7.
To explain:
For now I had the semantic limitation that the magic
Cygwin::mount_flags("/cygdrive")
is required to return the volume mount settings.
But when a user mounted it to somewhere else, say "/mnt", then
the result for Cygwin::mount_flags("/mnt") might not be what he/she
expected. So the TODO is to check if "/mnt" is the current volume
mount point, and return the volume mount point flags then.
Changed to
/* TODO: Check if arg is the current volume moint point if not default,
* and then use CW_GET_CYGDRIVE_INFO also.
*/
The next perl-5.10 version (this time for cygwin 1.7) will have
this TODO actually implemented.
From README.cygwin:
=item C<Cygwin::mount_flags>
Returns the mount type and flags for a specified mount point.
A comma-separated string of mntent->mnt_type (always
"system" or "user"), then the mntent->mnt_opts, where
the first is always "binmode" or "textmode".
system|user,binmode|textmode,exec,cygexec,cygdrive,mixed,
notexec,managed,nosuid,devfs,proc,noumount
If the argument is "/cygdrive" or equal to the current cygdrive mount
prefix, then just the volume mount settings, and the cygdrive mount
prefix are returned.
User mounts override system mounts.
$ perl -e 'print Cygwin::mount_flags "/usr/bin"'
system,binmode,cygexec
$ perl -e 'print Cygwin::mount_flags "/cygdrive"'
binmode,cygdrive,/cygdrive
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
--
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/
- Raw text -