* cygpath 1.7 wrong
@ 2008-06-03 20:15 Reini Urban
2008-06-09 14:24 ` Corinna Vinschen
0 siblings, 1 reply; 16+ messages in thread
From: Reini Urban @ 2008-06-03 20:15 UTC (permalink / raw)
To: CygWin-Apps
conv_posix_to_win relative is wrong in the 1.7 series.
Not only cygpath, also the cygwin1.dll call
cygwin_conv_path(CCP_POSIX_TO_WIN_W | CCP_RELATIVE,..)
I don't want to upload a new perl for release-2 with this failure.
$ uname -a
CYGWIN_NT-5.1 cygwin17 1.7.0(0.185/5/2) 2008-05-25 20:10 i686 Cygwin
$ mkdir -p t/lib
$ cygpath -aw t/lib
C:\cygwin-1.7\usr\src\perl\perl-5.10.0\builddebug\t\lib
$ cygpath -w t/lib
\ib
$ mount -m
mount -f -b "C:/cygwin-1.7/bin" "/usr/bin"
mount -f -b "C:/cygwin-1.7/lib" "/usr/lib"
mount -f -b "C:/cygwin-1.7" "/"
mount -s -b --change-cygdrive-prefix "/cygdrive/"
$ tail /etc/fstab
C:/cygwin-1.7 / some_fs binary 0 0
C:/cygwin-1.7/bin /usr/bin some_fs binary 0 0
C:/cygwin-1.7/lib /usr/lib some_fs binary 0 0
# This is default anyway:
# none /cygdrive cygdrive binary,user 0 0
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-03 20:15 cygpath 1.7 wrong Reini Urban
@ 2008-06-09 14:24 ` Corinna Vinschen
2008-06-13 8:29 ` Corinna Vinschen
0 siblings, 1 reply; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-09 14:24 UTC (permalink / raw)
To: cygwin-apps
On Jun 3 22:18, Reini Urban wrote:
> conv_posix_to_win relative is wrong in the 1.7 series.
> Not only cygpath, also the cygwin1.dll call
> cygwin_conv_path(CCP_POSIX_TO_WIN_W | CCP_RELATIVE,..)
>
> I don't want to upload a new perl for release-2 with this failure.
>
> $ uname -a
> CYGWIN_NT-5.1 cygwin17 1.7.0(0.185/5/2) 2008-05-25 20:10 i686 Cygwin
>
> $ mkdir -p t/lib
>
> $ cygpath -aw t/lib
> C:\cygwin-1.7\usr\src\perl\perl-5.10.0\builddebug\t\lib
>
> $ cygpath -w t/lib
> \ib
Ouch. I'll look into it in the next couple of days.
Thanks for the report,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-09 14:24 ` Corinna Vinschen
@ 2008-06-13 8:29 ` Corinna Vinschen
2008-06-13 13:04 ` Reini Urban
0 siblings, 1 reply; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 8:29 UTC (permalink / raw)
To: cygwin-apps
On Jun 9 16:24, Corinna Vinschen wrote:
> On Jun 3 22:18, Reini Urban wrote:
> > $ mkdir -p t/lib
> >
> > $ cygpath -aw t/lib
> > C:\cygwin-1.7\usr\src\perl\perl-5.10.0\builddebug\t\lib
> >
> > $ cygpath -w t/lib
> > \ib
>
> Ouch. I'll look into it in the next couple of days.
I've uploaded 1.7.0-17 which contains a fix for that. Please give it
a try.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 8:29 ` Corinna Vinschen
@ 2008-06-13 13:04 ` Reini Urban
2008-06-13 13:14 ` Eric Blake
2008-06-13 14:31 ` Corinna Vinschen
0 siblings, 2 replies; 16+ messages in thread
From: Reini Urban @ 2008-06-13 13:04 UTC (permalink / raw)
To: cygwin-apps
Corinna Vinschen schrieb:
> On Jun 9 16:24, Corinna Vinschen wrote:
>> On Jun 3 22:18, Reini Urban wrote:
>>> $ mkdir -p t/lib
>>>
>>> $ cygpath -aw t/lib
>>> C:\cygwin-1.7\usr\src\perl\perl-5.10.0\builddebug\t\lib
>>>
>>> $ cygpath -w t/lib
>>> \ib
>> Ouch. I'll look into it in the next couple of days.
>
> I've uploaded 1.7.0-17 which contains a fix for that. Please give it
> a try.
Thanks, cygpath seems to fixed.
However, my perl tests still don't run through.
1) cygwin_internal(CW_GET_CYGDRIVE_INFO, user, system, user_flags,
system_flags);
is a little bit different from 1.5
1.5 returns in user resp. system "/cygdrive",
but 1.7 returns "/cygdrive/"
This is annoying.
1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
binmode,cygdrive,/cygdrive
1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
binmode,cygdrive,/cygdrive/
2) multibyte chars in pathnames are not printed with /bin/ls.
Not in cmd.exe + bash and not in rxvt+bash.
cmd.exe alone prints it fine.
# mkdir 'Ãëä'
perl -e'$s=sprintf "\x{c4}\x{eb}\x{e4}"; mkdir $s;'
ls
=>
???
dir
=>
\304\353\344
bash or coreutils?
PS:
The mnt->mnt_type change from system to now ntfs is fine with me.
1.7$ perl -e'$,="\t"; print @$_,"\n" for Cygwin::mount_table'
/usr/bin C:\cygwin-1.7\bin ntfs binmode,system
/usr/lib C:\cygwin-1.7\lib ntfs binmode,system
/ C:\cygwin-1.7 ntfs binmode,system
/cygdrive/c c: ntfs binmode,noumount,user
1.5$ perl -e'$,="\t"; print @$_,"\n" for Cygwin::mount_table'
/usr/bin f:\cygwin\bin system binmode
/usr/lib f:\cygwin\lib system binmode
/ f:\cygwin system binmode
/cygdrive/c c: system binmode,noumount
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 13:04 ` Reini Urban
@ 2008-06-13 13:14 ` Eric Blake
2008-06-13 14:19 ` Corinna Vinschen
2008-06-13 14:31 ` Corinna Vinschen
1 sibling, 1 reply; 16+ messages in thread
From: Eric Blake @ 2008-06-13 13:14 UTC (permalink / raw)
To: cygwin-apps
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
According to Reini Urban on 6/13/2008 7:03 AM:
| 1.5 returns in user resp. system "/cygdrive",
| but 1.7 returns "/cygdrive/"
| This is annoying.
But is it wrong? On the other hand, what happens if the user has / as
their cygdrive; does this print //?
| 2) multibyte chars in pathnames are not printed with /bin/ls.
| bash or coreutils?
Probably coreutils, and probably because isprint() is returning false. In
1.5.x, I hacked coreutils to print non-ASCII characters in spite of
isprint() returning false, but I think that hack disappeared in my porting
to 1.7.0. At any rate, I think that isprint() should be fixed here rather
than hacking coreutils - if the console can display something reasonable
for characters >= 0x80, then isprint() should claim they are printable.
But some of this also depends on deciding sane semantics for unibyte vs.
multibyte character locale settings.
- --
Don't work too hard, make some time for fun as well!
Eric Blake ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkhScn0ACgkQ84KuGfSFAYCYaQCgpmEs74b7Q5wBVDtdPIyxuQAn
428AoIdyL8mTew5Gvoi5kZW8h1xtA2FA
=FIqi
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 13:14 ` Eric Blake
@ 2008-06-13 14:19 ` Corinna Vinschen
2008-06-13 15:23 ` Corinna Vinschen
0 siblings, 1 reply; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 14:19 UTC (permalink / raw)
To: cygwin-apps
On Jun 13 07:13, Eric Blake wrote:
> According to Reini Urban on 6/13/2008 7:03 AM:
> | 1.5 returns in user resp. system "/cygdrive",
> | but 1.7 returns "/cygdrive/"
> | This is annoying.
>
> But is it wrong? On the other hand, what happens if the user has / as
> their cygdrive; does this print //?
I'll look into that.
> | 2) multibyte chars in pathnames are not printed with /bin/ls.
> | bash or coreutils?
>
> At any rate, I think that isprint() should be fixed here rather
> than hacking coreutils - if the console can display something reasonable
> for characters >= 0x80, then isprint() should claim they are printable.
> But some of this also depends on deciding sane semantics for unibyte vs.
> multibyte character locale settings.
Indeed! However, right now ls will print the correct filename regardless
of the codepage used. "Right now", because I still hope that Kadzuhiro
will come up with the NLS-related changes discussed on cygwin-developers
which obsoletes the CYGWIN=codepage setting in favor of LC_CTYPE et al.
1.7$ export CYGWIN=codepage:ansi
1.7$ ls -b
\304\353\344
1.7$ ls --show-control-chars
Ãëä
1.7$ export CYGWIN=codepage:utf8
1.7$ ls -b
\303\204\303\253\303\244
1.7$ ls --show-control-chars
Ãëä
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 13:04 ` Reini Urban
2008-06-13 13:14 ` Eric Blake
@ 2008-06-13 14:31 ` Corinna Vinschen
2008-06-13 14:41 ` Christopher Faylor
2008-06-13 15:02 ` Reini Urban
1 sibling, 2 replies; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 14:31 UTC (permalink / raw)
To: cygwin-apps
On Jun 13 15:03, Reini Urban wrote:
> 1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> binmode,cygdrive,/cygdrive
> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> binmode,cygdrive,/cygdrive/
Doesn't work for me:
1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
Undefined subroutine &Cygwin::mount_flags called at -e line 1.
How does a standalone example look like?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 14:31 ` Corinna Vinschen
@ 2008-06-13 14:41 ` Christopher Faylor
2008-06-13 14:51 ` Corinna Vinschen
2008-06-13 15:07 ` Reini Urban
2008-06-13 15:02 ` Reini Urban
1 sibling, 2 replies; 16+ messages in thread
From: Christopher Faylor @ 2008-06-13 14:41 UTC (permalink / raw)
To: cygwin-apps
On Fri, Jun 13, 2008 at 04:30:51PM +0200, Corinna Vinschen wrote:
>On Jun 13 15:03, Reini Urban wrote:
>> 1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>> binmode,cygdrive,/cygdrive
>> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>> binmode,cygdrive,/cygdrive/
>
>Doesn't work for me:
>
> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> Undefined subroutine &Cygwin::mount_flags called at -e line 1.
>
>How does a standalone example look like?
Don't you need a -MCygwin on the perl command line?
cgf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 14:41 ` Christopher Faylor
@ 2008-06-13 14:51 ` Corinna Vinschen
2008-06-13 15:07 ` Reini Urban
1 sibling, 0 replies; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 14:51 UTC (permalink / raw)
To: cygwin-apps
On Jun 13 10:41, Christopher Faylor wrote:
> On Fri, Jun 13, 2008 at 04:30:51PM +0200, Corinna Vinschen wrote:
> >On Jun 13 15:03, Reini Urban wrote:
> >> 1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> >> binmode,cygdrive,/cygdrive
> >> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> >> binmode,cygdrive,/cygdrive/
> >
> >Doesn't work for me:
> >
> > 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> > Undefined subroutine &Cygwin::mount_flags called at -e line 1.
> >
> >How does a standalone example look like?
>
> Don't you need a -MCygwin on the perl command line?
Doesn't work for me either:
Can't locate Cygwin.pm in @INC (@INC contains: /usr/lib/perl5/5.8/cygwin
/usr/lib/perl5/5.8 /usr/lib/perl5/site_perl/5.8/cygwin
/usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/vendor_perl/5.8/cygwin /usr/lib/perl5/vendor_perl/5.8
/usr/lib/perl5/vendor_perl/5.8 .).
I noticed that Cygwin.pm is in /usr/lib/perl5/5.8/File/Spec. I added
this path to the environment variable PERL5LIB, but it didn't help
either:
Undefined subroutine &Cygwin::mount_flags called at -e line 1.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 14:31 ` Corinna Vinschen
2008-06-13 14:41 ` Christopher Faylor
@ 2008-06-13 15:02 ` Reini Urban
2008-06-13 15:15 ` Corinna Vinschen
1 sibling, 1 reply; 16+ messages in thread
From: Reini Urban @ 2008-06-13 15:02 UTC (permalink / raw)
To: cygwin-apps
Corinna Vinschen schrieb:
> On Jun 13 15:03, Reini Urban wrote:
>> 1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>> binmode,cygdrive,/cygdrive
>> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>> binmode,cygdrive,/cygdrive/
>
> Doesn't work for me:
>
> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
> Undefined subroutine &Cygwin::mount_flags called at -e line 1.
>
> How does a standalone example look like?
Sorry, this perl is perl5.10.0-4 from [Exp].
Also I recompiled it for cygwin-1.7 with the wchar support. (returning
utf8 converted from wchar)
perl5.8.8 doesn't has this function yet.
Something like:
#include <stdlib.h>
#include <stdio.h>
#include <sys/cygwin.h>
char *Cygwin_mount_flags(char *pathname) {
char flags[260]; /* I know, I know. stack vs heap */
/* TODO: Check for cygdrive registry setting,
* and then use CW_GET_CYGDRIVE_INFO
*/
if (!strcmp(pathname, "/cygdrive")) {
char user[260];
char system[260];
char user_flags[260];
char system_flags[260];
cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, user_flags,
system_flags);
if (strlen(user) > 0) {
sprintf(flags, "%s,cygdrive,%s", user_flags, user);
} else {
sprintf(flags, "%s,cygdrive,%s", system_flags, system);
}
return flags;
} else {
struct mntent *mnt;
setmntent (0, 0);
while ((mnt = getmntent (0))) {
if (!strcmp(pathname, mnt->mnt_dir)) {
strcpy(flags, mnt->mnt_type);
if (strlen(mnt->mnt_opts) > 0) {
strcat(flags, ",");
strcat(flags, mnt->mnt_opts);
}
break;
}
}
endmntent (0);
return flags;
}
}
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 14:41 ` Christopher Faylor
2008-06-13 14:51 ` Corinna Vinschen
@ 2008-06-13 15:07 ` Reini Urban
1 sibling, 0 replies; 16+ messages in thread
From: Reini Urban @ 2008-06-13 15:07 UTC (permalink / raw)
To: cygwin-apps
Christopher Faylor schrieb:
> On Fri, Jun 13, 2008 at 04:30:51PM +0200, Corinna Vinschen wrote:
>> On Jun 13 15:03, Reini Urban wrote:
>>> 1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>>> binmode,cygdrive,/cygdrive
>>> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>>> binmode,cygdrive,/cygdrive/
>> Doesn't work for me:
>>
>> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>> Undefined subroutine &Cygwin::mount_flags called at -e line 1.
>>
>> How does a standalone example look like?
>
> Don't you need a -MCygwin on the perl command line?
No.
cygwin perl has all Cygwin functions always in core.
It's no module (yet).
For more advanced Cygwin functions like access to
cygwin_internal() I thought of an CPAN module sooner or later.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 15:02 ` Reini Urban
@ 2008-06-13 15:15 ` Corinna Vinschen
2008-06-13 15:19 ` Corinna Vinschen
0 siblings, 1 reply; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 15:15 UTC (permalink / raw)
To: cygwin-apps
On Jun 13 17:01, Reini Urban wrote:
> Corinna Vinschen schrieb:
>> On Jun 13 15:03, Reini Urban wrote:
>>> 1.5$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>>> binmode,cygdrive,/cygdrive
>>> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>>> binmode,cygdrive,/cygdrive/
>> Doesn't work for me:
>> 1.7$ perl -e'print Cygwin::mount_flags("/cygdrive")'
>> Undefined subroutine &Cygwin::mount_flags called at -e line 1.
>> How does a standalone example look like?
>
> Sorry, this perl is perl5.10.0-4 from [Exp].
> Also I recompiled it for cygwin-1.7 with the wchar support. (returning utf8
> converted from wchar)
> perl5.8.8 doesn't has this function yet.
>
> Something like:
Thanks. Is that the function implemented in Perl? If so, I'd have
two comments:
> #include <stdlib.h>
> #include <stdio.h>
> #include <sys/cygwin.h>
>
> char *Cygwin_mount_flags(char *pathname) {
>
> char flags[260]; /* I know, I know. stack vs heap */
>
> /* 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.
> if (!strcmp(pathname, "/cygdrive")) {
> 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.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 15:15 ` Corinna Vinschen
@ 2008-06-13 15:19 ` Corinna Vinschen
2008-06-13 16:56 ` Reini Urban
0 siblings, 1 reply; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 15:19 UTC (permalink / raw)
To: cygwin-apps
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!
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 14:19 ` Corinna Vinschen
@ 2008-06-13 15:23 ` Corinna Vinschen
0 siblings, 0 replies; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 15:23 UTC (permalink / raw)
To: cygwin-apps
On Jun 13 16:18, Corinna Vinschen wrote:
> On Jun 13 07:13, Eric Blake wrote:
> > According to Reini Urban on 6/13/2008 7:03 AM:
> > | 1.5 returns in user resp. system "/cygdrive",
> > | but 1.7 returns "/cygdrive/"
> > | This is annoying.
> >
> > But is it wrong? On the other hand, what happens if the user has / as
> > their cygdrive; does this print //?
>
> I'll look into that.
I've applied a fix.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 15:19 ` Corinna Vinschen
@ 2008-06-13 16:56 ` Reini Urban
2008-06-13 17:26 ` Corinna Vinschen
0 siblings, 1 reply; 16+ messages in thread
From: Reini Urban @ 2008-06-13 16:56 UTC (permalink / raw)
To: cygwin-apps, cygwin
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/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cygpath 1.7 wrong
2008-06-13 16:56 ` Reini Urban
@ 2008-06-13 17:26 ` Corinna Vinschen
0 siblings, 0 replies; 16+ messages in thread
From: Corinna Vinschen @ 2008-06-13 17:26 UTC (permalink / raw)
To: cygwin-apps
On Jun 13 18:56, Reini Urban wrote:
> 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.
How do you check for the cygdrive? I'm wondering if this shouldn't
be the other way around, something along these lines:
cygwin_internal (CW_GET_CYGDRIVE_INFO);
cygdrive_prefix = user[0] ? user : system;
len = strlen (cygdrive_prefix);
if (!strncmp (incoming_path, cygdrive_prefix, len)
&& incoming_path[len] == '/')
// cygdrive, we have all info
else
// Do the getmntent chores
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-06-13 17:26 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-03 20:15 cygpath 1.7 wrong Reini Urban
2008-06-09 14:24 ` Corinna Vinschen
2008-06-13 8:29 ` Corinna Vinschen
2008-06-13 13:04 ` Reini Urban
2008-06-13 13:14 ` Eric Blake
2008-06-13 14:19 ` Corinna Vinschen
2008-06-13 15:23 ` Corinna Vinschen
2008-06-13 14:31 ` Corinna Vinschen
2008-06-13 14:41 ` Christopher Faylor
2008-06-13 14:51 ` Corinna Vinschen
2008-06-13 15:07 ` Reini Urban
2008-06-13 15:02 ` Reini Urban
2008-06-13 15:15 ` Corinna Vinschen
2008-06-13 15:19 ` Corinna Vinschen
2008-06-13 16:56 ` Reini Urban
2008-06-13 17:26 ` Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).